From 06fdc16ca232c167cd1c14bf00725e7fcf2e1f4a Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Thu, 5 Jun 2014 12:08:28 +1200 Subject: [PATCH] Make the miscdisguise code readable and not so unreliable for what you want/need --- .../disguise/disguisetypes/MiscDisguise.java | 58 ++++++------------- 1 file changed, 18 insertions(+), 40 deletions(-) diff --git a/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java b/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java index cd23bd37..3a4f3632 100644 --- a/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java +++ b/src/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java @@ -1,8 +1,6 @@ package me.libraryaddict.disguise.disguisetypes; import java.security.InvalidParameterException; -import java.util.Random; - import me.libraryaddict.disguise.disguisetypes.watchers.DroppedItemWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.PaintingWatcher; @@ -42,55 +40,35 @@ public class MiscDisguise extends TargetedDisguise { this(disguiseType, id, -1); } - public MiscDisguise(DisguiseType disguiseType, int id, int data) { + public MiscDisguise(DisguiseType disguiseType, int firstParam, int secondParam) { if (!disguiseType.isMisc()) { throw new InvalidParameterException("Expected a non-living DisguiseType while constructing MiscDisguise. Received " - + disguiseType + " instead. Please use " + (disguiseType.isPlayer() ? "PlayerDisguise" : "MobDisguise") + " instead"); + + disguiseType + " instead. Please use " + (disguiseType.isPlayer() ? "PlayerDisguise" : "MobDisguise") + + " instead"); } createDisguise(disguiseType); switch (disguiseType) { // The only disguises which should use a custom data. + case PAINTING: + ((PaintingWatcher) getWatcher()).setArt(Art.values()[Math.max(0, firstParam) % Art.values().length]); + break; + case FALLING_BLOCK: + ((FallingBlockWatcher) getWatcher()).setBlock(new ItemStack(Math.max(1, firstParam), 1, (short) Math.max(0, secondParam))); + break; + case SPLASH_POTION: + ((SplashPotionWatcher) getWatcher()).setPotionId(Math.max(0, firstParam)); + break; + case DROPPED_ITEM: + if (firstParam > 0) { + ((DroppedItemWatcher) getWatcher()).setItemStack(new ItemStack(firstParam, Math.max(0, secondParam))); + } + break; 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; - } - // Only falling block should set the id - if (getType() == DisguiseType.FALLING_BLOCK && id != -1) { - this.id = id; - } else { - this.id = disguiseType.getDefaultId(); - } - if (data == -1) { - if (getType() == DisguiseType.PAINTING) { - data = new Random().nextInt(Art.values().length); - } else { - data = 0; - } - } - this.data = data; - switch (getType()) { - case DROPPED_ITEM: - if (id > 0) { - ((DroppedItemWatcher) getWatcher()).setItemStack(new ItemStack(id, data)); - } - break; - case FALLING_BLOCK: - ((FallingBlockWatcher) getWatcher()).setBlock(new ItemStack(this.id, 1, (short) this.data)); - break; - case PAINTING: - ((PaintingWatcher) getWatcher()).setArt(Art.values()[this.data % Art.values().length]); - break; - case SPLASH_POTION: - ((SplashPotionWatcher) getWatcher()).setPotionId(this.data); + this.data = firstParam; break; default: break;