diff --git a/src/main/java/appeng/core/sync/GuiBridge.java b/src/main/java/appeng/core/sync/GuiBridge.java index ecf75e639..d4e14bea0 100644 --- a/src/main/java/appeng/core/sync/GuiBridge.java +++ b/src/main/java/appeng/core/sync/GuiBridge.java @@ -180,7 +180,7 @@ public enum GuiBridge implements IGuiHandler GUI_PATTERN_TERMINAL( ContainerPatternTerm.class, PartPatternTerminal.class, GuiHostType.WORLD, SecurityPermissions.CRAFT ), - GUI_FLUID_TERMINAL( ContainerFluidTerminal.class, PartFluidTerminal.class, GuiHostType.WORLD, SecurityPermissions.BUILD ), + GUI_FLUID_TERMINAL( ContainerFluidTerminal.class, ITerminalHost.class, GuiHostType.WORLD, SecurityPermissions.BUILD ), // extends (Container/Gui) + Bus GUI_LEVEL_EMITTER( ContainerLevelEmitter.class, PartLevelEmitter.class, GuiHostType.WORLD, SecurityPermissions.BUILD ), diff --git a/src/main/java/appeng/fluids/client/gui/GuiFluidTerminal.java b/src/main/java/appeng/fluids/client/gui/GuiFluidTerminal.java index 719398fd1..558701c9f 100644 --- a/src/main/java/appeng/fluids/client/gui/GuiFluidTerminal.java +++ b/src/main/java/appeng/fluids/client/gui/GuiFluidTerminal.java @@ -36,6 +36,7 @@ import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.common.Loader; import appeng.api.config.Settings; +import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEFluidStack; import appeng.api.util.IConfigManager; import appeng.api.util.IConfigurableObject; @@ -54,7 +55,6 @@ import appeng.core.sync.packets.PacketInventoryAction; import appeng.core.sync.packets.PacketValueConfig; import appeng.fluids.container.ContainerFluidTerminal; import appeng.fluids.container.slots.IMEFluidSlot; -import appeng.fluids.parts.PartFluidTerminal; import appeng.helpers.InventoryAction; import appeng.util.IConfigManagerHost; import appeng.util.Platform; @@ -75,16 +75,21 @@ public class GuiFluidTerminal extends AEBaseMEGui implements ISortSource, IConfi private int rows = 6; private int perRow = 9; - protected PartFluidTerminal terminal; + protected ITerminalHost terminal; private MEGuiTextField searchField; private GuiImgButton sortByBox; private GuiImgButton sortDirBox; - public GuiFluidTerminal( InventoryPlayer inventoryPlayer, PartFluidTerminal terminal ) + public GuiFluidTerminal( final InventoryPlayer inventoryPlayer, final ITerminalHost te ) { - super( new ContainerFluidTerminal( inventoryPlayer, terminal ) ); - this.terminal = terminal; + this( inventoryPlayer, te, new ContainerFluidTerminal( inventoryPlayer, te ) ); + } + + public GuiFluidTerminal( InventoryPlayer inventoryPlayer, final ITerminalHost te, final ContainerFluidTerminal c ) + { + super( c ); + this.terminal = te; this.xSize = 185; this.ySize = 222; final GuiScrollbar scrollbar = new GuiScrollbar(); @@ -235,7 +240,7 @@ public class GuiFluidTerminal extends AEBaseMEGui implements ISortSource, IConfi if( mouseButton == 0 && meSlot.getHasStack() ) { this.container.setTargetStack( meSlot.getAEFluidStack() ); - AELog.info( "mouse0 GUI STACK SIZE %s", meSlot.getAEFluidStack().getStackSize() ); + AELog.debug( "mouse0 GUI STACK SIZE %s", meSlot.getAEFluidStack().getStackSize() ); NetworkHandler.instance().sendToServer( new PacketInventoryAction( InventoryAction.FILL_ITEM, slot.slotNumber, 0 ) ); } else @@ -243,7 +248,7 @@ public class GuiFluidTerminal extends AEBaseMEGui implements ISortSource, IConfi this.container.setTargetStack( meSlot.getAEFluidStack() ); if( meSlot.getAEFluidStack() != null ) { - AELog.info( "mouse1 GUI STACK SIZE %s", meSlot.getAEFluidStack().getStackSize() ); + AELog.debug( "mouse1 GUI STACK SIZE %s", meSlot.getAEFluidStack().getStackSize() ); } NetworkHandler.instance().sendToServer( new PacketInventoryAction( InventoryAction.EMPTY_ITEM, slot.slotNumber, 0 ) ); } diff --git a/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java b/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java index 19451e5f2..6dbd4a407 100644 --- a/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java +++ b/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java @@ -44,12 +44,16 @@ import appeng.api.config.SortDir; import appeng.api.config.SortOrder; import appeng.api.config.ViewItems; import appeng.api.networking.IGrid; +import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IEnergyGrid; +import appeng.api.networking.energy.IEnergySource; +import appeng.api.networking.security.IActionHost; import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; +import appeng.api.storage.ITerminalHost; import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IItemList; @@ -63,7 +67,6 @@ import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketMEFluidInventoryUpdate; import appeng.core.sync.packets.PacketTargetFluidStack; import appeng.core.sync.packets.PacketValueConfig; -import appeng.fluids.parts.PartFluidTerminal; import appeng.fluids.util.AEFluidStack; import appeng.helpers.InventoryAction; import appeng.me.helpers.ChannelPowerSrc; @@ -84,14 +87,14 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa private final IItemList fluids = AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ).createList(); @GuiSync( 99 ) public boolean hasPower = false; - private PartFluidTerminal terminal; + private ITerminalHost terminal; private IConfigManager serverCM; private IConfigManagerHost gui; private IGridNode networkNode; // Holds the fluid the client wishes to extract, or null for insert private IAEFluidStack clientRequestedTargetFluid = null; - public ContainerFluidTerminal( InventoryPlayer ip, PartFluidTerminal terminal ) + public ContainerFluidTerminal( InventoryPlayer ip, ITerminalHost terminal ) { super( ip, terminal ); this.terminal = terminal; @@ -104,19 +107,42 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa { this.serverCM = terminal.getConfigManager(); this.monitor = terminal.getInventory( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); + if( this.monitor != null ) - { + { this.monitor.addListener( this, null ); - final IGridNode node = terminal.getGridNode( AEPartLocation.INTERNAL ); - if( node != null ) + + + if( terminal instanceof IEnergySource ) { - this.networkNode = node; - final IGrid g = node.getGrid(); - if( g != null ) - { - this.setPowerSource( new ChannelPowerSrc( this.networkNode, g.getCache( IEnergyGrid.class ) ) ); - } + this.setPowerSource( (IEnergySource) terminal ); } + else if( terminal instanceof IGridHost || terminal instanceof IActionHost ) + { + final IGridNode node; + if( terminal instanceof IGridHost ) + { + node = ( (IGridHost) terminal ).getGridNode( AEPartLocation.INTERNAL ); + } + else if( terminal instanceof IActionHost ) + { + node = ( (IActionHost) terminal ).getActionableNode(); + } + else + { + node = null; + } + + if( node != null ) + { + this.networkNode = node; + final IGrid g = node.getGrid(); + if( g != null ) + { + this.setPowerSource( new ChannelPowerSrc( this.networkNode, (IEnergySource) g.getCache( IEnergyGrid.class ) ) ); + } + } + } } } else @@ -348,7 +374,7 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa { AEFluidStack stack = (AEFluidStack) this.clientRequestedTargetFluid.copy(); - AELog.info( "Filling %s with %s, %s mb", held.getDisplayName(), this.clientRequestedTargetFluid.getFluidStack().getLocalizedName(), + AELog.debug( "Filling %s with %s, %s mb", held.getDisplayName(), this.clientRequestedTargetFluid.getFluidStack().getLocalizedName(), stack.getStackSize() ); if( isBucket && stack.getStackSize() < 1000 ) @@ -394,7 +420,7 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa else if( action == InventoryAction.EMPTY_ITEM ) { // Empty held item - AELog.info( "Emptying %s", held.getDisplayName() ); + AELog.debug( "Emptying %s", held.getDisplayName() ); // See how much we can drain from the item FluidStack extract = fh.drain( Integer.MAX_VALUE, false ); diff --git a/src/main/java/appeng/fluids/registries/BasicFluidCellHandler.java b/src/main/java/appeng/fluids/registries/BasicFluidCellHandler.java index 1e7d78e9a..f50941c73 100644 --- a/src/main/java/appeng/fluids/registries/BasicFluidCellHandler.java +++ b/src/main/java/appeng/fluids/registries/BasicFluidCellHandler.java @@ -21,6 +21,7 @@ package appeng.fluids.registries; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import appeng.api.AEApi; import appeng.api.implementations.tiles.IChestOrDrive; @@ -33,8 +34,11 @@ import appeng.api.storage.ISaveProvider; import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.data.IAEStack; +import appeng.api.util.AEPartLocation; +import appeng.core.sync.GuiBridge; import appeng.fluids.storage.FluidCellInventory; import appeng.fluids.storage.FluidCellInventoryHandler; +import appeng.util.Platform; public class BasicFluidCellHandler implements ICellHandler @@ -51,7 +55,7 @@ public class BasicFluidCellHandler implements ICellHandler { if( channel == AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) { - return FluidCellInventory.getCell( is, container ); + return (IMEInventoryHandler) FluidCellInventory.getCell( is, container ); } return null; @@ -62,8 +66,7 @@ public class BasicFluidCellHandler implements ICellHandler { if( chan == AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) { - //TODO: Open Gui - //Platform.openGUI( player, (TileEntity) chest, AEPartLocation.fromFacing( chest.getUp() ), GuiBridge.GUI_ME ); + Platform.openGUI( player, (TileEntity) chest, AEPartLocation.fromFacing( chest.getUp() ), GuiBridge.GUI_FLUID_TERMINAL ); } } diff --git a/src/main/java/appeng/fluids/storage/FluidCellInventory.java b/src/main/java/appeng/fluids/storage/FluidCellInventory.java index f187a0dc6..aef1d46c9 100644 --- a/src/main/java/appeng/fluids/storage/FluidCellInventory.java +++ b/src/main/java/appeng/fluids/storage/FluidCellInventory.java @@ -57,7 +57,7 @@ public class FluidCellInventory extends AbstractCellInventory super( o, container, 8000 ); } - public static IMEInventoryHandler getCell( final ItemStack o, final ISaveProvider container2 ) + public static IMEInventoryHandler getCell( final ItemStack o, final ISaveProvider container2 ) { try { diff --git a/src/main/java/appeng/me/storage/AbstractCellInventory.java b/src/main/java/appeng/me/storage/AbstractCellInventory.java index 5680f2bc1..c254ca5bb 100644 --- a/src/main/java/appeng/me/storage/AbstractCellInventory.java +++ b/src/main/java/appeng/me/storage/AbstractCellInventory.java @@ -60,7 +60,7 @@ public abstract class AbstractCellInventory> implements IC private int storedItemCount = 0; protected IItemList cellItems; protected ItemStack i; - protected IStorageCell cellType; + protected IStorageCell cellType; protected final int itemsPerByte; protected AbstractCellInventory( final NBTTagCompound data, final ISaveProvider container, final int itemsPerByte ) @@ -96,7 +96,7 @@ public abstract class AbstractCellInventory> implements IC final Item type = this.i.getItem(); if( type instanceof IStorageCell ) { - this.cellType = (IStorageCell) this.i.getItem(); + this.cellType = (IStorageCell) this.i.getItem(); this.maxItemTypes = this.cellType.getTotalTypes( this.i ); } @@ -126,7 +126,7 @@ public abstract class AbstractCellInventory> implements IC this.cellItems = null; } - protected boolean isEmpty( final IMEInventory meInventory ) + protected boolean isEmpty( final IMEInventory meInventory ) { return meInventory.getAvailableItems( getChannel().createList() ).isEmpty(); } @@ -224,7 +224,7 @@ public abstract class AbstractCellInventory> implements IC protected abstract void loadCellItem( NBTTagCompound compoundTag, int stackSize ); @Override - public IItemList getAvailableItems( final IItemList out ) + public IItemList getAvailableItems( final IItemList out ) { for( final T item : this.getCellItems() ) { @@ -234,7 +234,6 @@ public abstract class AbstractCellInventory> implements IC return out; } - @Override public ItemStack getItemStack() { @@ -317,7 +316,6 @@ public abstract class AbstractCellInventory> implements IC return basedOnStorage > baseOnTotal ? baseOnTotal : basedOnStorage; } - @Override public long getUsedBytes() { @@ -359,4 +357,3 @@ public abstract class AbstractCellInventory> implements IC return 3; } } - diff --git a/src/main/java/appeng/tile/storage/TileChest.java b/src/main/java/appeng/tile/storage/TileChest.java index 5b8c96ab0..b2f68fc54 100644 --- a/src/main/java/appeng/tile/storage/TileChest.java +++ b/src/main/java/appeng/tile/storage/TileChest.java @@ -121,8 +121,8 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal private AEColor paintedColor = AEColor.TRANSPARENT; private boolean isCached = false; private ICellHandler cellHandler; - private MEMonitorHandler itemCell; - private MEMonitorHandler fluidCell; + private MEMonitorHandler itemCell; + private MEMonitorHandler fluidCell; private Accessor accessor; private IFluidHandler fluidHandler; @@ -210,7 +210,8 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal return 1; } - private IMEInventoryHandler getHandler( final IStorageChannel channel ) throws ChestNoHandler + @SuppressWarnings( "unchecked" ) + private > IMEInventoryHandler getHandler( final IStorageChannel channel ) throws ChestNoHandler { if( !this.isCached ) { @@ -248,10 +249,6 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal this.itemCell = this.wrap( itemCell ); this.fluidCell = this.wrap( fluidCell ); - if( this.itemCell != null ) - { - - } this.accessor = new Accessor(); if( this.fluidCell != null ) @@ -268,15 +265,15 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { throw NO_HANDLER; } - return this.itemCell; + return (IMEInventoryHandler) this.itemCell; } - else if( channel == AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) && this.fluidCell != null ) + else if( channel == AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) { if( this.fluidCell == null ) { throw NO_HANDLER; } - return this.fluidCell; + return (IMEInventoryHandler) this.fluidCell; } @@ -290,11 +287,11 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal return null; } - final MEInventoryHandler ih = new MEInventoryHandler( h, h.getChannel() ); + final MEInventoryHandler ih = new MEInventoryHandler( h, h.getChannel() ); ih.setPriority( this.priority ); final MEMonitorHandler g = new ChestMonitorHandler( ih ); - g.addListener( new ChestNetNotifier( h.getChannel() ), g ); + g.addListener( new ChestNetNotifier( h.getChannel() ), g ); return g; } @@ -314,10 +311,10 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { try { - final IMEInventoryHandler handler = this.getHandler( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ); + final IMEInventoryHandler handler = this.getHandler( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ); if( handler instanceof ChestMonitorHandler ) { - return ch.getStatusForCell( cell, ( (ChestMonitorHandler) handler ).getInternalHandler() ); + return ch.getStatusForCell( cell, ( (ChestMonitorHandler) handler ).getInternalHandler() ); } } catch( final ChestNoHandler ignored ) @@ -326,10 +323,11 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal try { - final IMEInventoryHandler handler = this.getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); + final IMEInventoryHandler handler = this + .getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); if( handler instanceof ChestMonitorHandler ) { - return ch.getStatusForCell( cell, ( (ChestMonitorHandler) handler ).getInternalHandler() ); + return ch.getStatusForCell( cell, ( (ChestMonitorHandler) handler ).getInternalHandler() ); } } catch( final ChestNoHandler ignored ) @@ -541,16 +539,17 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal this.recalculateDisplay(); } + @SuppressWarnings( "unchecked" ) @Override public > IMEMonitor getInventory( IStorageChannel channel ) { if( channel == AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ) { - return this.itemCell; + return (IMEMonitor) this.itemCell; } else if( channel == AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) { - return this.fluidCell; + return (IMEMonitor) this.fluidCell; } return null; } @@ -642,7 +641,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { try { - final IMEInventoryHandler handler = this.getHandler( channel ); + final IMEInventoryHandler handler = this.getHandler( channel ); if( handler != null ) { @@ -722,7 +721,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { try { - final IMEInventoryHandler invHandler = this.getHandler( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ); + final IMEInventoryHandler invHandler = this.getHandler( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ); if( ch != null && invHandler != null ) { ch.openChestGui( p, this, ch, invHandler, cell, AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ); @@ -736,7 +735,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal try { - final IMEInventoryHandler invHandler = this.getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); + final IMEInventoryHandler invHandler = this.getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); if( ch != null && invHandler != null ) { ch.openChestGui( p, this, ch, invHandler, cell, AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); @@ -774,7 +773,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal @Override public void saveChanges( final IMEInventory cellInventory ) { - this.world.markChunkDirty( this.pos, this ); + this.markDirty(); } private static class ChestNoHandler extends Exception @@ -785,9 +784,9 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal private class ChestNetNotifier> implements IMEMonitorHandlerReceiver { - private final IStorageChannel chan; + private final IStorageChannel chan; - public ChestNetNotifier( final IStorageChannel chan ) + public ChestNetNotifier( final IStorageChannel chan ) { this.chan = chan; } @@ -847,7 +846,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal final IMEInventoryHandler h = this.getHandler(); if( h instanceof MEInventoryHandler ) { - return (IMEInventoryHandler) ( (MEInventoryHandler) h ).getInternal(); + return (IMEInventoryHandler) ( (MEInventoryHandler) h ).getInternal(); } return this.getHandler(); } @@ -962,11 +961,12 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { try { - final IMEInventoryHandler h = TileChest.this.getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); + final IMEInventoryHandler h = TileChest.this + .getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); TileChest.this.extractAEPower( req, Actionable.MODULATE, PowerMultiplier.CONFIG ); - final IAEStack results = h.injectItems( AEFluidStack.fromFluidStack( resource ), doFill ? Actionable.MODULATE : Actionable.SIMULATE, + final IAEFluidStack results = h.injectItems( AEFluidStack.fromFluidStack( resource ), doFill ? Actionable.MODULATE : Actionable.SIMULATE, TileChest.this.mySrc ); if( results == null ) @@ -1000,7 +1000,8 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { try { - final IMEInventoryHandler h = TileChest.this.getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); + final IMEInventoryHandler h = TileChest.this + .getHandler( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ); if( h.getChannel() == AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) { @@ -1060,12 +1061,15 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal @Override public boolean allowInsert( IItemHandler inv, int slot, ItemStack stack ) { - return AEApi.instance().registries().cell().getCellInventory( stack, TileChest.this, - AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ) != null || AEApi.instance() - .registries() - .cell() - .getCellInventory( stack, TileChest.this, - AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) != null; + return AEApi.instance() + .registries() + .cell() + .getCellInventory( stack, TileChest.this, + AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ) != null || AEApi.instance() + .registries() + .cell() + .getCellInventory( stack, TileChest.this, + AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) != null; } }