From d4bf6f256bb4a5e7033709bd8abca54c2021224c Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Fri, 30 Sep 2022 12:29:10 -0500 Subject: [PATCH] Equipment no longer always sends full slots Signed-off-by: LoJoSho --- .../hmccosmetics/listener/CosmeticFixListener.java | 12 ++++-------- .../hmccosmetics/listener/JoinListener.java | 12 ++++++++---- .../packet/versions/PacketManager_1_19_2.java | 1 - .../fisher2911/hmccosmetics/user/UserManager.java | 5 +++-- .../fisher2911/hmccosmetics/user/Wardrobe.java | 4 ++++ 5 files changed, 19 insertions(+), 15 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 79bb1b80..6c1bff93 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 @@ -142,8 +142,6 @@ public class CosmeticFixListener implements Listener { int invTypeClicked = event.getPacket().getIntegers().read(0); int slotClicked = event.getPacket().getIntegers().read(2); - //plugin.getLogger().log(Level.INFO, "Slot Clicked: " + slotClicked + " | Type clicked: " + invTypeClicked); - // Must be a player inventory. if (invTypeClicked != 0) return; // -999 is when a player clicks outside their inventory. https://wiki.vg/Inventory#Player_Inventory @@ -178,7 +176,7 @@ public class CosmeticFixListener implements Listener { //plugin.getLogger().log(Level.INFO, "updateOnClick (171)"); final Location location = player.getLocation(); - final Equipment equipment = userManager.getItemList(user); + final Equipment equipment = new Equipment(); final ItemStack cosmetic = userManager.getCosmeticItem( user.getPlayerArmor().getItem(type), current, @@ -189,8 +187,8 @@ public class CosmeticFixListener implements Listener { if (cosmetic != null && cosmetic.getType() != Material.AIR) equipment.setItem(slot, cosmetic); //plugin.getLogger().log(Level.INFO, "Set cosmetic in " + slot + " to " + cosmetic + "(done)"); - final Equipment items = - userManager.getItemList(user, equipment, Collections.emptySet()); + /* + final Equipment items = userManager.getItemList(user, equipment, Collections.emptySet()); for (EquipmentSlot e : items.keys()) { //final EquipmentSlot s = e.getSlot(); final ArmorItem.Type t = ArmorItem.Type.fromWrapper(e); @@ -215,6 +213,7 @@ public class CosmeticFixListener implements Listener { } return; } + */ for (final Player other : Bukkit.getOnlinePlayers()) { if (!settings.isInViewDistance(location, other.getLocation())) continue; userManager.sendUpdatePacket( @@ -242,7 +241,6 @@ public class CosmeticFixListener implements Listener { if (windowId != 0) return; final int size = items.size(); final PlayerArmor playerArmor = user.getPlayerArmor(); - //final List equipmentList = new ArrayList<>(); final Equipment equip = userManager.getItemList(user); for (final ArmorItem armorItem : playerArmor.getArmorItems()) { final ArmorItem.Type type = armorItem.getType(); @@ -262,8 +260,6 @@ public class CosmeticFixListener implements Listener { )); if ((current).equals(setTo)) continue; equip.setItem(slot, setTo); - //plugin.getLogger().log(Level.INFO, "Setto " + setTo); - //equipmentList.add(PacketManager.getEquipment(setTo, slot)); } userManager.sendUpdatePacket( user, diff --git a/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/JoinListener.java b/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/JoinListener.java index cd24a46c..ffd757c9 100644 --- a/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/JoinListener.java +++ b/common/src/main/java/io/github/fisher2911/hmccosmetics/listener/JoinListener.java @@ -1,5 +1,6 @@ package io.github.fisher2911.hmccosmetics.listener; +import com.comphenix.protocol.ProtocolLibrary; import io.github.fisher2911.hmccosmetics.HMCCosmetics; import io.github.fisher2911.hmccosmetics.config.WardrobeSettings; import io.github.fisher2911.hmccosmetics.database.Database; @@ -13,6 +14,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.scheduler.BukkitScheduler; import java.util.Optional; @@ -36,16 +38,18 @@ public class JoinListener implements Listener { user -> new TaskChain(this.plugin).chain( () -> this.userManager.add(user) ).chain(() -> { -// this.userManager.resendCosmetics(player); -// this.userManager.updateCosmetics(user); final WardrobeSettings settings = this.plugin.getSettings().getWardrobeSettings(); if (settings.isAlwaysDisplay() && settings.getWardrobeLocation() != null) { final Wardrobe wardrobe = user.getWardrobe(); wardrobe.setCurrentLocation(settings.getWardrobeLocation()); wardrobe.spawnFakePlayer(player); } - }, true).execute() - ); + // and finally, resend the cosmetics + Bukkit.getScheduler().runTaskLaterAsynchronously(HMCCosmetics.getPlugin(HMCCosmetics.class), + () -> { + this.userManager.updateCosmetics(user); + }, 20); + }, true).execute()); } @EventHandler diff --git a/common/src/main/java/io/github/fisher2911/hmccosmetics/packet/versions/PacketManager_1_19_2.java b/common/src/main/java/io/github/fisher2911/hmccosmetics/packet/versions/PacketManager_1_19_2.java index 0cd3fe80..0c586afd 100644 --- a/common/src/main/java/io/github/fisher2911/hmccosmetics/packet/versions/PacketManager_1_19_2.java +++ b/common/src/main/java/io/github/fisher2911/hmccosmetics/packet/versions/PacketManager_1_19_2.java @@ -44,7 +44,6 @@ public class PacketManager_1_19_2 extends PacketBase { packet.getModifier().writeDefaults(); packet.getIntegers().write(0, armorStandId); WrappedDataWatcher metadata = new WrappedDataWatcher(); - //final WrappedDataWatcher.Serializer serializer = WrappedDataWatcher.Registry.get(Byte.class); if (metadata == null) return; // 0x10 & 0x20 metadata.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class)), (byte) 0x20); 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 64bf71a6..72edc058 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 @@ -258,7 +258,8 @@ public class UserManager { public void removeAll() { for (final var user : this.userMap.values()) { - user.despawnAttached(); + // server is shutting down anyways when this is called + //user.despawnAttached(); } this.userMap.clear(); @@ -284,7 +285,7 @@ public class UserManager { final ItemStack itemStack = this.getCosmeticItem(armorItem, wearing, ArmorItem.Status.APPLIED, slot); //final List itemList = new ArrayList<>(); //itemList.add(PacketManager.getEquipment(itemStack, slot)); - Equipment equip = user.getEquipment(); + Equipment equip = new Equipment(); equip.setItem(slot, itemStack); this.sendUpdatePacket(user, equip); } diff --git a/common/src/main/java/io/github/fisher2911/hmccosmetics/user/Wardrobe.java b/common/src/main/java/io/github/fisher2911/hmccosmetics/user/Wardrobe.java index d54d6878..c4cdbfb7 100644 --- a/common/src/main/java/io/github/fisher2911/hmccosmetics/user/Wardrobe.java +++ b/common/src/main/java/io/github/fisher2911/hmccosmetics/user/Wardrobe.java @@ -65,6 +65,10 @@ public class Wardrobe extends User { viewer ); PacketManager.sendFakePlayerInfoPacket(viewer, this.getId(), viewer); + PacketManager.sendInvisibilityPacket( + this.entityIds.wardrobeViewer(), + viewer + ); }); Bukkit.getScheduler().runTaskLaterAsynchronously(