From 0c6d1c9280fce737394334a034394fc7bc047923 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 20 May 2013 23:00:59 +1200 Subject: [PATCH] Added the rest of disguisable entitys. Fixed crashes --- .../disguise/DisguiseCommand.java | 1 + .../disguise/DisguiseTypes/Disguise.java | 32 ++++++---- .../disguise/DisguiseTypes/DisguiseType.java | 61 ++++++++++++++++--- .../disguise/DisguiseTypes/FlagWatcher.java | 18 +++--- .../disguise/DisguiseTypes/MiscDisguise.java | 14 +++-- .../DisguiseTypes/Watchers/BatWatcher.java | 8 +-- .../DisguiseTypes/Watchers/BoatWatcher.java | 28 +++++++++ .../Watchers/EndermanWatcher.java | 24 ++++---- .../DisguiseTypes/Watchers/ItemWatcher.java | 24 ++++++++ .../Watchers/MinecartAbstractWatcher.java | 18 ++++++ .../Watchers/MinecartChestWatcher.java | 9 +++ .../Watchers/MinecartFurnaceWatcher.java | 9 +++ .../Watchers/MinecartHopperWatcher.java | 9 +++ .../Watchers/MinecartMobSpawnerWatcher.java | 9 +++ .../Watchers/MinecartRideableWatcher.java | 9 +++ .../Watchers/MinecartTntWatcher.java | 9 +++ .../DisguiseTypes/Watchers/SlimeWatcher.java | 3 +- .../libraryaddict/disguise/LibsDisguises.java | 20 +++--- 18 files changed, 241 insertions(+), 64 deletions(-) create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BoatWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/ItemWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartAbstractWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartChestWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartFurnaceWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartHopperWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartMobSpawnerWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartRideableWatcher.java create mode 100644 src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartTntWatcher.java diff --git a/src/me/libraryaddict/disguise/DisguiseCommand.java b/src/me/libraryaddict/disguise/DisguiseCommand.java index fd1a73f9..740093b9 100644 --- a/src/me/libraryaddict/disguise/DisguiseCommand.java +++ b/src/me/libraryaddict/disguise/DisguiseCommand.java @@ -18,6 +18,7 @@ import org.bukkit.entity.Player; public class DisguiseCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (sender.isOp()) { Player p = (Player) sender; diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Disguise.java b/src/me/libraryaddict/disguise/DisguiseTypes/Disguise.java index 85eac50a..fe9bf41c 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/Disguise.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Disguise.java @@ -5,6 +5,7 @@ import java.lang.reflect.Constructor; import me.libraryaddict.disguise.DisguiseTypes.Watchers.AgeableWatcher; import net.minecraft.server.v1_5_R3.Entity; import net.minecraft.server.v1_5_R3.EntityAgeable; +import net.minecraft.server.v1_5_R3.EntityExperienceOrb; import net.minecraft.server.v1_5_R3.EntityHuman; import net.minecraft.server.v1_5_R3.EntityLiving; import net.minecraft.server.v1_5_R3.EntitySkeleton; @@ -12,6 +13,7 @@ import net.minecraft.server.v1_5_R3.Packet; import net.minecraft.server.v1_5_R3.Packet20NamedEntitySpawn; import net.minecraft.server.v1_5_R3.Packet23VehicleSpawn; import net.minecraft.server.v1_5_R3.Packet24MobSpawn; +import net.minecraft.server.v1_5_R3.Packet26AddExpOrb; import net.minecraft.server.v1_5_R3.World; import org.bukkit.Location; import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; @@ -36,26 +38,26 @@ public class Disguise { } else if (getType().isMisc()) { - int id = 0; - if (getType() == DisguiseType.PRIMED_TNT) - id = 50; - else if (getType() == DisguiseType.ENDER_CRYSTAL) - id = 51; - else if (getType() == DisguiseType.FALLING_BLOCK) - id = 70; Entity entity = getEntity(((CraftPlayer) p).getHandle().world, p.getLocation(), p.getEntityId()); - if (((MiscDisguise) this).getId() > 0) - spawnPacket = new Packet23VehicleSpawn(entity, id, ((MiscDisguise) this).getId() - | ((MiscDisguise) this).getData() << 16); - else - spawnPacket = new Packet23VehicleSpawn(entity, id); - + if (((MiscDisguise) this).getId() >= 0) { + if (((MiscDisguise) this).getData() >= 0) { + spawnPacket = new Packet23VehicleSpawn(entity, getType().getEntityId(), ((MiscDisguise) this).getId() + | ((MiscDisguise) this).getData() << 16); + } else + spawnPacket = new Packet23VehicleSpawn(entity, getType().getEntityId(), ((MiscDisguise) this).getId()); + } else + spawnPacket = new Packet23VehicleSpawn(entity, getType().getEntityId()); } else if (getType().isPlayer()) { EntityHuman entityHuman = ((CraftPlayer) p).getHandle(); spawnPacket = new Packet20NamedEntitySpawn(entityHuman); ((Packet20NamedEntitySpawn) spawnPacket).b = ((PlayerDisguise) this).getName(); + } else if (getType().isExp()) { + + Entity entity = getEntity(((CraftPlayer) p).getHandle().world, p.getLocation(), p.getEntityId()); + spawnPacket = new Packet26AddExpOrb((EntityExperienceOrb) entity); + } return spawnPacket; } @@ -73,6 +75,9 @@ public class Disguise { if (disguiseType == DisguiseType.PRIMED_TNT) { name = "TNTPrimed"; } + if (disguiseType == DisguiseType.MINECART_TNT) { + name = "MinecartTNT"; + } Class entityClass = Class.forName("net.minecraft.server.v1_5_R3.Entity" + name); Constructor contructor = entityClass.getDeclaredConstructor(World.class); entity = (Entity) contructor.newInstance(world); @@ -95,6 +100,7 @@ public class Disguise { Constructor contructor = watcherClass.getDeclaredConstructor(int.class); watcher = (FlagWatcher) contructor.newInstance(entityId); } catch (Exception ex) { + System.out.print("No watcher found"); // There is no watcher for this entity } if (watcher == null && entity instanceof EntityAgeable && this instanceof MobDisguise) { diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/DisguiseType.java b/src/me/libraryaddict/disguise/DisguiseTypes/DisguiseType.java index f12dc4dd..e9300200 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/DisguiseType.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/DisguiseType.java @@ -1,29 +1,72 @@ package me.libraryaddict.disguise.DisguiseTypes; public enum DisguiseType { - BAT(EntityType.MOB), BLAZE(EntityType.MOB), CAVE_SPIDER(EntityType.MOB), CHICKEN(EntityType.MOB), COW(EntityType.MOB), CREEPER( - EntityType.MOB), ENDER_CRYSTAL(EntityType.MISC), ENDER_DRAGON(EntityType.MOB), ENDERMAN(EntityType.MOB), GHAST( - EntityType.MOB), GIANT_ZOMBIE(EntityType.MOB), IRON_GOLEM(EntityType.MOB), MAGMA_CUBE(EntityType.MOB), MUSHROOM_COW( - EntityType.MOB), OCELOT(EntityType.MOB), PIG(EntityType.MOB), PIG_ZOMBIE(EntityType.MOB), PLAYER(EntityType.PLAYER), SHEEP( - EntityType.MOB), SILVERFISH(EntityType.MOB), SKELETON(EntityType.MOB), SLIME(EntityType.MOB), SNOWMAN(EntityType.MOB), SPIDER( - EntityType.MOB), SQUID(EntityType.MOB), PRIMED_TNT(EntityType.MISC), VILLAGER(EntityType.MOB), WITCH(EntityType.MOB), WITHER( - EntityType.MOB), WITHER_SKELETON(EntityType.MOB), WOLF(EntityType.MOB), ZOMBIE(EntityType.MOB), FALLING_BLOCK( - EntityType.MISC); + ARROW(EntityType.MISC, 60), BAT(EntityType.MOB), BLAZE(EntityType.MOB), BOAT(EntityType.MISC, 1), CAVE_SPIDER(EntityType.MOB), CHICKEN( + EntityType.MOB), COW(EntityType.MOB), CREEPER(EntityType.MOB), EGG(EntityType.MISC, 62), ENDER_CRYSTAL( + EntityType.MISC, 51), ENDER_DRAGON(EntityType.MOB), ENDER_PEARL(EntityType.MISC, 65), ENDER_SIGNAL( + EntityType.MISC, 72), ENDERMAN(EntityType.MOB), EXPERIENCE_ORB(EntityType.EXP), FALLING_BLOCK(EntityType.MISC, 70, 1), FIREWORKS( + EntityType.MISC, 76), FISHING_HOOK(EntityType.MISC, 90), GHAST(EntityType.MOB), GIANT_ZOMBIE(EntityType.MOB), IRON_GOLEM( + EntityType.MOB), ITEM(EntityType.MISC, 2, 1), ITEM_FRAME(EntityType.MISC, 71), LARGE_FIREBALL(EntityType.MISC, 63, 0), MAGMA_CUBE(EntityType.MOB), MINECART_CHEST( + EntityType.MISC, 10, 1), MINECART_FURNACE(EntityType.MISC, 10, 2), MINECART_HOPPER(EntityType.MISC, 10), MINECART_MOB_SPAWNER( + EntityType.MISC, 10, 4), MINECART_RIDEABLE(EntityType.MISC, 10, 0), MINECART_TNT(EntityType.MISC, 10, 3), MUSHROOM_COW( + EntityType.MOB), OCELOT(EntityType.MOB), PIG(EntityType.MOB), PIG_ZOMBIE(EntityType.MOB), PLAYER(EntityType.PLAYER), POTION( + EntityType.MISC, 73), PRIMED_TNT(EntityType.MISC, 50), SHEEP(EntityType.MOB), SILVERFISH(EntityType.MOB), SKELETON( + EntityType.MOB), SLIME(EntityType.MOB), SMALL_FIREBALL(EntityType.MISC, 64, 0), SNOWBALL(EntityType.MISC, 61), SNOWMAN( + EntityType.MOB), SPIDER(EntityType.MOB), SQUID(EntityType.MOB), THROWN_EXP_BOTTLE(EntityType.MISC, 75), VILLAGER( + EntityType.MOB), WITCH(EntityType.MOB), WITHER(EntityType.MOB), WITHER_SKELETON(EntityType.MOB), WITHER_SKULL( + EntityType.MISC, 66), WOLF(EntityType.MOB), ZOMBIE(EntityType.MOB); public static enum EntityType { - MISC, MOB, PLAYER; + EXP, MISC, MOB, PLAYER; } public static DisguiseType getType(org.bukkit.entity.EntityType entityType) { return DisguiseType.valueOf(entityType.name()); } + private int defaultData; + private int defaultId; + private int entityId; private EntityType entityType; private DisguiseType(EntityType newType) { entityType = newType; } + private DisguiseType(EntityType newType, int entityId) { + entityType = newType; + this.entityId = entityId; + } + + private DisguiseType(EntityType newType, int entityId, int defaultId) { + entityType = newType; + this.entityId = entityId; + this.defaultId = defaultId; + } + + private DisguiseType(EntityType newType, int entityId, int defaultId, int defaultData) { + entityType = newType; + this.entityId = entityId; + this.defaultId = defaultId; + this.defaultData = defaultData; + } + + public int getDefaultData() { + return defaultData; + } + + public int getDefaultId() { + return defaultId; + } + + public int getEntityId() { + return entityId; + } + + public boolean isExp() { + return entityType == EntityType.EXP; + } + public boolean isMisc() { return entityType == EntityType.MISC; } diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/FlagWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/FlagWatcher.java index 7e895f08..b0a31f4b 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/FlagWatcher.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/FlagWatcher.java @@ -10,6 +10,7 @@ import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.entity.Player; +import net.minecraft.server.v1_5_R3.ItemStack; import net.minecraft.server.v1_5_R3.Packet40EntityMetadata; import net.minecraft.server.v1_5_R3.WatchableObject; @@ -21,6 +22,7 @@ public abstract class FlagWatcher { classTypes.put(Short.class, 1); classTypes.put(Integer.class, 2); classTypes.put(String.class, 4); + classTypes.put(ItemStack.class, 5); } private int entityId; private HashMap entityValues = new HashMap(); @@ -57,7 +59,7 @@ public abstract class FlagWatcher { ex.printStackTrace(); } } else { - watch.a(entityValues.get(watch.a())); + watch.a(value); } } } @@ -78,6 +80,13 @@ public abstract class FlagWatcher { return newList; } + public void displayName(boolean display) { + if ((Byte) getValue(6) != (display ? 1 : 0)) { + setValue(6, (byte) (display ? 1 : 0)); + sendData(6); + } + } + protected Object getValue(int no) { return entityValues.get(no); } @@ -104,13 +113,6 @@ public abstract class FlagWatcher { setValue(5, name); } - public void displayName(boolean display) { - if ((Byte) getValue(6) != (display ? 1 : 0)) { - setValue(6, (byte) (display ? 1 : 0)); - sendData(6); - } - } - protected void setValue(int no, Object value) { entityValues.put(no, value); } diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/MiscDisguise.java b/src/me/libraryaddict/disguise/DisguiseTypes/MiscDisguise.java index d88690a0..5e311f74 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/MiscDisguise.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/MiscDisguise.java @@ -1,11 +1,13 @@ package me.libraryaddict.disguise.DisguiseTypes; public class MiscDisguise extends Disguise { - private int id = 1; - private int data = 0; + private int data = -1; + private int id = -1; public MiscDisguise(DisguiseType disguiseType) { super(disguiseType); + id = disguiseType.getDefaultId(); + data = disguiseType.getDefaultData(); } public MiscDisguise(DisguiseType disguiseType, int id, int data) { @@ -14,12 +16,12 @@ public class MiscDisguise extends Disguise { this.data = data; } - public int getId() { - return id; - } - public int getData() { return data; } + public int getId() { + return id; + } + } \ No newline at end of file diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BatWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BatWatcher.java index 18064be9..6f000d90 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BatWatcher.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BatWatcher.java @@ -9,14 +9,14 @@ public class BatWatcher extends FlagWatcher { setValue(16, (byte) 1); } + public boolean isFlying() { + return (Byte) getValue(16) == 0; + } + public void setFlying(boolean flying) { if ((Byte) getValue(16) != (flying ? 1 : 0)) { setValue(16, (byte) (flying ? 1 : 0)); sendData(16); } } - - public boolean isFlying() { - return (Byte) getValue(16) == 0; - } } diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BoatWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BoatWatcher.java new file mode 100644 index 00000000..46a0c33e --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/BoatWatcher.java @@ -0,0 +1,28 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +import me.libraryaddict.disguise.DisguiseTypes.FlagWatcher; + +public class BoatWatcher extends FlagWatcher { + + public BoatWatcher(int entityId) { + super(entityId); + setValue(19, 40); + setValue(17, 10); + setValue(18, 0); + } + + public void setDamage(int dmg) { + if ((Integer) getValue(19) != dmg) { + setValue(19, dmg); + sendData(19); + } + } + + public void setHealth(int health) { + if ((Integer) getValue(17) != health) { + setValue(17, health); + sendData(17); + } + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/EndermanWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/EndermanWatcher.java index 1ee2057f..b4bb25c6 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/EndermanWatcher.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/EndermanWatcher.java @@ -11,21 +11,12 @@ public class EndermanWatcher extends FlagWatcher { setValue(18, (byte) 0); } - public void setCarriedItem(int id, int dataValue) { - if ((Byte) getValue(16) != id || (Byte) getValue(17) != dataValue) { - setValue(16, (byte) (id & 255)); - setValue(17, (byte) (dataValue & 255)); - sendData(16); - sendData(17); - } + public int getCarriedData() { + return ((Byte) getValue(17)); } public int getCarriedId() { - return (int) ((Byte) getValue(16)); - } - - public int getCarriedData() { - return (int) ((Byte) getValue(17)); + return ((Byte) getValue(16)); } public boolean isAgressive() { @@ -37,4 +28,13 @@ public class EndermanWatcher extends FlagWatcher { sendData(18); } + public void setCarriedItem(int id, int dataValue) { + if ((Byte) getValue(16) != id || (Byte) getValue(17) != dataValue) { + setValue(16, (byte) (id & 255)); + setValue(17, (byte) (dataValue & 255)); + sendData(16); + sendData(17); + } + } + } diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/ItemWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/ItemWatcher.java new file mode 100644 index 00000000..8f034d93 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/ItemWatcher.java @@ -0,0 +1,24 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +import org.bukkit.craftbukkit.v1_5_R3.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +import me.libraryaddict.disguise.DisguiseTypes.FlagWatcher; + +public class ItemWatcher extends FlagWatcher { + + public ItemWatcher(int entityId) { + super(entityId); + setValue(10, CraftItemStack.asNMSCopy(new ItemStack(1))); + } + + public ItemStack getItemStack() { + return CraftItemStack.asBukkitCopy((net.minecraft.server.v1_5_R3.ItemStack) getValue(10)); + } + + public void setItemStack(ItemStack item) { + setValue(10, CraftItemStack.asNMSCopy(item)); + sendData(10); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartAbstractWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartAbstractWatcher.java new file mode 100644 index 00000000..9a23df42 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartAbstractWatcher.java @@ -0,0 +1,18 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +import me.libraryaddict.disguise.DisguiseTypes.FlagWatcher; + +public abstract class MinecartAbstractWatcher extends FlagWatcher { + + protected MinecartAbstractWatcher(int entityId) { + super(entityId); + setValue(16, (byte) 0); + setValue(17, 0); + setValue(18, 1); + setValue(19, 0); + setValue(20, 0); + setValue(21, 6); + setValue(22, (byte) 0); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartChestWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartChestWatcher.java new file mode 100644 index 00000000..84a8c842 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartChestWatcher.java @@ -0,0 +1,9 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +public class MinecartChestWatcher extends MinecartAbstractWatcher { + + public MinecartChestWatcher(int entityId) { + super(entityId); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartFurnaceWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartFurnaceWatcher.java new file mode 100644 index 00000000..9126f594 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartFurnaceWatcher.java @@ -0,0 +1,9 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +public class MinecartFurnaceWatcher extends MinecartAbstractWatcher { + + public MinecartFurnaceWatcher(int entityId) { + super(entityId); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartHopperWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartHopperWatcher.java new file mode 100644 index 00000000..a1e518de --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartHopperWatcher.java @@ -0,0 +1,9 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +public class MinecartHopperWatcher extends MinecartAbstractWatcher{ + + public MinecartHopperWatcher(int entityId) { + super(entityId); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartMobSpawnerWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartMobSpawnerWatcher.java new file mode 100644 index 00000000..17d144f7 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartMobSpawnerWatcher.java @@ -0,0 +1,9 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +public class MinecartMobSpawnerWatcher extends MinecartAbstractWatcher{ + + public MinecartMobSpawnerWatcher(int entityId) { + super(entityId); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartRideableWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartRideableWatcher.java new file mode 100644 index 00000000..e5e6c0d9 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartRideableWatcher.java @@ -0,0 +1,9 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +public class MinecartRideableWatcher extends MinecartAbstractWatcher{ + + public MinecartRideableWatcher(int entityId) { + super(entityId); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartTntWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartTntWatcher.java new file mode 100644 index 00000000..2a55ad12 --- /dev/null +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/MinecartTntWatcher.java @@ -0,0 +1,9 @@ +package me.libraryaddict.disguise.DisguiseTypes.Watchers; + +public class MinecartTntWatcher extends MinecartAbstractWatcher{ + + public MinecartTntWatcher(int entityId) { + super(entityId); + } + +} diff --git a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/SlimeWatcher.java b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/SlimeWatcher.java index ceb35547..b4e4bafe 100644 --- a/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/SlimeWatcher.java +++ b/src/me/libraryaddict/disguise/DisguiseTypes/Watchers/SlimeWatcher.java @@ -8,7 +8,8 @@ public class SlimeWatcher extends FlagWatcher { public SlimeWatcher(int entityId) { super(entityId); - setValue(16, (byte) new Random().nextInt(4) + 1); + setValue(16, (byte) (new Random().nextInt(4) + 1)); + setValue(18, (byte) 0); } public int getSize() { diff --git a/src/me/libraryaddict/disguise/LibsDisguises.java b/src/me/libraryaddict/disguise/LibsDisguises.java index 68beb817..e3fc205b 100644 --- a/src/me/libraryaddict/disguise/LibsDisguises.java +++ b/src/me/libraryaddict/disguise/LibsDisguises.java @@ -3,8 +3,6 @@ package me.libraryaddict.disguise; import java.util.List; import me.libraryaddict.disguise.DisguiseTypes.Disguise; -import me.libraryaddict.disguise.DisguiseTypes.MiscDisguise; -import me.libraryaddict.disguise.DisguiseTypes.MobDisguise; import me.libraryaddict.disguise.DisguiseTypes.PlayerDisguise; import net.minecraft.server.v1_5_R3.WatchableObject; @@ -21,11 +19,13 @@ import com.comphenix.protocol.reflect.StructureModifier; public class LibsDisguises extends JavaPlugin { + @Override public void onEnable() { getCommand("disguise").setExecutor(new DisguiseCommand()); ProtocolLibrary.getProtocolManager().addPacketListener( new PacketAdapter(this, ConnectionSide.SERVER_SIDE, ListenerPriority.NORMAL, Packets.Server.NAMED_ENTITY_SPAWN, Packets.Server.ENTITY_METADATA) { + @Override public void onPacketSending(PacketEvent event) { StructureModifier mods = event.getPacket().getModifier(); try { @@ -36,22 +36,20 @@ public class LibsDisguises extends JavaPlugin { if (DisguiseAPI.isDisguised(watched.getName())) { Disguise disguise = DisguiseAPI.getDisguise(watched); if (event.getPacketID() == Packets.Server.NAMED_ENTITY_SPAWN) { - if (disguise.getType().isMob()) { - event.setCancelled(true); - DisguiseAPI.disguiseToPlayer(watched, observer, (MobDisguise) disguise); - } else if (disguise.getType().isMisc()) { - event.setCancelled(true); - DisguiseAPI.disguiseToPlayer(watched, observer, (MiscDisguise) disguise); - } else if (disguise.getType().isPlayer()) { + if (disguise.getType().isPlayer()) { String name = (String) mods.read(1); if (!name.equals(((PlayerDisguise) disguise).getName())) { event.setCancelled(true); - DisguiseAPI.disguiseToPlayer(watched, observer, (PlayerDisguise) disguise); + DisguiseAPI.disguiseToPlayer(watched, observer, disguise); } + } else { + event.setCancelled(true); + DisguiseAPI.disguiseToPlayer(watched, observer, disguise); } } else if (!disguise.getType().isPlayer()) { - if (disguise.hasWatcher()) + if (disguise.hasWatcher()) { mods.write(1, disguise.getWatcher().convert((List) mods.read(1))); + } } } }