9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-19 15:09:19 +00:00

feat: add async listeners to WINDOW_ITEMS and WINDOW_CLICK packets

This commit is contained in:
LoJoSho
2025-01-30 09:26:33 -06:00
parent 948bfb17f5
commit c2e4764ace
2 changed files with 9 additions and 10 deletions

View File

@@ -2,10 +2,7 @@ package com.hibiscusmc.hmccosmetics.listener;
import com.comphenix.protocol.PacketType; import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.*;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.wrappers.EnumWrappers; import com.comphenix.protocol.wrappers.EnumWrappers;
import com.comphenix.protocol.wrappers.Pair; import com.comphenix.protocol.wrappers.Pair;
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
@@ -455,7 +452,7 @@ public class PlayerGameListener implements Listener {
} }
private void registerInventoryClickListener() { private void registerInventoryClickListener() {
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.WINDOW_CLICK) { ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, List.of(PacketType.Play.Client.WINDOW_CLICK), ListenerOptions.ASYNC) {
@Override @Override
public void onPacketReceiving(PacketEvent event) { public void onPacketReceiving(PacketEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
@@ -481,7 +478,7 @@ public class PlayerGameListener implements Listener {
} }
private void registerMenuChangeListener() { private void registerMenuChangeListener() {
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Server.WINDOW_ITEMS) { ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, List.of(PacketType.Play.Server.WINDOW_ITEMS), ListenerOptions.ASYNC) {
@Override @Override
public void onPacketSending(PacketEvent event) { public void onPacketSending(PacketEvent event) {
MessagesUtil.sendDebugMessages("Menu Initial "); MessagesUtil.sendDebugMessages("Menu Initial ");
@@ -515,7 +512,7 @@ public class PlayerGameListener implements Listener {
if ((slot >= 5 && slot <= 8) || slot == 45) { if ((slot >= 5 && slot <= 8) || slot == 45) {
if (!items.containsKey(slot)) continue; if (!items.containsKey(slot)) continue;
slotData.set(slot, items.get(slot)); slotData.set(slot, items.get(slot));
MessagesUtil.sendDebugMessages("Set " + slot + " as " + items.get(slot)); if (Settings.isDebugMode()) MessagesUtil.sendDebugMessages("Set " + slot + " as " + items.get(slot));
} }
} }
packet.getItemListModifier().write(0, slotData); packet.getItemListModifier().write(0, slotData);

View File

@@ -1,6 +1,5 @@
package com.hibiscusmc.hmccosmetics.user; package com.hibiscusmc.hmccosmetics.user;
import com.google.common.collect.HashBiMap;
import com.hibiscusmc.hmccosmetics.util.HMCCServerUtils; import com.hibiscusmc.hmccosmetics.util.HMCCServerUtils;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -9,9 +8,11 @@ import org.jetbrains.annotations.Nullable;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
public class CosmeticUsers { public class CosmeticUsers {
private static final HashBiMap<UUID, CosmeticUser> COSMETIC_USERS = HashBiMap.create();
private static final ConcurrentHashMap<UUID, CosmeticUser> COSMETIC_USERS = new ConcurrentHashMap<>();
private static CosmeticUserProvider PROVIDER = CosmeticUserProvider.Default.INSTANCE; private static CosmeticUserProvider PROVIDER = CosmeticUserProvider.Default.INSTANCE;
@@ -104,6 +105,7 @@ public class CosmeticUsers {
*/ */
@NotNull @NotNull
public static Set<CosmeticUser> values() { public static Set<CosmeticUser> values() {
return COSMETIC_USERS.values(); // fix this later; this is a temporary fix. It was originally a set, now it's a collection
return Set.copyOf(COSMETIC_USERS.values());
} }
} }