示例#1
0
  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);
    }
  }
示例#2
0
 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();
   }
 }