diff --git a/src/me/libraryaddict/disguise/utilities/DisguiseSound.java b/src/me/libraryaddict/disguise/utilities/DisguiseSound.java index cf9a17b8..2ff19526 100644 --- a/src/me/libraryaddict/disguise/utilities/DisguiseSound.java +++ b/src/me/libraryaddict/disguise/utilities/DisguiseSound.java @@ -133,7 +133,6 @@ public enum DisguiseSound public static DisguiseSound getType(String name) { - // TODO: FIX the disguise sounds try { return valueOf(name); diff --git a/src/me/libraryaddict/disguise/utilities/PacketsManager.java b/src/me/libraryaddict/disguise/utilities/PacketsManager.java index 045f8047..a7542fef 100644 --- a/src/me/libraryaddict/disguise/utilities/PacketsManager.java +++ b/src/me/libraryaddict/disguise/utilities/PacketsManager.java @@ -844,6 +844,7 @@ public class PacketsManager mods.write(0, ReflectionManager.getNmsMethod(step.getClass(), "getStepSound") .invoke(step)); + mods.write(1, ReflectionManager.getSoundCategory(disguise.getType())); } } catch (Exception ex) @@ -857,6 +858,7 @@ public class PacketsManager else { mods.write(0, ReflectionManager.getCraftSoundEffect(sound)); + mods.write(1, ReflectionManager.getSoundCategory(disguise.getType())); // Time to change the pitch and volume if (soundType == SoundType.HURT || soundType == SoundType.DEATH @@ -1006,7 +1008,7 @@ public class PacketsManager Object craftSoundEffect = ReflectionManager.getCraftSoundEffect(sound); mods.write(0, craftSoundEffect); - mods.write(1, ReflectionManager.getSoundCategory("master")); // Meh + mods.write(1, ReflectionManager.getSoundCategory(disguise.getType())); // Meh mods.write(2, (int) (loc.getX() * 8D)); mods.write(3, (int) (loc.getY() * 8D)); mods.write(4, (int) (loc.getZ() * 8D)); @@ -1598,15 +1600,15 @@ public class PacketsManager public static void setHearDisguisesListener(boolean enabled) { - // TODO: FIX SOUNDS - // if (soundsListenerEnabled != enabled) { - // soundsListenerEnabled = enabled; - // if (soundsListenerEnabled) { - // ProtocolLibrary.getProtocolManager().addPacketListener(soundsListener); - // } else { - // ProtocolLibrary.getProtocolManager().removePacketListener(soundsListener); - // } - // } + if (soundsListenerEnabled != enabled) { + soundsListenerEnabled = enabled; + + if (soundsListenerEnabled){ + ProtocolLibrary.getProtocolManager().addPacketListener(soundsListener); + } else { + ProtocolLibrary.getProtocolManager().removePacketListener(soundsListener); + } + } } public static void setInventoryListenerEnabled(boolean enabled) diff --git a/src/me/libraryaddict/disguise/utilities/ReflectionManager.java b/src/me/libraryaddict/disguise/utilities/ReflectionManager.java index df23d0d4..a09de30e 100644 --- a/src/me/libraryaddict/disguise/utilities/ReflectionManager.java +++ b/src/me/libraryaddict/disguise/utilities/ReflectionManager.java @@ -31,6 +31,8 @@ import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObje import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.google.common.collect.ImmutableMap; import com.mojang.authlib.GameProfile; +import me.libraryaddict.disguise.disguisetypes.DisguiseType; +import org.bukkit.entity.*; public class ReflectionManager { @@ -770,10 +772,12 @@ public class ReflectionManager for (Enum anEnum : enums != null ? enums : new Enum[0]) { - if (anEnum.name().equals("MASTER")) + if (anEnum.name().equals(category.toUpperCase())) return anEnum; } } + + return invoke; } catch (Exception e) { @@ -783,6 +787,22 @@ public class ReflectionManager return null; } + public static Enum getSoundCategory(DisguiseType disguiseType) + { + if (disguiseType == DisguiseType.PLAYER) + return getSoundCategory("player"); + + Class entityClass = disguiseType.getEntityType().getEntityClass(); + + if (Monster.class.isAssignableFrom(entityClass)) + return getSoundCategory("hostile"); + + if (Ambient.class.isAssignableFrom(entityClass)) + return getSoundCategory("ambient"); + + return getSoundCategory("neutral"); + } + /** * Creates the NMS object EnumItemSlot from an EquipmentSlot. *