diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/packets/PacketInterface.java b/common/src/main/java/me/lojosho/hibiscuscommons/packets/PacketInterface.java index df61dd4..9326299 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/packets/PacketInterface.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/packets/PacketInterface.java @@ -32,12 +32,12 @@ public interface PacketInterface { // Override } - default PacketAction readPlayerArm(@NotNull Player player) { + default PacketAction readPlayerArm(@NotNull Player player, @NotNull PlayerSwingWrapper wrapper) { return PacketAction.NOTHING; // Override } - default PacketAction readEntityHandle(@NotNull Player player) { + default PacketAction readEntityHandle(@NotNull Player player, @NotNull PlayerInteractWrapper wrapper) { return PacketAction.NOTHING; // Override } diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerActionWrapper.java b/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerActionWrapper.java index b3475fe..9c99718 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerActionWrapper.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerActionWrapper.java @@ -1,14 +1,14 @@ package me.lojosho.hibiscuscommons.packets.wrapper; import lombok.Getter; -import lombok.Setter; +import org.jetbrains.annotations.NotNull; -@Getter @Setter public class PlayerActionWrapper { - private String actionType; + @Getter + private final String actionType; - public PlayerActionWrapper(String actionType) { + public PlayerActionWrapper(@NotNull String actionType) { this.actionType = actionType; } } diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerInteractWrapper.java b/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerInteractWrapper.java new file mode 100644 index 0000000..331203f --- /dev/null +++ b/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerInteractWrapper.java @@ -0,0 +1,13 @@ +package me.lojosho.hibiscuscommons.packets.wrapper; + +import lombok.Getter; + +public class PlayerInteractWrapper { + + @Getter + private final int entityId; + + public PlayerInteractWrapper(int entityId) { + this.entityId = entityId; + } +} diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerSwingWrapper.java b/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerSwingWrapper.java new file mode 100644 index 0000000..7c0b3b0 --- /dev/null +++ b/common/src/main/java/me/lojosho/hibiscuscommons/packets/wrapper/PlayerSwingWrapper.java @@ -0,0 +1,15 @@ +package me.lojosho.hibiscuscommons.packets.wrapper; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; + +public class PlayerSwingWrapper { + + @Getter + private final String hand; + + public PlayerSwingWrapper(@NotNull String hand) { + this.hand = hand; + } + +} diff --git a/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSPacketChannel.java b/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSPacketChannel.java index 5c3ef4f..a675980 100644 --- a/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSPacketChannel.java +++ b/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSPacketChannel.java @@ -10,7 +10,6 @@ import me.lojosho.hibiscuscommons.packets.PacketAction; import me.lojosho.hibiscuscommons.packets.wrapper.*; import me.lojosho.hibiscuscommons.plugins.SubPlugins; import me.lojosho.hibiscuscommons.util.MessagesUtil; -import net.minecraft.core.NonNullList; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.*; import net.minecraft.world.inventory.ClickType; @@ -79,6 +78,7 @@ public class NMSPacketChannel extends ChannelDuplexHandler { if (action.get() == PacketAction.CANCELLED) return null; if (action.get() == PacketAction.NOTHING) return packet; + List nmsItems = new ArrayList<>(); for (org.bukkit.inventory.ItemStack bukkitItem : bukkitItems) { if (bukkitItem == null) { @@ -88,7 +88,7 @@ public class NMSPacketChannel extends ChannelDuplexHandler { nmsItems.add(CraftItemStack.asNMSCopy(bukkitItem)); } - return new ClientboundContainerSetContentPacket(0, packet.stateId(), nmsItems, packet.carriedItem()); + return new ClientboundContainerSetContentPacket(wrapper.getWindowId(), packet.stateId(), nmsItems, packet.carriedItem()); } private Packet handleSlotChange(@NotNull ClientboundContainerSetSlotPacket packet) { @@ -218,12 +218,14 @@ public class NMSPacketChannel extends ChannelDuplexHandler { return packet; } - private Packet handlePlayerArm(ServerboundSwingPacket packet) { + private Packet handlePlayerArm(@NotNull ServerboundSwingPacket packet) { MessagesUtil.sendDebugMessages("ServerboundSwingPacket"); + PlayerSwingWrapper wrapper = new PlayerSwingWrapper(packet.getHand().name()); + AtomicReference action = new AtomicReference<>(PacketAction.NOTHING); SubPlugins.getSubPlugins().forEach(plugin -> { - PacketAction pluginAction = plugin.getPacketInterface().readPlayerArm(player); + PacketAction pluginAction = plugin.getPacketInterface().readPlayerArm(player, wrapper); if (pluginAction != PacketAction.NOTHING) action.set(pluginAction); }); @@ -231,12 +233,15 @@ public class NMSPacketChannel extends ChannelDuplexHandler { return packet; } - private Packet handleInteract(ServerboundInteractPacket packet) { + private Packet handleInteract(@NotNull ServerboundInteractPacket packet) { MessagesUtil.sendDebugMessages("ServerboundInteractPacket"); + + PlayerInteractWrapper wrapper = new PlayerInteractWrapper(packet.getEntityId()); + AtomicReference action = new AtomicReference<>(PacketAction.NOTHING); SubPlugins.getSubPlugins().forEach(plugin -> { - PacketAction pluginAction = plugin.getPacketInterface().readEntityHandle(player); + PacketAction pluginAction = plugin.getPacketInterface().readEntityHandle(player, wrapper); if (pluginAction != PacketAction.NOTHING) action.set(pluginAction); });