mirror of
https://github.com/YouHaveTrouble/QuickerStacker.git
synced 2026-05-12 06:06:55 +00:00
migrate to use the component way of getting the item container state component
This commit is contained in:
+14
-5
@@ -2,13 +2,13 @@ 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.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.InteractionType;
|
import com.hypixel.hytale.protocol.InteractionType;
|
||||||
import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle;
|
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;
|
||||||
@@ -21,7 +21,9 @@ import com.hypixel.hytale.server.core.modules.interaction.interaction.config.cli
|
|||||||
import com.hypixel.hytale.server.core.universe.PlayerRef;
|
import com.hypixel.hytale.server.core.universe.PlayerRef;
|
||||||
import com.hypixel.hytale.server.core.universe.world.World;
|
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.chunk.WorldChunk;
|
||||||
|
import com.hypixel.hytale.server.core.universe.world.meta.BlockStateModule;
|
||||||
import com.hypixel.hytale.server.core.universe.world.meta.state.ItemContainerState;
|
import com.hypixel.hytale.server.core.universe.world.meta.state.ItemContainerState;
|
||||||
|
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
|
||||||
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
||||||
import com.hypixel.hytale.server.core.util.NotificationUtil;
|
import com.hypixel.hytale.server.core.util.NotificationUtil;
|
||||||
import me.youhavetrouble.quickerstacker.QuickerStacker;
|
import me.youhavetrouble.quickerstacker.QuickerStacker;
|
||||||
@@ -41,11 +43,18 @@ public class QuickStackToChestInteraction extends SimpleBlockInteraction {
|
|||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
BlockPosition targetBlockPosition = interactionContext.getTargetBlock();
|
BlockPosition targetBlockPosition = interactionContext.getTargetBlock();
|
||||||
if (targetBlockPosition == null) return;
|
if (targetBlockPosition == null) return;
|
||||||
if (!QuickerStacker.canInteractWithBlock(ref, world, targetBlockPosition.x, targetBlockPosition.y, targetBlockPosition.z)) return;
|
int x = targetBlockPosition.x;
|
||||||
WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(targetBlockPosition.x, targetBlockPosition.z));
|
int y = targetBlockPosition.y;
|
||||||
|
int z = targetBlockPosition.z;
|
||||||
|
if (!QuickerStacker.canInteractWithBlock(ref, world, x, y, z)) return;
|
||||||
|
WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(x, z));
|
||||||
if (chunk == null) return;
|
if (chunk == null) return;
|
||||||
var blockState = chunk.getState(targetBlockPosition.x, targetBlockPosition.y, targetBlockPosition.z);
|
Ref<ChunkStore> blockRef = chunk.getBlockComponentEntity(x, y, z);
|
||||||
if (!(blockState instanceof ItemContainerState containerState)) return;
|
if (blockRef == null) return;
|
||||||
|
ComponentType<ChunkStore, ItemContainerState> stashComponentType = BlockStateModule.get().getComponentType(ItemContainerState.class);
|
||||||
|
if (stashComponentType == null) return;
|
||||||
|
ItemContainerState containerState = blockRef.getStore().getComponent(blockRef, stashComponentType);
|
||||||
|
if (containerState == null) return;
|
||||||
Inventory playerInventory = player.getInventory();
|
Inventory playerInventory = player.getInventory();
|
||||||
if (playerInventory == null) return;
|
if (playerInventory == null) return;
|
||||||
ListTransaction<MoveTransaction<ItemStackTransaction>> transaction = playerInventory.getCombinedHotbarFirst().quickStackTo(containerState.getItemContainer());
|
ListTransaction<MoveTransaction<ItemStackTransaction>> transaction = playerInventory.getCombinedHotbarFirst().quickStackTo(containerState.getItemContainer());
|
||||||
|
|||||||
+9
-3
@@ -2,6 +2,7 @@ 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;
|
||||||
@@ -24,7 +25,9 @@ import com.hypixel.hytale.server.core.modules.interaction.interaction.config.cli
|
|||||||
import com.hypixel.hytale.server.core.universe.PlayerRef;
|
import com.hypixel.hytale.server.core.universe.PlayerRef;
|
||||||
import com.hypixel.hytale.server.core.universe.world.World;
|
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.chunk.WorldChunk;
|
||||||
|
import com.hypixel.hytale.server.core.universe.world.meta.BlockStateModule;
|
||||||
import com.hypixel.hytale.server.core.universe.world.meta.state.ItemContainerState;
|
import com.hypixel.hytale.server.core.universe.world.meta.state.ItemContainerState;
|
||||||
|
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
|
||||||
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
||||||
import com.hypixel.hytale.server.core.util.NotificationUtil;
|
import com.hypixel.hytale.server.core.util.NotificationUtil;
|
||||||
import me.youhavetrouble.quickerstacker.QuickerStacker;
|
import me.youhavetrouble.quickerstacker.QuickerStacker;
|
||||||
@@ -85,6 +88,8 @@ public class QuickStackToNearbyChestsInteraction extends SimpleBlockInteraction
|
|||||||
TransformComponent transformComponent = store.getComponent(ref, TransformComponent.getComponentType());
|
TransformComponent transformComponent = store.getComponent(ref, TransformComponent.getComponentType());
|
||||||
if (transformComponent == null) return foundContainers;
|
if (transformComponent == null) return foundContainers;
|
||||||
Vector3d position = transformComponent.getPosition();
|
Vector3d position = transformComponent.getPosition();
|
||||||
|
ComponentType<ChunkStore, ItemContainerState> stashComponentType = BlockStateModule.get().getComponentType(ItemContainerState.class);
|
||||||
|
if (stashComponentType == null) return foundContainers;
|
||||||
for (int x = -range; x <= range; x++) {
|
for (int x = -range; x <= range; x++) {
|
||||||
for (int y = -range; y < range; y++) {
|
for (int y = -range; y < range; y++) {
|
||||||
for (int z = -range; z <= range; z++) {
|
for (int z = -range; z <= range; z++) {
|
||||||
@@ -97,13 +102,14 @@ public class QuickStackToNearbyChestsInteraction extends SimpleBlockInteraction
|
|||||||
) continue;
|
) continue;
|
||||||
WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(position.getX() + x, position.getZ() + 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.getX() + x, (int) position.getY() + y, (int) position.getZ() + z);
|
Ref<ChunkStore> blockRef = chunk.getBlockComponentEntity((int) position.getX() + x, (int) position.getY() + y, (int) position.getZ() + z);
|
||||||
if (!(blockState instanceof ItemContainerState containerState)) continue;
|
if (blockRef == null) continue;
|
||||||
|
ItemContainerState containerState = blockRef.getStore().getComponent(blockRef, stashComponentType);
|
||||||
|
if (containerState == null) continue;
|
||||||
foundContainers.add(containerState);
|
foundContainers.add(containerState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return foundContainers;
|
return foundContainers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user