Run autoformatter

This commit is contained in:
fullwall 2023-11-05 16:35:22 +08:00
parent 998484718f
commit c046404799
1169 changed files with 7411 additions and 10175 deletions

View File

@ -68,9 +68,8 @@ public class ArmorStandController extends MobEntityController {
@Override @Override
public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, ItemStack itemstack, EnumHand enumhand) { public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, ItemStack itemstack, EnumHand enumhand) {
if (npc == null) { if (npc == null)
return super.a(entityhuman, vec3d, itemstack, enumhand); return super.a(entityhuman, vec3d, itemstack, enumhand);
}
PlayerInteractEntityEvent event = new PlayerInteractEntityEvent((Player) entityhuman.getBukkitEntity(), PlayerInteractEntityEvent event = new PlayerInteractEntityEvent((Player) entityhuman.getBukkitEntity(),
getBukkitEntity()); getBukkitEntity());
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);

View File

@ -67,7 +67,7 @@ public class BatController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -121,8 +121,9 @@ public class BatController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new BatNPC(this); bukkitEntity = new BatNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -64,7 +64,7 @@ public class BlazeController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -118,8 +118,9 @@ public class BlazeController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new BlazeNPC(this); bukkitEntity = new BlazeNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -73,7 +73,7 @@ public class CaveSpiderController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -143,8 +143,9 @@ public class CaveSpiderController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new CaveSpiderNPC(this); bukkitEntity = new CaveSpiderNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -175,11 +176,10 @@ public class CaveSpiderController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -82,7 +82,7 @@ public class ChickenController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -152,8 +152,9 @@ public class ChickenController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ChickenNPC(this); bukkitEntity = new ChickenNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -184,11 +185,10 @@ public class ChickenController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -86,7 +86,7 @@ public class CowController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -95,9 +95,8 @@ public class CowController extends MobEntityController {
if (npc == null || !npc.isProtected()) if (npc == null || !npc.isProtected())
return super.a(entityhuman, enumhand, itemstack); return super.a(entityhuman, enumhand, itemstack);
if (itemstack != null && itemstack.getItem() == Items.BUCKET && !entityhuman.abilities.canInstantlyBuild if (itemstack != null && itemstack.getItem() == Items.BUCKET && !entityhuman.abilities.canInstantlyBuild
&& !this.isBaby()) { && !this.isBaby())
return false; return false;
}
return super.a(entityhuman, enumhand, itemstack); return super.a(entityhuman, enumhand, itemstack);
} }
@ -167,8 +166,9 @@ public class CowController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new CowNPC(this); bukkitEntity = new CowNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -199,11 +199,10 @@ public class CowController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }
} }

View File

@ -79,7 +79,7 @@ public class CreeperController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -113,8 +113,9 @@ public class CreeperController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -160,8 +161,9 @@ public class CreeperController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new CreeperNPC(this); bukkitEntity = new CreeperNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -192,11 +194,10 @@ public class CreeperController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -70,7 +70,7 @@ public class EnderDragonController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -99,8 +99,9 @@ public class EnderDragonController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -138,8 +139,9 @@ public class EnderDragonController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new EnderDragonNPC(this); bukkitEntity = new EnderDragonNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -73,7 +73,7 @@ public class EndermanController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -102,8 +102,9 @@ public class EndermanController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -142,8 +143,9 @@ public class EndermanController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new EndermanNPC(this); bukkitEntity = new EndermanNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -159,9 +161,8 @@ public class EndermanController extends MobEntityController {
@Override @Override
public boolean k(double d1, double d2, double d3) { public boolean k(double d1, double d2, double d3) {
if (npc == null) { if (npc == null)
return super.k(d1, d2, d3); return super.k(d1, d2, d3);
}
return false; return false;
} }
@ -182,11 +183,10 @@ public class EndermanController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -73,7 +73,7 @@ public class EndermiteController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -102,8 +102,9 @@ public class EndermiteController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -142,8 +143,9 @@ public class EndermiteController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new EndermiteNPC(this); bukkitEntity = new EndermiteNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -167,17 +169,17 @@ public class EndermiteController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -95,9 +95,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public boolean a(EntityPlayer entityplayer) { public boolean a(EntityPlayer entityplayer) {
if (npc != null && !isTracked) { if (npc != null && !isTracked)
return false; return false;
}
return super.a(entityplayer); return super.a(entityplayer);
} }
@ -137,12 +136,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
boolean damaged = super.damageEntity(damagesource, f); boolean damaged = super.damageEntity(damagesource, f);
if (damaged && velocityChanged) { if (damaged && velocityChanged) {
velocityChanged = false; velocityChanged = false;
Bukkit.getScheduler().runTask(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().runTask(CitizensAPI.getPlugin(), () -> EntityHumanNPC.this.velocityChanged = true);
@Override
public void run() {
EntityHumanNPC.this.velocityChanged = true;
}
});
} }
return damaged; return damaged;
} }
@ -151,16 +145,10 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
public void die(DamageSource damagesource) { public void die(DamageSource damagesource) {
// players that die are not normally removed from the world. when the // players that die are not normally removed from the world. when the
// NPC dies, we are done with the instance and it should be removed. // NPC dies, we are done with the instance and it should be removed.
if (dead) { if (dead)
return; return;
}
super.die(damagesource); super.die(damagesource);
Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), () -> world.removeEntity(EntityHumanNPC.this), 15); // give enough time for death and smoke animation
@Override
public void run() {
world.removeEntity(EntityHumanNPC.this);
}
}, 15); // give enough time for death and smoke animation
} }
@Override @Override
@ -228,9 +216,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public boolean inBlock() { public boolean inBlock() {
if (npc == null || noclip || isSleeping()) { if (npc == null || noclip || isSleeping())
return super.inBlock(); return super.inBlock();
}
return Util.inBlock(getBukkitEntity()); return Util.inBlock(getBukkitEntity());
} }
@ -318,11 +305,10 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
private void moveOnCurrentHeading() { private void moveOnCurrentHeading() {
@ -399,7 +385,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
for (EnumItemSlot slot : EnumItemSlot.values()) { for (EnumItemSlot slot : EnumItemSlot.values()) {
ItemStack equipment = getEquipment(slot); ItemStack equipment = getEquipment(slot);
ItemStack cache = equipmentCache.get(slot); ItemStack cache = equipmentCache.get(slot);
if (!(cache == null && equipment == null) if (((cache != null) || (equipment != null))
&& (cache == null ^ equipment == null || !ItemStack.equals(cache, equipment))) { && (cache == null ^ equipment == null || !ItemStack.equals(cache, equipment))) {
itemChanged = true; itemChanged = true;
if (cache != null) { if (cache != null) {

View File

@ -50,7 +50,7 @@ public class GhastController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -109,8 +109,9 @@ public class GhastController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new GhastNPC(this); bukkitEntity = new GhastNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -59,7 +59,7 @@ public class GiantController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class GiantController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class GiantController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new GiantNPC(this); bukkitEntity = new GiantNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class GiantController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class GuardianController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -129,8 +129,9 @@ public class GuardianController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new GuardianNPC(this); bukkitEntity = new GuardianNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -162,11 +163,10 @@ public class GuardianController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -50,6 +50,7 @@ public class HorseController extends MobEntityController {
private final CitizensNPC npc; private final CitizensNPC npc;
private boolean riding; private boolean riding;
public EntityHorseNPC(World world) { public EntityHorseNPC(World world) {
this(world, null); this(world, null);
} }
@ -86,7 +87,7 @@ public class HorseController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -164,8 +165,9 @@ public class HorseController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new HorseNPC(this); bukkitEntity = new HorseNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -211,11 +213,10 @@ public class HorseController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
private static MethodHandle C = NMS.getMethodHandle(EntityHorse.class, "c", true, int.class, boolean.class); private static MethodHandle C = NMS.getMethodHandle(EntityHorse.class, "c", true, int.class, boolean.class);

View File

@ -23,7 +23,6 @@ import net.minecraft.server.v1_10_R1.WorldServer;
public class HumanController extends AbstractEntityController { public class HumanController extends AbstractEntityController {
public HumanController() { public HumanController() {
super();
} }
@Override @Override
@ -46,16 +45,13 @@ public class HumanController extends AbstractEntityController {
if (skin != null) { if (skin != null) {
skin.apply(handle); skin.apply(handle);
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
@Override if (getBukkitEntity() == null || !getBukkitEntity().isValid()
public void run() { || getBukkitEntity() != handle.getBukkitEntity())
if (getBukkitEntity() == null || !getBukkitEntity().isValid() return;
|| getBukkitEntity() != handle.getBukkitEntity()) boolean removeFromPlayerList = npc.data().get("removefromplayerlist",
return; Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
boolean removeFromPlayerList = npc.data().get("removefromplayerlist", NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
}
}, 20); }, 20);
handle.getBukkitEntity().setSleepingIgnored(true); handle.getBukkitEntity().setSleepingIgnored(true);
return handle.getBukkitEntity(); return handle.getBukkitEntity();

View File

@ -59,7 +59,7 @@ public class IronGolemController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class IronGolemController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class IronGolemController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new IronGolemNPC(this); bukkitEntity = new IronGolemNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class IronGolemController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -65,7 +65,7 @@ public class MagmaCubeController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -94,8 +94,9 @@ public class MagmaCubeController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -141,8 +142,9 @@ public class MagmaCubeController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new MagmaCubeNPC(this); bukkitEntity = new MagmaCubeNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -173,11 +175,10 @@ public class MagmaCubeController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -75,7 +75,7 @@ public abstract class MobEntityController extends AbstractEntityController {
} }
} }
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = new WeakHashMap<Class<?>, Constructor<?>>(); private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = new WeakHashMap<>();
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_10_R1.Entity.class, private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_10_R1.Entity.class,
"uniqueID"); "uniqueID");
} }

View File

@ -71,7 +71,7 @@ public class MushroomCowController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -107,8 +107,9 @@ public class MushroomCowController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -147,8 +148,9 @@ public class MushroomCowController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new MushroomCowNPC(this); bukkitEntity = new MushroomCowNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -172,17 +174,17 @@ public class MushroomCowController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -68,7 +68,7 @@ public class OcelotController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -97,8 +97,9 @@ public class OcelotController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -144,8 +145,9 @@ public class OcelotController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new OcelotNPC(this); bukkitEntity = new OcelotNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -169,17 +171,17 @@ public class OcelotController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -69,7 +69,7 @@ public class PigController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -105,9 +105,8 @@ public class PigController extends MobEntityController {
@Override @Override
public boolean cP() { public boolean cP() {
if (npc == null) { if (npc == null)
return super.cP(); return super.cP();
}
return false; return false;
} }
@ -147,8 +146,9 @@ public class PigController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new PigNPC(this); bukkitEntity = new PigNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -179,11 +179,10 @@ public class PigController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class PigZombieController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class PigZombieController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class PigZombieController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new PigZombieNPC(this); bukkitEntity = new PigZombieNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class PigZombieController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -59,7 +59,7 @@ public class PolarBearController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -113,8 +113,9 @@ public class PolarBearController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new PolarBearNPC(this); bukkitEntity = new PolarBearNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -69,7 +69,7 @@ public class RabbitController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -139,8 +139,9 @@ public class RabbitController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new RabbitNPC(this); bukkitEntity = new RabbitNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -179,11 +180,10 @@ public class RabbitController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -68,7 +68,7 @@ public class SheepController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -97,8 +97,9 @@ public class SheepController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -137,8 +138,9 @@ public class SheepController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SheepNPC(this); bukkitEntity = new SheepNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -162,17 +164,17 @@ public class SheepController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -60,7 +60,7 @@ public class ShulkerController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -89,8 +89,9 @@ public class ShulkerController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -129,8 +130,9 @@ public class ShulkerController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ShulkerNPC(this); bukkitEntity = new ShulkerNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -162,11 +164,10 @@ public class ShulkerController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SilverfishController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SilverfishController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SilverfishController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SilverfishNPC(this); bukkitEntity = new SilverfishNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class SilverfishController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SkeletonController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SkeletonController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SkeletonController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SkeletonNPC(this); bukkitEntity = new SkeletonNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class SkeletonController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -65,7 +65,7 @@ public class SlimeController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -142,8 +142,9 @@ public class SlimeController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SlimeNPC(this); bukkitEntity = new SlimeNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -174,11 +175,10 @@ public class SlimeController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SnowmanController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SnowmanController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SnowmanController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SnowmanNPC(this); bukkitEntity = new SnowmanNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class SnowmanController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SpiderController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SpiderController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SpiderController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SpiderNPC(this); bukkitEntity = new SpiderNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class SpiderController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SquidController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SquidController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SquidController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SquidNPC(this); bukkitEntity = new SquidNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -152,11 +154,10 @@ public class SquidController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -74,7 +74,7 @@ public class VillagerController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -161,8 +161,9 @@ public class VillagerController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new VillagerNPC(this); bukkitEntity = new VillagerNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -193,11 +194,10 @@ public class VillagerController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class WitchController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class WitchController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class WitchController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new WitchNPC(this); bukkitEntity = new WitchNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class WitchController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -50,7 +50,7 @@ public class WitherController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -79,8 +79,9 @@ public class WitherController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -109,8 +110,9 @@ public class WitherController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new WitherNPC(this); bukkitEntity = new WitherNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -70,7 +70,7 @@ public class WolfController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -140,8 +140,9 @@ public class WolfController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new WolfNPC(this); bukkitEntity = new WolfNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -172,11 +173,10 @@ public class WolfController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class ZombieController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class ZombieController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class ZombieController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ZombieNPC(this); bukkitEntity = new ZombieNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class ZombieController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -37,13 +37,13 @@ public class CitizensBlockBreaker extends AbstractBlockBreaker {
private float getStrength(IBlockData block) { private float getStrength(IBlockData block) {
float base = block.getBlock().b(block, null, new BlockPosition(0, 0, 0)); float base = block.getBlock().b(block, null, new BlockPosition(0, 0, 0));
return base < 0.0F ? 0.0F : (!isDestroyable(block) ? 1.0F / base / 100.0F : strengthMod(block) / base / 30.0F); return base < 0.0F ? 0.0F : !isDestroyable(block) ? 1.0F / base / 100.0F : strengthMod(block) / base / 30.0F;
} }
private boolean isDestroyable(IBlockData block) { private boolean isDestroyable(IBlockData block) {
if (block.getMaterial().isAlwaysDestroyable()) { if (block.getMaterial().isAlwaysDestroyable())
return true; return true;
} else { else {
ItemStack current = getCurrentItem(); ItemStack current = getCurrentItem();
return current != null ? current.b(block) : false; return current != null ? current.b(block) : false;
} }
@ -66,7 +66,7 @@ public class CitizensBlockBreaker extends AbstractBlockBreaker {
} }
} }
if (handle.hasEffect(MobEffects.FASTER_DIG)) { if (handle.hasEffect(MobEffects.FASTER_DIG)) {
f *= (1.0F + (handle.getEffect(MobEffects.FASTER_DIG).getAmplifier() + 1) * 0.2F); f *= 1.0F + (handle.getEffect(MobEffects.FASTER_DIG).getAmplifier() + 1) * 0.2F;
} }
if (handle.hasEffect(MobEffects.SLOWER_DIG)) { if (handle.hasEffect(MobEffects.SLOWER_DIG)) {
float f1 = 1.0F; float f1 = 1.0F;

View File

@ -391,9 +391,8 @@ public class NMSImpl implements NMSBridge {
if (Bukkit.isPrimaryThread()) if (Bukkit.isPrimaryThread())
throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread."); throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread.");
MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().ay(); MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().ay();
if (!(sessionService instanceof YggdrasilMinecraftSessionService)) { if (!(sessionService instanceof YggdrasilMinecraftSessionService))
return sessionService.fillProfileProperties(profile, requireSecure); return sessionService.fillProfileProperties(profile, requireSecure);
}
YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService) YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService)
.getAuthenticationService(); .getAuthenticationService();
URL url = HttpAuthenticationService URL url = HttpAuthenticationService
@ -431,9 +430,8 @@ public class NMSImpl implements NMSBridge {
} }
} catch (Exception e) { } catch (Exception e) {
} }
if (bserver == null) { if (bserver == null)
return null; return null;
}
BossBar ret = Bukkit.createBossBar("", BarColor.BLUE, BarStyle.SEGMENTED_10); BossBar ret = Bukkit.createBossBar("", BarColor.BLUE, BarStyle.SEGMENTED_10);
try { try {
CRAFT_BOSSBAR_HANDLE_FIELD.set(ret, bserver); CRAFT_BOSSBAR_HANDLE_FIELD.set(ret, bserver);
@ -464,9 +462,8 @@ public class NMSImpl implements NMSBridge {
Entity handle = getHandle(entity); Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove() ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null; : handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
if (controller == null || !controller.a()) { if (controller == null || !controller.a())
return null; return null;
}
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f()); return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
} }
@ -477,9 +474,8 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public float getHeadYaw(org.bukkit.entity.Entity entity) { public float getHeadYaw(org.bukkit.entity.Entity entity) {
if (!(entity instanceof LivingEntity)) { if (!(entity instanceof LivingEntity))
return entity.getLocation().getYaw(); return entity.getLocation().getYaw();
}
return getHandle((LivingEntity) entity).aQ; return getHandle((LivingEntity) entity).aQ;
} }
@ -540,7 +536,7 @@ public class NMSImpl implements NMSBridge {
Entity handle = NMSImpl.getHandle(entity); Entity handle = NMSImpl.getHandle(entity);
if (handle == null || handle.passengers == null) if (handle == null || handle.passengers == null)
return Lists.newArrayList(); return Lists.newArrayList();
return Lists.transform(handle.passengers, input -> input.getBukkitEntity()); return Lists.transform(handle.passengers, Entity::getBukkitEntity);
} }
@Override @Override
@ -588,8 +584,8 @@ public class NMSImpl implements NMSBridge {
if (!npc.isSpawned() || !(npc.getEntity() instanceof LivingEntity)) if (!npc.isSpawned() || !(npc.getEntity() instanceof LivingEntity))
return DEFAULT_SPEED; return DEFAULT_SPEED;
EntityLiving handle = NMSImpl.getHandle((LivingEntity) npc.getEntity()); EntityLiving handle = NMSImpl.getHandle((LivingEntity) npc.getEntity());
if (handle == null) if (handle == null) {
return DEFAULT_SPEED; }
return DEFAULT_SPEED; return DEFAULT_SPEED;
// return (float) // return (float)
// handle.getAttributeInstance(GenericAttributes.d).getValue(); // handle.getAttributeInstance(GenericAttributes.d).getValue();
@ -613,12 +609,8 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final Location dest, public MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final Location dest,
final NavigatorParameters params) { final NavigatorParameters params) {
return getTargetNavigator(entity, params, new Function<NavigationAbstract, Boolean>() { return getTargetNavigator(entity, params,
@Override input -> input.a(dest.getX(), dest.getY(), dest.getZ(), params.speed()));
public Boolean apply(NavigationAbstract input) {
return input.a(dest.getX(), dest.getY(), dest.getZ(), params.speed());
}
});
} }
private MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final NavigatorParameters params, private MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final NavigatorParameters params,
@ -696,11 +688,10 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public org.bukkit.entity.Entity getVehicle(org.bukkit.entity.Entity entity) { public org.bukkit.entity.Entity getVehicle(org.bukkit.entity.Entity entity) {
Entity handle = NMSImpl.getHandle(entity); Entity handle = NMSImpl.getHandle(entity);
if (handle == null) { if (handle == null)
return null; return null;
}
Entity e = handle.getVehicle(); Entity e = handle.getVehicle();
return (e == handle || e == null) ? null : e.getBukkitEntity(); return e == handle || e == null ? null : e.getBukkitEntity();
} }
@Override @Override
@ -832,7 +823,7 @@ public class NMSImpl implements NMSBridge {
public void look(org.bukkit.entity.Entity entity, Location to, boolean headOnly, boolean immediate) { public void look(org.bukkit.entity.Entity entity, Location to, boolean headOnly, boolean immediate) {
Entity handle = NMSImpl.getHandle(entity); Entity handle = NMSImpl.getHandle(entity);
if (immediate || headOnly || BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType()) if (immediate || headOnly || BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType())
|| (!(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC))) { || !(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC)) {
Location fromLocation = entity.getLocation(FROM_LOCATION); Location fromLocation = entity.getLocation(FROM_LOCATION);
double xDiff, yDiff, zDiff; double xDiff, yDiff, zDiff;
xDiff = to.getX() - fromLocation.getX(); xDiff = to.getX() - fromLocation.getX();
@ -842,8 +833,9 @@ public class NMSImpl implements NMSBridge {
double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff); double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff);
double yaw = Math.toDegrees(Math.acos(xDiff / distanceXZ)); double yaw = Math.toDegrees(Math.acos(xDiff / distanceXZ));
double pitch = Math.toDegrees(Math.acos(yDiff / distanceY)) - 90; double pitch = Math.toDegrees(Math.acos(yDiff / distanceY)) - 90;
if (zDiff < 0.0) if (zDiff < 0.0) {
yaw += Math.abs(180 - yaw) * 2; yaw += Math.abs(180 - yaw) * 2;
}
if (handle instanceof EntityEnderDragon) { if (handle instanceof EntityEnderDragon) {
yaw = Util.getDragonYaw(handle.getBukkitEntity(), xDiff, zDiff); yaw = Util.getDragonYaw(handle.getBukkitEntity(), xDiff, zDiff);
} else { } else {
@ -874,7 +866,7 @@ public class NMSImpl implements NMSBridge {
public void look(org.bukkit.entity.Entity from, org.bukkit.entity.Entity to) { public void look(org.bukkit.entity.Entity from, org.bukkit.entity.Entity to) {
Entity handle = NMSImpl.getHandle(from), target = NMSImpl.getHandle(to); Entity handle = NMSImpl.getHandle(from), target = NMSImpl.getHandle(to);
if (BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType()) if (BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType())
|| (!(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC))) { || !(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC)) {
if (to instanceof LivingEntity) { if (to instanceof LivingEntity) {
look(from, ((LivingEntity) to).getEyeLocation(), false, true); look(from, ((LivingEntity) to).getEyeLocation(), false, true);
} else { } else {
@ -921,8 +913,6 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public CraftInventoryView getBukkitView() { public CraftInventoryView getBukkitView() {
if (this.bukkitEntity != null) { if (this.bukkitEntity != null) {
return this.bukkitEntity;
} else {
try { try {
this.bukkitEntity = new CraftInventoryView(player, this.bukkitEntity = new CraftInventoryView(player,
new CitizensInventoryAnvil(new Location(player.getWorld(), 0, 0, 0), new CitizensInventoryAnvil(new Location(player.getWorld(), 0, 0, 0),
@ -933,8 +923,8 @@ public class NMSImpl implements NMSBridge {
e.printStackTrace(); e.printStackTrace();
return super.getBukkitView(); return super.getBukkitView();
} }
return this.bukkitEntity;
} }
return this.bukkitEntity;
} }
}; };
container.windowId = handle.nextContainerCounter(); container.windowId = handle.nextContainerCounter();
@ -972,12 +962,11 @@ public class NMSImpl implements NMSBridge {
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist", boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean()); Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.k_(); entity.k_();
if (!removeFromPlayerList) { if (!removeFromPlayerList)
return; return;
}
Entity entity1 = entity.bB(); Entity entity1 = entity.bB();
if (entity1 != null) { if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) { if (entity1.dead || !entity1.w(entity)) {
entity.stopRiding(); entity.stopRiding();
} }
} else { } else {
@ -1010,8 +999,9 @@ public class NMSImpl implements NMSBridge {
return; return;
Class<?> search = clazz; Class<?> search = clazz;
while ((search = search.getSuperclass()) != null && Entity.class.isAssignableFrom(search)) { while ((search = search.getSuperclass()) != null && Entity.class.isAssignableFrom(search)) {
if (!ENTITY_CLASS_TO_INT.containsKey(search)) if (!ENTITY_CLASS_TO_INT.containsKey(search)) {
continue; continue;
}
int code = ENTITY_CLASS_TO_INT.get(search); int code = ENTITY_CLASS_TO_INT.get(search);
ENTITY_CLASS_TO_INT.put(clazz, code); ENTITY_CLASS_TO_INT.put(clazz, code);
ENTITY_CLASS_TO_NAME.put(clazz, ENTITY_CLASS_TO_NAME.get(search)); ENTITY_CLASS_TO_NAME.put(clazz, ENTITY_CLASS_TO_NAME.get(search));
@ -1210,8 +1200,9 @@ public class NMSImpl implements NMSBridge {
EntityLiving handle = (EntityLiving) getHandle(entity); EntityLiving handle = (EntityLiving) getHandle(entity);
yaw = Util.clamp(yaw); yaw = Util.clamp(yaw);
handle.aP = yaw; handle.aP = yaw;
if (!(handle instanceof EntityHuman)) if (!(handle instanceof EntityHuman)) {
handle.aO = yaw; handle.aO = yaw;
}
handle.aQ = yaw; handle.aQ = yaw;
} }
@ -1340,8 +1331,8 @@ public class NMSImpl implements NMSBridge {
EntityPlayer from = (EntityPlayer) getHandle(entity); EntityPlayer from = (EntityPlayer) getHandle(entity);
PerPlayerMetadata<Long> meta = CitizensAPI.getLocationLookup().registerMetadata("sleeping", null); PerPlayerMetadata<Long> meta = CitizensAPI.getLocationLookup().registerMetadata("sleeping", null);
if (sleep) { if (sleep) {
List<Player> nearbyPlayers = Lists.newArrayList(Iterables List<Player> nearbyPlayers = Lists.newArrayList(
.filter(CitizensAPI.getLocationLookup().getNearbyPlayers(entity.getLocation(), 64), (p) -> { Iterables.filter(CitizensAPI.getLocationLookup().getNearbyPlayers(entity.getLocation(), 64), p -> {
Long time = meta.getMarker(p.getUniqueId(), entity.getUniqueId().toString()); Long time = meta.getMarker(p.getUniqueId(), entity.getUniqueId().toString());
if (time == null || Math.abs(System.currentTimeMillis() - time) > 5000) if (time == null || Math.abs(System.currentTimeMillis() - time) > 5000)
return true; return true;
@ -1380,7 +1371,7 @@ public class NMSImpl implements NMSBridge {
list.add(new PacketPlayOutEntityTeleport(from)); list.add(new PacketPlayOutEntityTeleport(from));
for (Player nearby : nearbyPlayers) { for (Player nearby : nearbyPlayers) {
nearby.sendBlockChange(bedLoc, Material.BED_BLOCK, facingByte); nearby.sendBlockChange(bedLoc, Material.BED_BLOCK, facingByte);
list.forEach((packet) -> sendPacket(nearby, packet)); list.forEach(packet -> sendPacket(nearby, packet));
meta.set(nearby.getUniqueId(), entity.getUniqueId().toString(), System.currentTimeMillis()); meta.set(nearby.getUniqueId(), entity.getUniqueId().toString(), System.currentTimeMillis());
} }
} else { } else {
@ -1509,9 +1500,8 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public void setPath() { public void setPath() {
Location location = parameters.entityTargetLocationMapper().apply(target); Location location = parameters.entityTargetLocationMapper().apply(target);
if (location == null) { if (location == null)
throw new IllegalStateException("mapper should not return null"); throw new IllegalStateException("mapper should not return null");
}
navigation.a(location.getX(), location.getY(), location.getZ(), parameters.speed()); navigation.a(location.getX(), location.getY(), location.getZ(), parameters.speed());
} }
@ -1584,9 +1574,8 @@ public class NMSImpl implements NMSBridge {
} }
private static CompoundTag convertNBT(net.minecraft.server.v1_10_R1.NBTTagCompound tag) { private static CompoundTag convertNBT(net.minecraft.server.v1_10_R1.NBTTagCompound tag) {
if (tag == null) { if (tag == null)
return new CompoundTag("", Collections.EMPTY_MAP); return new CompoundTag("", Collections.EMPTY_MAP);
}
Map<String, Tag> tags = Maps.newHashMap(); Map<String, Tag> tags = Maps.newHashMap();
for (String key : tag.c()) { for (String key : tag.c()) {
tags.put(key, convertNBT(key, tag.get(key))); tags.put(key, convertNBT(key, tag.get(key)));
@ -1595,25 +1584,25 @@ public class NMSImpl implements NMSBridge {
} }
private static Tag convertNBT(String key, net.minecraft.server.v1_10_R1.NBTBase base) { private static Tag convertNBT(String key, net.minecraft.server.v1_10_R1.NBTBase base) {
if (base instanceof net.minecraft.server.v1_10_R1.NBTTagInt) { if (base instanceof net.minecraft.server.v1_10_R1.NBTTagInt)
return new IntTag(key, ((net.minecraft.server.v1_10_R1.NBTTagInt) base).e()); return new IntTag(key, ((net.minecraft.server.v1_10_R1.NBTTagInt) base).e());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagFloat) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagFloat)
return new FloatTag(key, ((net.minecraft.server.v1_10_R1.NBTTagFloat) base).i()); return new FloatTag(key, ((net.minecraft.server.v1_10_R1.NBTTagFloat) base).i());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagDouble) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagDouble)
return new DoubleTag(key, ((net.minecraft.server.v1_10_R1.NBTTagDouble) base).h()); return new DoubleTag(key, ((net.minecraft.server.v1_10_R1.NBTTagDouble) base).h());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagLong) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagLong)
return new LongTag(key, ((net.minecraft.server.v1_10_R1.NBTTagLong) base).d()); return new LongTag(key, ((net.minecraft.server.v1_10_R1.NBTTagLong) base).d());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagShort) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagShort)
return new ShortTag(key, ((net.minecraft.server.v1_10_R1.NBTTagShort) base).f()); return new ShortTag(key, ((net.minecraft.server.v1_10_R1.NBTTagShort) base).f());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagByte) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagByte)
return new ByteTag(key, ((net.minecraft.server.v1_10_R1.NBTTagByte) base).g()); return new ByteTag(key, ((net.minecraft.server.v1_10_R1.NBTTagByte) base).g());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagByteArray) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagByteArray)
return new ByteArrayTag(key, ((net.minecraft.server.v1_10_R1.NBTTagByteArray) base).c()); return new ByteArrayTag(key, ((net.minecraft.server.v1_10_R1.NBTTagByteArray) base).c());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagIntArray) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagIntArray)
return new IntArrayTag(key, ((net.minecraft.server.v1_10_R1.NBTTagIntArray) base).d()); return new IntArrayTag(key, ((net.minecraft.server.v1_10_R1.NBTTagIntArray) base).d());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagString) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagString)
return new StringTag(key, base.toString()); return new StringTag(key, base.toString());
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagList) { else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagList) {
List<net.minecraft.server.v1_10_R1.NBTBase> list = (List<net.minecraft.server.v1_10_R1.NBTBase>) base; List<net.minecraft.server.v1_10_R1.NBTBase> list = (List<net.minecraft.server.v1_10_R1.NBTBase>) base;
List<Tag> converted = Lists.newArrayList(); List<Tag> converted = Lists.newArrayList();
if (list.size() > 0) { if (list.size() > 0) {
@ -1623,19 +1612,17 @@ public class NMSImpl implements NMSBridge {
} }
return new ListTag(key, tagType, converted); return new ListTag(key, tagType, converted);
} }
return null; } else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagCompound)
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagCompound) { return convertNBT((net.minecraft.server.v1_10_R1.NBTTagCompound) base);
return convertNBT(((net.minecraft.server.v1_10_R1.NBTTagCompound) base)); else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagEnd)
} else if (base instanceof net.minecraft.server.v1_10_R1.NBTTagEnd) {
return new EndTag(); return new EndTag();
}
return null; return null;
} }
public static void flyingMoveLogic(EntityLiving entity, float f, float f1) { public static void flyingMoveLogic(EntityLiving entity, float f, float f1) {
if ((entity.ct()) || (entity.bA())) { if (entity.ct() || entity.bA()) {
if ((entity.isInWater()) if (entity.isInWater()
&& ((!(entity instanceof EntityHuman)) || (!((EntityHuman) entity).abilities.isFlying))) { && (!(entity instanceof EntityHuman) || !((EntityHuman) entity).abilities.isFlying)) {
double d1 = entity.locY; double d1 = entity.locY;
float f4 = entity instanceof EntityPolarBear ? 0.98F : 0.8F; float f4 = entity instanceof EntityPolarBear ? 0.98F : 0.8F;
float f3 = 0.02F; float f3 = 0.02F;
@ -1658,12 +1645,12 @@ public class NMSImpl implements NMSBridge {
if (!entity.isNoGravity()) { if (!entity.isNoGravity()) {
entity.motY -= 0.02D; entity.motY -= 0.02D;
} }
if ((entity.positionChanged) if (entity.positionChanged
&& (entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ))) { && entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ)) {
entity.motY = 0.30000001192092896D; entity.motY = 0.30000001192092896D;
} }
} else if ((entity.ao()) } else if (entity.ao()
&& ((!(entity instanceof EntityHuman)) || (!((EntityHuman) entity).abilities.isFlying))) { && (!(entity instanceof EntityHuman) || !((EntityHuman) entity).abilities.isFlying)) {
double d1 = entity.locY; double d1 = entity.locY;
entity.a(f, f1, 0.02F); entity.a(f, f1, 0.02F);
entity.move(entity.motX, entity.motY, entity.motZ); entity.move(entity.motX, entity.motY, entity.motZ);
@ -1673,8 +1660,8 @@ public class NMSImpl implements NMSBridge {
if (!entity.isNoGravity()) { if (!entity.isNoGravity()) {
entity.motY -= 0.02D; entity.motY -= 0.02D;
} }
if ((entity.positionChanged) if (entity.positionChanged
&& (entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ))) { && entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ)) {
entity.motY = 0.30000001192092896D; entity.motY = 0.30000001192092896D;
} }
} else if (entity.cG()) { } else if (entity.cG()) {
@ -1689,7 +1676,7 @@ public class NMSImpl implements NMSBridge {
float f6 = MathHelper.cos(f5); float f6 = MathHelper.cos(f5);
f6 = (float) (f6 * f6 * Math.min(1.0D, d3 / 0.4D)); f6 = (float) (f6 * f6 * Math.min(1.0D, d3 / 0.4D));
entity.motY += -0.08D + f6 * 0.06D; entity.motY += -0.08D + f6 * 0.06D;
if ((entity.motY < 0.0D) && (d0 > 0.0D)) { if (entity.motY < 0.0D && d0 > 0.0D) {
double d4 = entity.motY * -0.1D * f6; double d4 = entity.motY * -0.1D * f6;
entity.motY += d4; entity.motY += d4;
entity.motX += vec3d.x * d4 / d0; entity.motX += vec3d.x * d4 / d0;
@ -1709,7 +1696,7 @@ public class NMSImpl implements NMSBridge {
entity.motY *= 0.9800000190734863D; entity.motY *= 0.9800000190734863D;
entity.motZ *= 0.9900000095367432D; entity.motZ *= 0.9900000095367432D;
entity.move(entity.motX, entity.motY, entity.motZ); entity.move(entity.motX, entity.motY, entity.motZ);
if ((entity.positionChanged) && (!entity.world.isClientSide)) { if (entity.positionChanged && !entity.world.isClientSide) {
double d4 = Math.sqrt(entity.motX * entity.motX + entity.motZ * entity.motZ); double d4 = Math.sqrt(entity.motX * entity.motX + entity.motZ * entity.motZ);
double d5 = d2 - d4; double d5 = d2 - d4;
float f7 = (float) (d5 * 10.0D - 3.0D); float f7 = (float) (d5 * 10.0D - 3.0D);
@ -1718,8 +1705,8 @@ public class NMSImpl implements NMSBridge {
entity.damageEntity(DamageSource.FLY_INTO_WALL, f7); entity.damageEntity(DamageSource.FLY_INTO_WALL, f7);
} }
} }
if ((entity.onGround) && (!entity.world.isClientSide) && (entity.getFlag(7)) if (entity.onGround && !entity.world.isClientSide && entity.getFlag(7)
&& (!CraftEventFactory.callToggleGlideEvent(entity, false).isCancelled())) { && !CraftEventFactory.callToggleGlideEvent(entity, false).isCancelled()) {
entity.setFlag(7, false); entity.setFlag(7, false);
} }
} else { } else {
@ -1749,13 +1736,13 @@ public class NMSImpl implements NMSBridge {
if (entity.motY < -0.15D) { if (entity.motY < -0.15D) {
entity.motY = -0.15D; entity.motY = -0.15D;
} }
boolean flag = (entity.isSneaking()) && ((entity instanceof EntityHuman)); boolean flag = entity.isSneaking() && entity instanceof EntityHuman;
if ((flag) && (entity.motY < 0.0D)) { if (flag && entity.motY < 0.0D) {
entity.motY = 0.0D; entity.motY = 0.0D;
} }
} }
entity.move(entity.motX, entity.motY, entity.motZ); entity.move(entity.motX, entity.motY, entity.motZ);
if ((entity.positionChanged) && (entity.m_())) { if (entity.positionChanged && entity.m_()) {
entity.motY = 0.2D; entity.motY = 0.2D;
} }
if (entity.hasEffect(MobEffects.LEVITATION)) { if (entity.hasEffect(MobEffects.LEVITATION)) {
@ -1763,8 +1750,8 @@ public class NMSImpl implements NMSBridge {
* 0.2D; * 0.2D;
} else { } else {
blockposition_pooledblockposition.e(entity.locX, 0.0D, entity.locZ); blockposition_pooledblockposition.e(entity.locX, 0.0D, entity.locZ);
if ((entity.world.isClientSide) && ((!entity.world.isLoaded(blockposition_pooledblockposition)) if (entity.world.isClientSide && (!entity.world.isLoaded(blockposition_pooledblockposition)
|| (!entity.world.getChunkAtWorldCoords(blockposition_pooledblockposition).p()))) { || !entity.world.getChunkAtWorldCoords(blockposition_pooledblockposition).p())) {
if (entity.locY > 0.0D) { if (entity.locY > 0.0D) {
entity.motY = -0.1D; entity.motY = -0.1D;
} else { } else {
@ -1874,7 +1861,7 @@ public class NMSImpl implements NMSBridge {
} }
public static void sendPacketNearby(Player from, Location location, Packet<?> packet, double radius) { public static void sendPacketNearby(Player from, Location location, Packet<?> packet, double radius) {
List<Packet<?>> list = new ArrayList<Packet<?>>(); List<Packet<?>> list = new ArrayList<>();
list.add(packet); list.add(packet);
sendPacketsNearby(from, location, list, radius); sendPacketsNearby(from, location, list, radius);
} }
@ -1883,8 +1870,8 @@ public class NMSImpl implements NMSBridge {
radius *= radius; radius *= radius;
final org.bukkit.World world = location.getWorld(); final org.bukkit.World world = location.getWorld();
for (Player player : CitizensAPI.getLocationLookup().getNearbyPlayers(location, radius)) { for (Player player : CitizensAPI.getLocationLookup().getNearbyPlayers(location, radius)) {
if (world != player.getWorld() || (from != null && !player.canSee(from)) if (world != player.getWorld() || from != null && !player.canSee(from)
|| (location.distanceSquared(player.getLocation(PACKET_CACHE_LOCATION)) > radius)) { || location.distanceSquared(player.getLocation(PACKET_CACHE_LOCATION)) > radius) {
continue; continue;
} }
for (Packet<?> packet : packets) { for (Packet<?> packet : packets) {
@ -1906,15 +1893,16 @@ public class NMSImpl implements NMSBridge {
} }
public static void setSize(Entity entity, float f, float f1, boolean justCreated) { public static void setSize(Entity entity, float f, float f1, boolean justCreated) {
if ((f != entity.width) || (f1 != entity.length)) { if (f != entity.width || f1 != entity.length) {
float f2 = entity.width; float f2 = entity.width;
entity.width = f; entity.width = f;
entity.length = f1; entity.length = f1;
entity.a(new AxisAlignedBB(entity.getBoundingBox().a, entity.getBoundingBox().b, entity.getBoundingBox().c, entity.a(new AxisAlignedBB(entity.getBoundingBox().a, entity.getBoundingBox().b, entity.getBoundingBox().c,
entity.getBoundingBox().a + entity.width, entity.getBoundingBox().b + entity.length, entity.getBoundingBox().a + entity.width, entity.getBoundingBox().b + entity.length,
entity.getBoundingBox().c + entity.width)); entity.getBoundingBox().c + entity.width));
if ((entity.width > f2) && (!justCreated) && (!entity.world.isClientSide)) if (entity.width > f2 && !justCreated && !entity.world.isClientSide) {
entity.move((f2 - entity.width) / 2, 0.0D, (f2 - entity.width) / 2); entity.move((f2 - entity.width) / 2, 0.0D, (f2 - entity.width) / 2);
}
} }
} }

View File

@ -54,9 +54,9 @@ public class PlayerControllerMove extends ControllerMove {
f3 = -f2; f3 = -f2;
} }
float f4 = f + f3; float f4 = f + f3;
if (f4 < 0.0F) if (f4 < 0.0F) {
f4 += 360.0F; f4 += 360.0F;
else if (f4 > 360.0F) { } else if (f4 > 360.0F) {
f4 -= 360.0F; f4 -= 360.0F;
} }
return f4; return f4;
@ -90,7 +90,7 @@ public class PlayerControllerMove extends ControllerMove {
this.h = new Random().nextInt(20) + 10; this.h = new Random().nextInt(20) + 10;
this.h /= 3; this.h /= 3;
((EntityInsentient) this.a).getControllerJump().a(); ((EntityInsentient) this.a).getControllerJump().a();
} else if (d2 >= NMS.getStepHeight(a.getBukkitEntity()) && (d0 * d0 + d1 * d1) < 1.0D) { } else if (d2 >= NMS.getStepHeight(a.getBukkitEntity()) && d0 * d0 + d1 * d1 < 1.0D) {
if (this.a instanceof EntityHumanNPC) { if (this.a instanceof EntityHumanNPC) {
((EntityHumanNPC) this.a).getControllerJump().a(); ((EntityHumanNPC) this.a).getControllerJump().a();
} else { } else {

View File

@ -61,23 +61,21 @@ public class PlayerNavigation extends NavigationAbstract {
BlockPosition localBlockPosition; BlockPosition localBlockPosition;
if (this.b.getType(paramBlockPosition).getMaterial() == Material.AIR) { if (this.b.getType(paramBlockPosition).getMaterial() == Material.AIR) {
localBlockPosition = paramBlockPosition.down(); localBlockPosition = paramBlockPosition.down();
while ((localBlockPosition.getY() > 0) while (localBlockPosition.getY() > 0 && this.b.getType(localBlockPosition).getMaterial() == Material.AIR) {
&& (this.b.getType(localBlockPosition).getMaterial() == Material.AIR)) {
localBlockPosition = localBlockPosition.down(); localBlockPosition = localBlockPosition.down();
} }
if (localBlockPosition.getY() > 0) { if (localBlockPosition.getY() > 0)
return supera(localBlockPosition.up()); return supera(localBlockPosition.up());
} while (localBlockPosition.getY() < this.b.getHeight()
while ((localBlockPosition.getY() < this.b.getHeight()) && this.b.getType(localBlockPosition).getMaterial() == Material.AIR) {
&& (this.b.getType(localBlockPosition).getMaterial() == Material.AIR)) {
localBlockPosition = localBlockPosition.up(); localBlockPosition = localBlockPosition.up();
} }
paramBlockPosition = localBlockPosition; paramBlockPosition = localBlockPosition;
} }
if (this.b.getType(paramBlockPosition).getMaterial().isBuildable()) { if (this.b.getType(paramBlockPosition).getMaterial().isBuildable()) {
localBlockPosition = paramBlockPosition.up(); localBlockPosition = paramBlockPosition.up();
while ((localBlockPosition.getY() < this.b.getHeight()) while (localBlockPosition.getY() < this.b.getHeight()
&& (this.b.getType(localBlockPosition).getMaterial().isBuildable())) { && this.b.getType(localBlockPosition).getMaterial().isBuildable()) {
localBlockPosition = localBlockPosition.up(); localBlockPosition = localBlockPosition.up();
} }
return a2(localBlockPosition); return a2(localBlockPosition);
@ -110,9 +108,8 @@ public class PlayerNavigation extends NavigationAbstract {
@Override @Override
public boolean a(Entity paramEntity, double paramDouble) { public boolean a(Entity paramEntity, double paramDouble) {
PathEntity localPathEntity = a(paramEntity); PathEntity localPathEntity = a(paramEntity);
if (localPathEntity != null) { if (localPathEntity != null)
return a(localPathEntity, paramDouble); return a(localPathEntity, paramDouble);
}
return false; return false;
} }
@ -120,9 +117,8 @@ public class PlayerNavigation extends NavigationAbstract {
Vec3D paramVec3D, double paramDouble1, double paramDouble2) { Vec3D paramVec3D, double paramDouble1, double paramDouble2) {
int i = paramInt1 - paramInt4 / 2; int i = paramInt1 - paramInt4 / 2;
int j = paramInt3 - paramInt6 / 2; int j = paramInt3 - paramInt6 / 2;
if (!b(i, paramInt2, j, paramInt4, paramInt5, paramInt6, paramVec3D, paramDouble1, paramDouble2)) { if (!b(i, paramInt2, j, paramInt4, paramInt5, paramInt6, paramVec3D, paramDouble1, paramDouble2))
return false; return false;
}
for (int k = i; k < i + paramInt4; k++) { for (int k = i; k < i + paramInt4; k++) {
for (int m = j; m < j + paramInt6; m++) { for (int m = j; m < j + paramInt6; m++) {
double d1 = k + 0.5D - paramVec3D.x; double d1 = k + 0.5D - paramVec3D.x;
@ -130,20 +126,17 @@ public class PlayerNavigation extends NavigationAbstract {
if (d1 * paramDouble1 + d2 * paramDouble2 >= 0.0D) { if (d1 * paramDouble1 + d2 * paramDouble2 >= 0.0D) {
PathType localPathType = this.e.a(this.b, k, paramInt2 - 1, m, this.a, paramInt4, paramInt5, PathType localPathType = this.e.a(this.b, k, paramInt2 - 1, m, this.a, paramInt4, paramInt5,
paramInt6, true, true); paramInt6, true, true);
if ((localPathType == PathType.WATER) || (localPathType == PathType.LAVA) if (localPathType == PathType.WATER || localPathType == PathType.LAVA
|| (localPathType == PathType.OPEN)) { || localPathType == PathType.OPEN)
return false; return false;
}
localPathType = this.e.a(this.b, k, paramInt2, m, this.a, paramInt4, paramInt5, paramInt6, true, localPathType = this.e.a(this.b, k, paramInt2, m, this.a, paramInt4, paramInt5, paramInt6, true,
true); true);
float f1 = this.a.a(localPathType); float f1 = this.a.a(localPathType);
if ((f1 < 0.0F) || (f1 >= 8.0F)) { if (f1 < 0.0F || f1 >= 8.0F)
return false; return false;
} if (localPathType == PathType.DAMAGE_FIRE || localPathType == PathType.DANGER_FIRE
if ((localPathType == PathType.DAMAGE_FIRE) || (localPathType == PathType.DANGER_FIRE) || localPathType == PathType.DAMAGE_OTHER)
|| (localPathType == PathType.DAMAGE_OTHER)) {
return false; return false;
}
} }
} }
} }
@ -160,9 +153,8 @@ public class PlayerNavigation extends NavigationAbstract {
this.c = paramPathEntity; this.c = paramPathEntity;
} }
d(); d();
if (this.c.d() == 0) { if (this.c.d() == 0)
return false; return false;
}
this.d = paramDouble; this.d = paramDouble;
Vec3D localVec3D = c(); Vec3D localVec3D = c();
this.i = this.h; this.i = this.h;
@ -179,16 +171,16 @@ public class PlayerNavigation extends NavigationAbstract {
this.i = this.h; this.i = this.h;
this.j = paramVec3D; this.j = paramVec3D;
} }
if ((this.c != null) && (!this.c.b())) { if (this.c != null && !this.c.b()) {
Vec3D localVec3D = this.c.f(); Vec3D localVec3D = this.c.f();
if (!localVec3D.equals(this.k)) { if (!localVec3D.equals(this.k)) {
this.k = localVec3D; this.k = localVec3D;
double d1 = paramVec3D.f(this.k); double d1 = paramVec3D.f(this.k);
this.n = (this.a.cp() > 0.0F ? d1 / this.a.cp() * 1000.0D : 0.0D); this.n = this.a.cp() > 0.0F ? d1 / this.a.cp() * 1000.0D : 0.0D;
} else { } else {
this.l += System.currentTimeMillis() - this.m; this.l += System.currentTimeMillis() - this.m;
} }
if ((this.n > 0.0D) && (this.l > this.n * 3.0D)) { if (this.n > 0.0D && this.l > this.n * 3.0D) {
this.k = Vec3D.a; this.k = Vec3D.a;
this.l = 0L; this.l = 0L;
this.n = 0.0D; this.n = 0.0D;
@ -205,17 +197,15 @@ public class PlayerNavigation extends NavigationAbstract {
double d1 = paramVec3D2.x - paramVec3D1.x; double d1 = paramVec3D2.x - paramVec3D1.x;
double d2 = paramVec3D2.z - paramVec3D1.z; double d2 = paramVec3D2.z - paramVec3D1.z;
double d3 = d1 * d1 + d2 * d2; double d3 = d1 * d1 + d2 * d2;
if (d3 < 1.0E-8D) { if (d3 < 1.0E-8D)
return false; return false;
}
double d4 = 1.0D / Math.sqrt(d3); double d4 = 1.0D / Math.sqrt(d3);
d1 *= d4; d1 *= d4;
d2 *= d4; d2 *= d4;
paramInt1 += 2; paramInt1 += 2;
paramInt3 += 2; paramInt3 += 2;
if (!a(i, (int) paramVec3D1.y, j, paramInt1, paramInt2, paramInt3, paramVec3D1, d1, d2)) { if (!a(i, (int) paramVec3D1.y, j, paramInt1, paramInt2, paramInt3, paramVec3D1, d1, d2))
return false; return false;
}
paramInt1 -= 2; paramInt1 -= 2;
paramInt3 -= 2; paramInt3 -= 2;
double d5 = 1.0D / Math.abs(d1); double d5 = 1.0D / Math.abs(d1);
@ -236,7 +226,7 @@ public class PlayerNavigation extends NavigationAbstract {
int i1 = MathHelper.floor(paramVec3D2.z); int i1 = MathHelper.floor(paramVec3D2.z);
int i2 = n - i; int i2 = n - i;
int i3 = i1 - j; int i3 = i1 - j;
while ((i2 * k > 0) || (i3 * m > 0)) { while (i2 * k > 0 || i3 * m > 0) {
if (d7 < d8) { if (d7 < d8) {
d7 += d5; d7 += d5;
i += k; i += k;
@ -246,20 +236,17 @@ public class PlayerNavigation extends NavigationAbstract {
j += m; j += m;
i3 = i1 - j; i3 = i1 - j;
} }
if (!a(i, (int) paramVec3D1.y, j, paramInt1, paramInt2, paramInt3, paramVec3D1, d1, d2)) { if (!a(i, (int) paramVec3D1.y, j, paramInt1, paramInt2, paramInt3, paramVec3D1, d1, d2))
return false; return false;
}
} }
return true; return true;
} }
public PathEntity a2(BlockPosition paramBlockPosition) { public PathEntity a2(BlockPosition paramBlockPosition) {
if (!b()) { if (!b())
return null; return null;
} if (this.c != null && !this.c.b() && paramBlockPosition.equals(this.r))
if ((this.c != null) && (!this.c.b()) && (paramBlockPosition.equals(this.r))) {
return this.c; return this.c;
}
this.r = paramBlockPosition; this.r = paramBlockPosition;
float f1 = h(); float f1 = h();
this.b.methodProfiler.a("pathfind"); this.b.methodProfiler.a("pathfind");
@ -274,7 +261,7 @@ public class PlayerNavigation extends NavigationAbstract {
@Override @Override
protected boolean b() { protected boolean b() {
return (this.a.onGround) || ((g()) && (p())) || (this.a.isPassenger()); return this.a.onGround || g() && p() || this.a.isPassenger();
} }
@Override @Override
@ -294,9 +281,8 @@ public class PlayerNavigation extends NavigationAbstract {
double d2 = localBlockPosition.getZ() + 0.5D - paramVec3D.z; double d2 = localBlockPosition.getZ() + 0.5D - paramVec3D.z;
if (d1 * paramDouble1 + d2 * paramDouble2 >= 0.0D) { if (d1 * paramDouble1 + d2 * paramDouble2 >= 0.0D) {
Block localBlock = this.b.getType(localBlockPosition).getBlock(); Block localBlock = this.b.getType(localBlockPosition).getBlock();
if (!localBlock.b(this.b, localBlockPosition)) { if (!localBlock.b(this.b, localBlockPosition))
return false; return false;
}
} }
} }
return true; return true;
@ -323,7 +309,7 @@ public class PlayerNavigation extends NavigationAbstract {
Block localBlock = localIBlockData.getBlock(); Block localBlock = localIBlockData.getBlock();
if (localBlock == Blocks.cauldron) { if (localBlock == Blocks.cauldron) {
this.c.a(i, localPathPoint.a(localPathPoint.a, localPathPoint.b + 1, localPathPoint.c)); this.c.a(i, localPathPoint.a(localPathPoint.a, localPathPoint.b + 1, localPathPoint.c));
if ((localObject != null) && (localPathPoint.b >= ((PathPoint) localObject).b)) { if (localObject != null && localPathPoint.b >= ((PathPoint) localObject).b) {
this.c.a(i + 1, ((PathPoint) localObject).a(((PathPoint) localObject).a, localPathPoint.b + 1, this.c.a(i + 1, ((PathPoint) localObject).a(((PathPoint) localObject).a, localPathPoint.b + 1,
((PathPoint) localObject).c)); ((PathPoint) localObject).c));
} }
@ -331,9 +317,8 @@ public class PlayerNavigation extends NavigationAbstract {
} }
if (this.f2) { if (this.f2) {
if (this.b.h(new BlockPosition(MathHelper.floor(this.a.locX), (int) (this.a.getBoundingBox().b + 0.5D), if (this.b.h(new BlockPosition(MathHelper.floor(this.a.locX), (int) (this.a.getBoundingBox().b + 0.5D),
MathHelper.floor(this.a.locZ)))) { MathHelper.floor(this.a.locZ))))
return; return;
}
for (i = 0; i < this.c.d(); i++) { for (i = 0; i < this.c.d(); i++) {
localPathPoint = this.c.a(i); localPathPoint = this.c.a(i);
if (this.b.h(new BlockPosition(localPathPoint.a, localPathPoint.b, localPathPoint.c))) { if (this.b.h(new BlockPosition(localPathPoint.a, localPathPoint.b, localPathPoint.c))) {
@ -387,27 +372,24 @@ public class PlayerNavigation extends NavigationAbstract {
if (this.p) { if (this.p) {
j(); j();
} }
if (n()) { if (n())
return; return;
}
if (b()) { if (b()) {
m(); m();
} else if ((this.c != null) && (this.c.e() < this.c.d())) { } else if (this.c != null && this.c.e() < this.c.d()) {
Vec3D localVec3D = c(); Vec3D localVec3D = c();
Vec3D localObject = this.c.a(this.a, this.c.e()); Vec3D localObject = this.c.a(this.a, this.c.e());
if ((localVec3D.y > localObject.y) && (!this.a.onGround) if (localVec3D.y > localObject.y && !this.a.onGround
&& (MathHelper.floor(localVec3D.x) == MathHelper.floor(localObject.x)) && MathHelper.floor(localVec3D.x) == MathHelper.floor(localObject.x)
&& (MathHelper.floor(localVec3D.z) == MathHelper.floor(localObject.z))) { && MathHelper.floor(localVec3D.z) == MathHelper.floor(localObject.z)) {
this.c.c(this.c.e() + 1); this.c.c(this.c.e() + 1);
} }
} }
if (n()) { if (n())
return; return;
}
Vec3D localVec3D = this.c.a(this.a); Vec3D localVec3D = this.c.a(this.a);
if (localVec3D == null) { if (localVec3D == null)
return; return;
}
Object localObject = new BlockPosition(localVec3D).down(); Object localObject = new BlockPosition(localVec3D).down();
AxisAlignedBB localAxisAlignedBB = this.b.getType((BlockPosition) localObject).c(this.b, AxisAlignedBB localAxisAlignedBB = this.b.getType((BlockPosition) localObject).c(this.b,
(BlockPosition) localObject); (BlockPosition) localObject);
@ -425,10 +407,10 @@ public class PlayerNavigation extends NavigationAbstract {
break; break;
} }
} }
this.o = (this.a.width > 0.75F ? this.a.width / 2.0F : 0.75F - this.a.width / 2.0F); this.o = this.a.width > 0.75F ? this.a.width / 2.0F : 0.75F - this.a.width / 2.0F;
Vec3D localVec3D2 = this.c.f(); Vec3D localVec3D2 = this.c.f();
if ((MathHelper.e((float) (this.a.locX - (localVec3D2.x + 0.5D))) < this.o) if (MathHelper.e((float) (this.a.locX - (localVec3D2.x + 0.5D))) < this.o
&& (MathHelper.e((float) (this.a.locZ - (localVec3D2.z + 0.5D))) < this.o)) { && MathHelper.e((float) (this.a.locZ - (localVec3D2.z + 0.5D))) < this.o) {
this.c.c(this.c.e() + 1); this.c.c(this.c.e() + 1);
} }
int i3 = MathHelper.f(this.a.width); int i3 = MathHelper.f(this.a.width);
@ -445,7 +427,7 @@ public class PlayerNavigation extends NavigationAbstract {
@Override @Override
public boolean n() { public boolean n() {
return (this.c == null) || (this.c.b()); return this.c == null || this.c.b();
} }
@Override @Override
@ -455,26 +437,24 @@ public class PlayerNavigation extends NavigationAbstract {
@Override @Override
protected boolean p() { protected boolean p() {
return (this.a.isInWater()) || (this.a.ao()); return this.a.isInWater() || this.a.ao();
} }
private int r() { private int r() {
if ((!this.a.isInWater()) || (!g())) { if (!this.a.isInWater() || !g())
return (int) (this.a.getBoundingBox().b + 0.5D); return (int) (this.a.getBoundingBox().b + 0.5D);
}
int i = (int) this.a.getBoundingBox().b; int i = (int) this.a.getBoundingBox().b;
Block localBlock = this.b Block localBlock = this.b
.getType(new BlockPosition(MathHelper.floor(this.a.locX), i, MathHelper.floor(this.a.locZ))).getBlock(); .getType(new BlockPosition(MathHelper.floor(this.a.locX), i, MathHelper.floor(this.a.locZ))).getBlock();
int j = 0; int j = 0;
while ((localBlock == Blocks.FLOWING_WATER) || (localBlock == Blocks.WATER)) { while (localBlock == Blocks.FLOWING_WATER || localBlock == Blocks.WATER) {
i++; i++;
localBlock = this.b localBlock = this.b
.getType(new BlockPosition(MathHelper.floor(this.a.locX), i, MathHelper.floor(this.a.locZ))) .getType(new BlockPosition(MathHelper.floor(this.a.locX), i, MathHelper.floor(this.a.locZ)))
.getBlock(); .getBlock();
j++; j++;
if (j > 16) { if (j > 16)
return (int) this.a.getBoundingBox().b; return (int) this.a.getBoundingBox().b;
}
} }
return i; return i;
} }
@ -484,12 +464,10 @@ public class PlayerNavigation extends NavigationAbstract {
} }
public PathEntity supera(BlockPosition paramBlockPosition) { public PathEntity supera(BlockPosition paramBlockPosition) {
if (!b()) { if (!b())
return null; return null;
} if (this.c != null && !this.c.b() && paramBlockPosition.equals(this.r))
if ((this.c != null) && (!this.c.b()) && (paramBlockPosition.equals(this.r))) {
return this.c; return this.c;
}
this.r = paramBlockPosition; this.r = paramBlockPosition;
float f1 = h(); float f1 = h();
BlockPosition localBlockPosition = new BlockPosition(this.a); BlockPosition localBlockPosition = new BlockPosition(this.a);

View File

@ -13,7 +13,7 @@ import net.minecraft.server.v1_10_R1.PathPoint;
public class PlayerPathfinder { public class PlayerPathfinder {
private final Path a = new Path(); private final Path a = new Path();
private final Set<PathPoint> b = new HashSet<PathPoint>(); private final Set<PathPoint> b = new HashSet<>();
private final PathPoint[] c = new PathPoint[32]; private final PathPoint[] c = new PathPoint[32];
private final PlayerPathfinderNormal d; private final PlayerPathfinderNormal d;
@ -53,10 +53,10 @@ public class PlayerPathfinder {
} }
PathPoint[] arrayOfPathPoint = new PathPoint[i]; PathPoint[] arrayOfPathPoint = new PathPoint[i];
localPathPoint = paramPathPoint2; localPathPoint = paramPathPoint2;
arrayOfPathPoint[(--i)] = localPathPoint; arrayOfPathPoint[--i] = localPathPoint;
while (localPathPoint.h != null) { while (localPathPoint.h != null) {
localPathPoint = localPathPoint.h; localPathPoint = localPathPoint.h;
arrayOfPathPoint[(--i)] = localPathPoint; arrayOfPathPoint[--i] = localPathPoint;
} }
return new PathEntity(arrayOfPathPoint); return new PathEntity(arrayOfPathPoint);
} }
@ -88,25 +88,24 @@ public class PlayerPathfinder {
for (int k = 0; k < j; k++) { for (int k = 0; k < j; k++) {
PathPoint localPathPoint = this.c[k]; PathPoint localPathPoint = this.c[k];
float f1 = localObject2.c(localPathPoint); float f1 = localObject2.c(localPathPoint);
localPathPoint.j = (localObject2.j + f1); localPathPoint.j = localObject2.j + f1;
localPathPoint.k = (f1 + localPathPoint.l); localPathPoint.k = f1 + localPathPoint.l;
float f2 = localObject2.e + localPathPoint.k; float f2 = localObject2.e + localPathPoint.k;
if ((localPathPoint.j < paramFloat) && ((!localPathPoint.a()) || (f2 < localPathPoint.e))) { if (localPathPoint.j < paramFloat && (!localPathPoint.a() || f2 < localPathPoint.e)) {
localPathPoint.h = (localObject2); localPathPoint.h = localObject2;
localPathPoint.e = f2; localPathPoint.e = f2;
localPathPoint.f = (localPathPoint.c(paramPathPoint2) + localPathPoint.l); localPathPoint.f = localPathPoint.c(paramPathPoint2) + localPathPoint.l;
if (localPathPoint.a()) { if (localPathPoint.a()) {
this.a.a(localPathPoint, localPathPoint.e + localPathPoint.f); this.a.a(localPathPoint, localPathPoint.e + localPathPoint.f);
} else { } else {
localPathPoint.g = (localPathPoint.e + localPathPoint.f); localPathPoint.g = localPathPoint.e + localPathPoint.f;
this.a.a(localPathPoint); this.a.a(localPathPoint);
} }
} }
} }
} }
if (localObject1 == paramPathPoint1) { if (localObject1 == paramPathPoint1)
return null; return null;
}
Object localObject2 = a(paramPathPoint1, (PathPoint) localObject1); Object localObject2 = a(paramPathPoint1, (PathPoint) localObject1);
return (PathEntity) localObject2; return (PathEntity) localObject2;
} }

View File

@ -56,19 +56,19 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
@Override @Override
public PathType a(IBlockAccess paramIBlockAccess, int paramInt1, int paramInt2, int paramInt3) { public PathType a(IBlockAccess paramIBlockAccess, int paramInt1, int paramInt2, int paramInt3) {
PathType localPathType1 = getPathTypeBase(paramIBlockAccess, paramInt1, paramInt2, paramInt3); PathType localPathType1 = getPathTypeBase(paramIBlockAccess, paramInt1, paramInt2, paramInt3);
if ((localPathType1 == PathType.OPEN) && (paramInt2 >= 1)) { if (localPathType1 == PathType.OPEN && paramInt2 >= 1) {
PathType localPathType2 = localPathType1; PathType localPathType2 = localPathType1;
while (localPathType2 == PathType.OPEN && (--paramInt2 >= 1)) { while (localPathType2 == PathType.OPEN && --paramInt2 >= 1) {
localPathType2 = getPathTypeBase(paramIBlockAccess, paramInt1, paramInt2, paramInt3); localPathType2 = getPathTypeBase(paramIBlockAccess, paramInt1, paramInt2, paramInt3);
} }
localPathType1 = (localPathType2 == PathType.WALKABLE) || (localPathType2 == PathType.OPEN) localPathType1 = localPathType2 == PathType.WALKABLE || localPathType2 == PathType.OPEN
|| (localPathType2 == PathType.WATER) || (localPathType2 == PathType.LAVA) ? PathType.OPEN || localPathType2 == PathType.WATER || localPathType2 == PathType.LAVA ? PathType.OPEN
: PathType.WALKABLE; : PathType.WALKABLE;
} }
if (localPathType1 == PathType.WALKABLE) { if (localPathType1 == PathType.WALKABLE) {
for (int i = paramInt1 - 1; i <= paramInt1 + 1; i++) { for (int i = paramInt1 - 1; i <= paramInt1 + 1; i++) {
for (int k = paramInt3 - 1; k <= paramInt3 + 1; k++) { for (int k = paramInt3 - 1; k <= paramInt3 + 1; k++) {
if ((i != paramInt1) || (k != paramInt3)) { if (i != paramInt1 || k != paramInt3) {
Block localBlock2 = paramIBlockAccess.getType(new BlockPosition(i, paramInt2, k)).getBlock(); Block localBlock2 = paramIBlockAccess.getType(new BlockPosition(i, paramInt2, k)).getBlock();
if (localBlock2 == Blocks.CACTUS) { if (localBlock2 == Blocks.CACTUS) {
localPathType1 = PathType.DANGER_CACTUS; localPathType1 = PathType.DANGER_CACTUS;
@ -94,23 +94,23 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
for (int k = paramInt2; k < paramInt2 + paramInt5; k++) { for (int k = paramInt2; k < paramInt2 + paramInt5; k++) {
for (int m = paramInt3; m < paramInt3 + paramInt6; m++) { for (int m = paramInt3; m < paramInt3 + paramInt6; m++) {
PathType localPathType2 = a(paramIBlockAccess, i, k, m); PathType localPathType2 = a(paramIBlockAccess, i, k, m);
if ((localPathType2 == PathType.DOOR_WOOD_CLOSED) && (paramBoolean1) && (paramBoolean2)) { if (localPathType2 == PathType.DOOR_WOOD_CLOSED && paramBoolean1 && paramBoolean2) {
localPathType2 = PathType.WALKABLE; localPathType2 = PathType.WALKABLE;
} }
if ((localPathType2 == PathType.DOOR_OPEN) && (!paramBoolean2)) { if (localPathType2 == PathType.DOOR_OPEN && !paramBoolean2) {
localPathType2 = PathType.BLOCKED; localPathType2 = PathType.BLOCKED;
} }
if ((localPathType2 == PathType.RAIL) if (localPathType2 == PathType.RAIL
&& (!(paramIBlockAccess.getType(localBlockPosition) && !(paramIBlockAccess.getType(localBlockPosition)
.getBlock() instanceof BlockMinecartTrackAbstract)) .getBlock() instanceof BlockMinecartTrackAbstract)
&& (!(paramIBlockAccess.getType(localBlockPosition.down()) && !(paramIBlockAccess.getType(localBlockPosition.down())
.getBlock() instanceof BlockMinecartTrackAbstract))) { .getBlock() instanceof BlockMinecartTrackAbstract)) {
localPathType2 = PathType.FENCE; localPathType2 = PathType.FENCE;
} }
if ((i == paramInt1) && (k == paramInt2) && (m == paramInt3)) { if (i == paramInt1 && k == paramInt2 && m == paramInt3) {
localObject1 = localPathType2; localObject1 = localPathType2;
} }
if ((k > paramInt2) && (localPathType2 != PathType.OPEN)) { if (k > paramInt2 && localPathType2 != PathType.OPEN) {
AxisAlignedBB localAxisAlignedBB = new AxisAlignedBB(i - d + 0.5D, paramInt2 + 0.001D, AxisAlignedBB localAxisAlignedBB = new AxisAlignedBB(i - d + 0.5D, paramInt2 + 0.001D,
m - d + 0.5D, i + d + 0.5D, paramInt2 + paramEntityInsentient.length, m + d + 0.5D); m - d + 0.5D, i + d + 0.5D, paramInt2 + paramEntityInsentient.length, m + d + 0.5D);
if (!paramEntityInsentient.world.b(localAxisAlignedBB)) { if (!paramEntityInsentient.world.b(localAxisAlignedBB)) {
@ -121,21 +121,18 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
} }
} }
} }
if (localEnumSet.contains(PathType.FENCE)) { if (localEnumSet.contains(PathType.FENCE))
return PathType.FENCE; return PathType.FENCE;
}
Object localObject2 = PathType.BLOCKED; Object localObject2 = PathType.BLOCKED;
for (PathType localPathType1 : localEnumSet) { for (PathType localPathType1 : localEnumSet) {
if (paramEntityInsentient.a(localPathType1) < 0.0F) { if (paramEntityInsentient.a(localPathType1) < 0.0F)
return localPathType1; return localPathType1;
}
if (paramEntityInsentient.a(localPathType1) >= paramEntityInsentient.a((PathType) localObject2)) { if (paramEntityInsentient.a(localPathType1) >= paramEntityInsentient.a((PathType) localObject2)) {
localObject2 = localPathType1; localObject2 = localPathType1;
} }
} }
if ((localObject1 == PathType.OPEN) && (paramEntityInsentient.a((PathType) localObject2) == 0.0F)) { if (localObject1 == PathType.OPEN && paramEntityInsentient.a((PathType) localObject2) == 0.0F)
return PathType.OPEN; return PathType.OPEN;
}
return (PathType) localObject2; return (PathType) localObject2;
} }
@ -151,23 +148,23 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
for (int k = paramInt2; k < paramInt2 + paramInt5; k++) { for (int k = paramInt2; k < paramInt2 + paramInt5; k++) {
for (int m = paramInt3; m < paramInt3 + paramInt6; m++) { for (int m = paramInt3; m < paramInt3 + paramInt6; m++) {
PathType localPathType2 = a(paramIBlockAccess, i, k, m); PathType localPathType2 = a(paramIBlockAccess, i, k, m);
if ((localPathType2 == PathType.DOOR_WOOD_CLOSED) && (paramBoolean1) && (paramBoolean2)) { if (localPathType2 == PathType.DOOR_WOOD_CLOSED && paramBoolean1 && paramBoolean2) {
localPathType2 = PathType.WALKABLE; localPathType2 = PathType.WALKABLE;
} }
if ((localPathType2 == PathType.DOOR_OPEN) && (!paramBoolean2)) { if (localPathType2 == PathType.DOOR_OPEN && !paramBoolean2) {
localPathType2 = PathType.BLOCKED; localPathType2 = PathType.BLOCKED;
} }
if ((localPathType2 == PathType.RAIL) if (localPathType2 == PathType.RAIL
&& (!(paramIBlockAccess.getType(localBlockPosition) && !(paramIBlockAccess.getType(localBlockPosition)
.getBlock() instanceof BlockMinecartTrackAbstract)) .getBlock() instanceof BlockMinecartTrackAbstract)
&& (!(paramIBlockAccess.getType(localBlockPosition.down()) && !(paramIBlockAccess.getType(localBlockPosition.down())
.getBlock() instanceof BlockMinecartTrackAbstract))) { .getBlock() instanceof BlockMinecartTrackAbstract)) {
localPathType2 = PathType.FENCE; localPathType2 = PathType.FENCE;
} }
if ((i == paramInt1) && (k == paramInt2) && (m == paramInt3)) { if (i == paramInt1 && k == paramInt2 && m == paramInt3) {
localObject1 = localPathType2; localObject1 = localPathType2;
} }
if ((k > paramInt2) && (localPathType2 != PathType.OPEN)) { if (k > paramInt2 && localPathType2 != PathType.OPEN) {
AxisAlignedBB localAxisAlignedBB = new AxisAlignedBB(i - d + 0.5D, paramInt2 + 0.001D, AxisAlignedBB localAxisAlignedBB = new AxisAlignedBB(i - d + 0.5D, paramInt2 + 0.001D,
m - d + 0.5D, i + d + 0.5D, paramInt2 + paramEntityInsentient.length, m + d + 0.5D); m - d + 0.5D, i + d + 0.5D, paramInt2 + paramEntityInsentient.length, m + d + 0.5D);
if (!paramEntityInsentient.world.b(localAxisAlignedBB)) { if (!paramEntityInsentient.world.b(localAxisAlignedBB)) {
@ -178,21 +175,18 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
} }
} }
} }
if (localEnumSet.contains(PathType.FENCE)) { if (localEnumSet.contains(PathType.FENCE))
return PathType.FENCE; return PathType.FENCE;
}
Object localObject2 = PathType.BLOCKED; Object localObject2 = PathType.BLOCKED;
for (PathType localPathType1 : localEnumSet) { for (PathType localPathType1 : localEnumSet) {
if (paramEntityInsentient.a(localPathType1) < 0.0F) { if (paramEntityInsentient.a(localPathType1) < 0.0F)
return localPathType1; return localPathType1;
}
if (paramEntityInsentient.a(localPathType1) >= paramEntityInsentient.a((PathType) localObject2)) { if (paramEntityInsentient.a(localPathType1) >= paramEntityInsentient.a((PathType) localObject2)) {
localObject2 = localPathType1; localObject2 = localPathType1;
} }
} }
if ((localObject1 == PathType.OPEN) && (paramEntityInsentient.a((PathType) localObject2) == 0.0F)) { if (localObject1 == PathType.OPEN && paramEntityInsentient.a((PathType) localObject2) == 0.0F)
return PathType.OPEN; return PathType.OPEN;
}
return (PathType) localObject2; return (PathType) localObject2;
} }
@ -202,9 +196,8 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
BlockPosition localBlockPosition1 = new BlockPosition(paramInt1, paramInt2, paramInt3); BlockPosition localBlockPosition1 = new BlockPosition(paramInt1, paramInt2, paramInt3);
BlockPosition localBlockPosition2 = localBlockPosition1.down(); BlockPosition localBlockPosition2 = localBlockPosition1.down();
double d1 = paramInt2 - (1.0D - this.a.getType(localBlockPosition2).c(this.a, localBlockPosition2).e); double d1 = paramInt2 - (1.0D - this.a.getType(localBlockPosition2).c(this.a, localBlockPosition2).e);
if (d1 - paramDouble > 1.0D) { if (d1 - paramDouble > 1.0D)
return null; return null;
}
PathType localPathType = a(this.b, paramInt1, paramInt2, paramInt3); PathType localPathType = a(this.b, paramInt1, paramInt2, paramInt3);
float f = this.b.a(localPathType); float f = this.b.a(localPathType);
double d2 = this.b.width / 2.0D; double d2 = this.b.width / 2.0D;
@ -213,14 +206,13 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
localPathPoint.m = localPathType; localPathPoint.m = localPathType;
localPathPoint.l = Math.max(localPathPoint.l, f); localPathPoint.l = Math.max(localPathPoint.l, f);
} }
if (localPathType == PathType.WALKABLE) { if (localPathType == PathType.WALKABLE)
return localPathPoint; return localPathPoint;
} if (localPathPoint == null && paramInt4 > 0 && localPathType != PathType.FENCE
if ((localPathPoint == null) && (paramInt4 > 0) && (localPathType != PathType.FENCE) && localPathType != PathType.TRAPDOOR) {
&& (localPathType != PathType.TRAPDOOR)) {
localPathPoint = a(paramInt1, paramInt2 + 1, paramInt3, paramInt4 - 1, paramDouble, paramEnumDirection); localPathPoint = a(paramInt1, paramInt2 + 1, paramInt3, paramInt4 - 1, paramDouble, paramEnumDirection);
if ((localPathPoint != null) if (localPathPoint != null
&& ((localPathPoint.m == PathType.OPEN) || (localPathPoint.m == PathType.WALKABLE))) { && (localPathPoint.m == PathType.OPEN || localPathPoint.m == PathType.WALKABLE)) {
double d3 = paramInt1 - paramEnumDirection.getAdjacentX() + 0.5D; double d3 = paramInt1 - paramEnumDirection.getAdjacentX() + 0.5D;
double d4 = paramInt3 - paramEnumDirection.getAdjacentZ() + 0.5D; double d4 = paramInt3 - paramEnumDirection.getAdjacentZ() + 0.5D;
AxisAlignedBB localAxisAlignedBB1 = new AxisAlignedBB(d3 - d2, paramInt2 + 0.001D, d4 - d2, d3 + d2, AxisAlignedBB localAxisAlignedBB1 = new AxisAlignedBB(d3 - d2, paramInt2 + 0.001D, d4 - d2, d3 + d2,
@ -235,24 +227,21 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
if (localPathType == PathType.OPEN) { if (localPathType == PathType.OPEN) {
AxisAlignedBB localAxisAlignedBB4 = new AxisAlignedBB(paramInt1 - d2 + 0.5D, paramInt2 + 0.001D, AxisAlignedBB localAxisAlignedBB4 = new AxisAlignedBB(paramInt1 - d2 + 0.5D, paramInt2 + 0.001D,
paramInt3 - d2 + 0.5D, paramInt1 + d2 + 0.5D, paramInt2 + this.b.length, paramInt3 + d2 + 0.5D); paramInt3 - d2 + 0.5D, paramInt1 + d2 + 0.5D, paramInt2 + this.b.length, paramInt3 + d2 + 0.5D);
if (this.b.world.b(localAxisAlignedBB4)) { if (this.b.world.b(localAxisAlignedBB4))
return null; return null;
}
int i = 0; int i = 0;
while ((paramInt2 > 0) && (localPathType == PathType.OPEN)) { while (paramInt2 > 0 && localPathType == PathType.OPEN) {
paramInt2--; paramInt2--;
if (i++ >= b.aY()) { if (i++ >= b.aY())
return null; return null;
}
localPathType = a(this.b, paramInt1, paramInt2, paramInt3); localPathType = a(this.b, paramInt1, paramInt2, paramInt3);
f = this.b.a(localPathType); f = this.b.a(localPathType);
if ((localPathType != PathType.OPEN) && (f >= 0.0F)) { if (localPathType != PathType.OPEN && f >= 0.0F) {
localPathPoint = a(paramInt1, paramInt2, paramInt3); localPathPoint = a(paramInt1, paramInt2, paramInt3);
localPathPoint.m = localPathType; localPathPoint.m = localPathType;
localPathPoint.l = Math.max(localPathPoint.l, f); localPathPoint.l = Math.max(localPathPoint.l, f);
} else if (f < 0.0F) { } else if (f < 0.0F)
return null; return null;
}
} }
} }
return localPathPoint; return localPathPoint;
@ -278,57 +267,49 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
EnumDirection.EAST); EnumDirection.EAST);
PathPoint localPathPoint4 = a(paramPathPoint1.a, paramPathPoint1.b, paramPathPoint1.c - 1, k, d, PathPoint localPathPoint4 = a(paramPathPoint1.a, paramPathPoint1.b, paramPathPoint1.c - 1, k, d,
EnumDirection.NORTH); EnumDirection.NORTH);
if ((localPathPoint1 != null) && (!localPathPoint1.i) && (localPathPoint1.a(paramPathPoint2) < paramFloat)) { if (localPathPoint1 != null && !localPathPoint1.i && localPathPoint1.a(paramPathPoint2) < paramFloat) {
paramArrayOfPathPoint[(i++)] = localPathPoint1; paramArrayOfPathPoint[i++] = localPathPoint1;
} }
if ((localPathPoint2 != null) && (!localPathPoint2.i) && (localPathPoint2.a(paramPathPoint2) < paramFloat)) { if (localPathPoint2 != null && !localPathPoint2.i && localPathPoint2.a(paramPathPoint2) < paramFloat) {
paramArrayOfPathPoint[(i++)] = localPathPoint2; paramArrayOfPathPoint[i++] = localPathPoint2;
} }
if ((localPathPoint3 != null) && (!localPathPoint3.i) && (localPathPoint3.a(paramPathPoint2) < paramFloat)) { if (localPathPoint3 != null && !localPathPoint3.i && localPathPoint3.a(paramPathPoint2) < paramFloat) {
paramArrayOfPathPoint[(i++)] = localPathPoint3; paramArrayOfPathPoint[i++] = localPathPoint3;
} }
if ((localPathPoint4 != null) && (!localPathPoint4.i) && (localPathPoint4.a(paramPathPoint2) < paramFloat)) { if (localPathPoint4 != null && !localPathPoint4.i && localPathPoint4.a(paramPathPoint2) < paramFloat) {
paramArrayOfPathPoint[(i++)] = localPathPoint4; paramArrayOfPathPoint[i++] = localPathPoint4;
} }
int m = (localPathPoint4 == null) || (localPathPoint4.m == PathType.OPEN) || (localPathPoint4.l != 0.0F) ? 1 int m = localPathPoint4 == null || localPathPoint4.m == PathType.OPEN || localPathPoint4.l != 0.0F ? 1 : 0;
: 0; int n = localPathPoint1 == null || localPathPoint1.m == PathType.OPEN || localPathPoint1.l != 0.0F ? 1 : 0;
int n = (localPathPoint1 == null) || (localPathPoint1.m == PathType.OPEN) || (localPathPoint1.l != 0.0F) ? 1 int i1 = localPathPoint3 == null || localPathPoint3.m == PathType.OPEN || localPathPoint3.l != 0.0F ? 1 : 0;
: 0; int i2 = localPathPoint2 == null || localPathPoint2.m == PathType.OPEN || localPathPoint2.l != 0.0F ? 1 : 0;
int i1 = (localPathPoint3 == null) || (localPathPoint3.m == PathType.OPEN) || (localPathPoint3.l != 0.0F) ? 1
: 0;
int i2 = (localPathPoint2 == null) || (localPathPoint2.m == PathType.OPEN) || (localPathPoint2.l != 0.0F) ? 1
: 0;
PathPoint localPathPoint5; PathPoint localPathPoint5;
if ((m != 0) && (i2 != 0)) { if (m != 0 && i2 != 0) {
localPathPoint5 = a(paramPathPoint1.a - 1, paramPathPoint1.b, paramPathPoint1.c - 1, k, d, localPathPoint5 = a(paramPathPoint1.a - 1, paramPathPoint1.b, paramPathPoint1.c - 1, k, d,
EnumDirection.NORTH); EnumDirection.NORTH);
if ((localPathPoint5 != null) && (!localPathPoint5.i) if (localPathPoint5 != null && !localPathPoint5.i && localPathPoint5.a(paramPathPoint2) < paramFloat) {
&& (localPathPoint5.a(paramPathPoint2) < paramFloat)) { paramArrayOfPathPoint[i++] = localPathPoint5;
paramArrayOfPathPoint[(i++)] = localPathPoint5;
} }
} }
if ((m != 0) && (i1 != 0)) { if (m != 0 && i1 != 0) {
localPathPoint5 = a(paramPathPoint1.a + 1, paramPathPoint1.b, paramPathPoint1.c - 1, k, d, localPathPoint5 = a(paramPathPoint1.a + 1, paramPathPoint1.b, paramPathPoint1.c - 1, k, d,
EnumDirection.NORTH); EnumDirection.NORTH);
if ((localPathPoint5 != null) && (!localPathPoint5.i) if (localPathPoint5 != null && !localPathPoint5.i && localPathPoint5.a(paramPathPoint2) < paramFloat) {
&& (localPathPoint5.a(paramPathPoint2) < paramFloat)) { paramArrayOfPathPoint[i++] = localPathPoint5;
paramArrayOfPathPoint[(i++)] = localPathPoint5;
} }
} }
if ((n != 0) && (i2 != 0)) { if (n != 0 && i2 != 0) {
localPathPoint5 = a(paramPathPoint1.a - 1, paramPathPoint1.b, paramPathPoint1.c + 1, k, d, localPathPoint5 = a(paramPathPoint1.a - 1, paramPathPoint1.b, paramPathPoint1.c + 1, k, d,
EnumDirection.SOUTH); EnumDirection.SOUTH);
if ((localPathPoint5 != null) && (!localPathPoint5.i) if (localPathPoint5 != null && !localPathPoint5.i && localPathPoint5.a(paramPathPoint2) < paramFloat) {
&& (localPathPoint5.a(paramPathPoint2) < paramFloat)) { paramArrayOfPathPoint[i++] = localPathPoint5;
paramArrayOfPathPoint[(i++)] = localPathPoint5;
} }
} }
if ((n != 0) && (i1 != 0)) { if (n != 0 && i1 != 0) {
localPathPoint5 = a(paramPathPoint1.a + 1, paramPathPoint1.b, paramPathPoint1.c + 1, k, d, localPathPoint5 = a(paramPathPoint1.a + 1, paramPathPoint1.b, paramPathPoint1.c + 1, k, d,
EnumDirection.SOUTH); EnumDirection.SOUTH);
if ((localPathPoint5 != null) && (!localPathPoint5.i) if (localPathPoint5 != null && !localPathPoint5.i && localPathPoint5.a(paramPathPoint2) < paramFloat) {
&& (localPathPoint5.a(paramPathPoint2) < paramFloat)) { paramArrayOfPathPoint[i++] = localPathPoint5;
paramArrayOfPathPoint[(i++)] = localPathPoint5;
} }
} }
return i; return i;
@ -338,12 +319,12 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
public PathPoint b() { public PathPoint b() {
int i; int i;
BlockPosition localObject1; BlockPosition localObject1;
if ((e()) && (this.b.isInWater())) { if (e() && this.b.isInWater()) {
i = (int) this.b.getBoundingBox().b; i = (int) this.b.getBoundingBox().b;
localObject1 = new BlockPosition.MutableBlockPosition(MathHelper.floor(this.b.locX), i, localObject1 = new BlockPosition.MutableBlockPosition(MathHelper.floor(this.b.locX), i,
MathHelper.floor(this.b.locZ)); MathHelper.floor(this.b.locZ));
Block localObject2 = this.a.getType(localObject1).getBlock(); Block localObject2 = this.a.getType(localObject1).getBlock();
while ((localObject2 == Blocks.FLOWING_WATER) || (localObject2 == Blocks.WATER)) { while (localObject2 == Blocks.FLOWING_WATER || localObject2 == Blocks.WATER) {
i++; i++;
((MutableBlockPosition) localObject1).c(MathHelper.floor(this.b.locX), i, ((MutableBlockPosition) localObject1).c(MathHelper.floor(this.b.locX), i,
MathHelper.floor(this.b.locZ)); MathHelper.floor(this.b.locZ));
@ -351,9 +332,8 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
} }
} else if (!this.b.onGround) { } else if (!this.b.onGround) {
localObject1 = new BlockPosition(this.b); localObject1 = new BlockPosition(this.b);
while (((this.a.getType(localObject1).getMaterial() == Material.AIR) while ((this.a.getType(localObject1).getMaterial() == Material.AIR
|| (this.a.getType(localObject1).getBlock().b(this.a, localObject1))) || this.a.getType(localObject1).getBlock().b(this.a, localObject1)) && localObject1.getY() > 0) {
&& (localObject1.getY() > 0)) {
localObject1 = localObject1.down(); localObject1 = localObject1.down();
} }
i = localObject1.up().getY(); i = localObject1.up().getY();
@ -363,16 +343,15 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
localObject1 = new BlockPosition(this.b); localObject1 = new BlockPosition(this.b);
Object localObject2 = a(this.b, localObject1.getX(), i, localObject1.getZ()); Object localObject2 = a(this.b, localObject1.getX(), i, localObject1.getZ());
if (this.b.a((PathType) localObject2) < 0.0F) { if (this.b.a((PathType) localObject2) < 0.0F) {
HashSet<BlockPosition> localHashSet = new HashSet<BlockPosition>(); HashSet<BlockPosition> localHashSet = new HashSet<>();
localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().c)); localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().c));
localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().f)); localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().f));
localHashSet.add(new BlockPosition(this.b.getBoundingBox().d, i, this.b.getBoundingBox().c)); localHashSet.add(new BlockPosition(this.b.getBoundingBox().d, i, this.b.getBoundingBox().c));
localHashSet.add(new BlockPosition(this.b.getBoundingBox().d, i, this.b.getBoundingBox().f)); localHashSet.add(new BlockPosition(this.b.getBoundingBox().d, i, this.b.getBoundingBox().f));
for (BlockPosition localBlockPosition : localHashSet) { for (BlockPosition localBlockPosition : localHashSet) {
PathType localPathType = a(this.b, localBlockPosition); PathType localPathType = a(this.b, localBlockPosition);
if (this.b.a(localPathType) >= 0.0F) { if (this.b.a(localPathType) >= 0.0F)
return a(localBlockPosition.getX(), localBlockPosition.getY(), localBlockPosition.getZ()); return a(localBlockPosition.getX(), localBlockPosition.getY(), localBlockPosition.getZ());
}
} }
} }
return a(localObject1.getX(), i, localObject1.getZ()); return a(localObject1.getX(), i, localObject1.getZ());
@ -384,46 +363,34 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
Block localBlock1 = localIBlockData.getBlock(); Block localBlock1 = localIBlockData.getBlock();
Material localMaterial = localIBlockData.getMaterial(); Material localMaterial = localIBlockData.getMaterial();
PathType localPathType1 = PathType.BLOCKED; PathType localPathType1 = PathType.BLOCKED;
if ((localBlock1 == Blocks.TRAPDOOR) || (localBlock1 == Blocks.IRON_TRAPDOOR) if (localBlock1 == Blocks.TRAPDOOR || localBlock1 == Blocks.IRON_TRAPDOOR || localBlock1 == Blocks.WATERLILY)
|| (localBlock1 == Blocks.WATERLILY)) {
return PathType.TRAPDOOR; return PathType.TRAPDOOR;
} if (localBlock1 == Blocks.FIRE)
if (localBlock1 == Blocks.FIRE) {
return PathType.DAMAGE_FIRE; return PathType.DAMAGE_FIRE;
} if (localBlock1 == Blocks.CACTUS)
if (localBlock1 == Blocks.CACTUS) {
return PathType.DAMAGE_CACTUS; return PathType.DAMAGE_CACTUS;
} if (localBlock1 instanceof BlockDoor && localMaterial == Material.WOOD
if (((localBlock1 instanceof BlockDoor)) && (localMaterial == Material.WOOD) && !localIBlockData.get(BlockDoor.OPEN).booleanValue())
&& (!localIBlockData.get(BlockDoor.OPEN).booleanValue())) {
return PathType.DOOR_WOOD_CLOSED; return PathType.DOOR_WOOD_CLOSED;
} if (localBlock1 instanceof BlockDoor && localMaterial == Material.ORE
if (((localBlock1 instanceof BlockDoor)) && (localMaterial == Material.ORE) && !localIBlockData.get(BlockDoor.OPEN).booleanValue())
&& (!localIBlockData.get(BlockDoor.OPEN).booleanValue())) {
return PathType.DOOR_IRON_CLOSED; return PathType.DOOR_IRON_CLOSED;
} if (localBlock1 instanceof BlockDoor && localIBlockData.get(BlockDoor.OPEN).booleanValue())
if (((localBlock1 instanceof BlockDoor)) && (localIBlockData.get(BlockDoor.OPEN).booleanValue())) {
return PathType.DOOR_OPEN; return PathType.DOOR_OPEN;
} if (localBlock1 instanceof BlockMinecartTrackAbstract)
if ((localBlock1 instanceof BlockMinecartTrackAbstract)) {
return PathType.RAIL; return PathType.RAIL;
} if (localBlock1 instanceof BlockFence || localBlock1 instanceof BlockCobbleWall
if (((localBlock1 instanceof BlockFence)) || ((localBlock1 instanceof BlockCobbleWall)) || localBlock1 instanceof BlockFenceGate && !localIBlockData.get(BlockFenceGate.OPEN).booleanValue())
|| (((localBlock1 instanceof BlockFenceGate))
&& (!localIBlockData.get(BlockFenceGate.OPEN).booleanValue()))) {
return PathType.FENCE; return PathType.FENCE;
}
if (localMaterial == Material.AIR) { if (localMaterial == Material.AIR) {
localPathType1 = PathType.OPEN; localPathType1 = PathType.OPEN;
} else { } else {
if (localMaterial == Material.WATER) { if (localMaterial == Material.WATER)
return PathType.WATER; return PathType.WATER;
} if (localMaterial == Material.LAVA)
if (localMaterial == Material.LAVA) {
return PathType.LAVA; return PathType.LAVA;
}
} }
if ((localBlock1.b(paramIBlockAccess, localBlockPosition)) && (localPathType1 == PathType.BLOCKED)) { if (localBlock1.b(paramIBlockAccess, localBlockPosition) && localPathType1 == PathType.BLOCKED) {
localPathType1 = PathType.OPEN; localPathType1 = PathType.OPEN;
} }
return localPathType1; return localPathType1;

View File

@ -46,9 +46,9 @@ public class PlayerlistTrackerEntry extends EntityTrackerEntry {
if (entityplayer != tracker && c(entityplayer)) { if (entityplayer != tracker && c(entityplayer)) {
if (!this.trackedPlayers.contains(entityplayer) if (!this.trackedPlayers.contains(entityplayer)
&& ((entityplayer.x().getPlayerChunkMap().a(entityplayer, tracker.ac, tracker.ae)) && (entityplayer.x().getPlayerChunkMap().a(entityplayer, tracker.ac, tracker.ae)
|| (tracker.attachedToPlayer))) { || tracker.attachedToPlayer)) {
if ((tracker instanceof SkinnableEntity)) { if (tracker instanceof SkinnableEntity) {
SkinnableEntity skinnable = (SkinnableEntity) tracker; SkinnableEntity skinnable = (SkinnableEntity) tracker;
Player player = skinnable.getBukkitEntity(); Player player = skinnable.getBukkitEntity();
if (!entityplayer.getBukkitEntity().canSee(player)) if (!entityplayer.getBukkitEntity().canSee(player))
@ -65,9 +65,8 @@ public class PlayerlistTrackerEntry extends EntityTrackerEntry {
private static int getE(EntityTrackerEntry entry) { private static int getE(EntityTrackerEntry entry) {
try { try {
Entity entity = getTracker(entry); Entity entity = getTracker(entry);
if (entity instanceof NPCHolder) { if (entity instanceof NPCHolder)
return ((NPCHolder) entity).getNPC().data().get(NPC.Metadata.TRACKING_RANGE, (Integer) E.get(entry)); return ((NPCHolder) entity).getNPC().data().get(NPC.Metadata.TRACKING_RANGE, (Integer) E.get(entry));
}
return (Integer) E.get(entry); return (Integer) E.get(entry);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -66,9 +66,8 @@ public class ArmorStandController extends MobEntityController {
@Override @Override
public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, EnumHand enumhand) { public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, EnumHand enumhand) {
if (npc == null) { if (npc == null)
return super.a(entityhuman, vec3d, enumhand); return super.a(entityhuman, vec3d, enumhand);
}
PlayerInteractEntityEvent event = new PlayerInteractEntityEvent((Player) entityhuman.getBukkitEntity(), PlayerInteractEntityEvent event = new PlayerInteractEntityEvent((Player) entityhuman.getBukkitEntity(),
getBukkitEntity()); getBukkitEntity());
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);

View File

@ -67,7 +67,7 @@ public class BatController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }

View File

@ -64,7 +64,7 @@ public class BlazeController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }

View File

@ -73,7 +73,7 @@ public class CaveSpiderController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -176,11 +176,10 @@ public class CaveSpiderController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -82,7 +82,7 @@ public class ChickenController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -185,11 +185,10 @@ public class ChickenController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -86,7 +86,7 @@ public class CowController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -95,9 +95,8 @@ public class CowController extends MobEntityController {
if (npc == null || !npc.isProtected()) if (npc == null || !npc.isProtected())
return super.a(entityhuman, enumhand); return super.a(entityhuman, enumhand);
ItemStack itemstack = entityhuman.b(enumhand); ItemStack itemstack = entityhuman.b(enumhand);
if (itemstack.getItem() == Items.BUCKET && !entityhuman.abilities.canInstantlyBuild && !this.isBaby()) { if (itemstack.getItem() == Items.BUCKET && !entityhuman.abilities.canInstantlyBuild && !this.isBaby())
return false; return false;
}
return super.a(entityhuman, enumhand); return super.a(entityhuman, enumhand);
} }
@ -200,11 +199,10 @@ public class CowController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }
} }

View File

@ -76,7 +76,7 @@ public class CreeperController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -105,8 +105,9 @@ public class CreeperController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -185,11 +186,10 @@ public class CreeperController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -71,7 +71,7 @@ public class EnderDragonController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -100,8 +100,9 @@ public class EnderDragonController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override

View File

@ -73,7 +73,7 @@ public class EndermanController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -102,8 +102,9 @@ public class EndermanController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -160,9 +161,8 @@ public class EndermanController extends MobEntityController {
@Override @Override
public boolean j(double d1, double d2, double d3) { public boolean j(double d1, double d2, double d3) {
if (npc == null) { if (npc == null)
return super.j(d1, d2, d3); return super.j(d1, d2, d3);
}
return false; return false;
} }
@ -183,11 +183,10 @@ public class EndermanController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -73,7 +73,7 @@ public class EndermiteController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -102,8 +102,9 @@ public class EndermiteController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -168,17 +169,17 @@ public class EndermiteController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -97,9 +97,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public boolean a(EntityPlayer entityplayer) { public boolean a(EntityPlayer entityplayer) {
if (npc != null && !isTracked) { if (npc != null && !isTracked)
return false; return false;
}
return super.a(entityplayer); return super.a(entityplayer);
} }
@ -151,12 +150,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
boolean damaged = super.damageEntity(damagesource, f); boolean damaged = super.damageEntity(damagesource, f);
if (damaged && velocityChanged) { if (damaged && velocityChanged) {
velocityChanged = false; velocityChanged = false;
Bukkit.getScheduler().runTask(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().runTask(CitizensAPI.getPlugin(), () -> EntityHumanNPC.this.velocityChanged = true);
@Override
public void run() {
EntityHumanNPC.this.velocityChanged = true;
}
});
} }
return damaged; return damaged;
} }
@ -165,16 +159,10 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
public void die(DamageSource damagesource) { public void die(DamageSource damagesource) {
// players that die are not normally removed from the world. when the // players that die are not normally removed from the world. when the
// NPC dies, we are done with the instance and it should be removed. // NPC dies, we are done with the instance and it should be removed.
if (dead) { if (dead)
return; return;
}
super.die(damagesource); super.die(damagesource);
Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), () -> world.removeEntity(EntityHumanNPC.this), 15); // give enough time for death and smoke animation
@Override
public void run() {
world.removeEntity(EntityHumanNPC.this);
}
}, 15); // give enough time for death and smoke animation
} }
@Override @Override
@ -228,9 +216,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public IChatBaseComponent getPlayerListName() { public IChatBaseComponent getPlayerListName() {
if (Setting.DISABLE_TABLIST.asBoolean()) { if (Setting.DISABLE_TABLIST.asBoolean())
return new ChatComponentText(""); return new ChatComponentText("");
}
return super.getPlayerListName(); return super.getPlayerListName();
} }
@ -250,9 +237,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public boolean inBlock() { public boolean inBlock() {
if (npc == null || noclip || isSleeping()) { if (npc == null || noclip || isSleeping())
return super.inBlock(); return super.inBlock();
}
return Util.inBlock(getBukkitEntity()); return Util.inBlock(getBukkitEntity());
} }
@ -289,11 +275,10 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
private void moveOnCurrentHeading() { private void moveOnCurrentHeading() {
@ -410,7 +395,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
for (EnumItemSlot slot : EnumItemSlot.values()) { for (EnumItemSlot slot : EnumItemSlot.values()) {
ItemStack equipment = getEquipment(slot); ItemStack equipment = getEquipment(slot);
ItemStack cache = equipmentCache.get(slot); ItemStack cache = equipmentCache.get(slot);
if (!(cache == null && equipment == null) if (((cache != null) || (equipment != null))
&& (cache == null ^ equipment == null || !ItemStack.equals(cache, equipment))) { && (cache == null ^ equipment == null || !ItemStack.equals(cache, equipment))) {
itemChanged = true; itemChanged = true;
if (cache != null && !cache.isEmpty()) { if (cache != null && !cache.isEmpty()) {

View File

@ -59,7 +59,7 @@ public class EvokerController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -162,11 +162,10 @@ public class EvokerController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -50,7 +50,7 @@ public class GhastController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }

View File

@ -59,7 +59,7 @@ public class GiantController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class GiantController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -161,11 +162,10 @@ public class GiantController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class GuardianController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -154,11 +154,10 @@ public class GuardianController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class GuardianElderController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -154,11 +154,10 @@ public class GuardianElderController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -48,6 +48,7 @@ public class HorseController extends MobEntityController {
private final CitizensNPC npc; private final CitizensNPC npc;
private boolean riding; private boolean riding;
public EntityHorseNPC(World world) { public EntityHorseNPC(World world) {
this(world, null); this(world, null);
} }
@ -84,7 +85,7 @@ public class HorseController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -198,11 +199,10 @@ public class HorseController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -49,6 +49,7 @@ public class HorseDonkeyController extends MobEntityController {
private final CitizensNPC npc; private final CitizensNPC npc;
private boolean riding; private boolean riding;
public EntityHorseDonkeyNPC(World world) { public EntityHorseDonkeyNPC(World world) {
this(world, null); this(world, null);
} }
@ -86,7 +87,7 @@ public class HorseDonkeyController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -200,11 +201,10 @@ public class HorseDonkeyController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -49,6 +49,7 @@ public class HorseMuleController extends MobEntityController {
private final CitizensNPC npc; private final CitizensNPC npc;
private boolean riding; private boolean riding;
public EntityHorseMuleNPC(World world) { public EntityHorseMuleNPC(World world) {
this(world, null); this(world, null);
} }
@ -86,7 +87,7 @@ public class HorseMuleController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -200,11 +201,10 @@ public class HorseMuleController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -49,6 +49,7 @@ public class HorseSkeletonController extends MobEntityController {
private final CitizensNPC npc; private final CitizensNPC npc;
private boolean riding; private boolean riding;
public EntityHorseSkeletonNPC(World world) { public EntityHorseSkeletonNPC(World world) {
this(world, null); this(world, null);
} }
@ -86,7 +87,7 @@ public class HorseSkeletonController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -200,11 +201,10 @@ public class HorseSkeletonController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -49,6 +49,7 @@ public class HorseZombieController extends MobEntityController {
private final CitizensNPC npc; private final CitizensNPC npc;
private boolean riding; private boolean riding;
public EntityHorseZombieNPC(World world) { public EntityHorseZombieNPC(World world) {
this(world, null); this(world, null);
} }
@ -86,7 +87,7 @@ public class HorseZombieController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -200,11 +201,10 @@ public class HorseZombieController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -23,7 +23,6 @@ import net.minecraft.server.v1_11_R1.WorldServer;
public class HumanController extends AbstractEntityController { public class HumanController extends AbstractEntityController {
public HumanController() { public HumanController() {
super();
} }
@Override @Override
@ -46,16 +45,13 @@ public class HumanController extends AbstractEntityController {
if (skin != null) { if (skin != null) {
skin.apply(handle); skin.apply(handle);
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
@Override if (getBukkitEntity() == null || !getBukkitEntity().isValid()
public void run() { || getBukkitEntity() != handle.getBukkitEntity())
if (getBukkitEntity() == null || !getBukkitEntity().isValid() return;
|| getBukkitEntity() != handle.getBukkitEntity()) boolean removeFromPlayerList = npc.data().get("removefromplayerlist",
return; Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
boolean removeFromPlayerList = npc.data().get("removefromplayerlist", NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
}
}, 20); }, 20);
handle.getBukkitEntity().setSleepingIgnored(true); handle.getBukkitEntity().setSleepingIgnored(true);
return handle.getBukkitEntity(); return handle.getBukkitEntity();

View File

@ -59,7 +59,7 @@ public class IronGolemController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class IronGolemController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -161,11 +162,10 @@ public class IronGolemController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -79,7 +79,7 @@ public class LlamaController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -184,11 +184,10 @@ public class LlamaController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -65,7 +65,7 @@ public class MagmaCubeController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -102,8 +102,9 @@ public class MagmaCubeController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -174,11 +175,10 @@ public class MagmaCubeController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -75,7 +75,7 @@ public abstract class MobEntityController extends AbstractEntityController {
} }
} }
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = new WeakHashMap<Class<?>, Constructor<?>>(); private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = new WeakHashMap<>();
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_11_R1.Entity.class, private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_11_R1.Entity.class,
"uniqueID"); "uniqueID");
} }

View File

@ -70,7 +70,7 @@ public class MushroomCowController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -106,8 +106,9 @@ public class MushroomCowController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -172,17 +173,17 @@ public class MushroomCowController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -68,7 +68,7 @@ public class OcelotController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -97,8 +97,9 @@ public class OcelotController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -170,17 +171,17 @@ public class OcelotController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -69,7 +69,7 @@ public class PigController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -178,11 +178,10 @@ public class PigController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class PigZombieController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class PigZombieController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -161,11 +162,10 @@ public class PigZombieController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -59,7 +59,7 @@ public class PolarBearController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }

View File

@ -69,7 +69,7 @@ public class RabbitController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -180,11 +180,10 @@ public class RabbitController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -68,7 +68,7 @@ public class SheepController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -97,8 +97,9 @@ public class SheepController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -163,17 +164,17 @@ public class SheepController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -61,7 +61,7 @@ public class ShulkerController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -99,8 +99,9 @@ public class ShulkerController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -139,8 +140,9 @@ public class ShulkerController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ShulkerNPC(this); bukkitEntity = new ShulkerNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -163,11 +165,10 @@ public class ShulkerController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SilverfishController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SilverfishController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SilverfishController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SilverfishNPC(this); bukkitEntity = new SilverfishNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class SilverfishController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SkeletonController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SkeletonController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SkeletonController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SkeletonNPC(this); bukkitEntity = new SkeletonNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class SkeletonController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SkeletonStrayController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SkeletonStrayController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SkeletonStrayController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new StrayNPC(this); bukkitEntity = new StrayNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class SkeletonStrayController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SkeletonWitherController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SkeletonWitherController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SkeletonWitherController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SkeletonWitherNPC(this); bukkitEntity = new SkeletonWitherNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class SkeletonWitherController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -65,7 +65,7 @@ public class SlimeController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -150,8 +150,9 @@ public class SlimeController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SlimeNPC(this); bukkitEntity = new SlimeNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -174,11 +175,10 @@ public class SlimeController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SnowmanController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SnowmanController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SnowmanController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SnowmanNPC(this); bukkitEntity = new SnowmanNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class SnowmanController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SpiderController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SpiderController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SpiderController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SpiderNPC(this); bukkitEntity = new SpiderNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class SpiderController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class SquidController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class SquidController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class SquidController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new SquidNPC(this); bukkitEntity = new SquidNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -152,11 +154,10 @@ public class SquidController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -53,7 +53,7 @@ public class VexController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -107,8 +107,9 @@ public class VexController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new VexNPC(this); bukkitEntity = new VexNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -76,7 +76,7 @@ public class VillagerController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -167,8 +167,9 @@ public class VillagerController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new VillagerNPC(this); bukkitEntity = new VillagerNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -199,11 +200,10 @@ public class VillagerController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -68,7 +68,7 @@ public class VindicatorController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -138,8 +138,9 @@ public class VindicatorController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new VindicatorNPC(this); bukkitEntity = new VindicatorNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -170,11 +171,10 @@ public class VindicatorController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -59,7 +59,7 @@ public class WitchController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class WitchController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class WitchController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new WitchNPC(this); bukkitEntity = new WitchNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -153,17 +155,17 @@ public class WitchController extends MobEntityController {
@Override @Override
public void M() { public void M() {
super.M(); super.M();
if (npc != null) if (npc != null) {
npc.update(); npc.update();
}
} }
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -50,7 +50,7 @@ public class WitherController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -79,8 +79,9 @@ public class WitherController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -109,8 +110,9 @@ public class WitherController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new WitherNPC(this); bukkitEntity = new WitherNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }

View File

@ -70,7 +70,7 @@ public class WolfController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -140,8 +140,9 @@ public class WolfController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new WolfNPC(this); bukkitEntity = new WolfNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -172,11 +173,10 @@ public class WolfController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class ZombieController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class ZombieController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class ZombieController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ZombieNPC(this); bukkitEntity = new ZombieNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class ZombieController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -59,7 +59,7 @@ public class ZombieHuskController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class ZombieHuskController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class ZombieHuskController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ZombieHuskNPC(this); bukkitEntity = new ZombieHuskNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class ZombieHuskController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -59,7 +59,7 @@ public class ZombieVillagerController extends MobEntityController {
@Override @Override
public void a(Entity entity, float strength, double dx, double dz) { public void a(Entity entity, float strength, double dx, double dz) {
NMS.callKnockbackEvent(npc, strength, dx, dz, (evt) -> super.a(entity, (float) evt.getStrength(), NMS.callKnockbackEvent(npc, strength, dx, dz, evt -> super.a(entity, (float) evt.getStrength(),
evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ()));
} }
@ -88,8 +88,9 @@ public class ZombieVillagerController extends MobEntityController {
// this method is called by both the entities involved - cancelling // this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving. // it will not stop the NPC from moving.
super.collide(entity); super.collide(entity);
if (npc != null) if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity()); Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
} }
@Override @Override
@ -128,8 +129,9 @@ public class ZombieVillagerController extends MobEntityController {
@Override @Override
public CraftEntity getBukkitEntity() { public CraftEntity getBukkitEntity() {
if (npc != null && !(bukkitEntity instanceof NPCHolder)) if (npc != null && !(bukkitEntity instanceof NPCHolder)) {
bukkitEntity = new ZombieVillagerNPC(this); bukkitEntity = new ZombieVillagerNPC(this);
}
return super.getBukkitEntity(); return super.getBukkitEntity();
} }
@ -160,11 +162,10 @@ public class ZombieVillagerController extends MobEntityController {
@Override @Override
public boolean m_() { public boolean m_() {
if (npc == null || !npc.isFlyable()) { if (npc == null || !npc.isFlyable())
return super.m_(); return super.m_();
} else { else
return false; return false;
}
} }
} }

View File

@ -53,9 +53,8 @@ public class EvokerFangsController extends MobEntityController {
@Override @Override
public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, EnumHand enumhand) { public EnumInteractionResult a(EntityHuman entityhuman, Vec3D vec3d, EnumHand enumhand) {
if (npc == null) { if (npc == null)
return super.a(entityhuman, vec3d, enumhand); return super.a(entityhuman, vec3d, enumhand);
}
PlayerInteractEntityEvent event = new PlayerInteractEntityEvent((Player) entityhuman.getBukkitEntity(), PlayerInteractEntityEvent event = new PlayerInteractEntityEvent((Player) entityhuman.getBukkitEntity(),
getBukkitEntity()); getBukkitEntity());
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);

View File

@ -37,13 +37,13 @@ public class CitizensBlockBreaker extends AbstractBlockBreaker {
private float getStrength(IBlockData block) { private float getStrength(IBlockData block) {
float base = block.getBlock().a(block, null, new BlockPosition(0, 0, 0)); float base = block.getBlock().a(block, null, new BlockPosition(0, 0, 0));
return base < 0.0F ? 0.0F : (!isDestroyable(block) ? 1.0F / base / 100.0F : strengthMod(block) / base / 30.0F); return base < 0.0F ? 0.0F : !isDestroyable(block) ? 1.0F / base / 100.0F : strengthMod(block) / base / 30.0F;
} }
private boolean isDestroyable(IBlockData block) { private boolean isDestroyable(IBlockData block) {
if (block.getMaterial().isAlwaysDestroyable()) { if (block.getMaterial().isAlwaysDestroyable())
return true; return true;
} else { else {
ItemStack current = getCurrentItem(); ItemStack current = getCurrentItem();
return current != null ? current.b(block) : false; return current != null ? current.b(block) : false;
} }
@ -66,7 +66,7 @@ public class CitizensBlockBreaker extends AbstractBlockBreaker {
} }
} }
if (handle.hasEffect(MobEffects.FASTER_DIG)) { if (handle.hasEffect(MobEffects.FASTER_DIG)) {
f *= (1.0F + (handle.getEffect(MobEffects.FASTER_DIG).getAmplifier() + 1) * 0.2F); f *= 1.0F + (handle.getEffect(MobEffects.FASTER_DIG).getAmplifier() + 1) * 0.2F;
} }
if (handle.hasEffect(MobEffects.SLOWER_DIG)) { if (handle.hasEffect(MobEffects.SLOWER_DIG)) {
float f1 = 1.0F; float f1 = 1.0F;

View File

@ -33,9 +33,8 @@ public class CustomEntityRegistry extends RegistryMaterials
@Override @Override
public int a(Object key) { public int a(Object key) {
if (entityIds.containsKey(key)) { if (entityIds.containsKey(key))
return entityIds.get(key); return entityIds.get(key);
}
return wrapped.a((Class<? extends Entity>) key); return wrapped.a((Class<? extends Entity>) key);
} }
@ -46,9 +45,8 @@ public class CustomEntityRegistry extends RegistryMaterials
@Override @Override
public MinecraftKey b(Object value) { public MinecraftKey b(Object value) {
if (entityClasses.containsKey(value)) { if (entityClasses.containsKey(value))
return entityClasses.get(value); return entityClasses.get(value);
}
return wrapped.b((Class<? extends Entity>) value); return wrapped.b((Class<? extends Entity>) value);
} }
@ -64,9 +62,8 @@ public class CustomEntityRegistry extends RegistryMaterials
@Override @Override
public Class<? extends Entity> get(Object key) { public Class<? extends Entity> get(Object key) {
if (entities.containsKey(key)) { if (entities.containsKey(key))
return entities.get(key); return entities.get(key);
}
return wrapped.get((MinecraftKey) key); return wrapped.get((MinecraftKey) key);
} }

View File

@ -411,9 +411,8 @@ public class NMSImpl implements NMSBridge {
if (Bukkit.isPrimaryThread()) if (Bukkit.isPrimaryThread())
throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread."); throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread.");
MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().az(); MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().az();
if (!(sessionService instanceof YggdrasilMinecraftSessionService)) { if (!(sessionService instanceof YggdrasilMinecraftSessionService))
return sessionService.fillProfileProperties(profile, requireSecure); return sessionService.fillProfileProperties(profile, requireSecure);
}
YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService) YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService)
.getAuthenticationService(); .getAuthenticationService();
URL url = HttpAuthenticationService URL url = HttpAuthenticationService
@ -451,9 +450,8 @@ public class NMSImpl implements NMSBridge {
} }
} catch (Exception e) { } catch (Exception e) {
} }
if (bserver == null) { if (bserver == null)
return null; return null;
}
BossBar ret = Bukkit.createBossBar("", BarColor.BLUE, BarStyle.SEGMENTED_10); BossBar ret = Bukkit.createBossBar("", BarColor.BLUE, BarStyle.SEGMENTED_10);
try { try {
CRAFT_BOSSBAR_HANDLE_FIELD.set(ret, bserver); CRAFT_BOSSBAR_HANDLE_FIELD.set(ret, bserver);
@ -484,9 +482,8 @@ public class NMSImpl implements NMSBridge {
Entity handle = getHandle(entity); Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove() ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null; : handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
if (controller == null || !controller.a()) { if (controller == null || !controller.a())
return null; return null;
}
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f()); return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
} }
@ -497,9 +494,8 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public float getHeadYaw(org.bukkit.entity.Entity entity) { public float getHeadYaw(org.bukkit.entity.Entity entity) {
if (!(entity instanceof LivingEntity)) { if (!(entity instanceof LivingEntity))
return entity.getLocation().getYaw(); return entity.getLocation().getYaw();
}
return getHandle((LivingEntity) entity).aP; return getHandle((LivingEntity) entity).aP;
} }
@ -560,7 +556,7 @@ public class NMSImpl implements NMSBridge {
Entity handle = NMSImpl.getHandle(entity); Entity handle = NMSImpl.getHandle(entity);
if (handle == null || handle.passengers == null) if (handle == null || handle.passengers == null)
return Lists.newArrayList(); return Lists.newArrayList();
return Lists.transform(handle.passengers, input -> input.getBukkitEntity()); return Lists.transform(handle.passengers, Entity::getBukkitEntity);
} }
@Override @Override
@ -608,8 +604,8 @@ public class NMSImpl implements NMSBridge {
if (!npc.isSpawned() || !(npc.getEntity() instanceof LivingEntity)) if (!npc.isSpawned() || !(npc.getEntity() instanceof LivingEntity))
return DEFAULT_SPEED; return DEFAULT_SPEED;
EntityLiving handle = NMSImpl.getHandle((LivingEntity) npc.getEntity()); EntityLiving handle = NMSImpl.getHandle((LivingEntity) npc.getEntity());
if (handle == null) if (handle == null) {
return DEFAULT_SPEED; }
return DEFAULT_SPEED; return DEFAULT_SPEED;
// return (float) // return (float)
// handle.getAttributeInstance(GenericAttributes.d).getValue(); // handle.getAttributeInstance(GenericAttributes.d).getValue();
@ -627,23 +623,14 @@ public class NMSImpl implements NMSBridge {
Iterables.transform(dest, Iterables.transform(dest,
input -> new PathPoint(input.getBlockX(), input.getBlockY(), input.getBlockZ())), input -> new PathPoint(input.getBlockX(), input.getBlockY(), input.getBlockZ())),
PathPoint.class)); PathPoint.class));
return getTargetNavigator(entity, params, new Function<NavigationAbstract, Boolean>() { return getTargetNavigator(entity, params, input -> input.a(path, params.speed()));
@Override
public Boolean apply(NavigationAbstract input) {
return input.a(path, params.speed());
}
});
} }
@Override @Override
public MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final Location dest, public MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final Location dest,
final NavigatorParameters params) { final NavigatorParameters params) {
return getTargetNavigator(entity, params, new Function<NavigationAbstract, Boolean>() { return getTargetNavigator(entity, params,
@Override input -> input.a(dest.getX(), dest.getY(), dest.getZ(), params.speed()));
public Boolean apply(NavigationAbstract input) {
return input.a(dest.getX(), dest.getY(), dest.getZ(), params.speed());
}
});
} }
private MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final NavigatorParameters params, private MCNavigator getTargetNavigator(final org.bukkit.entity.Entity entity, final NavigatorParameters params,
@ -737,11 +724,10 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public org.bukkit.entity.Entity getVehicle(org.bukkit.entity.Entity entity) { public org.bukkit.entity.Entity getVehicle(org.bukkit.entity.Entity entity) {
Entity handle = NMSImpl.getHandle(entity); Entity handle = NMSImpl.getHandle(entity);
if (handle == null) { if (handle == null)
return null; return null;
}
Entity e = handle.getVehicle(); Entity e = handle.getVehicle();
return (e == handle || e == null) ? null : e.getBukkitEntity(); return e == handle || e == null ? null : e.getBukkitEntity();
} }
@Override @Override
@ -890,7 +876,7 @@ public class NMSImpl implements NMSBridge {
public void look(org.bukkit.entity.Entity entity, Location to, boolean headOnly, boolean immediate) { public void look(org.bukkit.entity.Entity entity, Location to, boolean headOnly, boolean immediate) {
Entity handle = NMSImpl.getHandle(entity); Entity handle = NMSImpl.getHandle(entity);
if (immediate || headOnly || BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType()) if (immediate || headOnly || BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType())
|| (!(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC))) { || !(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC)) {
Location fromLocation = entity.getLocation(FROM_LOCATION); Location fromLocation = entity.getLocation(FROM_LOCATION);
double xDiff, yDiff, zDiff; double xDiff, yDiff, zDiff;
xDiff = to.getX() - fromLocation.getX(); xDiff = to.getX() - fromLocation.getX();
@ -900,8 +886,9 @@ public class NMSImpl implements NMSBridge {
double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff); double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff);
double yaw = Math.toDegrees(Math.acos(xDiff / distanceXZ)); double yaw = Math.toDegrees(Math.acos(xDiff / distanceXZ));
double pitch = Math.toDegrees(Math.acos(yDiff / distanceY)) - 90; double pitch = Math.toDegrees(Math.acos(yDiff / distanceY)) - 90;
if (zDiff < 0.0) if (zDiff < 0.0) {
yaw += Math.abs(180 - yaw) * 2; yaw += Math.abs(180 - yaw) * 2;
}
if (handle instanceof EntityEnderDragon) { if (handle instanceof EntityEnderDragon) {
yaw = Util.getDragonYaw(handle.getBukkitEntity(), xDiff, zDiff); yaw = Util.getDragonYaw(handle.getBukkitEntity(), xDiff, zDiff);
} else { } else {
@ -932,7 +919,7 @@ public class NMSImpl implements NMSBridge {
public void look(org.bukkit.entity.Entity from, org.bukkit.entity.Entity to) { public void look(org.bukkit.entity.Entity from, org.bukkit.entity.Entity to) {
Entity handle = NMSImpl.getHandle(from), target = NMSImpl.getHandle(to); Entity handle = NMSImpl.getHandle(from), target = NMSImpl.getHandle(to);
if (BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType()) if (BAD_CONTROLLER_LOOK.contains(handle.getBukkitEntity().getType())
|| (!(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC))) { || !(handle instanceof EntityInsentient) && !(handle instanceof EntityHumanNPC)) {
if (to instanceof LivingEntity) { if (to instanceof LivingEntity) {
look(from, ((LivingEntity) to).getEyeLocation(), false, true); look(from, ((LivingEntity) to).getEyeLocation(), false, true);
} else { } else {
@ -979,8 +966,6 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public CraftInventoryView getBukkitView() { public CraftInventoryView getBukkitView() {
if (this.bukkitEntity != null) { if (this.bukkitEntity != null) {
return this.bukkitEntity;
} else {
try { try {
this.bukkitEntity = new CraftInventoryView(player, this.bukkitEntity = new CraftInventoryView(player,
new CitizensInventoryAnvil(new Location(player.getWorld(), 0, 0, 0), new CitizensInventoryAnvil(new Location(player.getWorld(), 0, 0, 0),
@ -991,8 +976,8 @@ public class NMSImpl implements NMSBridge {
e.printStackTrace(); e.printStackTrace();
return super.getBukkitView(); return super.getBukkitView();
} }
return this.bukkitEntity;
} }
return this.bukkitEntity;
} }
}; };
container.windowId = handle.nextContainerCounter(); container.windowId = handle.nextContainerCounter();
@ -1030,12 +1015,11 @@ public class NMSImpl implements NMSBridge {
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist", boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean()); Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.playerTick(); entity.playerTick();
if (!removeFromPlayerList) { if (!removeFromPlayerList)
return; return;
}
Entity entity1 = entity.bB(); Entity entity1 = entity.bB();
if (entity1 != null) { if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) { if (entity1.dead || !entity1.w(entity)) {
entity.stopRiding(); entity.stopRiding();
} }
} else { } else {
@ -1069,8 +1053,9 @@ public class NMSImpl implements NMSBridge {
Class<?> search = clazz; Class<?> search = clazz;
while ((search = search.getSuperclass()) != null && Entity.class.isAssignableFrom(search)) { while ((search = search.getSuperclass()) != null && Entity.class.isAssignableFrom(search)) {
MinecraftKey key = ENTITY_REGISTRY.b(search); MinecraftKey key = ENTITY_REGISTRY.b(search);
if (key == null) if (key == null) {
continue; continue;
}
int code = ENTITY_REGISTRY.a(search); int code = ENTITY_REGISTRY.a(search);
ENTITY_REGISTRY.put(code, key, (Class<? extends Entity>) clazz); ENTITY_REGISTRY.put(code, key, (Class<? extends Entity>) clazz);
return; return;
@ -1406,8 +1391,8 @@ public class NMSImpl implements NMSBridge {
EntityPlayer from = (EntityPlayer) getHandle(entity); EntityPlayer from = (EntityPlayer) getHandle(entity);
PerPlayerMetadata<Long> meta = CitizensAPI.getLocationLookup().registerMetadata("sleeping", null); PerPlayerMetadata<Long> meta = CitizensAPI.getLocationLookup().registerMetadata("sleeping", null);
if (sleep) { if (sleep) {
List<Player> nearbyPlayers = Lists.newArrayList(Iterables List<Player> nearbyPlayers = Lists.newArrayList(
.filter(CitizensAPI.getLocationLookup().getNearbyPlayers(entity.getLocation(), 64), (p) -> { Iterables.filter(CitizensAPI.getLocationLookup().getNearbyPlayers(entity.getLocation(), 64), p -> {
Long time = meta.getMarker(p.getUniqueId(), entity.getUniqueId().toString()); Long time = meta.getMarker(p.getUniqueId(), entity.getUniqueId().toString());
if (time == null || Math.abs(System.currentTimeMillis() - time) > 5000) if (time == null || Math.abs(System.currentTimeMillis() - time) > 5000)
return true; return true;
@ -1446,7 +1431,7 @@ public class NMSImpl implements NMSBridge {
list.add(new PacketPlayOutEntityTeleport(from)); list.add(new PacketPlayOutEntityTeleport(from));
for (Player nearby : nearbyPlayers) { for (Player nearby : nearbyPlayers) {
nearby.sendBlockChange(bedLoc, Material.BED_BLOCK, facingByte); nearby.sendBlockChange(bedLoc, Material.BED_BLOCK, facingByte);
list.forEach((packet) -> sendPacket(nearby, packet)); list.forEach(packet -> sendPacket(nearby, packet));
meta.set(nearby.getUniqueId(), entity.getUniqueId().toString(), System.currentTimeMillis()); meta.set(nearby.getUniqueId(), entity.getUniqueId().toString(), System.currentTimeMillis());
} }
} else { } else {
@ -1575,9 +1560,8 @@ public class NMSImpl implements NMSBridge {
@Override @Override
public void setPath() { public void setPath() {
Location location = parameters.entityTargetLocationMapper().apply(target); Location location = parameters.entityTargetLocationMapper().apply(target);
if (location == null) { if (location == null)
throw new IllegalStateException("mapper should not return null"); throw new IllegalStateException("mapper should not return null");
}
navigation.a(location.getX(), location.getY(), location.getZ(), parameters.speed()); navigation.a(location.getX(), location.getY(), location.getZ(), parameters.speed());
} }
@ -1650,9 +1634,8 @@ public class NMSImpl implements NMSBridge {
} }
private static CompoundTag convertNBT(net.minecraft.server.v1_11_R1.NBTTagCompound tag) { private static CompoundTag convertNBT(net.minecraft.server.v1_11_R1.NBTTagCompound tag) {
if (tag == null) { if (tag == null)
return new CompoundTag("", Collections.EMPTY_MAP); return new CompoundTag("", Collections.EMPTY_MAP);
}
Map<String, Tag> tags = Maps.newHashMap(); Map<String, Tag> tags = Maps.newHashMap();
for (String key : tag.c()) { for (String key : tag.c()) {
tags.put(key, convertNBT(key, tag.get(key))); tags.put(key, convertNBT(key, tag.get(key)));
@ -1661,25 +1644,25 @@ public class NMSImpl implements NMSBridge {
} }
private static Tag convertNBT(String key, net.minecraft.server.v1_11_R1.NBTBase base) { private static Tag convertNBT(String key, net.minecraft.server.v1_11_R1.NBTBase base) {
if (base instanceof net.minecraft.server.v1_11_R1.NBTTagInt) { if (base instanceof net.minecraft.server.v1_11_R1.NBTTagInt)
return new IntTag(key, ((net.minecraft.server.v1_11_R1.NBTTagInt) base).e()); return new IntTag(key, ((net.minecraft.server.v1_11_R1.NBTTagInt) base).e());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagFloat) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagFloat)
return new FloatTag(key, ((net.minecraft.server.v1_11_R1.NBTTagFloat) base).i()); return new FloatTag(key, ((net.minecraft.server.v1_11_R1.NBTTagFloat) base).i());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagDouble) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagDouble)
return new DoubleTag(key, ((net.minecraft.server.v1_11_R1.NBTTagDouble) base).asDouble()); return new DoubleTag(key, ((net.minecraft.server.v1_11_R1.NBTTagDouble) base).asDouble());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagLong) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagLong)
return new LongTag(key, ((net.minecraft.server.v1_11_R1.NBTTagLong) base).d()); return new LongTag(key, ((net.minecraft.server.v1_11_R1.NBTTagLong) base).d());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagShort) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagShort)
return new ShortTag(key, ((net.minecraft.server.v1_11_R1.NBTTagShort) base).f()); return new ShortTag(key, ((net.minecraft.server.v1_11_R1.NBTTagShort) base).f());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagByte) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagByte)
return new ByteTag(key, ((net.minecraft.server.v1_11_R1.NBTTagByte) base).g()); return new ByteTag(key, ((net.minecraft.server.v1_11_R1.NBTTagByte) base).g());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagByteArray) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagByteArray)
return new ByteArrayTag(key, ((net.minecraft.server.v1_11_R1.NBTTagByteArray) base).c()); return new ByteArrayTag(key, ((net.minecraft.server.v1_11_R1.NBTTagByteArray) base).c());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagIntArray) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagIntArray)
return new IntArrayTag(key, ((net.minecraft.server.v1_11_R1.NBTTagIntArray) base).d()); return new IntArrayTag(key, ((net.minecraft.server.v1_11_R1.NBTTagIntArray) base).d());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagString) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagString)
return new StringTag(key, base.toString()); return new StringTag(key, base.toString());
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagList) { else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagList) {
List<net.minecraft.server.v1_11_R1.NBTBase> list = (List<net.minecraft.server.v1_11_R1.NBTBase>) base; List<net.minecraft.server.v1_11_R1.NBTBase> list = (List<net.minecraft.server.v1_11_R1.NBTBase>) base;
List<Tag> converted = Lists.newArrayList(); List<Tag> converted = Lists.newArrayList();
if (list.size() > 0) { if (list.size() > 0) {
@ -1689,17 +1672,15 @@ public class NMSImpl implements NMSBridge {
} }
return new ListTag(key, tagType, converted); return new ListTag(key, tagType, converted);
} }
return null; } else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagCompound)
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagCompound) { return convertNBT((net.minecraft.server.v1_11_R1.NBTTagCompound) base);
return convertNBT(((net.minecraft.server.v1_11_R1.NBTTagCompound) base)); else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagEnd)
} else if (base instanceof net.minecraft.server.v1_11_R1.NBTTagEnd) {
return new EndTag(); return new EndTag();
}
return null; return null;
} }
public static void flyingMoveLogic(EntityLiving entity, float f, float f1) { public static void flyingMoveLogic(EntityLiving entity, float f, float f1) {
if ((entity.cu()) || (entity.bA())) { if (entity.cu() || entity.bA()) {
if (entity.isInWater()) { if (entity.isInWater()) {
double d1 = entity.locY; double d1 = entity.locY;
float f4 = entity instanceof EntityPolarBear ? 0.98F : 0.8F; float f4 = entity instanceof EntityPolarBear ? 0.98F : 0.8F;
@ -1723,12 +1704,12 @@ public class NMSImpl implements NMSBridge {
if (!entity.isNoGravity()) { if (!entity.isNoGravity()) {
entity.motY -= 0.02D; entity.motY -= 0.02D;
} }
if ((entity.positionChanged) if (entity.positionChanged
&& (entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ))) { && entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ)) {
entity.motY = 0.30000001192092896D; entity.motY = 0.30000001192092896D;
} }
} else if ((entity.ao()) } else if (entity.ao()
&& ((!(entity instanceof EntityHuman)) || (!((EntityHuman) entity).abilities.isFlying))) { && (!(entity instanceof EntityHuman) || !((EntityHuman) entity).abilities.isFlying)) {
double d1 = entity.locY; double d1 = entity.locY;
entity.a(f, f1, 0.02F); entity.a(f, f1, 0.02F);
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ); entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
@ -1738,8 +1719,8 @@ public class NMSImpl implements NMSBridge {
if (!entity.isNoGravity()) { if (!entity.isNoGravity()) {
entity.motY -= 0.02D; entity.motY -= 0.02D;
} }
if ((entity.positionChanged) if (entity.positionChanged
&& (entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ))) { && entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ)) {
entity.motY = 0.30000001192092896D; entity.motY = 0.30000001192092896D;
} }
} else if (entity.cH()) { } else if (entity.cH()) {
@ -1754,7 +1735,7 @@ public class NMSImpl implements NMSBridge {
float f6 = MathHelper.cos(f5); float f6 = MathHelper.cos(f5);
f6 = (float) (f6 * f6 * Math.min(1.0D, d3 / 0.4D)); f6 = (float) (f6 * f6 * Math.min(1.0D, d3 / 0.4D));
entity.motY += -0.08D + f6 * 0.06D; entity.motY += -0.08D + f6 * 0.06D;
if ((entity.motY < 0.0D) && (d0 > 0.0D)) { if (entity.motY < 0.0D && d0 > 0.0D) {
double d4 = entity.motY * -0.1D * f6; double d4 = entity.motY * -0.1D * f6;
entity.motY += d4; entity.motY += d4;
entity.motX += vec3d.x * d4 / d0; entity.motX += vec3d.x * d4 / d0;
@ -1774,7 +1755,7 @@ public class NMSImpl implements NMSBridge {
entity.motY *= 0.9800000190734863D; entity.motY *= 0.9800000190734863D;
entity.motZ *= 0.9900000095367432D; entity.motZ *= 0.9900000095367432D;
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ); entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
if ((entity.positionChanged) && (!entity.world.isClientSide)) { if (entity.positionChanged && !entity.world.isClientSide) {
double d4 = Math.sqrt(entity.motX * entity.motX + entity.motZ * entity.motZ); double d4 = Math.sqrt(entity.motX * entity.motX + entity.motZ * entity.motZ);
double d5 = d2 - d4; double d5 = d2 - d4;
float f7 = (float) (d5 * 10.0D - 3.0D); float f7 = (float) (d5 * 10.0D - 3.0D);
@ -1783,8 +1764,8 @@ public class NMSImpl implements NMSBridge {
entity.damageEntity(DamageSource.FLY_INTO_WALL, f7); entity.damageEntity(DamageSource.FLY_INTO_WALL, f7);
} }
} }
if ((entity.onGround) && (!entity.world.isClientSide) && (entity.getFlag(7)) if (entity.onGround && !entity.world.isClientSide && entity.getFlag(7)
&& (!CraftEventFactory.callToggleGlideEvent(entity, false).isCancelled())) { && !CraftEventFactory.callToggleGlideEvent(entity, false).isCancelled()) {
entity.setFlag(7, false); entity.setFlag(7, false);
} }
} else { } else {
@ -1814,13 +1795,13 @@ public class NMSImpl implements NMSBridge {
if (entity.motY < -0.15D) { if (entity.motY < -0.15D) {
entity.motY = -0.15D; entity.motY = -0.15D;
} }
boolean flag = (entity.isSneaking()) && ((entity instanceof EntityHuman)); boolean flag = entity.isSneaking() && entity instanceof EntityHuman;
if ((flag) && (entity.motY < 0.0D)) { if (flag && entity.motY < 0.0D) {
entity.motY = 0.0D; entity.motY = 0.0D;
} }
} }
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ); entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
if ((entity.positionChanged) && (entity.m_())) { if (entity.positionChanged && entity.m_()) {
entity.motY = 0.2D; entity.motY = 0.2D;
} }
if (entity.hasEffect(MobEffects.LEVITATION)) { if (entity.hasEffect(MobEffects.LEVITATION)) {
@ -1828,8 +1809,8 @@ public class NMSImpl implements NMSBridge {
* 0.2D; * 0.2D;
} else { } else {
blockposition_pooledblockposition.e(entity.locX, 0.0D, entity.locZ); blockposition_pooledblockposition.e(entity.locX, 0.0D, entity.locZ);
if ((entity.world.isClientSide) && ((!entity.world.isLoaded(blockposition_pooledblockposition)) if (entity.world.isClientSide && (!entity.world.isLoaded(blockposition_pooledblockposition)
|| (!entity.world.getChunkAtWorldCoords(blockposition_pooledblockposition).p()))) { || !entity.world.getChunkAtWorldCoords(blockposition_pooledblockposition).p())) {
if (entity.locY > 0.0D) { if (entity.locY > 0.0D) {
entity.motY = -0.1D; entity.motY = -0.1D;
} else { } else {
@ -1939,7 +1920,7 @@ public class NMSImpl implements NMSBridge {
} }
public static void sendPacketNearby(Player from, Location location, Packet<?> packet, double radius) { public static void sendPacketNearby(Player from, Location location, Packet<?> packet, double radius) {
List<Packet<?>> list = new ArrayList<Packet<?>>(); List<Packet<?>> list = new ArrayList<>();
list.add(packet); list.add(packet);
sendPacketsNearby(from, location, list, radius); sendPacketsNearby(from, location, list, radius);
} }
@ -1948,8 +1929,8 @@ public class NMSImpl implements NMSBridge {
radius *= radius; radius *= radius;
final org.bukkit.World world = location.getWorld(); final org.bukkit.World world = location.getWorld();
for (Player player : CitizensAPI.getLocationLookup().getNearbyPlayers(location, radius)) { for (Player player : CitizensAPI.getLocationLookup().getNearbyPlayers(location, radius)) {
if (world != player.getWorld() || (from != null && !player.canSee(from)) if (world != player.getWorld() || from != null && !player.canSee(from)
|| (location.distanceSquared(player.getLocation(PACKET_CACHE_LOCATION)) > radius)) { || location.distanceSquared(player.getLocation(PACKET_CACHE_LOCATION)) > radius) {
continue; continue;
} }
for (Packet<?> packet : packets) { for (Packet<?> packet : packets) {
@ -1971,15 +1952,16 @@ public class NMSImpl implements NMSBridge {
} }
public static void setSize(Entity entity, float f, float f1, boolean justCreated) { public static void setSize(Entity entity, float f, float f1, boolean justCreated) {
if ((f != entity.width) || (f1 != entity.length)) { if (f != entity.width || f1 != entity.length) {
float f2 = entity.width; float f2 = entity.width;
entity.width = f; entity.width = f;
entity.length = f1; entity.length = f1;
entity.a(new AxisAlignedBB(entity.getBoundingBox().a, entity.getBoundingBox().b, entity.getBoundingBox().c, entity.a(new AxisAlignedBB(entity.getBoundingBox().a, entity.getBoundingBox().b, entity.getBoundingBox().c,
entity.getBoundingBox().a + entity.width, entity.getBoundingBox().b + entity.length, entity.getBoundingBox().a + entity.width, entity.getBoundingBox().b + entity.length,
entity.getBoundingBox().c + entity.width)); entity.getBoundingBox().c + entity.width));
if ((entity.width > f2) && (!justCreated) && (!entity.world.isClientSide)) if (entity.width > f2 && !justCreated && !entity.world.isClientSide) {
entity.move(EnumMoveType.SELF, (f2 - entity.width) / 2, 0.0D, (f2 - entity.width) / 2); entity.move(EnumMoveType.SELF, (f2 - entity.width) / 2, 0.0D, (f2 - entity.width) / 2);
}
} }
} }

Some files were not shown because too many files have changed in this diff Show More