@SubscribeEvent
  public void updateLiving(LivingUpdateEvent event) {
    EntityLivingBase living = event.entityLiving;

    if (isEnabled()
        && !living.worldObj.isRemote
        && !living.getEntityData().hasKey("giveMFWeapon")) {
      living.getEntityData().setBoolean("giveMFWeapon", true);
      upgradeMob(event.entityLiving);
    }
  }
  private boolean lootTarget(EntityPlayer player, EntityLivingBase target) {
    if (target.getEntityData().getBoolean("LootableEntityFlag")) {
      return false;
    }
    IEntityLootable lootable =
        (target instanceof IEntityLootable ? (IEntityLootable) target : null);
    float lootChance =
        (lootable != null
            ? lootable.getLootableChance(player, getType())
            : LootableEntityRegistry.getEntityLootChance(target.getClass()));
    lootChance *= Config.getWhipLootMultiplier();
    boolean wasItemStolen = false;
    if (rand.nextFloat() < lootChance) {
      ItemStack loot =
          (lootable != null
              ? lootable.getEntityLoot(player, getType())
              : LootableEntityRegistry.getEntityLoot(target.getClass()));
      // TODO remove the following if Skulltulas are added:
      if (target instanceof EntitySpider && rand.nextInt(25) == 0) {
        loot = new ItemStack(ZSSItems.skulltulaToken);
      }
      if (loot != null) {
        EntityItem item = new EntityItem(worldObj, posX, posY + 1, posZ, loot);
        double dx = player.posX - posX;
        double dy = player.posY - posY;
        double dz = player.posZ - posZ;
        TargetUtils.setEntityHeading(item, dx, dy, dz, 1.0F, 1.0F, true);
        if (!worldObj.isRemote) {
          worldObj.spawnEntityInWorld(item);
        }
        player.triggerAchievement(ZSSAchievements.orcaThief);
        wasItemStolen = true;
      }
    }

    if (lootable == null || lootable.onLootStolen(player, wasItemStolen)) {
      if (!worldObj.isRemote) {
        target.getEntityData().setBoolean("LootableEntityFlag", true);
      }
    }
    return wasItemStolen;
  }
  private void giveEntityArmour(EntityLivingBase mob, int tier, int suit) {
    mob.getEntityData().setBoolean(zombieArmourNBT, true);

    ItemArmourMF[] pool = ArmourListMF.scalemail;
    if (suit == 1) {
      pool = ArmourListMF.chainmail;
    }
    if (suit == 2) {
      pool = ArmourListMF.splintmail;
    }
    if (suit == 3) {
      pool = ArmourListMF.fieldplate;
    }
    ArmourMaterialMF material = (ArmourMaterialMF) ArmourListMF.mats[tier][0];

    for (int a = 0; a < 4; a++) {
      mob.setCurrentItemOrArmor(4 - a, ArmourListMF.armour(pool, tier, a));
    }
  }