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(); } }
if (v.world.rand.nextInt(100) == 8) { int vampireCount = vampireMobs.size() + vampireVillager.size() / 2; boolean spawn = Balance.village.SPAWN_VAMPIRE_IN_OVERTAKEN && vampireCount < (Balance.village.MIN_HUNTER_COUNT_VILLAGE_PER_DOOR * v.getNumVillageDoors() + 1); if (spawn || v.world.rand.nextInt(30) == 0) { VampirismMod.log.d(TAG, "Stats(Overtaken): Doors: %s, Pos %s", v.getNumVillageDoors(), this.getCenter()); VampirismMod.log.w(TAG, "Vampire Count: %s, Spawn Config: %s, Doors: %s", vampireCount, Balance.village.MIN_HUNTER_COUNT_VILLAGE_PER_DOOR, v.getNumVillageDoors()); spawn = false; if (v.world.rand.nextInt(30) == 0) { int hunterCount = hunters.size() + hunterVillagers.size() / 2; int maxHunterCount = (int) (Balance.village.MIN_HUNTER_COUNT_VILLAGE_PER_DOOR * v.getNumVillageDoors() + 1); if (maxHunterCount > 20) { VampirismMod.log.w(TAG, "Stats: Doors: %s, Aggro: %s, v: %s, vh: %s, h: %s", v.getNumVillageDoors(), calculateAggressiveCounter(), normalVillager.size(), hunterVillagers.size(), hunters.size()); VampirismMod.log.w(TAG, "Hunter Count: %s, Spawn Config: %s", hunterCount, Balance.village.MIN_HUNTER_COUNT_VILLAGE_PER_DOOR); maxHunterCount = 20; VampirismMod.log.d(TAG, "Stats: Doors: %s, Aggro: %s, v: %s, vh: %s, h: %s. Pos %s", v.getNumVillageDoors(), calculateAggressiveCounter(), normalVillager.size(), hunterVillagers.size(), hunters.size(), this.getCenter());
@Override public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { BlockPos pos = sender.getPosition(); World world = sender.getEntityWorld(); int dX, dZ; int range = 64; Village closest = world.villageCollection.getNearestVillage(pos, range); if (closest == null) { UtilChat.addChatMessage(sender, "command.villageinfo.none"); } else { int doors = closest.getNumVillageDoors(); int villagers = closest.getNumVillagers(); UtilChat.addChatMessage(sender, UtilChat.lang("command.villageinfo.popul") + String.format("%d", villagers)); UtilChat.addChatMessage(sender, UtilChat.lang("command.villageinfo.doors") + String.format("%d", doors)); if (sender instanceof EntityPlayer) { // command blocks/server controllers do not have reputation EntityPlayer player = (EntityPlayer) sender; int rep = closest.getPlayerReputation(player.getUniqueID()); UtilChat.addChatMessage(sender, player.getName() + " " + UtilChat.lang("command.villageinfo.reputation") + String.format("%d", rep)); } dX = pos.getX() - closest.getCenter().getX(); dZ = pos.getZ() - closest.getCenter().getZ(); int dist = MathHelper.floor(Math.sqrt(dX * dX + dZ * dZ)); UtilChat.addChatMessage(sender, UtilChat.lang("command.villageinfo.center") + String.format("%d", dist)); } } }