Fixed the damage and idle sound getter being completely wrong.
This commit is contained in:
parent
f24eaa4854
commit
8535ccf2dd
@ -206,7 +206,7 @@ public class LibsDisguises extends JavaPlugin {
|
||||
if (sound != null) {
|
||||
Float soundStrength = ReflectionManager.getSoundModifier(nmsEntity);
|
||||
if (soundStrength != null) {
|
||||
sound.setDamageSoundVolume((Float) soundStrength);
|
||||
sound.setDamageAndIdleSoundVolume((Float) soundStrength);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -151,7 +151,7 @@ public enum DisguiseSound {
|
||||
}
|
||||
}
|
||||
|
||||
public float getDamageSoundVolume() {
|
||||
public float getDamageAndIdleSoundVolume() {
|
||||
return damageSoundVolume;
|
||||
}
|
||||
|
||||
@ -202,7 +202,7 @@ public enum DisguiseSound {
|
||||
}
|
||||
}
|
||||
|
||||
public void setDamageSoundVolume(float strength) {
|
||||
public void setDamageAndIdleSoundVolume(float strength) {
|
||||
this.damageSoundVolume = strength;
|
||||
}
|
||||
|
||||
|
@ -584,9 +584,8 @@ public class PacketsManager {
|
||||
if (soundType == SoundType.HURT || soundType == SoundType.DEATH
|
||||
|| soundType == SoundType.IDLE) {
|
||||
// If the volume is the default
|
||||
if (soundType != SoundType.IDLE
|
||||
&& ((Float) mods.read(4)).equals(entitySound.getDamageSoundVolume())) {
|
||||
mods.write(4, dSound.getDamageSoundVolume());
|
||||
if (((Float) mods.read(4)).equals(entitySound.getDamageAndIdleSoundVolume())) {
|
||||
mods.write(4, dSound.getDamageAndIdleSoundVolume());
|
||||
}
|
||||
// Here I assume its the default pitch as I can't calculate if its real.
|
||||
if (disguise instanceof MobDisguise && disguisedEntity instanceof LivingEntity
|
||||
@ -678,7 +677,7 @@ public class PacketsManager {
|
||||
mods.write(1, (int) (loc.getX() * 8D));
|
||||
mods.write(2, (int) (loc.getY() * 8D));
|
||||
mods.write(3, (int) (loc.getZ() * 8D));
|
||||
mods.write(4, disSound.getDamageSoundVolume());
|
||||
mods.write(4, disSound.getDamageAndIdleSoundVolume());
|
||||
float pitch;
|
||||
if (disguise instanceof MobDisguise && !((MobDisguise) disguise).isAdult()) {
|
||||
pitch = (new Random().nextFloat() - new Random().nextFloat()) * 0.2F + 1.5F;
|
||||
|
@ -52,24 +52,18 @@ public class ReflectionManager {
|
||||
|
||||
private static String bukkitVersion = Bukkit.getServer().getClass().getName().split("\\.")[3];
|
||||
private static Class itemClass;
|
||||
private static Method soundMethod;
|
||||
private static Method damageAndIdleSoundMethod;
|
||||
|
||||
static {
|
||||
for (Method method : getNmsClass("EntityLiving").getDeclaredMethods()) {
|
||||
try {
|
||||
if (method.getReturnType() == float.class && Modifier.isProtected(method.getModifiers())
|
||||
&& method.getParameterTypes().length == 0) {
|
||||
Object entity = createEntityInstance("Pig");
|
||||
Object entity = createEntityInstance("Cow");
|
||||
method.setAccessible(true);
|
||||
method.invoke(entity);
|
||||
Field random = getNmsClass("Entity").getDeclaredField("random");
|
||||
random.setAccessible(true);
|
||||
random.set(entity, null);
|
||||
method.setAccessible(true);
|
||||
try {
|
||||
method.invoke(entity);
|
||||
} catch (Exception ex) {
|
||||
soundMethod = method;
|
||||
float value = (Float) method.invoke(entity);
|
||||
if (value == 0.4F) {
|
||||
damageAndIdleSoundMethod = method;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -261,8 +255,8 @@ public class ReflectionManager {
|
||||
|
||||
public static Float getSoundModifier(Object entity) {
|
||||
try {
|
||||
soundMethod.setAccessible(true);
|
||||
return (Float) soundMethod.invoke(entity);
|
||||
damageAndIdleSoundMethod.setAccessible(true);
|
||||
return (Float) damageAndIdleSoundMethod.invoke(entity);
|
||||
} catch (Exception ex) {
|
||||
}
|
||||
return null;
|
||||
|
Loading…
Reference in New Issue
Block a user