From 46c47b0a1fba1386cfe06bcabdad5777ffc63e9b Mon Sep 17 00:00:00 2001 From: HeroBrineGoat <76707404+MasterOfTheFish@users.noreply.github.com> Date: Sun, 6 Feb 2022 15:23:34 -0500 Subject: [PATCH] Fixed sound bug --- .../listener/CosmeticFixListener.java | 7 +- .../hmccosmetics/user/UserManager.java | 68 +++++++++---------- 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/CosmeticFixListener.java b/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/CosmeticFixListener.java index 432ebc25..08936d6a 100644 --- a/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/CosmeticFixListener.java +++ b/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/CosmeticFixListener.java @@ -44,7 +44,8 @@ public class CosmeticFixListener implements Listener { @EventHandler public void onRightClick(final PlayerInteractEvent event) { - if (event.getAction() != Action.RIGHT_CLICK_BLOCK) { + if (event.getAction() != Action.RIGHT_CLICK_BLOCK + && event.getHand() != EquipmentSlot.OFF_HAND) { return; } final Player player = event.getPlayer(); @@ -54,7 +55,7 @@ public class CosmeticFixListener implements Listener { if (mainHand.getType().isBlock() && mainHand.getAmount() > 0) { return; } - this.userManager.updateCosmetics(player.getUniqueId(), true); + this.userManager.updateCosmetics(player.getUniqueId()); } @EventHandler(ignoreCancelled = true) @@ -73,7 +74,7 @@ public class CosmeticFixListener implements Listener { private void fixCosmetics(final Player player) { Bukkit.getScheduler().runTaskLaterAsynchronously(this.plugin, - () -> this.userManager.updateCosmetics(player.getUniqueId(), true), 2); + () -> this.userManager.updateCosmetics(player.getUniqueId()), 2); } } diff --git a/common/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java b/common/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java index a4d34ef7..02c6d6f7 100644 --- a/common/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java +++ b/common/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java @@ -99,30 +99,22 @@ public class UserManager { public void resendCosmetics(final Player player) { for (final User user : this.userMap.values()) { user.spawnArmorStand(player); - this.updateCosmetics(user, false, player); + this.updateCosmetics(user, player); } } - public void updateCosmetics(final UUID uuid, final boolean ignoreRestrictions) { - this.get(uuid).ifPresent(user -> this.updateCosmetics(user, ignoreRestrictions)); - - } - public void updateCosmetics(final UUID uuid) { - this.updateCosmetics(uuid, false); + this.get(uuid).ifPresent(this::updateCosmetics); + } public void updateCosmetics(final User user) { - this.updateCosmetics(user, false); - } - - public void updateCosmetics(final User user, final boolean ignoreRestrictions) { for (final Player player : Bukkit.getOnlinePlayers()) { - this.updateCosmetics(user, ignoreRestrictions, player); + this.updateCosmetics(user, player); } } - public void updateCosmetics(final User user, final boolean ignoreRestrictions, final Player other) { + public void updateCosmetics(final User user, final Player other) { final Player player = user.getPlayer(); final Equipment equipment; @@ -134,38 +126,42 @@ public class UserManager { final PlayerArmor playerArmor = user.getPlayerArmor(); - final List> equipmentList = new ArrayList<>(); + final List> hatList = new ArrayList<>(); + final List> offHandList = new ArrayList<>(); + final boolean hidden = !user.shouldShow(other); - equipmentList.add( - new Pair<>( - EnumWrappers.ItemSlot.HEAD, - this.getCosmeticItem(equipment, playerArmor.getHat(), EquipmentSlot.HEAD, ignoreRestrictions, hidden) - ) - ); - equipmentList.add( - new Pair<>( - EnumWrappers.ItemSlot.OFFHAND, - this.getCosmeticItem(equipment, playerArmor.getOffHand(), EquipmentSlot.OFF_HAND, ignoreRestrictions, hidden) - ) - ); + final ItemStack hat = this.getCosmeticItem(equipment, playerArmor.getHat(), EquipmentSlot.HEAD, hidden); + hatList.add(new Pair<>(EnumWrappers.ItemSlot.HEAD, hat)); + final ItemStack offHand = this.getCosmeticItem(equipment, playerArmor.getOffHand(), EquipmentSlot.OFF_HAND, hidden); + offHandList.add(new Pair<>(EnumWrappers.ItemSlot.OFFHAND, offHand)); - PacketManager.sendPacket( - other, - PacketManager.getEquipmentPacket( - equipmentList, - user.getEntityId() - ) - ); + if (!hat.equals(equipment.getItem(EquipmentSlot.HEAD))) { + PacketManager.sendPacket( + other, + PacketManager.getEquipmentPacket( + hatList, + user.getEntityId() + ) + ); + } + + if (!offHand.equals(equipment.getItem(EquipmentSlot.OFF_HAND))) { + PacketManager.sendPacket( + other, + PacketManager.getEquipmentPacket( + offHandList, + user.getEntityId() + ) + ); + } } private ItemStack getCosmeticItem( final Equipment equipment, final ArmorItem armorItem, final EquipmentSlot slot, - final boolean ignoreRestrictions, final boolean hidden) { - if (hidden) return new ItemStack(Material.AIR); final CosmeticSettings cosmeticSettings = this.settings.getCosmeticSettings(); final Map placeholders = Map.of(Placeholder.ALLOWED, Translation.TRUE, @@ -179,7 +175,7 @@ public class UserManager { final boolean isAir = itemStack.getType().isAir(); final boolean requireEmpty = cosmeticSettings.requireEmpty(slot); - if (!isAir && (!requireEmpty || ignoreRestrictions)) return itemStack; + if (!isAir && !requireEmpty && !hidden) return itemStack; if (equipment == null) return itemStack;