From fd7bed0ebbd5d58639a4822b3449ae253fd21c88 Mon Sep 17 00:00:00 2001 From: Buuz135 Date: Fri, 24 Dec 2021 14:17:31 +0100 Subject: [PATCH] Implemented pushing upgrade --- .../block/tile/ControllableDrawerTile.java | 21 +++++++++++++++++++ .../client/DrawerRenderer.java | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java index 04f1413..9662100 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java @@ -136,6 +136,27 @@ public abstract class ControllableDrawerTile }); }); } + if (item.equals(FunctionalStorage.PUSHING_UPGRADE.get())){ + Direction direction = Direction.byName(stack.getOrCreateTag().getString("Direction")); + TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> { + blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(otherHandler -> { + for (int otherSlot = 0; otherSlot < getStorage().getSlots(); otherSlot++) { + ItemStack pulledStack = getStorage().extractItem(otherSlot, 2, true); + if (pulledStack.isEmpty()) continue; + boolean hasWorked = false; + for (int ourSlot = 0; ourSlot < otherHandler.getSlots(); ourSlot++) { + ItemStack simulated = otherHandler.insertItem(ourSlot, pulledStack, true); + if (simulated.getCount() != pulledStack.getCount()){ + otherHandler.insertItem(ourSlot, getStorage().extractItem(otherSlot, pulledStack.getCount() - simulated.getCount(), false), false ); + hasWorked = true; + break; + } + } + if (hasWorked) break; + } + }); + }); + } } } } diff --git a/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java b/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java index b390c28..90095bf 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java +++ b/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java @@ -77,7 +77,7 @@ public class DrawerRenderer implements BlockEntityRenderer { public static void renderUpgrades(PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn, ControllableDrawerTile tile){ matrixStack.pushPose(); - matrixStack.translate(0.031,0.031f,0.469/16D); + matrixStack.translate(0.031,0.031f,0.472/16D); float scale = 0.0625f; for (int i = 0; i < tile.getStorageUpgrades().getSlots(); i++) { ItemStack stack = tile.getStorageUpgrades().getStackInSlot(i);