Fix all Channel Behavior and its mis-behaving.
This commit is contained in:
parent
93ac258ee7
commit
26202745ad
|
@ -5,7 +5,7 @@ import appeng.core.AELog;
|
||||||
|
|
||||||
public enum PlayerMessages
|
public enum PlayerMessages
|
||||||
{
|
{
|
||||||
ChestCannotReadStorageCell, InvalidMachine, LoadedSettings, SavedSettings, MachineNotPowered, isNowLocked, isNowUnlocked, AmmoDepleted;
|
ChestCannotReadStorageCell, InvalidMachine, LoadedSettings, SavedSettings, MachineNotPowered, isNowLocked, isNowUnlocked, AmmoDepleted, CommunicationError;
|
||||||
|
|
||||||
private PlayerMessages() {
|
private PlayerMessages() {
|
||||||
AELog.localization( "chat", getName() );
|
AELog.localization( "chat", getName() );
|
||||||
|
|
|
@ -330,6 +330,18 @@ public class AENetworkProxy implements IGridBlock
|
||||||
return node.isActive();
|
return node.isActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isPowered()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return getEnergy().isNetworkPowered();
|
||||||
|
}
|
||||||
|
catch (GridAccessException e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void gridChanged()
|
public void gridChanged()
|
||||||
{
|
{
|
||||||
|
|
|
@ -117,6 +117,9 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
||||||
@Override
|
@Override
|
||||||
TickRateModulation doBusWork()
|
TickRateModulation doBusWork()
|
||||||
{
|
{
|
||||||
|
if ( !proxy.isActive() )
|
||||||
|
return TickRateModulation.IDLE;
|
||||||
|
|
||||||
itemToSend = 1;
|
itemToSend = 1;
|
||||||
didSomething = false;
|
didSomething = false;
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,9 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
|
||||||
|
|
||||||
TickRateModulation doBusWork()
|
TickRateModulation doBusWork()
|
||||||
{
|
{
|
||||||
|
if ( !proxy.isActive() )
|
||||||
|
return TickRateModulation.IDLE;
|
||||||
|
|
||||||
worked = false;
|
worked = false;
|
||||||
|
|
||||||
InventoryAdaptor myAdaptor = getHandler();
|
InventoryAdaptor myAdaptor = getHandler();
|
||||||
|
|
|
@ -19,6 +19,8 @@ import appeng.api.config.Settings;
|
||||||
import appeng.api.config.Upgrades;
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.networking.events.MENetworkCellArrayUpdate;
|
import appeng.api.networking.events.MENetworkCellArrayUpdate;
|
||||||
|
import appeng.api.networking.events.MENetworkChannelsChanged;
|
||||||
|
import appeng.api.networking.events.MENetworkEventSubscribe;
|
||||||
import appeng.api.networking.security.BaseActionSource;
|
import appeng.api.networking.security.BaseActionSource;
|
||||||
import appeng.api.networking.security.MachineSource;
|
import appeng.api.networking.security.MachineSource;
|
||||||
import appeng.api.networking.ticking.IGridTickable;
|
import appeng.api.networking.ticking.IGridTickable;
|
||||||
|
@ -76,6 +78,25 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
|
||||||
MEInventoryHandler handler = null;
|
MEInventoryHandler handler = null;
|
||||||
|
|
||||||
int handlerHash = 0;
|
int handlerHash = 0;
|
||||||
|
boolean wasActive = false;
|
||||||
|
|
||||||
|
@MENetworkEventSubscribe
|
||||||
|
public void updateChannels(MENetworkChannelsChanged chann)
|
||||||
|
{
|
||||||
|
boolean currentActive = proxy.isActive();
|
||||||
|
if ( wasActive != currentActive )
|
||||||
|
{
|
||||||
|
wasActive = currentActive;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
proxy.getGrid().postEvent( new MENetworkCellArrayUpdate() );
|
||||||
|
}
|
||||||
|
catch (GridAccessException e)
|
||||||
|
{
|
||||||
|
// :P
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onActivate(EntityPlayer player, Vec3 pos)
|
public boolean onActivate(EntityPlayer player, Vec3 pos)
|
||||||
|
@ -332,7 +353,7 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
|
||||||
@Override
|
@Override
|
||||||
public List<IMEInventoryHandler> getCellArray(StorageChannel channel)
|
public List<IMEInventoryHandler> getCellArray(StorageChannel channel)
|
||||||
{
|
{
|
||||||
IMEInventoryHandler out = getHandler();
|
IMEInventoryHandler out = proxy.isActive() ? getHandler() : null;
|
||||||
if ( out == null )
|
if ( out == null )
|
||||||
return Arrays.asList( new IMEInventoryHandler[] {} );
|
return Arrays.asList( new IMEInventoryHandler[] {} );
|
||||||
return Arrays.asList( new IMEInventoryHandler[] { out } );
|
return Arrays.asList( new IMEInventoryHandler[] { out } );
|
||||||
|
@ -354,7 +375,8 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
proxy.getStorage().postAlterationOfStoredItems( StorageChannel.ITEMS, change, mySrc );
|
if ( proxy.isActive() )
|
||||||
|
proxy.getStorage().postAlterationOfStoredItems( StorageChannel.ITEMS, change, mySrc );
|
||||||
}
|
}
|
||||||
catch (GridAccessException e)
|
catch (GridAccessException e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,9 @@ public class PartConversionMonitor extends PartStorageMonitor
|
||||||
if ( Platform.isClient() )
|
if ( Platform.isClient() )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if ( !proxy.isActive() )
|
||||||
|
return false;
|
||||||
|
|
||||||
boolean ModeB = false;
|
boolean ModeB = false;
|
||||||
|
|
||||||
ItemStack item = player.getCurrentEquippedItem();
|
ItemStack item = player.getCurrentEquippedItem();
|
||||||
|
|
|
@ -123,6 +123,9 @@ public class PartStorageMonitor extends PartMonitor implements IPartStorageMonit
|
||||||
if ( Platform.isClient() )
|
if ( Platform.isClient() )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if ( !proxy.isActive() )
|
||||||
|
return false;
|
||||||
|
|
||||||
TileEntity te = this.tile;
|
TileEntity te = this.tile;
|
||||||
ItemStack eq = player.getCurrentEquippedItem();
|
ItemStack eq = player.getCurrentEquippedItem();
|
||||||
if ( Platform.isWrench( player, eq, te.xCoord, te.yCoord, te.zCoord ) )
|
if ( Platform.isWrench( player, eq, te.xCoord, te.yCoord, te.zCoord ) )
|
||||||
|
|
|
@ -6,6 +6,7 @@ import net.minecraft.util.Vec3;
|
||||||
import appeng.api.storage.IMEMonitor;
|
import appeng.api.storage.IMEMonitor;
|
||||||
import appeng.api.storage.IStorageMonitorable;
|
import appeng.api.storage.IStorageMonitorable;
|
||||||
import appeng.client.texture.CableBusTextures;
|
import appeng.client.texture.CableBusTextures;
|
||||||
|
import appeng.core.localization.PlayerMessages;
|
||||||
import appeng.core.sync.GuiBridge;
|
import appeng.core.sync.GuiBridge;
|
||||||
import appeng.me.GridAccessException;
|
import appeng.me.GridAccessException;
|
||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
|
@ -29,7 +30,16 @@ public class PartTerminal extends PartMonitor implements IStorageMonitorable
|
||||||
if ( Platform.isClient() )
|
if ( Platform.isClient() )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
Platform.openGUI( player, getHost().getTile(), side, GuiBridge.GUI_ME );
|
if ( proxy.isActive() )
|
||||||
|
Platform.openGUI( player, getHost().getTile(), side, GuiBridge.GUI_ME );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( proxy.isPowered() )
|
||||||
|
player.sendChatToPlayer( PlayerMessages.CommunicationError.get() );
|
||||||
|
else
|
||||||
|
player.sendChatToPlayer( PlayerMessages.MachineNotPowered.get() );
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan
|
||||||
long lastStateChange = 0;
|
long lastStateChange = 0;
|
||||||
int priority = 0;
|
int priority = 0;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
|
boolean wasActive = false;
|
||||||
|
|
||||||
private void recalculateDisplay()
|
private void recalculateDisplay()
|
||||||
{
|
{
|
||||||
|
@ -78,11 +79,25 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan
|
||||||
for (int x = 0; x < getCellCount(); x++)
|
for (int x = 0; x < getCellCount(); x++)
|
||||||
state |= (getCellStatus( x ) << (3 * x));
|
state |= (getCellStatus( x ) << (3 * x));
|
||||||
|
|
||||||
if ( getAECurrentPower() > 64 || gridProxy.isActive() )
|
if ( isPowered() )
|
||||||
state |= 0x40;
|
state |= 0x40;
|
||||||
else
|
else
|
||||||
state &= ~0x40;
|
state &= ~0x40;
|
||||||
|
|
||||||
|
boolean currentActive = gridProxy.isActive();
|
||||||
|
if ( wasActive != currentActive )
|
||||||
|
{
|
||||||
|
wasActive = currentActive;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
gridProxy.getGrid().postEvent( new MENetworkCellArrayUpdate() );
|
||||||
|
}
|
||||||
|
catch (GridAccessException e)
|
||||||
|
{
|
||||||
|
// :P
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( oldState != state )
|
if ( oldState != state )
|
||||||
markForUpdate();
|
markForUpdate();
|
||||||
}
|
}
|
||||||
|
@ -153,7 +168,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan
|
||||||
for (int x = 0; x < getCellCount(); x++)
|
for (int x = 0; x < getCellCount(); x++)
|
||||||
state |= (getCellStatus( x ) << (3 * x));
|
state |= (getCellStatus( x ) << (3 * x));
|
||||||
|
|
||||||
if ( getAECurrentPower() > 64 || gridProxy.isActive() )
|
if ( isPowered() )
|
||||||
state |= 0x40;
|
state |= 0x40;
|
||||||
else
|
else
|
||||||
state &= ~0x40;
|
state &= ~0x40;
|
||||||
|
@ -259,7 +274,8 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
gridProxy.getStorage().postAlterationOfStoredItems( chan, change, mySrc );
|
if ( gridProxy.isActive() )
|
||||||
|
gridProxy.getStorage().postAlterationOfStoredItems( chan, change, mySrc );
|
||||||
}
|
}
|
||||||
catch (GridAccessException e)
|
catch (GridAccessException e)
|
||||||
{
|
{
|
||||||
|
@ -453,14 +469,18 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan
|
||||||
@Override
|
@Override
|
||||||
public List<IMEInventoryHandler> getCellArray(StorageChannel channel)
|
public List<IMEInventoryHandler> getCellArray(StorageChannel channel)
|
||||||
{
|
{
|
||||||
try
|
if ( gridProxy.isActive() )
|
||||||
{
|
{
|
||||||
return Arrays.asList( new IMEInventoryHandler[] { getHandler( channel ) } );
|
try
|
||||||
}
|
{
|
||||||
catch (AENoHandler e)
|
return Arrays.asList( new IMEInventoryHandler[] { getHandler( channel ) } );
|
||||||
{
|
}
|
||||||
return new ArrayList();
|
catch (AENoHandler e)
|
||||||
|
{
|
||||||
|
// :P
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return new ArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,6 +3,7 @@ package appeng.tile.storage;
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -53,16 +54,31 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
|
||||||
long lastStateChange = 0;
|
long lastStateChange = 0;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
int priority = 0;
|
int priority = 0;
|
||||||
|
boolean wasActive = false;
|
||||||
|
|
||||||
private void recalculateDisplay()
|
private void recalculateDisplay()
|
||||||
{
|
{
|
||||||
int oldState = 0;
|
int oldState = 0;
|
||||||
|
|
||||||
if ( gridProxy.isActive() )
|
boolean currentActive;
|
||||||
|
if ( currentActive = gridProxy.isActive() )
|
||||||
state |= 0x80000000;
|
state |= 0x80000000;
|
||||||
else
|
else
|
||||||
state &= ~0x80000000;
|
state &= ~0x80000000;
|
||||||
|
|
||||||
|
if ( wasActive != currentActive )
|
||||||
|
{
|
||||||
|
wasActive = currentActive;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
gridProxy.getGrid().postEvent( new MENetworkCellArrayUpdate() );
|
||||||
|
}
|
||||||
|
catch (GridAccessException e)
|
||||||
|
{
|
||||||
|
// :P
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int x = 0; x < getCellCount(); x++)
|
for (int x = 0; x < getCellCount(); x++)
|
||||||
state |= (getCellStatus( x ) << (3 * x));
|
state |= (getCellStatus( x ) << (3 * x));
|
||||||
|
|
||||||
|
@ -240,8 +256,12 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
|
||||||
@Override
|
@Override
|
||||||
public List<IMEInventoryHandler> getCellArray(StorageChannel channel)
|
public List<IMEInventoryHandler> getCellArray(StorageChannel channel)
|
||||||
{
|
{
|
||||||
updateState();
|
if ( gridProxy.isActive() )
|
||||||
return (List) (channel == StorageChannel.ITEMS ? items : fluids);
|
{
|
||||||
|
updateState();
|
||||||
|
return (List) (channel == StorageChannel.ITEMS ? items : fluids);
|
||||||
|
}
|
||||||
|
return new ArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue