public static void attack(EntityLiving handle, Entity target) { AttributeInstance attackDamage = handle.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE); float f = (float) (attackDamage == null ? 1 : attackDamage.getValue()); int i = 0; if (target instanceof EntityLiving) { f += EnchantmentManager.a(handle.bA(), ((EntityLiving) target).getMonsterType()); i += EnchantmentManager.a(handle); } boolean flag = target.damageEntity(DamageSource.mobAttack(handle), f); if (!flag) return; if (i > 0) { target.g( -Math.sin(handle.yaw * Math.PI / 180.0F) * i * 0.5F, 0.1D, Math.cos(handle.yaw * Math.PI / 180.0F) * i * 0.5F); handle.motX *= 0.6D; handle.motZ *= 0.6D; } int fireAspectLevel = EnchantmentManager.getFireAspectEnchantmentLevel(handle); if (fireAspectLevel > 0) { target.setOnFire(fireAspectLevel * 4); } }
public static void updatePathfindingRange(NPC npc, float pathfindingRange) { if (!npc.isSpawned() || !npc.getEntity().getType().isAlive()) return; EntityLiving en = NMS.getHandle((LivingEntity) npc.getEntity()); if (!(en instanceof EntityInsentient)) { if (en instanceof EntityHumanNPC) { ((EntityHumanNPC) en).updatePathfindingRange(pathfindingRange); } return; } if (PATHFINDING_RANGE == null) return; EntityInsentient handle = (EntityInsentient) en; NavigationAbstract navigation = handle.getNavigation(); try { AttributeInstance inst = (AttributeInstance) PATHFINDING_RANGE.get(navigation); inst.setValue(pathfindingRange); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }