count actual items instead of stacks

This commit is contained in:
2026-01-21 21:09:36 +01:00
parent 9ab3b84af5
commit 217fada122
2 changed files with 21 additions and 11 deletions
@@ -7,6 +7,8 @@ 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.InteractionType; import com.hypixel.hytale.protocol.InteractionType;
import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle;
import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
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;
@@ -50,7 +52,14 @@ public class QuickStackToChestInteraction extends SimpleBlockInteraction {
if (transaction.size() <= 0) return; if (transaction.size() <= 0) return;
PlayerRef playerRef = ref.getStore().getComponent(ref, PlayerRef.getComponentType()); PlayerRef playerRef = ref.getStore().getComponent(ref, PlayerRef.getComponentType());
if (playerRef == null) return; if (playerRef == null) return;
NotificationUtil.sendNotification(playerRef.getPacketHandler(), "Quick stacked "+ transaction.size() +" stacks"); int itemsMoved = 0;
for (var tr : transaction.getList()) {
ItemStack item = tr.getAddTransaction().getQuery();
if (item == null) continue;
itemsMoved += item.getQuantity();
}
if (itemsMoved <= 0) return;
NotificationUtil.sendNotification(playerRef.getPacketHandler(), "Quick stacked "+ itemsMoved +" items", NotificationStyle.Success);
} }
@Override @Override
@@ -2,7 +2,6 @@ package me.youhavetrouble.quickerstacker.interaction;
import com.hypixel.hytale.codec.builder.BuilderCodec; import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.CommandBuffer; import com.hypixel.hytale.component.CommandBuffer;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.util.ChunkUtil;
@@ -10,6 +9,7 @@ import com.hypixel.hytale.math.vector.Vector3d;
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.InteractionType; import com.hypixel.hytale.protocol.InteractionType;
import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle;
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;
@@ -47,23 +47,24 @@ public class QuickStackToNearbyChestsInteraction extends SimpleBlockInteraction
if (player == null) return; if (player == null) return;
PlayerRef playerRef = ref.getStore().getComponent(ref, PlayerRef.getComponentType()); PlayerRef playerRef = ref.getStore().getComponent(ref, PlayerRef.getComponentType());
if (playerRef == null) return; if (playerRef == null) return;
NotificationUtil.sendNotification(playerRef.getPacketHandler(), "Second interaction firing");
BlockPosition targetBlockPosition = interactionContext.getTargetBlock(); BlockPosition targetBlockPosition = interactionContext.getTargetBlock();
if (targetBlockPosition == null) return; if (targetBlockPosition == null) return;
Collection<ItemContainerState> nearbyContainers = getNearbyContainers(world, ref, ref.getStore(), 10); Collection<ItemContainerState> nearbyContainers = getNearbyContainers(world, ref, ref.getStore(), 10);
if (nearbyContainers.isEmpty()) return; if (nearbyContainers.isEmpty()) return;
Inventory playerInventory = player.getInventory(); Inventory playerInventory = player.getInventory();
if (playerInventory == null) return; if (playerInventory == null) return;
int totalStacksMoved = 0; int itemsMoved = 0;
for (ItemContainerState containerState : nearbyContainers) { for (ItemContainerState containerState : nearbyContainers) {
ItemContainer itemContainer = containerState.getItemContainer(); ItemContainer itemContainer = containerState.getItemContainer();
ListTransaction<MoveTransaction<ItemStackTransaction>> transaction = playerInventory.getCombinedHotbarFirst().quickStackTo(itemContainer); ListTransaction<MoveTransaction<ItemStackTransaction>> transaction = playerInventory.getCombinedHotbarFirst().quickStackTo(itemContainer);
totalStacksMoved += transaction.size(); for (var tr : transaction.getList()) {
ItemStack item = tr.getAddTransaction().getQuery();
if (item == null) continue;
itemsMoved += item.getQuantity();
} }
if (totalStacksMoved <= 0) return; }
NotificationUtil.sendNotification(playerRef.getPacketHandler(), "Quick stacked "+ totalStacksMoved +" stacks"); if (itemsMoved <= 0) return;
NotificationUtil.sendNotification(playerRef.getPacketHandler(), "Quick stacked "+ itemsMoved +" items to nearby containers", NotificationStyle.Success);
} }
@Override @Override
@@ -94,9 +95,9 @@ public class QuickStackToNearbyChestsInteraction extends SimpleBlockInteraction
(int) (position.getY() + y), (int) (position.getY() + y),
(int) (position.getZ() + z)) (int) (position.getZ() + z))
) continue; ) continue;
WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(position.x, position.z)); WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(position.getX() + x, position.getZ() + z));
if (chunk == null) continue; if (chunk == null) continue;
var blockState = chunk.getState((int) position.x, (int) position.y, (int) position.z); var blockState = chunk.getState((int) position.getX() + x, (int) position.getY() + y, (int) position.getZ() + z);
if (!(blockState instanceof ItemContainerState containerState)) continue; if (!(blockState instanceof ItemContainerState containerState)) continue;
foundContainers.add(containerState); foundContainers.add(containerState);
} }