From 6665120e166a7871b1a844038a8bac139e26df4d Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Fri, 16 Jan 2026 20:58:15 +0100 Subject: [PATCH] actually register the interaction and test events --- .../quickerstacker/QuickerStacker.java | 11 +++- .../listener/ChestInteractListener.java | 50 +++++++++++++++++++ .../Item/Interactions/Block_Secondary.json | 11 ++++ .../Interactions/Tests/QuickStackToChest.json | 11 ---- 4 files changed, 71 insertions(+), 12 deletions(-) create mode 100644 src/main/java/me/youhavetrouble/quickerstacker/listener/ChestInteractListener.java create mode 100644 src/main/resources/Server/Item/Interactions/Block_Secondary.json delete mode 100644 src/main/resources/Server/Item/Interactions/Tests/QuickStackToChest.json diff --git a/src/main/java/me/youhavetrouble/quickerstacker/QuickerStacker.java b/src/main/java/me/youhavetrouble/quickerstacker/QuickerStacker.java index 09481d1..acd8802 100644 --- a/src/main/java/me/youhavetrouble/quickerstacker/QuickerStacker.java +++ b/src/main/java/me/youhavetrouble/quickerstacker/QuickerStacker.java @@ -1,19 +1,28 @@ package me.youhavetrouble.quickerstacker; +import com.hypixel.hytale.server.core.event.events.ecs.UseBlockEvent; +import com.hypixel.hytale.server.core.event.events.player.PlayerInteractEvent; +import com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent; import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction; import com.hypixel.hytale.server.core.plugin.JavaPlugin; import com.hypixel.hytale.server.core.plugin.JavaPluginInit; import me.youhavetrouble.quickerstacker.interaction.ChestInteraction; +import me.youhavetrouble.quickerstacker.listener.ChestInteractListener; import org.checkerframework.checker.nullness.compatqual.NonNullDecl; public class QuickerStacker extends JavaPlugin { public QuickerStacker(@NonNullDecl JavaPluginInit init) { super(init); + } + + @Override + public void setup() { + this.getEventRegistry().registerGlobal(UseBlockEvent.class, ChestInteractListener::onChestInteract); + this.getEventRegistry().registerGlobal(PlayerReadyEvent.class, ChestInteractListener::playerJoin); this.getCodecRegistry(Interaction.CODEC).register("YouHaveTrouble_QuickerStacker_QuickStackToChest", ChestInteraction.class, ChestInteraction.CODEC); - } } diff --git a/src/main/java/me/youhavetrouble/quickerstacker/listener/ChestInteractListener.java b/src/main/java/me/youhavetrouble/quickerstacker/listener/ChestInteractListener.java new file mode 100644 index 0000000..ee0c9a3 --- /dev/null +++ b/src/main/java/me/youhavetrouble/quickerstacker/listener/ChestInteractListener.java @@ -0,0 +1,50 @@ +package me.youhavetrouble.quickerstacker.listener; + +import com.hypixel.hytale.component.Ref; +import com.hypixel.hytale.math.util.ChunkUtil; +import com.hypixel.hytale.protocol.BlockPosition; +import com.hypixel.hytale.protocol.InteractionSyncData; +import com.hypixel.hytale.server.core.Message; +import com.hypixel.hytale.server.core.entity.entities.Player; +import com.hypixel.hytale.server.core.event.events.ecs.UseBlockEvent; +import com.hypixel.hytale.server.core.event.events.player.PlayerInteractEvent; +import com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent; +import com.hypixel.hytale.server.core.inventory.Inventory; +import com.hypixel.hytale.server.core.universe.world.World; +import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk; +import com.hypixel.hytale.server.core.universe.world.meta.state.ItemContainerState; +import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; +import com.hypixel.hytale.server.core.util.NotificationUtil; + +public class ChestInteractListener { + + public static void onChestInteract(UseBlockEvent event) { + Ref ref = event.getContext().getEntity(); + Player player = ref.getStore().getComponent(ref, Player.getComponentType()); + if (player == null) return; + NotificationUtil.sendNotification(player.getPlayerRef().getPacketHandler(), "Interaction happened! "+ event.getInteractionType().name()); + player.sendMessage(Message.raw("Interaction: " + event.getInteractionType().name())); + BlockPosition targetBlockPosition = new BlockPosition(); + targetBlockPosition.x = event.getTargetBlock().x; + targetBlockPosition.y = event.getTargetBlock().y; + targetBlockPosition.z = event.getTargetBlock().z; + World world = player.getWorld(); + if (world == null) return; + WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(targetBlockPosition.x, targetBlockPosition.z)); + if (chunk == null) return; + var blockState = chunk.getState(targetBlockPosition.x, targetBlockPosition.y, targetBlockPosition.z); + if (!(blockState instanceof ItemContainerState containerState)) return; + + Inventory playerInventory = player.getInventory(); + if (playerInventory == null) return; + playerInventory.getCombinedHotbarFirst().quickStackTo(containerState.getItemContainer()); + player.sendMessage(Message.raw("Quick stacked items to chest.")); + } + + public static void playerJoin(PlayerReadyEvent event) { + Player player = event.getPlayer(); + NotificationUtil.sendNotification(player.getPlayerConnection(), "QuickerStacker Loaded!"); + player.sendMessage(Message.raw("QuickerStacker Loaded!")); + } + +} diff --git a/src/main/resources/Server/Item/Interactions/Block_Secondary.json b/src/main/resources/Server/Item/Interactions/Block_Secondary.json new file mode 100644 index 0000000..db03851 --- /dev/null +++ b/src/main/resources/Server/Item/Interactions/Block_Secondary.json @@ -0,0 +1,11 @@ +{ + "Type": "UseBlock", + "Failed": { + "Type": "YouHaveTrouble_QuickerStacker_QuickStackToChest", + "RunTime": 0.125, + "Effects": { + "WaitForAnimationToFinish": false, + "ItemAnimationId": "Build" + } + } +} \ No newline at end of file diff --git a/src/main/resources/Server/Item/Interactions/Tests/QuickStackToChest.json b/src/main/resources/Server/Item/Interactions/Tests/QuickStackToChest.json deleted file mode 100644 index 4be151c..0000000 --- a/src/main/resources/Server/Item/Interactions/Tests/QuickStackToChest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "Type": "UseBlock", - "Next": { - "Type": "YouHaveTrouble_QuickerStacker_QuickStackToChest", - "RunTime": 0.5 - }, - "Failed": { - "Type": "Simple", - "RunTime": 0.5 - } -} \ No newline at end of file