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

feat: latest packet wrappers

This commit is contained in:
LoJoSho
2025-06-28 15:23:41 -05:00
parent 491f46f4b3
commit 9ced7fd85e
5 changed files with 45 additions and 12 deletions

View File

@@ -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
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<ItemStack> 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<PacketAction> 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<PacketAction> 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);
});