From b7cd8e5cdd955ae8caf3471d86ba459b5f8c5e4d Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Thu, 15 Oct 2020 19:06:09 +0200 Subject: [PATCH] Fixed multiple modules of the same type not being openable Closes #43 --- .../pipe/containers/AbstractPipeContainer.java | 2 ++ .../prettypipes/pipe/containers/AbstractPipeGui.java | 12 +++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java b/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java index 547651b..26e933a 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java @@ -19,6 +19,7 @@ public abstract class AbstractPipeContainer extends Container public final PipeTileEntity tile; public final T module; + public final int moduleIndex; public final ItemStack moduleStack; public AbstractPipeContainer(@Nullable ContainerType type, int id, PlayerEntity player, BlockPos pos, int moduleIndex) { @@ -26,6 +27,7 @@ public abstract class AbstractPipeContainer extends Container this.tile = Utility.getTileEntity(PipeTileEntity.class, player.world, pos); this.moduleStack = moduleIndex < 0 ? null : this.tile.modules.getStackInSlot(moduleIndex); this.module = moduleIndex < 0 ? null : (T) this.moduleStack.getItem(); + this.moduleIndex = moduleIndex; // needs to be done here so transferStackInSlot works correctly, bleh this.addSlots(); diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java b/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java index 2b0b0ee..f2873af 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java @@ -99,27 +99,25 @@ public abstract class AbstractPipeGui> extend private void initTabs() { this.tabs.clear(); - this.tabs.add(new Tab(new ItemStack(Registry.pipeBlock), null, 0, -1)); + this.tabs.add(new Tab(new ItemStack(Registry.pipeBlock), 0, -1)); for (int i = 0; i < this.container.tile.modules.getSlots(); i++) { ItemStack stack = this.container.tile.modules.getStackInSlot(i); if (stack.isEmpty()) continue; IModule module = (IModule) stack.getItem(); if (module.hasContainer(stack, this.container.tile)) - this.tabs.add(new Tab(stack, module, this.tabs.size(), i)); + this.tabs.add(new Tab(stack, this.tabs.size(), i)); } } private class Tab { private final ItemStack moduleStack; - private final IModule module; private final int index; private final int x; private final int y; - public Tab(ItemStack moduleStack, IModule module, int tabIndex, int index) { + public Tab(ItemStack moduleStack, int tabIndex, int index) { this.moduleStack = moduleStack; - this.module = module; this.index = index; this.x = AbstractPipeGui.this.guiLeft + 5 + tabIndex * 28; this.y = AbstractPipeGui.this.guiTop; @@ -130,7 +128,7 @@ public abstract class AbstractPipeGui> extend int v = 0; int height = 30; int itemOffset = 9; - if (this.module == AbstractPipeGui.this.container.module) { + if (this.index == AbstractPipeGui.this.container.moduleIndex) { y = 0; v = 30; height = 32; @@ -149,7 +147,7 @@ public abstract class AbstractPipeGui> extend } private boolean onClicked(double mouseX, double mouseY, int button) { - if (this.module == AbstractPipeGui.this.container.module) + if (this.index == AbstractPipeGui.this.container.moduleIndex) return false; if (button != 0) return false;