From 3d17eb42809b793e3684d089a3d2bbfd748422cf Mon Sep 17 00:00:00 2001 From: Anthony Hilyard Date: Mon, 20 Sep 2021 14:47:21 -0700 Subject: Updated tooltip handling, added remote pre-item pickup event and network protocol. --- .../iceberg/network/IcebergNetworkProtocol.java | 30 +++++++++++++++ .../iceberg/network/NewItemPickupEventPacket.java | 45 ++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/main/java/com/anthonyhilyard/iceberg/network/IcebergNetworkProtocol.java create mode 100644 src/main/java/com/anthonyhilyard/iceberg/network/NewItemPickupEventPacket.java (limited to 'src/main/java/com/anthonyhilyard/iceberg/network') diff --git a/src/main/java/com/anthonyhilyard/iceberg/network/IcebergNetworkProtocol.java b/src/main/java/com/anthonyhilyard/iceberg/network/IcebergNetworkProtocol.java new file mode 100644 index 0000000..d0dd1c8 --- /dev/null +++ b/src/main/java/com/anthonyhilyard/iceberg/network/IcebergNetworkProtocol.java @@ -0,0 +1,30 @@ +package com.anthonyhilyard.iceberg.network; + +import com.anthonyhilyard.iceberg.Loader; + +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.network.NetworkRegistry; +import net.minecraftforge.fml.network.simple.SimpleChannel; + +public class IcebergNetworkProtocol +{ + private static final String NETWORK_PROTOCOL_VERSION = "1"; + + public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( + new ResourceLocation(Loader.MODID, "main"), () -> NETWORK_PROTOCOL_VERSION, + NETWORK_PROTOCOL_VERSION::equals, NETWORK_PROTOCOL_VERSION::equals + ); + + public static final void register() + { + int messageID = 0; + + CHANNEL.registerMessage( + messageID++, + NewItemPickupEventPacket.class, + NewItemPickupEventPacket::encode, + NewItemPickupEventPacket::decode, + NewItemPickupEventPacket::handle + ); + } +} diff --git a/src/main/java/com/anthonyhilyard/iceberg/network/NewItemPickupEventPacket.java b/src/main/java/com/anthonyhilyard/iceberg/network/NewItemPickupEventPacket.java new file mode 100644 index 0000000..23df08b --- /dev/null +++ b/src/main/java/com/anthonyhilyard/iceberg/network/NewItemPickupEventPacket.java @@ -0,0 +1,45 @@ +package com.anthonyhilyard.iceberg.network; + +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.UUID; +import java.util.function.Supplier; + +import com.anthonyhilyard.iceberg.events.NewItemPickupEvent; + + +public final class NewItemPickupEventPacket +{ + private final UUID playerUUID; + private final ItemStack item; + + public NewItemPickupEventPacket(final UUID playerUUID, final ItemStack item) + { + this.playerUUID = playerUUID; + this.item = item; + } + + public static void encode(final NewItemPickupEventPacket msg, final PacketBuffer packetBuffer) + { + packetBuffer.writeUUID(msg.playerUUID); + packetBuffer.writeItem(msg.item); + } + + public static NewItemPickupEventPacket decode(final PacketBuffer packetBuffer) + { + return new NewItemPickupEventPacket(packetBuffer.readUUID(), packetBuffer.readItem()); + } + + public static void handle(final NewItemPickupEventPacket msg, final Supplier contextSupplier) + { + final NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + MinecraftForge.EVENT_BUS.post(new NewItemPickupEvent(msg.playerUUID, msg.item)); + }); + context.setPacketHandled(true); + } + +} \ No newline at end of file -- cgit