From 560ab4d0b3f8d406e83798bce1de3da6eb0fb578 Mon Sep 17 00:00:00 2001 From: Alex 'mcmonkey' Goodwin Date: Sun, 17 May 2020 05:09:12 -0700 Subject: [PATCH] NMS backing for player.stop_sound mech since spigot went and broked it --- .../denizen/nms/interfaces/PlayerHelper.java | 7 +++---- .../com/denizenscript/denizen/objects/PlayerTag.java | 9 ++++----- .../denizen/nms/v1_12/helpers/PlayerHelperImpl.java | 6 ++++++ .../denizen/nms/v1_13/helpers/PlayerHelperImpl.java | 7 +++++++ .../denizen/nms/v1_14/helpers/PlayerHelperImpl.java | 7 +++++++ .../denizen/nms/v1_15/helpers/PlayerHelperImpl.java | 7 +++++++ 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/PlayerHelper.java b/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/PlayerHelper.java index f9caa45404..148f882a89 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/PlayerHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/PlayerHelper.java @@ -2,10 +2,7 @@ import com.denizenscript.denizen.nms.abstracts.ImprovedOfflinePlayer; import com.denizenscript.denizencore.objects.Mechanism; -import org.bukkit.Chunk; -import org.bukkit.Location; -import org.bukkit.NamespacedKey; -import org.bukkit.OfflinePlayer; +import org.bukkit.*; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -14,6 +11,8 @@ public abstract class PlayerHelper { + public abstract void stopSound(Player player, String sound, SoundCategory category); + public Entity sendEntitySpawn(Player player, EntityType entityType, Location location, ArrayList mechanisms) { throw new UnsupportedOperationException(); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java index 6e547140a7..fd07ab4efe 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java @@ -3563,17 +3563,16 @@ else if (split.length > 1) { // If no sound type is specified, all types will be stopped. // --> if (mechanism.matches("stop_sound")) { - if (!mechanism.hasValue()) { - getPlayerEntity().stopSound(""); - } - else { + SoundCategory category = SoundCategory.MASTER; + if (mechanism.hasValue()) { try { - getPlayerEntity().stopSound("", SoundCategory.valueOf(mechanism.getValue().asString().toUpperCase())); + category = SoundCategory.valueOf(mechanism.getValue().asString().toUpperCase()); } catch (Exception e) { Debug.echoError("Invalid SoundCategory. Must specify a valid name."); } } + NMSHandler.getPlayerHelper().stopSound(getPlayerEntity(), null, category); } if (mechanism.matches("action_bar")) { diff --git a/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/PlayerHelperImpl.java b/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/PlayerHelperImpl.java index e0dcec5615..6a3314e6fd 100644 --- a/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/PlayerHelperImpl.java +++ b/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/PlayerHelperImpl.java @@ -12,6 +12,7 @@ import org.bukkit.Chunk; import org.bukkit.NamespacedKey; import org.bukkit.OfflinePlayer; +import org.bukkit.SoundCategory; import org.bukkit.craftbukkit.v1_12_R1.CraftServer; import org.bukkit.craftbukkit.v1_12_R1.CraftWorld; import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; @@ -45,6 +46,11 @@ public int getFlyKickCooldown(Player player) { return 80; } + @Override + public void stopSound(Player player, String sound, SoundCategory category) { + player.stopSound(sound == null ? "" : sound, category); + } + @Override public void setFlyKickCooldown(Player player, int ticks) { ticks = 80 - ticks; diff --git a/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/PlayerHelperImpl.java b/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/PlayerHelperImpl.java index 1517075f7c..28a82a1bd4 100644 --- a/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/PlayerHelperImpl.java +++ b/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/PlayerHelperImpl.java @@ -13,6 +13,7 @@ import org.bukkit.Chunk; import org.bukkit.NamespacedKey; import org.bukkit.OfflinePlayer; +import org.bukkit.SoundCategory; import org.bukkit.craftbukkit.v1_13_R2.CraftServer; import org.bukkit.craftbukkit.v1_13_R2.CraftWorld; import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer; @@ -44,6 +45,12 @@ public class PlayerHelperImpl extends PlayerHelper { ENTITY_HUMAN_SKINLAYERS_DATAWATCHER = skinlayers; } + @Override + public void stopSound(Player player, String sound, SoundCategory category) { + MinecraftKey soundKey = sound == null ? null : new MinecraftKey(sound); + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutStopSound(soundKey, net.minecraft.server.v1_13_R2.SoundCategory.valueOf(category.name()))); + } + @Override public int getFlyKickCooldown(Player player) { PlayerConnection conn = ((CraftPlayer) player).getHandle().playerConnection; diff --git a/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/PlayerHelperImpl.java b/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/PlayerHelperImpl.java index 652768f33f..95137f571a 100644 --- a/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/PlayerHelperImpl.java +++ b/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/PlayerHelperImpl.java @@ -13,6 +13,7 @@ import org.bukkit.Chunk; import org.bukkit.NamespacedKey; import org.bukkit.OfflinePlayer; +import org.bukkit.SoundCategory; import org.bukkit.craftbukkit.v1_14_R1.CraftServer; import org.bukkit.craftbukkit.v1_14_R1.CraftWorld; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; @@ -44,6 +45,12 @@ public class PlayerHelperImpl extends PlayerHelper { ENTITY_HUMAN_SKINLAYERS_DATAWATCHER = skinlayers; } + @Override + public void stopSound(Player player, String sound, SoundCategory category) { + MinecraftKey soundKey = sound == null ? null : new MinecraftKey(sound); + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutStopSound(soundKey, net.minecraft.server.v1_14_R1.SoundCategory.valueOf(category.name()))); + } + @Override public int getFlyKickCooldown(Player player) { PlayerConnection conn = ((CraftPlayer) player).getHandle().playerConnection; diff --git a/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/PlayerHelperImpl.java b/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/PlayerHelperImpl.java index dddc6ca45a..9575189b02 100644 --- a/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/PlayerHelperImpl.java +++ b/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/PlayerHelperImpl.java @@ -13,6 +13,7 @@ import net.minecraft.server.v1_15_R1.*; import org.bukkit.*; import org.bukkit.Chunk; +import org.bukkit.SoundCategory; import org.bukkit.craftbukkit.v1_15_R1.CraftServer; import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; @@ -47,6 +48,12 @@ public class PlayerHelperImpl extends PlayerHelper { ENTITY_HUMAN_SKINLAYERS_DATAWATCHER = skinlayers; } + @Override + public void stopSound(Player player, String sound, SoundCategory category) { + MinecraftKey soundKey = sound == null ? null : new MinecraftKey(sound); + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutStopSound(soundKey, net.minecraft.server.v1_15_R1.SoundCategory.valueOf(category.name()))); + } + @Override public Entity sendEntitySpawn(Player player, EntityType entityType, Location location, ArrayList mechanisms) { PlayerConnection conn = ((CraftPlayer) player).getHandle().playerConnection;