From d0d0045825c4a39e8c4d50c766f3cf5ea7d1ff2b Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 24 Jan 2022 23:37:27 +0100 Subject: [PATCH] Ported https://github.com/Ellpeck/PrettyPipes/commit/87ecc7f74e5d380ee7cd7a604f0a472f0575bc50 to 1.18 --- .../terminal/ItemTerminalBlockEntity.java | 2 +- .../containers/CraftingTerminalContainer.java | 3 ++- .../containers/WrappedCraftingInventory.java | 14 ++++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalBlockEntity.java b/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalBlockEntity.java index 8037f7a..d6132a0 100644 --- a/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalBlockEntity.java +++ b/src/main/java/de/ellpeck/prettypipes/terminal/ItemTerminalBlockEntity.java @@ -172,7 +172,7 @@ public class ItemTerminalBlockEntity extends BlockEntity implements IPipeConnect return stack.getCount() - ret.getRight().getCount(); } - protected Player[] getLookingPlayers() { + public Player[] getLookingPlayers() { return this.level.players().stream().filter(p -> p.containerMenu instanceof ItemTerminalContainer container && container.tile == this).toArray(Player[]::new); } diff --git a/src/main/java/de/ellpeck/prettypipes/terminal/containers/CraftingTerminalContainer.java b/src/main/java/de/ellpeck/prettypipes/terminal/containers/CraftingTerminalContainer.java index b82d7d9..2d7287f 100644 --- a/src/main/java/de/ellpeck/prettypipes/terminal/containers/CraftingTerminalContainer.java +++ b/src/main/java/de/ellpeck/prettypipes/terminal/containers/CraftingTerminalContainer.java @@ -32,7 +32,8 @@ public class CraftingTerminalContainer extends ItemTerminalContainer { this.craftResult = new ResultContainer() { @Override public void setChanged() { - CraftingTerminalContainer.this.slotsChanged(this); + for (var player : CraftingTerminalContainer.this.getTile().getLookingPlayers()) + player.containerMenu.slotsChanged(this); } }; this.addSlot(new ResultSlot(player, this.craftInventory, this.craftResult, 0, 25, 77)); diff --git a/src/main/java/de/ellpeck/prettypipes/terminal/containers/WrappedCraftingInventory.java b/src/main/java/de/ellpeck/prettypipes/terminal/containers/WrappedCraftingInventory.java index 90f1663..78908b3 100644 --- a/src/main/java/de/ellpeck/prettypipes/terminal/containers/WrappedCraftingInventory.java +++ b/src/main/java/de/ellpeck/prettypipes/terminal/containers/WrappedCraftingInventory.java @@ -1,7 +1,6 @@ package de.ellpeck.prettypipes.terminal.containers; import net.minecraft.world.entity.player.StackedContents; -import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.ItemStackHandler; @@ -9,9 +8,9 @@ import net.minecraftforge.items.ItemStackHandler; public class WrappedCraftingInventory extends CraftingContainer { private final ItemStackHandler items; - private final AbstractContainerMenu eventHandler; + private final CraftingTerminalContainer eventHandler; - public WrappedCraftingInventory(ItemStackHandler items, AbstractContainerMenu eventHandlerIn, int width, int height) { + public WrappedCraftingInventory(ItemStackHandler items, CraftingTerminalContainer eventHandlerIn, int width, int height) { super(eventHandlerIn, width, height); this.eventHandler = eventHandlerIn; this.items = items; @@ -47,15 +46,18 @@ public class WrappedCraftingInventory extends CraftingContainer { public ItemStack removeItem(int index, int count) { var slotStack = this.items.getStackInSlot(index); var ret = !slotStack.isEmpty() && count > 0 ? slotStack.split(count) : ItemStack.EMPTY; - if (!ret.isEmpty()) - this.eventHandler.slotsChanged(this); + if (!ret.isEmpty()) { + for (var player : this.eventHandler.getTile().getLookingPlayers()) + player.containerMenu.slotsChanged(this); + } return ret; } @Override public void setItem(int index, ItemStack stack) { this.items.setStackInSlot(index, stack); - this.eventHandler.slotsChanged(this); + for (var player : this.eventHandler.getTile().getLookingPlayers()) + player.containerMenu.slotsChanged(this); } @Override