From 9d06e1e55e69bd8ca0fb9ab18e138654c0d1e8b3 Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 8 Nov 2013 04:37:36 +1300 Subject: [PATCH] Clean up misc disguise constructor a little --- .../disguise/PacketsManager.java | 12 +++-- .../disguise/disguisetypes/DisguiseType.java | 2 +- .../disguise/disguisetypes/MiscDisguise.java | 45 ++++++++++++------- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/me/libraryaddict/disguise/PacketsManager.java b/src/me/libraryaddict/disguise/PacketsManager.java index 52ce6ebb..f72460d3 100644 --- a/src/me/libraryaddict/disguise/PacketsManager.java +++ b/src/me/libraryaddict/disguise/PacketsManager.java @@ -199,7 +199,7 @@ public class PacketsManager { mods.write(2, loc.getBlockY()); mods.write(3, loc.getBlockZ()); mods.write(4, ((int) loc.getYaw()) % 4); - int id = ((MiscDisguise) disguise).getId(); + int id = ((MiscDisguise) disguise).getData(); if (id == -1) id = new Random().nextInt(EnumArt.values().length); mods.write(5, EnumArt.values()[id % EnumArt.values().length].B); @@ -275,17 +275,21 @@ public class PacketsManager { int id = disguise.getType().getEntityId(); int data = 0; - if (((MiscDisguise) disguise).getId() >= 0) + if (((MiscDisguise) disguise).getId() >= 0) { if (((MiscDisguise) disguise).getData() >= 0) data = (((MiscDisguise) disguise).getId() | ((MiscDisguise) disguise).getData() << 16); else data = ((MiscDisguise) disguise).getId(); + } // This won't actually work. // But if someone constructing the disguise uses it properly. It will work. if (disguise.getType() == DisguiseType.FISHING_HOOK) data = disguise.getEntity().getEntityId(); - else if (disguise.getType() == DisguiseType.ITEM_FRAME) - data = (int) Math.abs(loc.getYaw() % 4); + else if (disguise.getType() == DisguiseType.ITEM_FRAME) { + data = (int) loc.getYaw(); + if (data < 0) + data = -data; + } spawnPackets[0] = new PacketContainer(Packets.Server.VEHICLE_SPAWN); StructureModifier mods = spawnPackets[0].getModifier(); mods.write(0, disguisedEntity.getEntityId()); diff --git a/src/me/libraryaddict/disguise/disguisetypes/DisguiseType.java b/src/me/libraryaddict/disguise/disguisetypes/DisguiseType.java index 6ee8dafd..8344cb71 100644 --- a/src/me/libraryaddict/disguise/disguisetypes/DisguiseType.java +++ b/src/me/libraryaddict/disguise/disguisetypes/DisguiseType.java @@ -133,11 +133,11 @@ public enum DisguiseType { } private int defaultData; - private int defaultId; private int entityId; private EntityType entityType; private Class watcherClass; + private DisguiseType(EntityType newType, int... obj) { entityType = newType; for (int i = 0; i < obj.length; i++) { diff --git a/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java b/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java index 35f857e3..6b4c1e33 100644 --- a/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java +++ b/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java @@ -15,15 +15,40 @@ public class MiscDisguise extends Disguise { } public MiscDisguise(DisguiseType disguiseType, boolean replaceSounds, int id, int data) { - if (id == -1) - id = disguiseType.getDefaultId(); + switch (disguiseType) { + // The only disguises which should use a custom data. + case FISHING_HOOK: + case ARROW: + case SPLASH_POTION: + case SMALL_FIREBALL: + case FIREBALL: + case WITHER_SKULL: + case PAINTING: + case FALLING_BLOCK: + break; + default: + data = -1; + break; + } + if (disguiseType == DisguiseType.FALLING_BLOCK && id != -1) { + this.id = id; + } else { + this.id = disguiseType.getDefaultId(); + } if (data == -1) data = disguiseType.getDefaultData(); - this.id = id; this.data = data; createDisguise(disguiseType, replaceSounds); } + public MiscDisguise(DisguiseType disguiseType, boolean replaceSounds, int addictionalData) { + this(disguiseType, replaceSounds, -1, addictionalData); + } + + public int getId() { + return id; + } + public MiscDisguise(DisguiseType disguiseType, int id, int data) { this(disguiseType, true, id, data); } @@ -40,13 +65,7 @@ public class MiscDisguise extends Disguise { @Deprecated public MiscDisguise(EntityType entityType, boolean replaceSounds, int id, int data) { - if (id == -1) - id = DisguiseType.getType(entityType).getDefaultId(); - if (data == -1) - data = DisguiseType.getType(entityType).getDefaultData(); - this.id = id; - this.data = data; - createDisguise(DisguiseType.getType(entityType), replaceSounds); + this(DisguiseType.getType(entityType), replaceSounds, id, data); } @Deprecated @@ -56,7 +75,7 @@ public class MiscDisguise extends Disguise { @Override public MiscDisguise clone() { - MiscDisguise disguise = new MiscDisguise(getType(), replaceSounds(), getId(), getData()); + MiscDisguise disguise = new MiscDisguise(getType(), replaceSounds(), getData()); disguise.setViewSelfDisguise(viewSelfDisguise()); disguise.setHearSelfDisguise(canHearSelfDisguise()); disguise.setHideArmorFromSelf(isHidingArmorFromSelf()); @@ -70,8 +89,4 @@ public class MiscDisguise extends Disguise { return data; } - public int getId() { - return id; - } - } \ No newline at end of file