From bdcaa4199e023fbd925bc8d9d5ce36f84d0e133c Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 13 May 2026 12:58:19 +0200 Subject: [PATCH] fuck me sideways in a maid dress this actually works --- src/main/java/api/hbm/ntl/SlotMonitor.java | 8 +++++++ src/main/java/api/hbm/ntl/StackCache.java | 3 +++ .../ContainerPneumoStorageAccess.java | 7 ++++++- .../TileEntityPneumoStorageAccess.java | 7 ++++--- .../TileEntityPneumoStorageClutter.java | 21 +++++++++++++++++-- 5 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/main/java/api/hbm/ntl/SlotMonitor.java b/src/main/java/api/hbm/ntl/SlotMonitor.java index 4d7b1f863..b0c295743 100644 --- a/src/main/java/api/hbm/ntl/SlotMonitor.java +++ b/src/main/java/api/hbm/ntl/SlotMonitor.java @@ -103,12 +103,15 @@ public class SlotMonitor { if(hasTypeChanged) { + System.out.println("Type changed!"); + // remove from all existing monitors Iterator iterator = viewedBy.iterator(); while(iterator.hasNext()) { CacheSlot slot = iterator.next(); slot.removeMonitor(this); iterator.remove(); + System.out.println("Removing"); } // set updated traits @@ -126,9 +129,14 @@ public class SlotMonitor { // find new monitors if(pneumoNet != null) { + + System.out.println("Adding to new network..."); + for(StackCache cache : pneumoNet.accessors) { + System.out.println("Adding to cache..."); if(!cache.hasExpired && parent.isAvailableToCache(cache)) { cache.addToCache(this); + System.out.println("Added!"); } } } diff --git a/src/main/java/api/hbm/ntl/StackCache.java b/src/main/java/api/hbm/ntl/StackCache.java index 1739d17e0..2f2802f9d 100644 --- a/src/main/java/api/hbm/ntl/StackCache.java +++ b/src/main/java/api/hbm/ntl/StackCache.java @@ -95,13 +95,16 @@ public class StackCache { public void addMonitor(SlotMonitor monitor) { if(this.monitors.add(monitor)) { + monitor.viewedBy.add(this); this.changeAmounts(monitor.stacksize); } } public void removeMonitor(SlotMonitor monitor) { + System.out.println("Trying to remove..."); if(this.monitors.remove(monitor)) { this.changeAmounts(-monitor.stacksize); + System.out.println("Removed!"); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerPneumoStorageAccess.java b/src/main/java/com/hbm/inventory/container/ContainerPneumoStorageAccess.java index 2747981aa..bcd99eaf0 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerPneumoStorageAccess.java +++ b/src/main/java/com/hbm/inventory/container/ContainerPneumoStorageAccess.java @@ -7,6 +7,7 @@ import java.util.List; import com.hbm.inventory.SlotNonRetarded; import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageAccess; +import com.hbm.util.ItemStackUtil; import api.hbm.ntl.StackCache; import api.hbm.ntl.StackCache.CacheSlot; @@ -70,13 +71,17 @@ public class ContainerPneumoStorageAccess extends Container { if(this.cache == null) return; List cacheSlots = new ArrayList(cache.cacheSlots.size()); cacheSlots.addAll(cache.cacheSlots.values()); + cacheSlots.removeIf(x -> { return x.stacksize <= 0; }); Collections.sort(cacheSlots, SORT_BY_STACK_SIZE); int size = cacheSlots.size(); for(int i = 0; i < slots.length; i++) { if(i < size) { CacheSlot cache = cacheSlots.get(i); - slots[i] = cache.displayStack; + if(cache.displayStack != null) { + slots[i] = cache.displayStack.copy(); + ItemStackUtil.addTooltipToStack(slots[i], "x" + cache.stacksize, "in " + cache.monitors.size() + " stacks"); + } } } } diff --git a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java index 194a39380..b0339031d 100644 --- a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java +++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java @@ -39,9 +39,10 @@ public class TileEntityPneumoStorageAccess extends TileEntityLoadedBase implemen if(this.cache == null) { this.cache = new StackCache(xCoord, yCoord, zCoord); - if(this.node != null && this.node.hasValidNet()) { - this.node.net.addStackCache(cache); - } + } + + if(this.node != null && this.node.hasValidNet()) { + this.node.net.addStackCache(cache); } } } diff --git a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java index 099c92df8..0159fdaf7 100644 --- a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java +++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java @@ -13,15 +13,17 @@ import com.hbm.uninos.networkproviders.PneumaticNetworkProvider; import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.fluidmk2.IFluidStandardReceiverMK2; +import api.hbm.ntl.IPneumaticConnector; import api.hbm.ntl.ISlotMonitorProvider; import api.hbm.ntl.SlotMonitor; import api.hbm.ntl.StackCache; +import api.hbm.ntl.StackCache.CacheSlot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public class TileEntityPneumoStorageClutter extends TileEntityMachineBase implements IFluidStandardReceiverMK2, ISlotMonitorProvider, IGUIProvider { +public class TileEntityPneumoStorageClutter extends TileEntityMachineBase implements IPneumaticConnector, IFluidStandardReceiverMK2, ISlotMonitorProvider, IGUIProvider { public FluidTank compair; public SlotMonitor[] monitors; @@ -81,7 +83,17 @@ public class TileEntityPneumoStorageClutter extends TileEntityMachineBase implem super.invalidate(); if(!worldObj.isRemote) { + + for(SlotMonitor monitor : this.monitors) { + for(CacheSlot cache : monitor.viewedBy) cache.removeMonitor(monitor); + } + if(this.node != null) { + + if(node.hasValidNet()) { + this.node.net.storages.remove(this); + } + UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, PneumaticNetworkProvider.THE_PROVIDER); } } @@ -90,7 +102,12 @@ public class TileEntityPneumoStorageClutter extends TileEntityMachineBase implem @Override public void onChunkUnload() { super.onChunkUnload(); - if(node != null && !node.expired && node.hasValidNet()) { + + for(SlotMonitor monitor : this.monitors) { + for(CacheSlot cache : monitor.viewedBy) cache.removeMonitor(monitor); + } + + if(node != null && node.hasValidNet()) { this.node.net.storages.remove(this); } }