Re-add disguise sounds. Now respect 1.9 sound categories.

This commit is contained in:
JBYoshi 2016-04-17 15:58:34 -05:00
parent 6776a9b427
commit 282ad55039
3 changed files with 23 additions and 16 deletions

View File

@ -78,7 +78,6 @@ public enum DisguiseSound {
} }
public static DisguiseSound getType(String name) { public static DisguiseSound getType(String name) {
//TODO: FIX the disguise sounds
try { try {
return valueOf(name); return valueOf(name);
} catch (Exception ex) { } catch (Exception ex) {

View File

@ -609,6 +609,7 @@ public class PacketsManager {
if (block != null) { if (block != null) {
Object step = ReflectionManager.getNmsField("Block", "stepSound").get(block); Object step = ReflectionManager.getNmsField("Block", "stepSound").get(block);
mods.write(0, ReflectionManager.getNmsMethod(step.getClass(), "getStepSound").invoke(step)); mods.write(0, ReflectionManager.getNmsMethod(step.getClass(), "getStepSound").invoke(step));
mods.write(1, ReflectionManager.getSoundCategory(disguise.getType()));
} }
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
@ -618,6 +619,7 @@ public class PacketsManager {
// sending fake sounds. In which case. Why cancel it. // sending fake sounds. In which case. Why cancel it.
} else { } else {
mods.write(0, ReflectionManager.getCraftSoundEffect(sound)); mods.write(0, ReflectionManager.getCraftSoundEffect(sound));
mods.write(1, ReflectionManager.getSoundCategory(disguise.getType()));
// Time to change the pitch and volume // Time to change the pitch and volume
if (soundType == SoundType.HURT || soundType == SoundType.DEATH if (soundType == SoundType.HURT || soundType == SoundType.DEATH
|| soundType == SoundType.IDLE) { || soundType == SoundType.IDLE) {
@ -713,7 +715,7 @@ public class PacketsManager {
mods = packet.getModifier(); mods = packet.getModifier();
Object craftSoundEffect = ReflectionManager.getCraftSoundEffect(sound); Object craftSoundEffect = ReflectionManager.getCraftSoundEffect(sound);
mods.write(0, craftSoundEffect); mods.write(0, craftSoundEffect);
mods.write(1, ReflectionManager.getSoundCategory("master")); //Meh mods.write(1, ReflectionManager.getSoundCategory(disguise.getType()));
mods.write(2, (int) (loc.getX() * 8D)); mods.write(2, (int) (loc.getX() * 8D));
mods.write(3, (int) (loc.getY() * 8D)); mods.write(3, (int) (loc.getY() * 8D));
mods.write(4, (int) (loc.getZ() * 8D)); mods.write(4, (int) (loc.getZ() * 8D));
@ -1103,15 +1105,14 @@ public class PacketsManager {
} }
public static void setHearDisguisesListener(boolean enabled) { public static void setHearDisguisesListener(boolean enabled) {
//TODO: FIX SOUNDS if (soundsListenerEnabled != enabled) {
// if (soundsListenerEnabled != enabled) { soundsListenerEnabled = enabled;
// soundsListenerEnabled = enabled; if (soundsListenerEnabled) {
// if (soundsListenerEnabled) { ProtocolLibrary.getProtocolManager().addPacketListener(soundsListener);
// ProtocolLibrary.getProtocolManager().addPacketListener(soundsListener); } else {
// } else { ProtocolLibrary.getProtocolManager().removePacketListener(soundsListener);
// ProtocolLibrary.getProtocolManager().removePacketListener(soundsListener); }
// } }
// }
} }
public static void setInventoryListenerEnabled(boolean enabled) { public static void setInventoryListenerEnabled(boolean enabled) {

View File

@ -7,6 +7,7 @@ import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObje
import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.bukkit.Art; import org.bukkit.Art;
@ -15,9 +16,7 @@ import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Entity; import org.bukkit.entity.*;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -530,16 +529,24 @@ public class ReflectionManager {
Class<?> clazz = getNmsClass("SoundCategory"); Class<?> clazz = getNmsClass("SoundCategory");
Enum[] enums = clazz != null ? (Enum[]) clazz.getEnumConstants() : null; Enum[] enums = clazz != null ? (Enum[]) clazz.getEnumConstants() : null;
for (Enum anEnum : enums != null ? enums : new Enum[0]) { for (Enum anEnum : enums != null ? enums : new Enum[0]) {
if (anEnum.name().equals("MASTER")) return anEnum; if (anEnum.name().equals(category.toUpperCase())) return anEnum;
} }
} }
return null; return invoke;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
} }
} }
public static Enum getSoundCategory(DisguiseType disguiseType) {
if (disguiseType == DisguiseType.PLAYER) return getSoundCategory("player");
Class<? extends Entity> 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. * Creates the NMS object EnumItemSlot from an EquipmentSlot.
* *