From 71e8186a89b89e87f3aeb9200fa22d216dbe2bd2 Mon Sep 17 00:00:00 2001 From: schum476 Date: Wed, 30 Apr 2014 21:55:21 -0500 Subject: [PATCH 1/3] Reduced the else/if chain at line 43 to a single if/else case. Added getEntity() and isEntityAnimal() to Entity.java at lines 120 and 140 (respectively) Added the method getEntity() of the following form: public static CraftEntity getEntity(Entity entity, CraftServer server) { return new CraftEntityName(server, (EntityEntityName) entity); } To the files: CraftAnimals.java EntityChicken.java EntityCow.java EntityMushroomCow.java EntityPig.java EntityTameableAnimal.java EntityWolf.java EntityOcelot.java EntitySheep.java EntityHorse.java --- .../java/net/minecraft/server/Entity.java | 43 +++++++++++++++++++ .../net/minecraft/server/EntityChicken.java | 7 +++ .../java/net/minecraft/server/EntityCow.java | 7 +++ .../net/minecraft/server/EntityHorse.java | 7 +++ .../minecraft/server/EntityMushroomCow.java | 7 +++ .../net/minecraft/server/EntityOcelot.java | 8 ++++ .../java/net/minecraft/server/EntityPig.java | 7 +++ .../net/minecraft/server/EntitySheep.java | 7 +++ .../java/net/minecraft/server/EntityWolf.java | 8 ++++ .../craftbukkit/entity/CraftAnimals.java | 9 +++- .../craftbukkit/entity/CraftEntity.java | 17 +++----- 11 files changed, 114 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java index 9d933cba52..8c5977b4dd 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -19,6 +19,7 @@ import org.bukkit.event.vehicle.VehicleBlockCollisionEvent; import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.event.vehicle.VehicleExitEvent; +import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftPlayer; @@ -115,6 +116,48 @@ static boolean isLevelAtLeast(NBTTagCompound tag, int level) { public int getId() { return this.id; } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + if (entity instanceof EntityChicken) { + return EntityChicken.getEntity(entity, server); + } else if (entity instanceof EntityCow) { + return EntityCow.getEntity(entity, server); + } else if (entity instanceof EntityMushroomCow) { + return EntityMushroomCow.getEntity(entity, server); + } else if (entity instanceof EntityPig) { + return EntityPig.getEntity(entity, server); + } else if (entity instanceof EntityWolf) { + return EntityWolf.getEntity(entity, server); + } else if (entity instanceof EntityOcelot) { + return EntityOcelot.getEntity(entity, server); + } else if (entity instanceof EntitySheep) { + return EntitySheep.getEntity(entity, server); + } else { //Given entity must be a horse + return EntityHorse.getEntity(entity, server); + } + } + + public static boolean isEntityAnimal(Entity entity) { + if (entity instanceof EntityChicken) { + return true; + } else if (entity instanceof EntityCow) { + return true; + } else if (entity instanceof EntityMushroomCow) { + return true; + } else if (entity instanceof EntityPig) { + return true; + } else if (entity instanceof EntityWolf) { + return true; + } else if (entity instanceof EntityOcelot) { + return true; + } else if (entity instanceof EntitySheep) { + return true; + } else if (entity instanceof EntityHorse) { + return true; + } else { + return false; + } + } public void d(int i) { this.id = i; diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java index f65ddccba8..aaf29cd0e5 100644 --- a/src/main/java/net/minecraft/server/EntityChicken.java +++ b/src/main/java/net/minecraft/server/EntityChicken.java @@ -1,5 +1,8 @@ package net.minecraft.server; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftChicken; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.util.CraftMagicNumbers; // CraftBukkit public class EntityChicken extends EntityAnimal { @@ -25,6 +28,10 @@ public EntityChicken(World world) { this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftChicken(server, (EntityChicken) entity); + } public boolean bj() { return true; diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java index 43c1243b15..7c187266ce 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -1,6 +1,9 @@ package net.minecraft.server; // CraftBukkit start +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftCow; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.util.CraftMagicNumbers; @@ -21,6 +24,10 @@ public EntityCow(World world) { this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftCow(server, (EntityCow) entity); + } public boolean bj() { return true; diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java index 30f25c3e47..35c8cad2e9 100644 --- a/src/main/java/net/minecraft/server/EntityHorse.java +++ b/src/main/java/net/minecraft/server/EntityHorse.java @@ -3,6 +3,9 @@ import java.util.Iterator; import java.util.List; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftHorse; // CraftBukkit start import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.event.entity.EntityDamageEvent; @@ -57,6 +60,10 @@ public EntityHorse(World world) { this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); this.loadChest(); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftHorse(server, (EntityHorse) entity); + } protected void c() { super.c(); diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java index b4e430611a..9d42317b1e 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -1,5 +1,8 @@ package net.minecraft.server; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftMushroomCow; import org.bukkit.event.player.PlayerShearEntityEvent; // CraftBukkit public class EntityMushroomCow extends EntityCow { @@ -57,6 +60,10 @@ public boolean a(EntityHuman entityhuman) { return super.a(entityhuman); } } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftMushroomCow(server, (EntityMushroomCow) entity); + } public EntityMushroomCow c(EntityAgeable entityageable) { return new EntityMushroomCow(this.world); diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java index e75de9c06e..ea5b185fe4 100644 --- a/src/main/java/net/minecraft/server/EntityOcelot.java +++ b/src/main/java/net/minecraft/server/EntityOcelot.java @@ -1,5 +1,9 @@ package net.minecraft.server; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftOcelot; + public class EntityOcelot extends EntityTameableAnimal { private PathfinderGoalTempt bq; @@ -21,6 +25,10 @@ public EntityOcelot(World world) { this.goalSelector.a(11, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 10.0F)); this.targetSelector.a(1, new PathfinderGoalRandomTargetNonTamed(this, EntityChicken.class, 750, false)); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftOcelot(server, (EntityOcelot) entity); + } protected void c() { super.c(); diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java index 7e249ad22f..be80450753 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -1,6 +1,9 @@ package net.minecraft.server; // CraftBukkit start +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftPig; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.util.CraftMagicNumbers; // CraftBukkit end @@ -24,6 +27,10 @@ public EntityPig(World world) { this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftPig(server, (EntityPig) entity); + } public boolean bj() { return true; diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java index 47e60923b7..adc0b800a2 100644 --- a/src/main/java/net/minecraft/server/EntitySheep.java +++ b/src/main/java/net/minecraft/server/EntitySheep.java @@ -2,6 +2,9 @@ import java.util.Random; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftSheep; // CraftBukkit start import org.bukkit.event.entity.SheepRegrowWoolEvent; import org.bukkit.event.player.PlayerShearEntityEvent; @@ -31,6 +34,10 @@ public EntitySheep(World world) { this.bq.setItem(1, new ItemStack(Items.INK_SACK, 1, 0)); this.bq.resultInventory = new InventoryCraftResult(); // CraftBukkit - add result slot for event } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftSheep(server, (EntitySheep) entity); + } protected boolean bj() { return true; diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java index 097f4f5694..d5dcf094ed 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -1,5 +1,9 @@ package net.minecraft.server; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftWolf; + public class EntityWolf extends EntityTameableAnimal { private float bq; @@ -29,6 +33,10 @@ public EntityWolf(World world) { this.targetSelector.a(4, new PathfinderGoalRandomTargetNonTamed(this, EntitySheep.class, 200, false)); this.setTamed(false); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftWolf(server, (EntityWolf) entity); + } protected void aC() { super.aC(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java index 4b9b078305..9ef2ceeec7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java @@ -1,6 +1,9 @@ package org.bukkit.craftbukkit.entity; +import net.minecraft.server.Entity; import net.minecraft.server.EntityAnimal; +import net.minecraft.server.EntityChicken; + import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.Animals; @@ -9,6 +12,10 @@ public class CraftAnimals extends CraftAgeable implements Animals { public CraftAnimals(CraftServer server, EntityAnimal entity) { super(server, entity); } + + public static CraftEntity getEntity(Entity entity, CraftServer server) { + return new CraftAnimals(server, (EntityAnimal) entity); + } @Override public EntityAnimal getHandle() { @@ -19,4 +26,4 @@ public EntityAnimal getHandle() { public String toString() { return "CraftAnimals"; } -} +} \ No newline at end of file diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index fe0f2006e5..86f05f591f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -40,19 +40,12 @@ public static CraftEntity getEntity(CraftServer server, Entity entity) { else if (entity instanceof EntityCreature) { // Animals if (entity instanceof EntityAnimal) { - if (entity instanceof EntityChicken) { return new CraftChicken(server, (EntityChicken) entity); } - else if (entity instanceof EntityCow) { - if (entity instanceof EntityMushroomCow) { return new CraftMushroomCow(server, (EntityMushroomCow) entity); } - else { return new CraftCow(server, (EntityCow) entity); } + boolean isAnimal = Entity.isEntityAnimal(entity); + if (isAnimal) { + return Entity.getEntity(entity, server); + } else { + return CraftAnimals.getEntity(entity, server); } - else if (entity instanceof EntityPig) { return new CraftPig(server, (EntityPig) entity); } - else if (entity instanceof EntityTameableAnimal) { - if (entity instanceof EntityWolf) { return new CraftWolf(server, (EntityWolf) entity); } - else if (entity instanceof EntityOcelot) { return new CraftOcelot(server, (EntityOcelot) entity); } - } - else if (entity instanceof EntitySheep) { return new CraftSheep(server, (EntitySheep) entity); } - else if (entity instanceof EntityHorse) { return new CraftHorse(server, (EntityHorse) entity); } - else { return new CraftAnimals(server, (EntityAnimal) entity); } } // Monsters else if (entity instanceof EntityMonster) { From b984c68f64475d760300a3186b8dd4baeb289194 Mon Sep 17 00:00:00 2001 From: schum476 Date: Wed, 30 Apr 2014 22:08:11 -0500 Subject: [PATCH 2/3] Changed all of the getEntity() methods in CraftAnimals.java, EntityChicken.java, EntityCow.java, EntityMushroomCow.java, EntityPig.java, EntityWolf.java, EntityOcelot.java, EntitySheep.java, EntityHorse.java, that used to be of form: public static CraftEntity getEntity(Entity entity, CraftServer server) { return new CraftEntityName(server, (CraftEntityName) entity); } To no longer be static, and changed them to form: public CraftEntity getEntity(CraftServer server) { return new CraftEntityName(server, (CraftEntityName) this); } This way, the getEntity() method in Entity.java, which was repeated logic of isAnimal() in Entity.java, could be removed. --- .../java/net/minecraft/server/Entity.java | 20 ++----------------- .../net/minecraft/server/EntityChicken.java | 4 ++-- .../java/net/minecraft/server/EntityCow.java | 5 +++-- .../net/minecraft/server/EntityHorse.java | 4 ++-- .../minecraft/server/EntityMushroomCow.java | 4 ++-- .../net/minecraft/server/EntityOcelot.java | 4 ++-- .../java/net/minecraft/server/EntityPig.java | 4 ++-- .../net/minecraft/server/EntitySheep.java | 4 ++-- .../java/net/minecraft/server/EntityWolf.java | 4 ++-- .../craftbukkit/entity/CraftEntity.java | 2 +- 10 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java index 8c5977b4dd..95a04aa929 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -117,24 +117,8 @@ public int getId() { return this.id; } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - if (entity instanceof EntityChicken) { - return EntityChicken.getEntity(entity, server); - } else if (entity instanceof EntityCow) { - return EntityCow.getEntity(entity, server); - } else if (entity instanceof EntityMushroomCow) { - return EntityMushroomCow.getEntity(entity, server); - } else if (entity instanceof EntityPig) { - return EntityPig.getEntity(entity, server); - } else if (entity instanceof EntityWolf) { - return EntityWolf.getEntity(entity, server); - } else if (entity instanceof EntityOcelot) { - return EntityOcelot.getEntity(entity, server); - } else if (entity instanceof EntitySheep) { - return EntitySheep.getEntity(entity, server); - } else { //Given entity must be a horse - return EntityHorse.getEntity(entity, server); - } + public CraftEntity getEntity(CraftServer server) { + return this.getEntity(server); } public static boolean isEntityAnimal(Entity entity) { diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java index aaf29cd0e5..fddd23fc40 100644 --- a/src/main/java/net/minecraft/server/EntityChicken.java +++ b/src/main/java/net/minecraft/server/EntityChicken.java @@ -29,8 +29,8 @@ public EntityChicken(World world) { this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftChicken(server, (EntityChicken) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftChicken(server, (EntityChicken) this); } public boolean bj() { diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java index 7c187266ce..cb7c1e2a89 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -2,6 +2,7 @@ // CraftBukkit start import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftChicken; import org.bukkit.craftbukkit.entity.CraftCow; import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.event.CraftEventFactory; @@ -25,8 +26,8 @@ public EntityCow(World world) { this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftCow(server, (EntityCow) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftCow(server, (EntityCow) this); } public boolean bj() { diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java index 35c8cad2e9..e4c0c7b276 100644 --- a/src/main/java/net/minecraft/server/EntityHorse.java +++ b/src/main/java/net/minecraft/server/EntityHorse.java @@ -61,8 +61,8 @@ public EntityHorse(World world) { this.loadChest(); } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftHorse(server, (EntityHorse) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftHorse(server, (EntityHorse) this); } protected void c() { diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java index 9d42317b1e..fabeae1bb7 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -61,8 +61,8 @@ public boolean a(EntityHuman entityhuman) { } } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftMushroomCow(server, (EntityMushroomCow) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftMushroomCow(server, (EntityMushroomCow) this); } public EntityMushroomCow c(EntityAgeable entityageable) { diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java index ea5b185fe4..026bd40783 100644 --- a/src/main/java/net/minecraft/server/EntityOcelot.java +++ b/src/main/java/net/minecraft/server/EntityOcelot.java @@ -26,8 +26,8 @@ public EntityOcelot(World world) { this.targetSelector.a(1, new PathfinderGoalRandomTargetNonTamed(this, EntityChicken.class, 750, false)); } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftOcelot(server, (EntityOcelot) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftOcelot(server, (EntityOcelot) this); } protected void c() { diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java index be80450753..119e49124e 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -28,8 +28,8 @@ public EntityPig(World world) { this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftPig(server, (EntityPig) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftPig(server, (EntityPig) this); } public boolean bj() { diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java index adc0b800a2..9c1cda3daf 100644 --- a/src/main/java/net/minecraft/server/EntitySheep.java +++ b/src/main/java/net/minecraft/server/EntitySheep.java @@ -35,8 +35,8 @@ public EntitySheep(World world) { this.bq.resultInventory = new InventoryCraftResult(); // CraftBukkit - add result slot for event } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftSheep(server, (EntitySheep) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftSheep(server, (EntitySheep) this); } protected boolean bj() { diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java index d5dcf094ed..b4ce76bd31 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -34,8 +34,8 @@ public EntityWolf(World world) { this.setTamed(false); } - public static CraftEntity getEntity(Entity entity, CraftServer server) { - return new CraftWolf(server, (EntityWolf) entity); + public CraftEntity getEntity(CraftServer server) { + return new CraftWolf(server, (EntityWolf) this); } protected void aC() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 86f05f591f..c60bd9d647 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -42,7 +42,7 @@ else if (entity instanceof EntityCreature) { if (entity instanceof EntityAnimal) { boolean isAnimal = Entity.isEntityAnimal(entity); if (isAnimal) { - return Entity.getEntity(entity, server); + return entity.getEntity(server); } else { return CraftAnimals.getEntity(entity, server); } From 3cac952ff2aafaac0cf058327d9d8beb58c8a95a Mon Sep 17 00:00:00 2001 From: schum476 Date: Wed, 30 Apr 2014 22:44:11 -0500 Subject: [PATCH 3/3] Reduced the else/if chain for Monsters at line 51 to a single if/else case. Added isMonster() to EntityMonster.java at line 7 Added the method getEntity() of the following form: public CraftEntity getEntity(CraftServer server) { return new CraftEntityName(server, (EntityName) this); } To the files: EntityZombie.java EntityPigZombie.java EntityCreeper.java EntityEnderman.java EntitySilverfish.java EntitySkeleton.java EntityBlaze.java EntityWitch.java EntityWither.java EntitySpider.java --- .../net/minecraft/server/EntityBlaze.java | 8 ++++++ .../net/minecraft/server/EntityCreeper.java | 7 +++++ .../net/minecraft/server/EntityEnderman.java | 7 +++++ .../net/minecraft/server/EntityMonster.java | 26 +++++++++++++++++++ .../net/minecraft/server/EntityPigZombie.java | 7 +++++ .../minecraft/server/EntitySilverfish.java | 7 +++++ .../net/minecraft/server/EntitySkeleton.java | 7 +++++ .../net/minecraft/server/EntitySpider.java | 7 +++++ .../net/minecraft/server/EntityWitch.java | 8 ++++++ .../net/minecraft/server/EntityWither.java | 7 +++++ .../net/minecraft/server/EntityZombie.java | 7 +++++ .../craftbukkit/entity/CraftEntity.java | 26 +++++++------------ 12 files changed, 107 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java index 790185c556..4627d29d1e 100644 --- a/src/main/java/net/minecraft/server/EntityBlaze.java +++ b/src/main/java/net/minecraft/server/EntityBlaze.java @@ -1,5 +1,9 @@ package net.minecraft.server; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftBlaze; +import org.bukkit.craftbukkit.entity.CraftEntity; + public class EntityBlaze extends EntityMonster { private float bp = 0.5F; @@ -12,6 +16,10 @@ public EntityBlaze(World world) { this.b = 10; } + public CraftEntity getEntity(CraftServer server) { + return new CraftBlaze(server, (EntityBlaze) this); + } + protected void aC() { super.aC(); this.getAttributeInstance(GenericAttributes.e).setValue(6.0D); diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java index e5d72b79a5..ae2ab8a472 100644 --- a/src/main/java/net/minecraft/server/EntityCreeper.java +++ b/src/main/java/net/minecraft/server/EntityCreeper.java @@ -1,6 +1,9 @@ package net.minecraft.server; // CraftBukkit start +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftCreeper; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit end @@ -26,6 +29,10 @@ public EntityCreeper(World world) { this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, false)); } + public CraftEntity getEntity(CraftServer server) { + return new CraftCreeper(server, (EntityCreeper) this); + } + protected void aC() { super.aC(); this.getAttributeInstance(GenericAttributes.d).setValue(0.25D); diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java index 0f02e7d62e..8acc591938 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -4,6 +4,9 @@ // CraftBukkit start import org.bukkit.Location; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEnderman; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.event.entity.EntityTeleportEvent; // CraftBukkit end @@ -23,6 +26,10 @@ public EntityEnderman(World world) { this.a(0.6F, 2.9F); this.W = 1.0F; } + + public CraftEntity getEntity(CraftServer server) { + return new CraftEnderman(server, (EntityEnderman) this); + } protected void aC() { super.aC(); diff --git a/src/main/java/net/minecraft/server/EntityMonster.java b/src/main/java/net/minecraft/server/EntityMonster.java index 6e02e2a5b8..acc54e3abf 100644 --- a/src/main/java/net/minecraft/server/EntityMonster.java +++ b/src/main/java/net/minecraft/server/EntityMonster.java @@ -3,6 +3,32 @@ import org.bukkit.event.entity.EntityTargetEvent; // CraftBukkit public abstract class EntityMonster extends EntityCreature implements IMonster { + + public static boolean isMonster(Entity entity) { + if (entity instanceof EntityZombie) { + return true; + } else if (entity instanceof EntityPigZombie) { + return true; + } else if (entity instanceof EntityCreeper) { + return true; + } else if (entity instanceof EntityEnderman) { + return true; + } else if (entity instanceof EntitySilverfish) { + return true; + } else if (entity instanceof EntitySkeleton) { + return true; + } else if (entity instanceof EntityBlaze) { + return true; + } else if (entity instanceof EntityWitch) { + return true; + }else if (entity instanceof EntityWither) { + return true; + } else if (entity instanceof EntitySpider) { + return true; + } else { + return false; + } + } public EntityMonster(World world) { super(world); diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java index 38d1442224..8df196929a 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -3,6 +3,9 @@ import java.util.List; import java.util.UUID; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftPigZombie; // CraftBukkit start import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.event.entity.EntityTargetEvent; @@ -20,6 +23,10 @@ public EntityPigZombie(World world) { super(world); this.fireProof = true; } + + public CraftEntity getEntity(CraftServer server) { + return new CraftPigZombie(server, (EntityPigZombie) this); + } protected void aC() { super.aC(); diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java index 821e7a35c8..92c97baf0b 100644 --- a/src/main/java/net/minecraft/server/EntitySilverfish.java +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java @@ -2,6 +2,9 @@ import net.minecraft.util.org.apache.commons.lang3.tuple.ImmutablePair; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftSilverfish; import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit public class EntitySilverfish extends EntityMonster { @@ -19,6 +22,10 @@ protected void aC() { this.getAttributeInstance(GenericAttributes.d).setValue(0.6000000238418579D); this.getAttributeInstance(GenericAttributes.e).setValue(1.0D); } + + public CraftEntity getEntity(CraftServer server) { + return new CraftSilverfish(server, (EntitySilverfish) this); + } protected boolean g_() { return false; diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java index cb25df17a5..14ea4f7590 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -2,6 +2,9 @@ import java.util.Calendar; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftSkeleton; import org.bukkit.event.entity.EntityCombustEvent; // CraftBukkit public class EntitySkeleton extends EntityMonster implements IRangedEntity { @@ -23,6 +26,10 @@ public EntitySkeleton(World world) { this.bZ(); } } + + public CraftEntity getEntity(CraftServer server) { + return new CraftSkeleton(server, (EntitySkeleton) this); + } protected void aC() { super.aC(); diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java index b151e737fd..e59c3d7069 100644 --- a/src/main/java/net/minecraft/server/EntitySpider.java +++ b/src/main/java/net/minecraft/server/EntitySpider.java @@ -1,6 +1,9 @@ package net.minecraft.server; // CraftBukkit start +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftSpider; import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.event.entity.EntityTargetEvent; // CraftBukkti end @@ -12,6 +15,10 @@ public EntitySpider(World world) { this.a(1.4F, 0.9F); } + public CraftEntity getEntity(CraftServer server) { + return new CraftSpider(server, (EntitySpider) this); + } + protected void c() { super.c(); this.datawatcher.a(16, new Byte((byte) 0)); diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java index 0f5126a421..d6b5ad4ca8 100644 --- a/src/main/java/net/minecraft/server/EntityWitch.java +++ b/src/main/java/net/minecraft/server/EntityWitch.java @@ -4,6 +4,10 @@ import java.util.List; import java.util.UUID; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftWitch; + public class EntityWitch extends EntityMonster implements IRangedEntity { private static final UUID bp = UUID.fromString("5CD17E52-A79A-43D3-A529-90FDE04B181E"); @@ -22,6 +26,10 @@ public EntityWitch(World world) { this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, 0, true)); } + public CraftEntity getEntity(CraftServer server) { + return new CraftWitch(server, (EntityWitch) this); + } + protected void c() { super.c(); this.getDataWatcher().a(21, Byte.valueOf((byte) 0)); diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java index 99526b99b1..14c5e2bfa8 100644 --- a/src/main/java/net/minecraft/server/EntityWither.java +++ b/src/main/java/net/minecraft/server/EntityWither.java @@ -3,6 +3,9 @@ import java.util.Iterator; import java.util.List; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftWither; // CraftBukkit start import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.event.entity.ExplosionPrimeEvent; @@ -34,6 +37,10 @@ public EntityWither(World world) { this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityInsentient.class, 0, false, false, bw)); this.b = 50; } + + public CraftEntity getEntity(CraftServer server) { + return new CraftWither(server, (EntityWither) this); + } protected void c() { super.c(); diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java index b751d01c2a..2d1a70799a 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -5,6 +5,9 @@ import java.util.UUID; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftZombie; //CraftBukkit start import org.bukkit.craftbukkit.entity.CraftLivingEntity; import org.bukkit.event.entity.EntityCombustByEntityEvent; @@ -39,6 +42,10 @@ public EntityZombie(World world) { this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityVillager.class, 0, false)); this.a(0.6F, 1.8F); } + + public CraftEntity getEntity(CraftServer server) { + return new CraftZombie(server, (EntityZombie) this); + } protected void aC() { super.aC(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index c60bd9d647..65a454f490 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -49,24 +49,16 @@ else if (entity instanceof EntityCreature) { } // Monsters else if (entity instanceof EntityMonster) { - if (entity instanceof EntityZombie) { - if (entity instanceof EntityPigZombie) { return new CraftPigZombie(server, (EntityPigZombie) entity); } - else { return new CraftZombie(server, (EntityZombie) entity); } - } - else if (entity instanceof EntityCreeper) { return new CraftCreeper(server, (EntityCreeper) entity); } - else if (entity instanceof EntityEnderman) { return new CraftEnderman(server, (EntityEnderman) entity); } - else if (entity instanceof EntitySilverfish) { return new CraftSilverfish(server, (EntitySilverfish) entity); } - else if (entity instanceof EntityGiantZombie) { return new CraftGiant(server, (EntityGiantZombie) entity); } - else if (entity instanceof EntitySkeleton) { return new CraftSkeleton(server, (EntitySkeleton) entity); } - else if (entity instanceof EntityBlaze) { return new CraftBlaze(server, (EntityBlaze) entity); } - else if (entity instanceof EntityWitch) { return new CraftWitch(server, (EntityWitch) entity); } - else if (entity instanceof EntityWither) { return new CraftWither(server, (EntityWither) entity); } - else if (entity instanceof EntitySpider) { - if (entity instanceof EntityCaveSpider) { return new CraftCaveSpider(server, (EntityCaveSpider) entity); } - else { return new CraftSpider(server, (EntitySpider) entity); } + boolean isMonster = net.minecraft.server.EntityMonster.isMonster(entity); + if (entity instanceof EntityPigZombie) { + return new CraftZombie(server, (EntityZombie) entity); + } else if (entity instanceof EntityCaveSpider) { + return new CraftZombie(server, (EntityZombie) entity); + } else if (isMonster) { + return entity.getEntity(server); + } else { + return new CraftMonster(server, (EntityMonster) entity); } - - else { return new CraftMonster(server, (EntityMonster) entity); } } // Water Animals else if (entity instanceof EntityWaterAnimal) {