From f41c5793fe99cc0852e531feabfa29d659d29b42 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Mon, 23 Jun 2014 00:08:38 -0500 Subject: [PATCH] Fix an issue where interfaces would not cause storage buses to re-check their status. --- helpers/DualityInterface.java | 18 +++++++++++------- parts/misc/PartInterface.java | 15 +++++++++++++++ tile/misc/TileInterface.java | 15 +++++++++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/helpers/DualityInterface.java b/helpers/DualityInterface.java index d078c519..973cac2a 100644 --- a/helpers/DualityInterface.java +++ b/helpers/DualityInterface.java @@ -214,11 +214,7 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt } } - TileEntity te = iHost.getTileEntity(); - if ( hadConfig != hasConfig && te != null && te.getWorldObj() != null ) - { - te.getWorldObj().notifyBlocksOfNeighborChange( te.xCoord, te.yCoord, te.zCoord, Platform.air ); - } + notifyNeightbors(); } public void writeToNBT(NBTTagCompound data) @@ -463,8 +459,7 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt fluids.setInternal( new NullInventory() ); } - TileEntity te = iHost.getTileEntity(); - te.getWorldObj().notifyBlocksOfNeighborChange( te.xCoord, te.yCoord, te.zCoord, Platform.air ); + notifyNeightbors(); } public AECableType getCableConnectionType(ForgeDirection dir) @@ -802,4 +797,13 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt drops.add( is ); } + public void notifyNeightbors() + { + TileEntity te = iHost.getTileEntity(); + if ( te != null && te.getWorldObj() != null ) + { + te.getWorldObj().notifyBlocksOfNeighborChange( te.xCoord, te.yCoord, te.zCoord, Platform.air ); + } + } + } diff --git a/parts/misc/PartInterface.java b/parts/misc/PartInterface.java index e066ba28..ce4f91b0 100644 --- a/parts/misc/PartInterface.java +++ b/parts/misc/PartInterface.java @@ -19,6 +19,9 @@ import appeng.api.implementations.tiles.ITileStorageMonitorable; import appeng.api.networking.IGridNode; import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.crafting.ICraftingProviderHelper; +import appeng.api.networking.events.MENetworkChannelsChanged; +import appeng.api.networking.events.MENetworkEventSubscribe; +import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; @@ -52,6 +55,18 @@ public class PartInterface extends PartBasicState implements IGridTickable, ISeg super( PartInterface.class, is ); } + @MENetworkEventSubscribe + public void stateChange(MENetworkChannelsChanged c) + { + duality.notifyNeightbors(); + } + + @MENetworkEventSubscribe + public void stateChange(MENetworkPowerStatusChange c) + { + duality.notifyNeightbors(); + } + @Override public void gridChanged() { diff --git a/tile/misc/TileInterface.java b/tile/misc/TileInterface.java index 592bf9e1..96478e7f 100644 --- a/tile/misc/TileInterface.java +++ b/tile/misc/TileInterface.java @@ -15,6 +15,9 @@ import appeng.api.implementations.tiles.ITileStorageMonitorable; import appeng.api.networking.IGridNode; import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.crafting.ICraftingProviderHelper; +import appeng.api.networking.events.MENetworkChannelsChanged; +import appeng.api.networking.events.MENetworkEventSubscribe; +import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; @@ -43,6 +46,18 @@ public class TileInterface extends AENetworkInvTile implements IGridTickable, IS ForgeDirection pointAt = ForgeDirection.UNKNOWN; DualityInterface duality = new DualityInterface( gridProxy, this ); + @MENetworkEventSubscribe + public void stateChange(MENetworkChannelsChanged c) + { + duality.notifyNeightbors(); + } + + @MENetworkEventSubscribe + public void stateChange(MENetworkPowerStatusChange c) + { + duality.notifyNeightbors(); + } + public void setSide(ForgeDirection axis) { if ( Platform.isClient() )