public String makeDebugString(BlockPos pos) { Village v = getVillage(); if (v == null) { return "MC Village does not exist" + getCenter(); } else { StringBuilder builder = new StringBuilder(); builder.append("Center: ").append(getCenter().toString()); builder.append("Overtaken: ").append(isOvertaken()); builder.append("\nIs inside: ").append(v.isBlockPosWithinSqVillageRadius(pos)).append(" (").append(getBoundingBox().contains(new Vec3d(pos))).append(')'); builder.append("\n").append(String.format("RBitten: %s, RConv: %s, RBDeath: %s, Agrr: %s", recentlyBitten, recentlyConverted, recentlyBittenToDeath, agressive)); List<EntityVillager> allVillagers = getAllVillager(); List<EntityBasicHunter> hunters = getHunters(); List<IAggressiveVillager> hunterVillagers = filterHunterVillagers(allVillagers); List<EntityVillager> normalVillager = filterNormalVillagers(allVillagers); List<EntityBasicVampire> vampires = getVampires(); List<EntityVillager> vampireVillagers = filterVampireVillagers(allVillagers); builder.append("\n").append(String.format("Stats: Doors: %s, Aggro: %s, v: %s, vh: %s, h: %s, v: %s, vv: %s", v.getNumVillageDoors(), calculateAggressiveCounter(), normalVillager.size(), hunterVillagers.size(), hunters.size(), vampires.size(), vampireVillagers.size())); int hunterCount = hunters.size() + hunterVillagers.size() / 2; int vampireCount = vampires.size() + vampireVillagers.size() / 2; boolean spawn = (isOvertaken() ? vampireCount : hunterCount) < (Balance.village.MIN_HUNTER_COUNT_VILLAGE_PER_DOOR * v.getNumVillageDoors() + 1); builder.append("\nShould Spawn: ").append(hunterCount).append('(').append(spawn).append(')'); builder.append("\nAggressors: ").append(villageAggressorVampires.toString()); return builder.toString(); } }