summaryrefslogtreecommitdiff
path: root/YWD/src/main/java/fyresmodjam/misc/EntityStatHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'YWD/src/main/java/fyresmodjam/misc/EntityStatHelper.java')
-rwxr-xr-xYWD/src/main/java/fyresmodjam/misc/EntityStatHelper.java751
1 files changed, 751 insertions, 0 deletions
diff --git a/YWD/src/main/java/fyresmodjam/misc/EntityStatHelper.java b/YWD/src/main/java/fyresmodjam/misc/EntityStatHelper.java
new file mode 100755
index 0000000..92635b9
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/misc/EntityStatHelper.java
@@ -0,0 +1,751 @@
+package fyresmodjam.misc;
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Random;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import fyresmodjam.ModjamMod;
+import fyresmodjam.blessings.BlessingUtils;
+import fyresmodjam.handlers.CommonTickHandler;
+import fyresmodjam.handlers.NewPacketHandler;
+import fyresmodjam.worldgen.FyresWorldData;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.Entity.EnumEntitySize;
+import net.minecraft.entity.EntityList;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.boss.EntityDragon;
+import net.minecraft.entity.monster.EntityMob;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.EntityJoinWorldEvent;
+import net.minecraftforge.event.entity.living.LivingDeathEvent;
+
+@SuppressWarnings("rawtypes")
+public class EntityStatHelper {
+
+ public static String[] knowledge = {
+ "Clueless", "Novice", "Competent", "Talented",
+ "Expert", "Professional", "Master", "Legendary"
+ };
+
+ public static int[] killCount = {
+ 0, 10, 25, 50, 100, 250, 500, 1000
+ };
+
+ public static float[] damageBonus = {
+ 0, 0.01F, 0.025F, 0.05F, 0.075F, 0.1F, 0.15F, 0.2F
+ };
+ public static String[] damageBonusString = {
+ "0", "1", "2.5", "5", "7.5", "10", "15", "20"
+ };
+
+ public static HashMap<Class, EntityStatTracker> statTrackersByClass = new HashMap<Class, EntityStatTracker>();
+
+ public static ArrayList<EntityStatTracker> genericTrackers = new ArrayList<EntityStatTracker>();
+
+ public static ArrayList<EntityStatTracker> temp = new ArrayList<EntityStatTracker>();
+ public static boolean b = false;
+
+ public static void addStatTracker(EntityStatTracker statTracker) {
+ if (statTracker.classes != null) {
+ for (Class c : statTracker.classes) {
+ statTrackersByClass.put(c, statTracker);
+ }
+
+ if (statTracker.instanceAllowed) {
+ genericTrackers.add(statTracker);
+ }
+ }
+ }
+
+ public static String getStat(Entity entity, String name) {
+ String s = null;
+
+ if (entity.getEntityData() != null
+ && entity.getEntityData().hasKey(name)) {
+ s = entity.getEntityData().getString(name);
+ }
+
+ return s;
+ }
+
+ public static String getUnalteredItemName(Item item) {
+ return StatCollector.translateToLocal(
+ item.getUnlocalizedName() + ".name");
+ }
+
+ public static String getUnalteredName(Entity entity) {
+ String s = EntityList.getEntityString(entity);
+
+ if (s == null) {
+ s = "generic";
+ }
+
+ return StatCollector
+ .translateToLocal("entity." + s + ".name");
+ }
+
+ public static Entity giveStat(Entity entity, String name,
+ Object value) {
+ if (entity != null && name != null && value != null) {
+ entity.getEntityData().setString(name,
+ value.toString());
+ }
+
+ return entity;
+ }
+
+ public static boolean hasStat(Entity entity, String name) {
+ if (entity.getEntityData() != null
+ && entity.getEntityData().hasKey(name)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static void processEntity(Entity entity, Random r) {
+ if (entity == null) {
+ return;
+ }
+
+ temp.clear();
+
+ if (statTrackersByClass.containsKey(entity.getClass())) {
+ temp.add(statTrackersByClass
+ .get(entity.getClass()));
+ }
+
+ for (EntityStatTracker e : genericTrackers) {
+ if (!temp.contains(e)) {
+ for (Class c : e.classes) {
+ if (c.isAssignableFrom(entity
+ .getClass())) {
+ temp.add(e);
+ break;
+ }
+ }
+ }
+ }
+
+ if (!temp.isEmpty()) {
+ String processed = EntityStatHelper.getStat(entity,
+ "processed");
+
+ if (processed == null
+ || processed.equals("false")) {
+ EntityStatHelper.giveStat(entity,
+ "processed", "true");
+
+ for (EntityStatTracker statTracker : temp) {
+ for (EntityStat s : statTracker.stats) {
+ giveStat(entity, s.name, s
+ .getNewValue(r)
+ .toString());
+
+ if (entity instanceof EntityLiving) {
+ setName((EntityLiving) entity,
+ s.getAlteredEntityName(
+ (EntityLiving) entity));
+ }
+
+ s.modifyEntity(entity);
+ }
+ }
+ }
+ }
+ }
+
+ public static void setEntitySize(Entity entity, float par1,
+ float par2) {
+ float f2;
+
+ if (par1 != entity.width || par2 != entity.height) {
+ f2 = entity.width;
+ entity.width = par1;
+ entity.height = par2;
+ entity.boundingBox.maxX = entity.boundingBox.minX
+ + entity.width;
+ entity.boundingBox.maxZ = entity.boundingBox.minZ
+ + entity.width;
+ entity.boundingBox.maxY = entity.boundingBox.minY
+ + entity.height;
+ }
+
+ f2 = par1 % 2.0F;
+
+ if (f2 < 0.375D) {
+ entity.myEntitySize = EnumEntitySize.SIZE_1;
+ } else if (f2 < 0.75D) {
+ entity.myEntitySize = EnumEntitySize.SIZE_2;
+ } else if (f2 < 1.0D) {
+ entity.myEntitySize = EnumEntitySize.SIZE_3;
+ } else if (f2 < 1.375D) {
+ entity.myEntitySize = EnumEntitySize.SIZE_4;
+ } else if (f2 < 1.75D) {
+ entity.myEntitySize = EnumEntitySize.SIZE_5;
+ } else {
+ entity.myEntitySize = EnumEntitySize.SIZE_6;
+ }
+ }
+
+ public static Entity setName(EntityLiving entity, String name) {
+ entity.setCustomNameTag(name);
+
+ return entity;
+ }
+
+ private void addOnKillStats(EntityPlayer player, String mob) {
+ if (!player.getEntityData().hasKey("KillStats")) {
+ player.getEntityData().setTag("KillStats",
+ new NBTTagCompound());
+ }
+
+ NBTTagCompound killStats = player.getEntityData()
+ .getCompoundTag("KillStats");
+
+ if (!killStats.hasKey(mob)) {
+ killStats.setInteger(mob, 0);
+
+ if (!killStats.hasKey("TrackedMobList")) {
+ killStats.setString("TrackedMobList", mob);
+ } else {
+ killStats.setString("TrackedMobList",
+ killStats.getString(
+ "TrackedMobList")
+ + ";"
+ + mob);
+ }
+ }
+
+ killStats.setInteger(mob, killStats.getInteger(mob) + 1);
+
+ if (ConfigData.enableMobKillStats) {
+ for (int i = 0; i < knowledge.length; i++) {
+ if (killCount[i] == killStats
+ .getInteger(mob)) {
+ NewPacketHandler.SEND_MESSAGE
+ .sendToPlayer(player,
+ "\u00A7o\u00A73You've become a "
+ + knowledge[i].toLowerCase()
+ + " "
+ + mob.toLowerCase()
+ + " slayer! (+"
+ + damageBonusString[i]
+ + "% damage against "
+ + mob.toLowerCase()
+ + "s.)"
+ + (i < knowledge.length
+ - 1 ? " " + (killCount[i + 1] - killCount[i]) + " " + mob.toLowerCase() + " kills to next rank." : ""));
+ break;
+ }
+ }
+
+ int count = 0;
+
+ if (killStats.hasKey("TrackedMobList") && killStats
+ .getString("TrackedMobList") != null
+ && killStats.getString(
+ "TrackedMobList")
+ .length() > 0) {
+ for (String object : killStats.getString(
+ "TrackedMobList")
+ .split(";")) {
+ if (killStats.hasKey(object)
+ && killStats.getInteger(
+ object) >= killCount[2]) {
+ count++;
+ }
+ }
+ }
+
+ if (count >= 5) {
+ player.triggerAchievement(
+ ModjamMod.theHunt);
+ }
+ }
+
+ String weapon = "misc";
+
+ if (player.getHeldItem() == null) {
+ weapon = "fist";
+ } else if (player.getHeldItem().getItem() != null) {
+ weapon = getUnalteredItemName(
+ player.getHeldItem().getItem());
+ }
+
+ if (!player.getEntityData().hasKey("WeaponStats")) {
+ player.getEntityData().setTag("WeaponStats",
+ new NBTTagCompound());
+ }
+ NBTTagCompound weaponStats = player.getEntityData()
+ .getCompoundTag("WeaponStats");
+
+ if (!weaponStats.hasKey(weapon)) {
+ weaponStats.setInteger(weapon, 0);
+
+ if (!weaponStats.hasKey("TrackedItemList")) {
+ weaponStats.setString("TrackedItemList",
+ weapon);
+ } else {
+ weaponStats.setString("TrackedItemList",
+ weaponStats.getString(
+ "TrackedItemList")
+ + ";"
+ + weapon);
+ }
+ }
+
+ weaponStats.setInteger(weapon,
+ weaponStats.getInteger(weapon) + 1);
+
+ if (ConfigData.enableWeaponKillStats) {
+ for (int i = 0; i < knowledge.length; i++) {
+ if (killCount[i] * 2 == weaponStats
+ .getInteger(weapon)) {
+ NewPacketHandler.SEND_MESSAGE
+ .sendToPlayer(player,
+ "\u00A7o\u00A73You've become a "
+ + knowledge[i].toLowerCase()
+ + " "
+ + weapon.toLowerCase()
+ + " user! (+"
+ + damageBonusString[i]
+ + "% damage with "
+ + weapon.toLowerCase()
+ + "s.)"
+ + (i < knowledge.length
+ - 1 ? " " + (killCount[i + 1] * 2 - killCount[i] * 2) + " " + weapon.toLowerCase() + " kills to next rank." : ""));
+ break;
+ }
+ }
+
+ int count = 0;
+
+ if (weaponStats.hasKey("TrackedItemList")
+ && weaponStats.getString(
+ "TrackedItemList") != null
+ && weaponStats.getString(
+ "TrackedItemList")
+ .length() > 0) {
+ for (String object : weaponStats.getString(
+ "TrackedItemList")
+ .split(";")) {
+ if (weaponStats.hasKey(object)
+ && weaponStats.getInteger(
+ object) >= killCount[1]
+ * 2) {
+ count++;
+ }
+ }
+ }
+
+ if (count >= 10) {
+ player.triggerAchievement(
+ ModjamMod.jackOfAllTrades);
+ }
+ }
+ }
+
+ private void addPlayerStats(EntityJoinWorldEvent event) {
+ if (!event.entity.getEntityData().hasKey("Blessing")
+ && CommonTickHandler.worldData.blessingByPlayer
+ .containsKey(event.entity
+ .getCommandSenderName())) {
+ event.entity.getEntityData().setString("Blessing",
+ CommonTickHandler.worldData.blessingByPlayer
+ .get(event.entity
+ .getCommandSenderName()));
+
+ NewPacketHandler.UPDATE_BLESSING.sendToPlayer(
+ (EntityPlayer) event.entity,
+ event.entity.getEntityData()
+ .getString("Blessing"));
+
+ CommonTickHandler.worldData.blessingByPlayer
+ .remove(event.entity
+ .getCommandSenderName());
+ CommonTickHandler.worldData.markDirty();
+ }
+
+ if (!event.entity.getEntityData().hasKey("PotionKnowledge")
+ && CommonTickHandler.worldData.potionKnowledgeByPlayer
+ .containsKey(event.entity
+ .getCommandSenderName())) {
+ event.entity.getEntityData().setIntArray(
+ "PotionKnowledge",
+ CommonTickHandler.worldData.potionKnowledgeByPlayer
+ .get(event.entity
+ .getCommandSenderName()));
+
+ NewPacketHandler.UPDATE_POTION_KNOWLEDGE
+ .sendToPlayer((EntityPlayer) event.entity,
+ event.entity.getEntityData()
+ .getIntArray("PotionKnowledge"));
+
+ CommonTickHandler.worldData.potionKnowledgeByPlayer
+ .remove(event.entity
+ .getCommandSenderName());
+ CommonTickHandler.worldData.markDirty();
+ }
+
+ if (!event.entity.getEntityData().hasKey("KillStats")
+ && CommonTickHandler.worldData.killStatsByPlayer
+ .containsKey(event.entity
+ .getCommandSenderName())) {
+ event.entity.getEntityData().setTag("KillStats",
+ CommonTickHandler.worldData.killStatsByPlayer
+ .get(event.entity
+ .getCommandSenderName()));
+
+ CommonTickHandler.worldData.killStatsByPlayer
+ .remove(event.entity
+ .getCommandSenderName());
+ CommonTickHandler.worldData.markDirty();
+ }
+
+ if (!event.entity.getEntityData().hasKey("WeaponStats")
+ && CommonTickHandler.worldData.weaponStatsByPlayer
+ .containsKey(event.entity
+ .getCommandSenderName())) {
+ event.entity.getEntityData().setTag("WeaponStats",
+ CommonTickHandler.worldData.weaponStatsByPlayer
+ .get(event.entity
+ .getCommandSenderName()));
+
+ CommonTickHandler.worldData.killStatsByPlayer
+ .remove(event.entity
+ .getCommandSenderName());
+ CommonTickHandler.worldData.markDirty();
+ }
+
+ if (!event.entity.getEntityData().hasKey("CraftingStats")
+ && CommonTickHandler.worldData.craftingStatsByPlayer
+ .containsKey(event.entity
+ .getCommandSenderName())) {
+ event.entity.getEntityData().setTag(
+ "CraftingStats",
+ CommonTickHandler.worldData.craftingStatsByPlayer
+ .get(event.entity
+ .getCommandSenderName()));
+
+ CommonTickHandler.worldData.craftingStatsByPlayer
+ .remove(event.entity
+ .getCommandSenderName());
+ CommonTickHandler.worldData.markDirty();
+ }
+ }
+
+ private void advanceKillTaskProgress(LivingDeathEvent event) {
+ CommonTickHandler.worldData.progress++;
+
+ String name1 = CommonTickHandler.worldData.currentTask
+ .equals("Kill") ? FyresWorldData.validMobNames[CommonTickHandler.worldData.currentTaskID]
+ : FyresWorldData.validItems[CommonTickHandler.worldData.currentTaskID]
+ .getDisplayName();
+
+ if (name1.contains("Block")) {
+ if (name1.contains("Block")) {
+ name1 = name1.replace("Block", "Blocks")
+ .replace("block",
+ "blocks");
+ }
+ } else {
+ name1 += "s";
+ }
+
+ NewPacketHandler.SEND_MESSAGE.sendToAllPlayers(
+ "\u00A7fCurrent Goal Progress: "
+ + CommonTickHandler.worldData.progress
+ + "/"
+ + CommonTickHandler.worldData.currentTaskAmount
+ + " " + name1 + " "
+ + CommonTickHandler.worldData.currentTask
+ + "ed.");
+
+ if (CommonTickHandler.worldData.progress >= CommonTickHandler.worldData.currentTaskAmount) {
+ CommonTickHandler.worldData.progress = 0;
+ CommonTickHandler.worldData.tasksCompleted++;
+
+ NewPacketHandler.LEVEL_UP.sendToAllPlayers(
+ CommonTickHandler.worldData.rewardLevels);
+
+ if (!CommonTickHandler.worldData.enderDragonKilled
+ && event.entity instanceof EntityDragon) {
+ CommonTickHandler.worldData.enderDragonKilled = true;
+ }
+
+ CommonTickHandler.worldData.giveNewTask();
+
+ NewPacketHandler.SEND_MESSAGE.sendToAllPlayers(
+ "\u00A7eA world goal has been completed!"
+ + (!CommonTickHandler.worldData
+ .getDisadvantage()
+ .equals("None") ? " World disadvantage has been lifted!"
+ : ""));
+
+ NewPacketHandler.SEND_MESSAGE.sendToAllPlayers(
+ "\u00A7eA new world goal has been set: "
+ + (CommonTickHandler.worldData.currentTask
+ + " "
+ + CommonTickHandler.worldData.currentTaskAmount
+ + " "
+ + (CommonTickHandler.worldData.currentTask
+ .equals("Kill") ? FyresWorldData.validMobNames[CommonTickHandler.worldData.currentTaskID]
+ : FyresWorldData.validItems[CommonTickHandler.worldData.currentTaskID]
+ .getDisplayName())
+ + "s. ("
+ + CommonTickHandler.worldData.progress
+ + " "
+ + CommonTickHandler.worldData.currentTask
+ + "ed)"));
+
+ CommonTickHandler.worldData.currentDisadvantage = "None";
+ }
+
+ NewPacketHandler.UPDATE_WORLD_DATA.sendToAllPlayers(
+ CommonTickHandler.worldData.potionValues,
+ CommonTickHandler.worldData.potionDurations,
+ CommonTickHandler.worldData
+ .getDisadvantage(),
+ CommonTickHandler.worldData.currentTask,
+ CommonTickHandler.worldData.currentTaskID,
+ CommonTickHandler.worldData.currentTaskAmount,
+ CommonTickHandler.worldData.progress,
+ CommonTickHandler.worldData.tasksCompleted,
+ CommonTickHandler.worldData.enderDragonKilled,
+ ConfigData.spawnTraps,
+ CommonTickHandler.worldData.rewardLevels,
+ CommonTickHandler.worldData.mushroomColors);
+
+ CommonTickHandler.worldData.markDirty();
+ }
+
+ private void cloneMob(EntityJoinWorldEvent event) {
+ event.entity.getEntityData().setBoolean("isClone", true);
+
+ Entity entityNew = null;
+
+ try {
+ Constructor[] constructors = event.entity
+ .getClass().getConstructors();
+
+ for (int i = 0; i < constructors.length; i++) {
+ Class[] parameters = constructors[i]
+ .getParameterTypes();
+
+ if (parameters.length == 1 && parameters[0]
+ .equals(World.class)) {
+ entityNew = (Entity) event.entity
+ .getClass()
+ .getConstructors()[i]
+ .newInstance(event.world);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ if (entityNew != null) {
+ entityNew.setLocationAndAngles(event.entity.posX,
+ event.entity.posY,
+ event.entity.posZ,
+ event.entity.rotationYaw,
+ event.entity.rotationPitch);
+
+ entityNew.getEntityData().setBoolean("isClone",
+ true);
+
+ entityNew.dimension = event.entity.dimension;
+
+ CommonTickHandler.addLater.add(entityNew);
+ }
+ }
+
+ @SubscribeEvent
+ public void entityJoinWorld(EntityJoinWorldEvent event) {
+ if (!event.world.isRemote) {
+ processEntity(event.entity, ModjamMod.r);
+
+ boolean isClone = isEntityClone(event);
+
+ if (shouldCloneMob(event, isClone)) {
+ cloneMob(event);
+ }
+
+ if (event.entity instanceof EntityPlayer) {
+ addPlayerStats(event);
+ }
+ }
+ }
+
+ private void handleBlessings(LivingDeathEvent event) {
+ String blessing = event.source.getEntity().getEntityData()
+ .getString("Blessing");
+
+ BlessingUtils.getBlessingInstance(blessing).onMobKill(event);
+ }
+
+ private boolean isEntityClone(EntityJoinWorldEvent event) {
+ if (event.entity.getEntityData().hasKey("isClone")) {
+ return event.entity.getEntityData()
+ .getBoolean("isClone");
+ } else {
+ return false;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @SubscribeEvent
+ public void livingDeath(LivingDeathEvent event) {
+ if (!event.entity.worldObj.isRemote) {
+ if (event.entity.worldObj.getGameRules()
+ .getGameRuleBooleanValue(
+ "doMobLoot")) {
+
+ if (event.entity instanceof EntityLivingBase
+ && event.source != null
+ && event.source.getEntity() != null) {
+ if (BlessingUtils.hasBlessing(event.source.getEntity())) {
+ handleBlessings(event);
+ }
+ }
+
+ int level = 0;
+
+ if (event.entity.getEntityData()
+ .hasKey("Level")) {
+ level = Integer.parseInt(
+ event.entity.getEntityData()
+ .getString("Level"));
+ }
+
+ if (ModjamMod.r.nextInt(30) == 0
+ || level == 5) {
+ event.entity.entityDropItem(
+ new ItemStack(ModjamMod.mysteryPotion,
+ 1,
+ ModjamMod.r.nextInt(
+ 13)),
+ event.entity.height
+ / 2);
+ }
+ }
+
+ if (CommonTickHandler.worldData.currentTask
+ .equals("Kill")
+ && FyresWorldData.validMobs[CommonTickHandler.worldData.currentTaskID]
+ .isAssignableFrom(
+ event.entity.getClass())) {
+ advanceKillTaskProgress(event);
+ }
+
+ if (!CommonTickHandler.worldData.enderDragonKilled
+ && event.entity instanceof EntityDragon) {
+ CommonTickHandler.worldData.enderDragonKilled = true;
+ NewPacketHandler.UPDATE_WORLD_DATA
+ .sendToAllPlayers(
+ CommonTickHandler.worldData.potionValues,
+ CommonTickHandler.worldData.potionDurations,
+ CommonTickHandler.worldData
+ .getDisadvantage(),
+ CommonTickHandler.worldData.currentTask,
+ CommonTickHandler.worldData.currentTaskID,
+ CommonTickHandler.worldData.currentTaskAmount,
+ CommonTickHandler.worldData.progress,
+ CommonTickHandler.worldData.tasksCompleted,
+ CommonTickHandler.worldData.enderDragonKilled,
+ ConfigData.spawnTraps,
+ CommonTickHandler.worldData.rewardLevels,
+ CommonTickHandler.worldData.mushroomColors);
+ CommonTickHandler.worldData.markDirty();
+ }
+ }
+
+ if (event.entity instanceof EntityPlayer) {
+ EntityPlayer player = (EntityPlayer) event.entity;
+
+ player.triggerAchievement(ModjamMod.losingIsFun);
+
+ CommonTickHandler.worldData.blessingByPlayer.put(
+ player.getCommandSenderName(),
+ player.getEntityData().getString(
+ "Blessing"));
+
+ CommonTickHandler.worldData.potionKnowledgeByPlayer
+ .put(player.getCommandSenderName(),
+ player.getEntityData()
+ .getIntArray("PotionKnowledge"));
+
+ if (player.getEntityData() != null
+ && player.getEntityData().hasKey(
+ "KillStats")) {
+ CommonTickHandler.worldData.killStatsByPlayer
+ .put(player.getCommandSenderName(),
+ player.getEntityData()
+ .getCompoundTag("KillStats"));
+ }
+
+ if (player.getEntityData() != null
+ && player.getEntityData().hasKey(
+ "WeaponStats")) {
+ CommonTickHandler.worldData.weaponStatsByPlayer
+ .put(player.getCommandSenderName(),
+ player.getEntityData()
+ .getCompoundTag("WeaponStats"));
+ }
+
+ if (player.getEntityData() != null
+ && player.getEntityData().hasKey(
+ "CraftingStats")) {
+ CommonTickHandler.worldData.craftingStatsByPlayer
+ .put(player.getCommandSenderName(),
+ player.getEntityData()
+ .getCompoundTag("CraftingStats"));
+ }
+ } else if (event.source != null
+ && event.source.getEntity() != null
+ && event.source.getEntity() instanceof EntityPlayer) {
+ EntityPlayer player = (EntityPlayer) event.source
+ .getEntity();
+ String mob = getUnalteredName(event.entity);
+
+ if (CommonTickHandler.worldData.getDisadvantage()
+ .equals("Trigger-happy")
+ && ModjamMod.r.nextInt(10) == 0) {
+ player.worldObj.createExplosion(player,
+ event.entity.posX,
+ event.entity.posY,
+ event.entity.posZ, 1,
+ true);
+ }
+
+ addOnKillStats(player, mob);
+ }
+ }
+
+ public void register() {
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ private boolean shouldCloneMob(EntityJoinWorldEvent event,
+ boolean isClone) {
+ return CommonTickHandler.worldData != null
+ && CommonTickHandler.worldData
+ .getDisadvantage()
+ .equals("Increased Mob Spawn")
+ && (event.entity instanceof EntityMob)
+ && !(event.entity instanceof EntityDragon)
+ && !isClone && ModjamMod.r.nextInt(3) == 0;
+ }
+}