fully working quick stack interaction

This commit is contained in:
2026-01-18 18:36:40 +01:00
parent a2faac747b
commit 5d3f3214ac
@@ -6,9 +6,7 @@ import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.util.ChunkUtil;
import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.protocol.BlockPosition; import com.hypixel.hytale.protocol.BlockPosition;
import com.hypixel.hytale.protocol.InteractionSyncData;
import com.hypixel.hytale.protocol.InteractionType; import com.hypixel.hytale.protocol.InteractionType;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.entity.InteractionContext; import com.hypixel.hytale.server.core.entity.InteractionContext;
import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.inventory.Inventory; import com.hypixel.hytale.server.core.inventory.Inventory;
@@ -34,15 +32,12 @@ public class QuickStackToChestInteraction extends SimpleBlockInteraction {
Ref<EntityStore> ref = interactionContext.getEntity(); Ref<EntityStore> ref = interactionContext.getEntity();
Player player = ref.getStore().getComponent(ref, Player.getComponentType()); Player player = ref.getStore().getComponent(ref, Player.getComponentType());
if (player == null) return; if (player == null) return;
InteractionSyncData clientState = interactionContext.getClientState(); BlockPosition targetBlockPosition = interactionContext.getTargetBlock();
if (clientState == null) return;
BlockPosition targetBlockPosition = clientState.blockPosition;
if (targetBlockPosition == null) return; if (targetBlockPosition == null) return;
WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(targetBlockPosition.x, targetBlockPosition.z)); WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(targetBlockPosition.x, targetBlockPosition.z));
if (chunk == null) return; if (chunk == null) return;
var blockState = chunk.getState(targetBlockPosition.x, targetBlockPosition.y, targetBlockPosition.z); var blockState = chunk.getState(targetBlockPosition.x, targetBlockPosition.y, targetBlockPosition.z);
if (!(blockState instanceof ItemContainerState containerState)) return; if (!(blockState instanceof ItemContainerState containerState)) return;
Inventory playerInventory = player.getInventory(); Inventory playerInventory = player.getInventory();
if (playerInventory == null) return; if (playerInventory == null) return;
playerInventory.getCombinedHotbarFirst().quickStackTo(containerState.getItemContainer()); playerInventory.getCombinedHotbarFirst().quickStackTo(containerState.getItemContainer());