Basic reformat, hit once, hope never again

This commit is contained in:
thatsIch
2015-04-03 08:54:31 +02:00
parent 4ff1631f89
commit d34c988c88
886 changed files with 31400 additions and 30990 deletions
File diff suppressed because it is too large Load Diff
@@ -18,9 +18,11 @@
package appeng.container;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
/*
* Totally useless container that does nothing.
*/
@@ -28,9 +30,8 @@ public class ContainerNull extends Container
{
@Override
public boolean canInteractWith(EntityPlayer entityplayer)
public boolean canInteractWith( EntityPlayer entityplayer )
{
return false;
}
}
@@ -18,32 +18,34 @@
package appeng.container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.parts.IPart;
public class ContainerOpenContext
{
final public boolean isItem;
public World w;
public int x;
public int y;
public int z;
public ForgeDirection side;
final public boolean isItem;
public ContainerOpenContext(Object myItem) {
public ContainerOpenContext( Object myItem )
{
boolean isWorld = myItem instanceof IPart || myItem instanceof TileEntity;
this.isItem = !isWorld;
}
public TileEntity getTile()
{
if ( this.isItem )
if( this.isItem )
return null;
return this.w.getTileEntity( this.x, this.y, this.z );
}
}
@@ -18,12 +18,14 @@
package appeng.container.guisync;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface GuiSync {
@Retention( RetentionPolicy.RUNTIME )
public @interface GuiSync
{
int value();
}
@@ -18,6 +18,7 @@
package appeng.container.guisync;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.EnumSet;
@@ -31,17 +32,17 @@ import appeng.core.sync.network.NetworkHandler;
import appeng.core.sync.packets.PacketProgressBar;
import appeng.core.sync.packets.PacketValueConfig;
public class SyncData
{
private Object clientVersion;
private final AEBaseContainer source;
private final Field field;
private final int channel;
private Object clientVersion;
public SyncData(AEBaseContainer container, Field field, GuiSync annotation) {
public SyncData( AEBaseContainer container, Field field, GuiSync annotation )
{
this.clientVersion = null;
this.source = container;
this.field = field;
@@ -53,129 +54,48 @@ public class SyncData
return this.channel;
}
public void tick(ICrafting c)
public void tick( ICrafting c )
{
try
{
Object val = this.field.get( this.source );
if ( val != null && this.clientVersion == null )
if( val != null && this.clientVersion == null )
this.send( c, val );
else if ( !val.equals( this.clientVersion ) )
else if( !val.equals( this.clientVersion ) )
this.send( c, val );
}
catch (IllegalArgumentException e)
catch( IllegalArgumentException e )
{
AELog.error( e );
}
catch (IllegalAccessException e)
catch( IllegalAccessException e )
{
AELog.error( e );
}
catch (IOException e)
catch( IOException e )
{
AELog.error( e );
}
}
public void update(Object val)
private void send( ICrafting o, Object val ) throws IOException
{
try
if( val instanceof String )
{
Object oldValue = this.field.get( this.source );
if ( val instanceof String )
this.updateString( oldValue, (String) val );
else
this.updateValue( oldValue, (Long) val );
}
catch (IllegalArgumentException e)
{
AELog.error( e );
}
catch (IllegalAccessException e)
{
AELog.error( e );
}
}
private void updateString(Object oldValue, String val)
{
try
{
this.field.set( this.source, val );
}
catch (IllegalArgumentException e)
{
AELog.error( e );
}
catch (IllegalAccessException e)
{
AELog.error( e );
}
}
private void updateValue(Object oldValue, long val)
{
try
{
if ( this.field.getType().isEnum() )
{
EnumSet<? extends Enum> valList = EnumSet.allOf( (Class<? extends Enum>) this.field.getType() );
for (Enum e : valList)
{
if ( e.ordinal() == val )
{
this.field.set( this.source, e );
break;
}
}
}
else
{
if ( this.field.getType().equals( int.class ) )
this.field.set( this.source, (int) val );
else if ( this.field.getType().equals( long.class ) )
this.field.set( this.source, val );
else if ( this.field.getType().equals( boolean.class ) )
this.field.set( this.source, val == 1 );
else if ( this.field.getType().equals( Integer.class ) )
this.field.set( this.source, (int) val );
else if ( this.field.getType().equals( Long.class ) )
this.field.set( this.source, val );
else if ( this.field.getType().equals( Boolean.class ) )
this.field.set( this.source, val == 1 );
}
this.source.onUpdate( this.field.getName(), oldValue, this.field.get( this.source ) );
}
catch (IllegalArgumentException e)
{
AELog.error( e );
}
catch (IllegalAccessException e)
{
AELog.error( e );
}
}
private void send(ICrafting o, Object val) throws IOException
{
if ( val instanceof String )
{
if ( o instanceof EntityPlayerMP )
if( o instanceof EntityPlayerMP )
NetworkHandler.instance.sendTo( new PacketValueConfig( "SyncDat." + this.channel, (String) val ), (EntityPlayerMP) o );
}
else if ( this.field.getType().isEnum() )
else if( this.field.getType().isEnum() )
{
o.sendProgressBarUpdate( this.source, this.channel, ((Enum) val).ordinal() );
o.sendProgressBarUpdate( this.source, this.channel, ( (Enum) val ).ordinal() );
}
else if ( val instanceof Long || val.getClass() == long.class )
else if( val instanceof Long || val.getClass() == long.class )
{
NetworkHandler.instance.sendTo( new PacketProgressBar( this.channel, (Long) val ), (EntityPlayerMP) o );
}
else if ( val instanceof Boolean || val.getClass() == boolean.class )
else if( val instanceof Boolean || val.getClass() == boolean.class )
{
o.sendProgressBarUpdate( this.source, this.channel, ((Boolean) val) ? 1 : 0 );
o.sendProgressBarUpdate( this.source, this.channel, ( (Boolean) val ) ? 1 : 0 );
}
else
{
@@ -184,4 +104,84 @@ public class SyncData
this.clientVersion = val;
}
public void update( Object val )
{
try
{
Object oldValue = this.field.get( this.source );
if( val instanceof String )
this.updateString( oldValue, (String) val );
else
this.updateValue( oldValue, (Long) val );
}
catch( IllegalArgumentException e )
{
AELog.error( e );
}
catch( IllegalAccessException e )
{
AELog.error( e );
}
}
private void updateString( Object oldValue, String val )
{
try
{
this.field.set( this.source, val );
}
catch( IllegalArgumentException e )
{
AELog.error( e );
}
catch( IllegalAccessException e )
{
AELog.error( e );
}
}
private void updateValue( Object oldValue, long val )
{
try
{
if( this.field.getType().isEnum() )
{
EnumSet<? extends Enum> valList = EnumSet.allOf( (Class<? extends Enum>) this.field.getType() );
for( Enum e : valList )
{
if( e.ordinal() == val )
{
this.field.set( this.source, e );
break;
}
}
}
else
{
if( this.field.getType().equals( int.class ) )
this.field.set( this.source, (int) val );
else if( this.field.getType().equals( long.class ) )
this.field.set( this.source, val );
else if( this.field.getType().equals( boolean.class ) )
this.field.set( this.source, val == 1 );
else if( this.field.getType().equals( Integer.class ) )
this.field.set( this.source, (int) val );
else if( this.field.getType().equals( Long.class ) )
this.field.set( this.source, val );
else if( this.field.getType().equals( Boolean.class ) )
this.field.set( this.source, val == 1 );
}
this.source.onUpdate( this.field.getName(), oldValue, this.field.get( this.source ) );
}
catch( IllegalArgumentException e )
{
AELog.error( e );
}
catch( IllegalAccessException e )
{
AELog.error( e );
}
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import java.util.Iterator;
import net.minecraft.entity.player.EntityPlayer;
@@ -45,33 +46,32 @@ import appeng.tile.misc.TileCellWorkbench;
import appeng.util.Platform;
import appeng.util.iterators.NullIterator;
public class ContainerCellWorkbench extends ContainerUpgradeable
{
final TileCellWorkbench workBench;
final AppEngNullInventory ni = new AppEngNullInventory();
@GuiSync( 2 )
public CopyMode copyMode = CopyMode.CLEAR_ON_REMOVE;
IInventory UpgradeInventoryWrapper;
ItemStack prevStack = null;
int lastUpgrades = 0;
ItemStack LastCell;
public IInventory getCellUpgradeInventory()
public ContainerCellWorkbench( InventoryPlayer ip, TileCellWorkbench te )
{
IInventory ri = this.workBench.getCellUpgradeInventory();
return ri == null ? this.ni : ri;
super( ip, te );
this.workBench = te;
}
public void setFuzzy(FuzzyMode valueOf)
public void setFuzzy( FuzzyMode valueOf )
{
ICellWorkbenchItem cwi = this.workBench.getCell();
if ( cwi != null )
if( cwi != null )
cwi.setFuzzyMode( this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 ), valueOf );
}
private FuzzyMode getFuzzyMode()
{
ICellWorkbenchItem cwi = this.workBench.getCell();
if ( cwi != null )
return cwi.getFuzzyMode( this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 ) );
return FuzzyMode.IGNORE_ALL;
}
public void nextCopyMode()
{
this.workBench.getConfigManager().putSetting( Settings.COPY_MODE, Platform.nextEnum( this.getCopyMode() ) );
@@ -82,6 +82,161 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
return (CopyMode) this.workBench.getConfigManager().getSetting( Settings.COPY_MODE );
}
@Override
protected int getHeight()
{
return 251;
}
@Override
protected void setupConfig()
{
int x = 8;
int y = 29;
int offset = 0;
IInventory cell = this.upgradeable.getInventoryByName( "cell" );
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.WORKBENCH_CELL, cell, 0, 152, 8, this.invPlayer ) );
IInventory inv = this.upgradeable.getInventoryByName( "config" );
this.UpgradeInventoryWrapper = new Upgrades();// Platform.isServer() ? new Upgrades() : new AppEngInternalInventory(
// null, 3 * 8 );
for( int w = 0; w < 7; w++ )
for( int z = 0; z < 9; z++ )
{
this.addSlotToContainer( new SlotFakeTypeOnly( inv, offset, x + z * 18, y + w * 18 ) );
offset++;
}
for( int zz = 0; zz < 3; zz++ )
for( int z = 0; z < 8; z++ )
{
int iSLot = zz * 8 + z;
this.addSlotToContainer( new OptionalSlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, this.UpgradeInventoryWrapper, this, iSLot, 187 + zz * 18, 8 + 18 * z, iSLot, this.invPlayer ) );
}
/*
* if ( supportCapacity() ) { for (int w = 0; w < 2; w++) for (int z = 0; z < 9; z++) addSlotToContainer( new
* OptionalSlotFakeTypeOnly( inv, this, offset++, x, y, z, w, 1 ) );
*
* for (int w = 0; w < 2; w++) for (int z = 0; z < 9; z++) addSlotToContainer( new OptionalSlotFakeTypeOnly(
* inv, this, offset++, x, y, z, w + 2, 2 ) );
*
* for (int w = 0; w < 2; w++) for (int z = 0; z < 9; z++) addSlotToContainer( new OptionalSlotFakeTypeOnly(
* inv, this, offset++, x, y, z, w + 4, 3 ) ); }
*/
}
@Override
public int availableUpgrades()
{
ItemStack is = this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 );
if( this.prevStack != is )
{
this.prevStack = is;
return this.lastUpgrades = this.getCellUpgradeInventory().getSizeInventory();
}
return this.lastUpgrades;
}
@Override
public void detectAndSendChanges()
{
ItemStack is = this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 );
if( Platform.isServer() )
{
for( Object crafter : this.crafters )
{
ICrafting icrafting = (ICrafting) crafter;
if( this.prevStack != is )
{
// if the bars changed an item was probably made, so just send shit!
for( Object s : this.inventorySlots )
{
if( s instanceof OptionalSlotRestrictedInput )
{
OptionalSlotRestrictedInput sri = (OptionalSlotRestrictedInput) s;
icrafting.sendSlotContents( this, sri.slotNumber, sri.getStack() );
}
}
( (EntityPlayerMP) icrafting ).isChangingQuantityOnly = false;
}
}
this.copyMode = this.getCopyMode();
this.fzMode = this.getFuzzyMode();
}
this.prevStack = is;
this.standardDetectAndSendChanges();
}
@Override
public boolean isSlotEnabled( int idx )
{
return idx < this.availableUpgrades();
}
public IInventory getCellUpgradeInventory()
{
IInventory ri = this.workBench.getCellUpgradeInventory();
return ri == null ? this.ni : ri;
}
@Override
public void onUpdate( String field, Object oldValue, Object newValue )
{
if( field.equals( "copyMode" ) )
this.workBench.getConfigManager().putSetting( Settings.COPY_MODE, this.copyMode );
super.onUpdate( field, oldValue, newValue );
}
public void clear()
{
IInventory inv = this.upgradeable.getInventoryByName( "config" );
for( int x = 0; x < inv.getSizeInventory(); x++ )
inv.setInventorySlotContents( x, null );
this.detectAndSendChanges();
}
private FuzzyMode getFuzzyMode()
{
ICellWorkbenchItem cwi = this.workBench.getCell();
if( cwi != null )
return cwi.getFuzzyMode( this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 ) );
return FuzzyMode.IGNORE_ALL;
}
public void partition()
{
IInventory inv = this.upgradeable.getInventoryByName( "config" );
IMEInventory<IAEItemStack> cellInv = AEApi.instance().registries().cell().getCellInventory( this.upgradeable.getInventoryByName( "cell" ).getStackInSlot( 0 ), null, StorageChannel.ITEMS );
Iterator<IAEItemStack> i = new NullIterator<IAEItemStack>();
if( cellInv != null )
{
IItemList<IAEItemStack> list = cellInv.getAvailableItems( AEApi.instance().storage().createItemList() );
i = list.iterator();
}
for( int x = 0; x < inv.getSizeInventory(); x++ )
{
if( i.hasNext() )
{
ItemStack g = i.next().getItemStack();
g.stackSize = 1;
inv.setInventorySlotContents( x, g );
}
else
inv.setInventorySlotContents( x, null );
}
this.detectAndSendChanges();
}
class Upgrades implements IInventory
{
@@ -92,13 +247,13 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
}
@Override
public ItemStack getStackInSlot(int i)
public ItemStack getStackInSlot( int i )
{
return ContainerCellWorkbench.this.getCellUpgradeInventory().getStackInSlot( i );
}
@Override
public ItemStack decrStackSize(int i, int j)
public ItemStack decrStackSize( int i, int j )
{
IInventory inv = ContainerCellWorkbench.this.getCellUpgradeInventory();
ItemStack is = inv.decrStackSize( i, j );
@@ -107,7 +262,7 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
}
@Override
public ItemStack getStackInSlotOnClosing(int i)
public ItemStack getStackInSlotOnClosing( int i )
{
IInventory inv = ContainerCellWorkbench.this.getCellUpgradeInventory();
ItemStack is = inv.getStackInSlotOnClosing( i );
@@ -116,7 +271,7 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
}
@Override
public void setInventorySlotContents(int i, ItemStack itemstack)
public void setInventorySlotContents( int i, ItemStack itemstack )
{
IInventory inv = ContainerCellWorkbench.this.getCellUpgradeInventory();
inv.setInventorySlotContents( i, itemstack );
@@ -148,7 +303,7 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer)
public boolean isUseableByPlayer( EntityPlayer entityplayer )
{
return false;
}
@@ -164,168 +319,9 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack)
public boolean isItemValidForSlot( int i, ItemStack itemstack )
{
return ContainerCellWorkbench.this.getCellUpgradeInventory().isItemValidForSlot( i, itemstack );
}
}
IInventory UpgradeInventoryWrapper;
ItemStack prevStack = null;
int lastUpgrades = 0;
@GuiSync(2)
public CopyMode copyMode = CopyMode.CLEAR_ON_REMOVE;
public ContainerCellWorkbench(InventoryPlayer ip, TileCellWorkbench te) {
super( ip, te );
this.workBench = te;
}
@Override
protected int getHeight()
{
return 251;
}
@Override
public int availableUpgrades()
{
ItemStack is = this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 );
if ( this.prevStack != is )
{
this.prevStack = is;
return this.lastUpgrades = this.getCellUpgradeInventory().getSizeInventory();
}
return this.lastUpgrades;
}
@Override
public boolean isSlotEnabled(int idx)
{
return idx < this.availableUpgrades();
}
@Override
protected void setupConfig()
{
int x = 8;
int y = 29;
int offset = 0;
IInventory cell = this.upgradeable.getInventoryByName( "cell" );
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.WORKBENCH_CELL, cell, 0, 152, 8, this.invPlayer ) );
IInventory inv = this.upgradeable.getInventoryByName( "config" );
this.UpgradeInventoryWrapper = new Upgrades();// Platform.isServer() ? new Upgrades() : new AppEngInternalInventory(
// null, 3 * 8 );
for (int w = 0; w < 7; w++)
for (int z = 0; z < 9; z++)
{
this.addSlotToContainer( new SlotFakeTypeOnly( inv, offset, x + z * 18, y + w * 18 ) );
offset++;
}
for (int zz = 0; zz < 3; zz++)
for (int z = 0; z < 8; z++)
{
int iSLot = zz * 8 + z;
this.addSlotToContainer( new OptionalSlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, this.UpgradeInventoryWrapper, this, iSLot, 187 + zz * 18,
8 + 18 * z, iSLot, this.invPlayer ) );
}
/*
* if ( supportCapacity() ) { for (int w = 0; w < 2; w++) for (int z = 0; z < 9; z++) addSlotToContainer( new
* OptionalSlotFakeTypeOnly( inv, this, offset++, x, y, z, w, 1 ) );
*
* for (int w = 0; w < 2; w++) for (int z = 0; z < 9; z++) addSlotToContainer( new OptionalSlotFakeTypeOnly(
* inv, this, offset++, x, y, z, w + 2, 2 ) );
*
* for (int w = 0; w < 2; w++) for (int z = 0; z < 9; z++) addSlotToContainer( new OptionalSlotFakeTypeOnly(
* inv, this, offset++, x, y, z, w + 4, 3 ) ); }
*/
}
ItemStack LastCell;
@Override
public void onUpdate(String field, Object oldValue, Object newValue)
{
if ( field.equals( "copyMode" ) )
this.workBench.getConfigManager().putSetting( Settings.COPY_MODE, this.copyMode );
super.onUpdate( field, oldValue, newValue );
}
@Override
public void detectAndSendChanges()
{
ItemStack is = this.workBench.getInventoryByName( "cell" ).getStackInSlot( 0 );
if ( Platform.isServer() )
{
for (Object crafter : this.crafters)
{
ICrafting icrafting = (ICrafting) crafter;
if ( this.prevStack != is )
{
// if the bars changed an item was probably made, so just send shit!
for (Object s : this.inventorySlots)
{
if ( s instanceof OptionalSlotRestrictedInput )
{
OptionalSlotRestrictedInput sri = (OptionalSlotRestrictedInput) s;
icrafting.sendSlotContents( this, sri.slotNumber, sri.getStack() );
}
}
((EntityPlayerMP) icrafting).isChangingQuantityOnly = false;
}
}
this.copyMode = this.getCopyMode();
this.fzMode = this.getFuzzyMode();
}
this.prevStack = is;
this.standardDetectAndSendChanges();
}
public void clear()
{
IInventory inv = this.upgradeable.getInventoryByName( "config" );
for (int x = 0; x < inv.getSizeInventory(); x++)
inv.setInventorySlotContents( x, null );
this.detectAndSendChanges();
}
public void partition()
{
IInventory inv = this.upgradeable.getInventoryByName( "config" );
IMEInventory<IAEItemStack> cellInv = AEApi.instance().registries().cell()
.getCellInventory( this.upgradeable.getInventoryByName( "cell" ).getStackInSlot( 0 ), null, StorageChannel.ITEMS );
Iterator<IAEItemStack> i = new NullIterator<IAEItemStack>();
if ( cellInv != null )
{
IItemList<IAEItemStack> list = cellInv.getAvailableItems( AEApi.instance().storage().createItemList() );
i = list.iterator();
}
for (int x = 0; x < inv.getSizeInventory(); x++)
{
if ( i.hasNext() )
{
ItemStack g = i.next().getItemStack();
g.stackSize = 1;
inv.setInventorySlotContents( x, g );
}
else
inv.setInventorySlotContents( x, null );
}
this.detectAndSendChanges();
}
}
@@ -18,18 +18,21 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.storage.TileChest;
public class ContainerChest extends AEBaseContainer
{
final TileChest chest;
public ContainerChest(InventoryPlayer ip, TileChest chest) {
public ContainerChest( InventoryPlayer ip, TileChest chest )
{
super( ip, chest, null );
this.chest = chest;
@@ -37,5 +40,4 @@ public class ContainerChest extends AEBaseContainer
this.bindPlayerInventory( ip, 0, 166 - /* height of player inventory */82 );
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.api.config.CondenserOutput;
@@ -30,18 +31,26 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.misc.TileCondenser;
import appeng.util.Platform;
public class ContainerCondenser extends AEBaseContainer implements IProgressProvider
{
final TileCondenser condenser;
@GuiSync( 0 )
public long requiredEnergy = 0;
@GuiSync( 1 )
public long storedPower = 0;
@GuiSync( 2 )
public CondenserOutput output = CondenserOutput.TRASH;
public ContainerCondenser(InventoryPlayer ip, TileCondenser condenser) {
public ContainerCondenser( InventoryPlayer ip, TileCondenser condenser )
{
super( ip, condenser, null );
this.condenser = condenser;
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.TRASH, condenser, 0, 51, 52, ip ) );
this.addSlotToContainer( new SlotOutput( condenser, 1, 105, 52, -1 ) );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.STORAGE_COMPONENT, condenser.getInternalInventory(), 2, 101, 26, ip )).setStackLimit( 1 ) );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.STORAGE_COMPONENT, condenser.getInternalInventory(), 2, 101, 26, ip ) ).setStackLimit( 1 ) );
this.bindPlayerInventory( ip, 0, 197 - /* height of player inventory */82 );
}
@@ -49,7 +58,7 @@ public class ContainerCondenser extends AEBaseContainer implements IProgressProv
@Override
public void detectAndSendChanges()
{
if ( Platform.isServer() )
if( Platform.isServer() )
{
double maxStorage = this.condenser.getStorage();
double requiredEnergy = this.condenser.getRequiredPower();
@@ -62,15 +71,6 @@ public class ContainerCondenser extends AEBaseContainer implements IProgressProv
super.detectAndSendChanges();
}
@GuiSync(0)
public long requiredEnergy = 0;
@GuiSync(1)
public long storedPower = 0;
@GuiSync(2)
public CondenserOutput output = CondenserOutput.TRASH;
@Override
public int getCurrentProgress()
{
@@ -82,5 +82,4 @@ public class ContainerCondenser extends AEBaseContainer implements IProgressProv
{
return (int) this.requiredEnergy;
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.world.World;
@@ -33,15 +34,16 @@ import appeng.container.AEBaseContainer;
import appeng.container.slot.SlotInaccessible;
import appeng.tile.inventory.AppEngInternalInventory;
public class ContainerCraftAmount extends AEBaseContainer
{
final ITerminalHost priHost;
public IAEItemStack whatToMake;
public final Slot craftingItem;
final ITerminalHost priHost;
public IAEItemStack whatToMake;
public ContainerCraftAmount(InventoryPlayer ip, ITerminalHost te) {
public ContainerCraftAmount( InventoryPlayer ip, ITerminalHost te )
{
super( ip, te );
this.priHost = te;
@@ -58,7 +60,7 @@ public class ContainerCraftAmount extends AEBaseContainer
public IGrid getGrid()
{
IActionHost h = ((IActionHost) this.getTarget());
IActionHost h = ( (IActionHost) this.getTarget() );
return h.getActionableNode().getGrid();
}
@@ -71,5 +73,4 @@ public class ContainerCraftAmount extends AEBaseContainer
{
return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() );
}
}
@@ -18,13 +18,12 @@
package appeng.container.implementations;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.concurrent.Future;
import com.google.common.collect.ImmutableSet;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
@@ -33,6 +32,8 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import com.google.common.collect.ImmutableSet;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.SecurityPermissions;
@@ -62,78 +63,51 @@ import appeng.parts.reporting.PartPatternTerminal;
import appeng.parts.reporting.PartTerminal;
import appeng.util.Platform;
public class ContainerCraftConfirm extends AEBaseContainer
{
public final ArrayList<CraftingCPURecord> cpus = new ArrayList<CraftingCPURecord>();
final ITerminalHost priHost;
public Future<ICraftingJob> job;
public ICraftingJob result;
@GuiSync(0)
@GuiSync( 0 )
public long bytesUsed;
@GuiSync(1)
@GuiSync( 1 )
public long cpuBytesAvail;
@GuiSync(2)
@GuiSync( 2 )
public int cpuCoProcessors;
@GuiSync(3)
@GuiSync( 3 )
public boolean autoStart = false;
@GuiSync(4)
@GuiSync( 4 )
public boolean simulation = true;
@GuiSync(5)
@GuiSync( 5 )
public int selectedCpu = -1;
@GuiSync(6)
@GuiSync( 6 )
public boolean noCPU = true;
@GuiSync(7)
@GuiSync( 7 )
public String myName = "";
protected long cpuIdx = Long.MIN_VALUE;
public final ArrayList<CraftingCPURecord> cpus = new ArrayList<CraftingCPURecord>();
public ContainerCraftConfirm(InventoryPlayer ip, ITerminalHost te) {
public ContainerCraftConfirm( InventoryPlayer ip, ITerminalHost te )
{
super( ip, te );
this.priHost = te;
}
private void sendCPUs()
public void cycleCpu( boolean next )
{
Collections.sort( this.cpus );
if ( this.selectedCpu >= this.cpus.size() )
{
this.selectedCpu = -1;
this.cpuBytesAvail = 0;
this.cpuCoProcessors = 0;
this.myName = "";
}
else if ( this.selectedCpu != -1 )
{
this.myName = this.cpus.get( this.selectedCpu ).myName;
this.cpuBytesAvail = this.cpus.get( this.selectedCpu ).size;
this.cpuCoProcessors = this.cpus.get( this.selectedCpu ).processors;
}
}
public void cycleCpu(boolean next)
{
if ( next )
if( next )
this.selectedCpu++;
else
this.selectedCpu--;
if ( this.selectedCpu < -1 )
if( this.selectedCpu < -1 )
this.selectedCpu = this.cpus.size() - 1;
else if ( this.selectedCpu >= this.cpus.size() )
else if( this.selectedCpu >= this.cpus.size() )
this.selectedCpu = -1;
if ( this.selectedCpu == -1 )
if( this.selectedCpu == -1 )
{
this.cpuBytesAvail = 0;
this.cpuCoProcessors = 0;
@@ -150,7 +124,7 @@ public class ContainerCraftConfirm extends AEBaseContainer
@Override
public void detectAndSendChanges()
{
if ( Platform.isClient() )
if( Platform.isClient() )
return;
ICraftingGrid cc = this.getGrid().getCache( ICraftingGrid.class );
@@ -158,28 +132,28 @@ public class ContainerCraftConfirm extends AEBaseContainer
int matches = 0;
boolean changed = false;
for (ICraftingCPU c : cpuSet)
for( ICraftingCPU c : cpuSet )
{
boolean found = false;
for (CraftingCPURecord ccr : this.cpus)
if ( ccr.cpu == c )
for( CraftingCPURecord ccr : this.cpus )
if( ccr.cpu == c )
found = true;
boolean matched = this.cpuMatches( c );
if ( matched )
if( matched )
matches++;
if ( found == !matched )
if( found == !matched )
changed = true;
}
if ( changed || this.cpus.size() != matches )
if( changed || this.cpus.size() != matches )
{
this.cpus.clear();
for (ICraftingCPU c : cpuSet)
for( ICraftingCPU c : cpuSet )
{
if ( this.cpuMatches( c ) )
if( this.cpuMatches( c ) )
this.cpus.add( new CraftingCPURecord( c.getAvailableStorage(), c.getCoProcessors(), c ) );
}
@@ -190,16 +164,16 @@ public class ContainerCraftConfirm extends AEBaseContainer
super.detectAndSendChanges();
if ( this.job != null && this.job.isDone() )
if( this.job != null && this.job.isDone() )
{
try
{
this.result = this.job.get();
if ( !this.result.isSimulation() )
if( !this.result.isSimulation() )
{
this.simulation = false;
if ( this.autoStart )
if( this.autoStart )
{
this.startJob();
return;
@@ -219,7 +193,7 @@ public class ContainerCraftConfirm extends AEBaseContainer
this.bytesUsed = this.result.getByteTotal();
for (IAEItemStack out : plan)
for( IAEItemStack out : plan )
{
IAEItemStack m = null;
@@ -234,12 +208,12 @@ public class ContainerCraftConfirm extends AEBaseContainer
IStorageGrid sg = this.getGrid().getCache( IStorageGrid.class );
IMEInventory<IAEItemStack> items = sg.getItemInventory();
if ( c != null && this.result.isSimulation() )
if( c != null && this.result.isSimulation() )
{
m = o.copy();
o = items.extractItems( o, Actionable.SIMULATE, this.mySrc );
if ( o == null )
if( o == null )
{
o = m.copy();
o.setStackSize( 0 );
@@ -248,33 +222,33 @@ public class ContainerCraftConfirm extends AEBaseContainer
m.setStackSize( m.getStackSize() - o.getStackSize() );
}
if ( o.getStackSize() > 0 )
if( o.getStackSize() > 0 )
a.appendItem( o );
if ( p.getStackSize() > 0 )
if( p.getStackSize() > 0 )
b.appendItem( p );
if ( c != null && m != null && m.getStackSize() > 0 )
if( c != null && m != null && m.getStackSize() > 0 )
c.appendItem( m );
}
for (Object g : this.crafters)
for( Object g : this.crafters )
{
if ( g instanceof EntityPlayer )
if( g instanceof EntityPlayer )
{
NetworkHandler.instance.sendTo( a, (EntityPlayerMP) g );
NetworkHandler.instance.sendTo( b, (EntityPlayerMP) g );
if ( c != null )
if( c != null )
NetworkHandler.instance.sendTo( c, (EntityPlayerMP) g );
}
}
}
catch (IOException e)
catch( IOException e )
{
// :P
}
}
catch (Throwable e)
catch( Throwable e )
{
this.getPlayerInv().player.addChatMessage( new ChatComponentText( "Error: " + e.toString() ) );
AELog.error( e );
@@ -287,34 +261,59 @@ public class ContainerCraftConfirm extends AEBaseContainer
this.verifyPermissions( SecurityPermissions.CRAFT, false );
}
private boolean cpuMatches(ICraftingCPU c)
public IGrid getGrid()
{
IActionHost h = ( (IActionHost) this.getTarget() );
return h.getActionableNode().getGrid();
}
private boolean cpuMatches( ICraftingCPU c )
{
return c.getAvailableStorage() >= this.bytesUsed && !c.isBusy();
}
private void sendCPUs()
{
Collections.sort( this.cpus );
if( this.selectedCpu >= this.cpus.size() )
{
this.selectedCpu = -1;
this.cpuBytesAvail = 0;
this.cpuCoProcessors = 0;
this.myName = "";
}
else if( this.selectedCpu != -1 )
{
this.myName = this.cpus.get( this.selectedCpu ).myName;
this.cpuBytesAvail = this.cpus.get( this.selectedCpu ).size;
this.cpuCoProcessors = this.cpus.get( this.selectedCpu ).processors;
}
}
public void startJob()
{
GuiBridge OriginalGui = null;
IActionHost ah = this.getActionHost();
if ( ah instanceof WirelessTerminalGuiObject )
if( ah instanceof WirelessTerminalGuiObject )
OriginalGui = GuiBridge.GUI_WIRELESS_TERM;
if ( ah instanceof PartTerminal )
if( ah instanceof PartTerminal )
OriginalGui = GuiBridge.GUI_ME;
if ( ah instanceof PartCraftingTerminal )
if( ah instanceof PartCraftingTerminal )
OriginalGui = GuiBridge.GUI_CRAFTING_TERMINAL;
if ( ah instanceof PartPatternTerminal )
if( ah instanceof PartPatternTerminal )
OriginalGui = GuiBridge.GUI_PATTERN_TERMINAL;
if ( this.result != null && !this.simulation )
if( this.result != null && !this.simulation )
{
ICraftingGrid cc = this.getGrid().getCache( ICraftingGrid.class );
ICraftingLink g = cc.submitJob( this.result, null, this.selectedCpu == -1 ? null : this.cpus.get( this.selectedCpu ).cpu, true, this.getActionSrc() );
this.autoStart = false;
if ( g != null && OriginalGui != null && this.openContext != null )
if( g != null && OriginalGui != null && this.openContext != null )
{
NetworkHandler.instance.sendTo( new PacketSwitchGuis( OriginalGui ), (EntityPlayerMP) this.invPlayer.player );
@@ -324,41 +323,35 @@ public class ContainerCraftConfirm extends AEBaseContainer
}
}
@Override
public void onContainerClosed(EntityPlayer par1EntityPlayer)
public BaseActionSource getActionSrc()
{
super.onContainerClosed( par1EntityPlayer );
if ( this.job != null )
{
this.job.cancel( true );
this.job = null;
}
return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() );
}
@Override
public void removeCraftingFromCrafters(ICrafting c)
public void removeCraftingFromCrafters( ICrafting c )
{
super.removeCraftingFromCrafters( c );
if ( this.job != null )
if( this.job != null )
{
this.job.cancel( true );
this.job = null;
}
}
public IGrid getGrid()
@Override
public void onContainerClosed( EntityPlayer par1EntityPlayer )
{
IActionHost h = ((IActionHost) this.getTarget());
return h.getActionableNode().getGrid();
super.onContainerClosed( par1EntityPlayer );
if( this.job != null )
{
this.job.cancel( true );
this.job = null;
}
}
public World getWorld()
{
return this.getPlayerInv().player.worldObj;
}
public BaseActionSource getActionSrc()
{
return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() );
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
@@ -47,62 +48,74 @@ import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.tile.crafting.TileCraftingTile;
import appeng.util.Platform;
public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorHandlerReceiver<IAEItemStack>, ICustomNameObject
{
final IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
protected IGrid network;
CraftingCPUCluster monitor = null;
String cpuName = null;
protected IGrid network;
int delay = 40;
final IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
public ContainerCraftingCPU(InventoryPlayer ip, Object te) {
public ContainerCraftingCPU( InventoryPlayer ip, Object te )
{
super( ip, te );
IGridHost host = (IGridHost) (te instanceof IGridHost ? te : null);
IGridHost host = (IGridHost) ( te instanceof IGridHost ? te : null );
if ( host != null )
if( host != null )
{
this.findNode( host, ForgeDirection.UNKNOWN );
for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS)
for( ForgeDirection d : ForgeDirection.VALID_DIRECTIONS )
this.findNode( host, d );
}
if ( te instanceof TileCraftingTile )
this.setCPU( (ICraftingCPU) ((TileCraftingTile) te).getCluster() );
if( te instanceof TileCraftingTile )
this.setCPU( (ICraftingCPU) ( (TileCraftingTile) te ).getCluster() );
if ( this.network == null && Platform.isServer() )
if( this.network == null && Platform.isServer() )
this.isContainerValid = false;
}
protected void setCPU(ICraftingCPU c)
private void findNode( IGridHost host, ForgeDirection d )
{
if ( c == this.monitor )
if( this.network == null )
{
IGridNode node = host.getGridNode( d );
if( node != null )
this.network = node.getGrid();
}
}
protected void setCPU( ICraftingCPU c )
{
if( c == this.monitor )
return;
if ( this.monitor != null )
if( this.monitor != null )
this.monitor.removeListener( this );
for (Object g : this.crafters)
for( Object g : this.crafters )
{
if ( g instanceof EntityPlayer )
if( g instanceof EntityPlayer )
{
try
{
NetworkHandler.instance.sendTo( new PacketValueConfig( "CraftingStatus", "Clear" ), (EntityPlayerMP) g );
}
catch (IOException e)
catch( IOException e )
{
AELog.error( e );
}
}
}
if ( c instanceof CraftingCPUCluster )
if( c instanceof CraftingCPUCluster )
{
this.cpuName = c.getName();
this.monitor = (CraftingCPUCluster) c;
if ( this.monitor != null )
if( this.monitor != null )
{
this.list.resetStatus();
this.monitor.getListOfItem( this.list, CraftingItemList.ALL );
@@ -118,45 +131,33 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
public void cancelCrafting()
{
if ( this.monitor != null )
if( this.monitor != null )
{
this.monitor.cancel();
}
}
private void findNode(IGridHost host, ForgeDirection d)
{
if ( this.network == null )
{
IGridNode node = host.getGridNode( d );
if ( node != null )
this.network = node.getGrid();
}
}
int delay = 40;
@Override
public void onContainerClosed(EntityPlayer player)
public void removeCraftingFromCrafters( ICrafting c )
{
super.onContainerClosed( player );
if ( this.monitor != null )
super.removeCraftingFromCrafters( c );
if( this.crafters.isEmpty() && this.monitor != null )
this.monitor.removeListener( this );
}
@Override
public void removeCraftingFromCrafters(ICrafting c)
public void onContainerClosed( EntityPlayer player )
{
super.removeCraftingFromCrafters( c );
if ( this.crafters.isEmpty() && this.monitor != null )
super.onContainerClosed( player );
if( this.monitor != null )
this.monitor.removeListener( this );
}
@Override
public void detectAndSendChanges()
{
if ( Platform.isServer() && this.monitor != null && !this.list.isEmpty() )
if( Platform.isServer() && this.monitor != null && !this.list.isEmpty() )
{
try
{
@@ -164,7 +165,7 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
PacketMEInventoryUpdate b = new PacketMEInventoryUpdate( (byte) 1 );
PacketMEInventoryUpdate c = new PacketMEInventoryUpdate( (byte) 2 );
for (IAEItemStack out : this.list)
for( IAEItemStack out : this.list )
{
a.appendItem( this.monitor.getItemStack( out, CraftingItemList.STORAGE ) );
b.appendItem( this.monitor.getItemStack( out, CraftingItemList.ACTIVE ) );
@@ -173,40 +174,39 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
this.list.resetStatus();
for (Object g : this.crafters)
for( Object g : this.crafters )
{
if ( g instanceof EntityPlayer )
if( g instanceof EntityPlayer )
{
if ( !a.isEmpty() )
if( !a.isEmpty() )
NetworkHandler.instance.sendTo( a, (EntityPlayerMP) g );
if ( !b.isEmpty() )
if( !b.isEmpty() )
NetworkHandler.instance.sendTo( b, (EntityPlayerMP) g );
if ( !c.isEmpty() )
if( !c.isEmpty() )
NetworkHandler.instance.sendTo( c, (EntityPlayerMP) g );
}
}
}
catch (IOException e)
catch( IOException e )
{
// :P
}
}
super.detectAndSendChanges();
}
@Override
public boolean isValid(Object verificationToken)
public boolean isValid( Object verificationToken )
{
return true;
}
@Override
public void postChange(IBaseMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change, BaseActionSource actionSource)
public void postChange( IBaseMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change, BaseActionSource actionSource )
{
for (IAEItemStack is : change)
for( IAEItemStack is : change )
{
is = is.copy();
is.setStackSize( 1 );
@@ -18,56 +18,34 @@
package appeng.container.implementations;
import java.util.ArrayList;
import java.util.Collections;
import com.google.common.collect.ImmutableSet;
import net.minecraft.entity.player.InventoryPlayer;
import com.google.common.collect.ImmutableSet;
import appeng.api.networking.crafting.ICraftingCPU;
import appeng.api.networking.crafting.ICraftingGrid;
import appeng.api.storage.ITerminalHost;
import appeng.container.guisync.GuiSync;
public class ContainerCraftingStatus extends ContainerCraftingCPU
{
@GuiSync(5)
public final ArrayList<CraftingCPURecord> cpus = new ArrayList<CraftingCPURecord>();
@GuiSync( 5 )
public int selectedCpu = -1;
@GuiSync(6)
@GuiSync( 6 )
public boolean noCPU = true;
@GuiSync(7)
@GuiSync( 7 )
public String myName = "";
public final ArrayList<CraftingCPURecord> cpus = new ArrayList<CraftingCPURecord>();
private void sendCPUs()
public ContainerCraftingStatus( InventoryPlayer ip, ITerminalHost te )
{
Collections.sort( this.cpus );
if ( this.selectedCpu >= this.cpus.size() )
{
this.selectedCpu = -1;
this.myName = "";
}
else if ( this.selectedCpu != -1 )
{
this.myName = this.cpus.get( this.selectedCpu ).myName;
}
if ( this.selectedCpu == -1 && this.cpus.size() > 0 )
this.selectedCpu = 0;
if ( this.selectedCpu != -1 )
{
if ( this.cpus.get( this.selectedCpu ).cpu != this.monitor )
this.setCPU( this.cpus.get( this.selectedCpu ).cpu );
}
else
this.setCPU( null );
super( ip, te );
}
@Override
@@ -78,28 +56,28 @@ public class ContainerCraftingStatus extends ContainerCraftingCPU
int matches = 0;
boolean changed = false;
for (ICraftingCPU c : cpuSet)
for( ICraftingCPU c : cpuSet )
{
boolean found = false;
for (CraftingCPURecord ccr : this.cpus)
if ( ccr.cpu == c )
for( CraftingCPURecord ccr : this.cpus )
if( ccr.cpu == c )
found = true;
boolean matched = this.cpuMatches( c );
if ( matched )
if( matched )
matches++;
if ( found == !matched )
if( found == !matched )
changed = true;
}
if ( changed || this.cpus.size() != matches )
if( changed || this.cpus.size() != matches )
{
this.cpus.clear();
for (ICraftingCPU c : cpuSet)
for( ICraftingCPU c : cpuSet )
{
if ( this.cpuMatches( c ) )
if( this.cpuMatches( c ) )
this.cpus.add( new CraftingCPURecord( c.getAvailableStorage(), c.getCoProcessors(), c ) );
}
@@ -111,31 +89,53 @@ public class ContainerCraftingStatus extends ContainerCraftingCPU
super.detectAndSendChanges();
}
private boolean cpuMatches(ICraftingCPU c)
private boolean cpuMatches( ICraftingCPU c )
{
return c.isBusy();
}
public ContainerCraftingStatus(InventoryPlayer ip, ITerminalHost te) {
super( ip, te );
private void sendCPUs()
{
Collections.sort( this.cpus );
if( this.selectedCpu >= this.cpus.size() )
{
this.selectedCpu = -1;
this.myName = "";
}
else if( this.selectedCpu != -1 )
{
this.myName = this.cpus.get( this.selectedCpu ).myName;
}
if( this.selectedCpu == -1 && this.cpus.size() > 0 )
this.selectedCpu = 0;
if( this.selectedCpu != -1 )
{
if( this.cpus.get( this.selectedCpu ).cpu != this.monitor )
this.setCPU( this.cpus.get( this.selectedCpu ).cpu );
}
else
this.setCPU( null );
}
public void cycleCpu(boolean next)
public void cycleCpu( boolean next )
{
if ( next )
if( next )
this.selectedCpu++;
else
this.selectedCpu--;
if ( this.selectedCpu < -1 )
if( this.selectedCpu < -1 )
this.selectedCpu = this.cpus.size() - 1;
else if ( this.selectedCpu >= this.cpus.size() )
else if( this.selectedCpu >= this.cpus.size() )
this.selectedCpu = -1;
if ( this.selectedCpu == -1 && this.cpus.size() > 0 )
if( this.selectedCpu == -1 && this.cpus.size() > 0 )
this.selectedCpu = 0;
if ( this.selectedCpu == -1 )
if( this.selectedCpu == -1 )
{
this.myName = "";
this.setCPU( null );
@@ -146,5 +146,4 @@ public class ContainerCraftingStatus extends ContainerCraftingCPU
this.setCPU( this.cpus.get( this.selectedCpu ).cpu );
}
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting;
@@ -34,39 +35,24 @@ import appeng.tile.inventory.AppEngInternalInventory;
import appeng.tile.inventory.IAEAppEngInventory;
import appeng.tile.inventory.InvOperation;
public class ContainerCraftingTerm extends ContainerMEMonitorable implements IAEAppEngInventory, IContainerCraftingPacket
{
public final PartCraftingTerminal ct;
final AppEngInternalInventory output = new AppEngInternalInventory( this, 1 );
final SlotCraftingMatrix[] craftingSlots = new SlotCraftingMatrix[9];
final SlotCraftingTerm outputSlot;
public final PartCraftingTerminal ct;
/**
* Callback for when the crafting matrix is changed.
*/
@Override
public void onCraftMatrixChanged(IInventory par1IInventory)
public ContainerCraftingTerm( InventoryPlayer ip, ITerminalHost monitorable )
{
ContainerNull cn = new ContainerNull();
InventoryCrafting ic = new InventoryCrafting( cn, 3, 3 );
for (int x = 0; x < 9; x++)
ic.setInventorySlotContents( x, this.craftingSlots[x].getStack() );
this.outputSlot.putStack( CraftingManager.getInstance().findMatchingRecipe( ic, this.getPlayerInv().player.worldObj ) );
}
public ContainerCraftingTerm(InventoryPlayer ip, ITerminalHost monitorable) {
super( ip, monitorable, false );
this.ct = (PartCraftingTerminal) monitorable;
IInventory crafting = this.ct.getInventoryByName( "crafting" );
for (int y = 0; y < 3; y++)
for (int x = 0; x < 3; x++)
for( int y = 0; y < 3; y++ )
for( int x = 0; x < 3; x++ )
this.addSlotToContainer( this.craftingSlots[x + y * 3] = new SlotCraftingMatrix( this, crafting, x + y * 3, 37 + x * 18, -72 + y * 18 ) );
this.addSlotToContainer( this.outputSlot = new SlotCraftingTerm( this.getPlayerInv().player, this.mySrc, this.powerSrc, monitorable, crafting, crafting, this.output, 131, -72 + 18, this ) );
@@ -76,6 +62,21 @@ public class ContainerCraftingTerm extends ContainerMEMonitorable implements IAE
this.onCraftMatrixChanged( crafting );
}
/**
* Callback for when the crafting matrix is changed.
*/
@Override
public void onCraftMatrixChanged( IInventory par1IInventory )
{
ContainerNull cn = new ContainerNull();
InventoryCrafting ic = new InventoryCrafting( cn, 3, 3 );
for( int x = 0; x < 9; x++ )
ic.setInventorySlotContents( x, this.craftingSlots[x].getStack() );
this.outputSlot.putStack( CraftingManager.getInstance().findMatchingRecipe( ic, this.getPlayerInv().player.worldObj ) );
}
@Override
public void saveChanges()
{
@@ -83,15 +84,15 @@ public class ContainerCraftingTerm extends ContainerMEMonitorable implements IAE
}
@Override
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack)
public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack )
{
}
@Override
public IInventory getInventoryByName(String name)
public IInventory getInventoryByName( String name )
{
if (name.equals("player"))
if( name.equals( "player" ) )
{
return this.invPlayer;
}
@@ -18,28 +18,30 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.storage.TileDrive;
public class ContainerDrive extends AEBaseContainer
{
final TileDrive drive;
public ContainerDrive(InventoryPlayer ip, TileDrive drive) {
public ContainerDrive( InventoryPlayer ip, TileDrive drive )
{
super( ip, drive, null );
this.drive = drive;
for (int y = 0; y < 5; y++)
for (int x = 0; x < 2; x++)
for( int y = 0; y < 5; y++ )
for( int x = 0; x < 2; x++ )
{
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.STORAGE_CELLS, drive, x + y * 2, 71 + x * 18, 14 + y * 18, this.invPlayer ) );
}
this.bindPlayerInventory( ip, 0, 199 - /* height of player inventory */82 );
}
}
@@ -55,26 +55,6 @@ public class ContainerFormationPlane extends ContainerUpgradeable
return 251;
}
@Override
public int availableUpgrades()
{
return 5;
}
@Override
protected boolean supportCapacity()
{
return true;
}
@Override
public boolean isSlotEnabled( int idx )
{
int upgrades = this.upgradeable.getInstalledUpgrades( Upgrades.CAPACITY );
return upgrades > idx;
}
@Override
protected void setupConfig()
{
@@ -82,11 +62,11 @@ public class ContainerFormationPlane extends ContainerUpgradeable
int yo = 23 + 6;
IInventory config = this.upgradeable.getInventoryByName( "config" );
for ( int y = 0; y < 7; y++ )
for( int y = 0; y < 7; y++ )
{
for ( int x = 0; x < 9; x++ )
for( int x = 0; x < 9; x++ )
{
if ( y < 2 )
if( y < 2 )
this.addSlotToContainer( new SlotFakeTypeOnly( config, y * 9 + x, xo + x * 18, yo + y * 18 ) );
else
this.addSlotToContainer( new OptionalSlotFakeTypeOnly( config, this, y * 9 + x, xo, yo, x, y, y - 2 ) );
@@ -101,18 +81,37 @@ public class ContainerFormationPlane extends ContainerUpgradeable
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 4, 187, 8 + 18 * 4, this.invPlayer ) ).setNotDraggable() );
}
@Override
protected boolean supportCapacity()
{
return true;
}
@Override
public int availableUpgrades()
{
return 5;
}
@Override
public void detectAndSendChanges()
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.fzMode = ( FuzzyMode ) this.upgradeable.getConfigManager().getSetting( Settings.FUZZY_MODE );
this.placeMode = ( YesNo ) this.upgradeable.getConfigManager().getSetting( Settings.PLACE_BLOCK );
this.fzMode = (FuzzyMode) this.upgradeable.getConfigManager().getSetting( Settings.FUZZY_MODE );
this.placeMode = (YesNo) this.upgradeable.getConfigManager().getSetting( Settings.PLACE_BLOCK );
}
this.standardDetectAndSendChanges();
}
@Override
public boolean isSlotEnabled( int idx )
{
int upgrades = this.upgradeable.getInstalledUpgrades( Upgrades.CAPACITY );
return upgrades > idx;
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
@@ -26,12 +27,14 @@ import appeng.container.slot.SlotOutput;
import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.grindstone.TileGrinder;
public class ContainerGrinder extends AEBaseContainer
{
final TileGrinder grinder;
public ContainerGrinder(InventoryPlayer ip, TileGrinder grinder) {
public ContainerGrinder( InventoryPlayer ip, TileGrinder grinder )
{
super( ip, grinder, null );
this.grinder = grinder;
@@ -47,5 +50,4 @@ public class ContainerGrinder extends AEBaseContainer
this.bindPlayerInventory( ip, 0, 176 - /* height of player inventory */82 );
}
}
@@ -50,6 +50,12 @@ public class ContainerIOPort extends ContainerUpgradeable
this.ioPort = te;
}
@Override
protected int getHeight()
{
return 166;
}
@Override
protected void setupConfig()
{
@@ -58,14 +64,14 @@ public class ContainerIOPort extends ContainerUpgradeable
IInventory cells = this.upgradeable.getInventoryByName( "cells" );
for ( int y = 0; y < 3; y++ )
for ( int x = 0; x < 2; x++ )
for( int y = 0; y < 3; y++ )
for( int x = 0; x < 2; x++ )
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.STORAGE_CELLS, cells, x + y * 2, offX + x * 18, offY + y * 18, this.invPlayer ) );
offX = 122;
offY = 17;
for ( int y = 0; y < 3; y++ )
for ( int x = 0; x < 2; x++ )
for( int y = 0; y < 3; y++ )
for( int x = 0; x < 2; x++ )
this.addSlotToContainer( new SlotOutput( cells, 6 + x + y * 2, offX + x * 18, offY + y * 18, SlotRestrictedInput.PlacableItemType.STORAGE_CELLS.IIcon ) );
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
@@ -75,9 +81,9 @@ public class ContainerIOPort extends ContainerUpgradeable
}
@Override
protected int getHeight()
protected boolean supportCapacity()
{
return 166;
return false;
}
@Override
@@ -86,18 +92,12 @@ public class ContainerIOPort extends ContainerUpgradeable
return 3;
}
@Override
protected boolean supportCapacity()
{
return false;
}
@Override
public void detectAndSendChanges()
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.opMode = (OperationMode) this.upgradeable.getConfigManager().getSetting( Settings.OPERATION_MODE );
this.fMode = (FullnessMode) this.upgradeable.getConfigManager().getSetting( Settings.FULLNESS_MODE );
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
@@ -33,6 +34,7 @@ import appeng.recipes.handlers.Inscribe.InscriberRecipe;
import appeng.tile.misc.TileInscriber;
import appeng.util.Platform;
public class ContainerInscriber extends ContainerUpgradeable implements IProgressProvider
{
@@ -42,13 +44,13 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
final Slot middle;
final Slot bottom;
@GuiSync(2)
@GuiSync( 2 )
public int maxProcessingTime = -1;
@GuiSync(3)
@GuiSync( 3 )
public int processingTime = -1;
public ContainerInscriber(InventoryPlayer ip, TileInscriber te)
public ContainerInscriber( InventoryPlayer ip, TileInscriber te )
{
super( ip, te );
this.ti = te;
@@ -60,7 +62,6 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
this.addSlotToContainer( new SlotOutput( this.ti, 3, 113, 40, -1 ) );
this.bindPlayerInventory( ip, 0, this.getHeight() - /* height of player inventory */82 );
}
@Override
@@ -70,9 +71,11 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
}
@Override
public int availableUpgrades()
/**
* Overridden super.setupConfig to prevent setting up the fake slots
*/ protected void setupConfig()
{
return 3;
this.setupUpgrades();
}
@Override
@@ -82,92 +85,9 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
}
@Override
/**
* Overridden super.setupConfig to prevent setting up the fake slots
*/
protected void setupConfig()
public int availableUpgrades()
{
this.setupUpgrades();
}
@Override
public boolean isValidForSlot(Slot s, ItemStack is)
{
ItemStack PlateA = this.ti.getStackInSlot( 0 );
ItemStack PlateB = this.ti.getStackInSlot( 1 );
if ( s == this.middle )
{
for (ItemStack i : Inscribe.PLATES )
{
if ( Platform.isSameItemPrecise( i, is ) )
return false;
}
boolean matches = false;
boolean found = false;
for (InscriberRecipe i : Inscribe.RECIPES )
{
boolean matchA = (PlateA == null && i.plateA == null) || (Platform.isSameItemPrecise( PlateA, i.plateA )) && // and...
(PlateB == null && i.plateB == null) | (Platform.isSameItemPrecise( PlateB, i.plateB ));
boolean matchB = (PlateB == null && i.plateA == null) || (Platform.isSameItemPrecise( PlateB, i.plateA )) && // and...
(PlateA == null && i.plateB == null) | (Platform.isSameItemPrecise( PlateA, i.plateB ));
if ( matchA || matchB )
{
matches = true;
for (ItemStack option : i.imprintable)
{
if ( Platform.isSameItemPrecise( is, option ) )
found = true;
}
}
}
if ( matches && !found )
return false;
}
if ( (s == this.top && PlateB != null) || (s == this.bottom && PlateA != null) )
{
boolean isValid = false;
ItemStack otherSlot = null;
if ( s == this.top )
otherSlot = this.bottom.getStack();
else
otherSlot = this.top.getStack();
// name presses
final IItemDefinition namePress = AEApi.instance().definitions().materials().namePress();
if ( namePress.isSameAs( otherSlot ) )
{
return namePress.isSameAs( is );
}
// everything else
for (InscriberRecipe i : Inscribe.RECIPES )
{
if ( Platform.isSameItemPrecise( i.plateA, otherSlot ) )
{
isValid = Platform.isSameItemPrecise( is, i.plateB );
}
else if ( Platform.isSameItemPrecise( i.plateB, otherSlot ) )
{
isValid = Platform.isSameItemPrecise( is, i.plateA );
}
if ( isValid )
break;
}
if ( !isValid )
return false;
}
return true;
return 3;
}
@Override
@@ -175,13 +95,92 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
{
this.standardDetectAndSendChanges();
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.maxProcessingTime = this.ti.maxProcessingTime;
this.processingTime = this.ti.processingTime;
}
}
@Override
public boolean isValidForSlot( Slot s, ItemStack is )
{
ItemStack PlateA = this.ti.getStackInSlot( 0 );
ItemStack PlateB = this.ti.getStackInSlot( 1 );
if( s == this.middle )
{
for( ItemStack i : Inscribe.PLATES )
{
if( Platform.isSameItemPrecise( i, is ) )
return false;
}
boolean matches = false;
boolean found = false;
for( InscriberRecipe i : Inscribe.RECIPES )
{
boolean matchA = ( PlateA == null && i.plateA == null ) || ( Platform.isSameItemPrecise( PlateA, i.plateA ) ) && // and...
( PlateB == null && i.plateB == null ) | ( Platform.isSameItemPrecise( PlateB, i.plateB ) );
boolean matchB = ( PlateB == null && i.plateA == null ) || ( Platform.isSameItemPrecise( PlateB, i.plateA ) ) && // and...
( PlateA == null && i.plateB == null ) | ( Platform.isSameItemPrecise( PlateA, i.plateB ) );
if( matchA || matchB )
{
matches = true;
for( ItemStack option : i.imprintable )
{
if( Platform.isSameItemPrecise( is, option ) )
found = true;
}
}
}
if( matches && !found )
return false;
}
if( ( s == this.top && PlateB != null ) || ( s == this.bottom && PlateA != null ) )
{
boolean isValid = false;
ItemStack otherSlot = null;
if( s == this.top )
otherSlot = this.bottom.getStack();
else
otherSlot = this.top.getStack();
// name presses
final IItemDefinition namePress = AEApi.instance().definitions().materials().namePress();
if( namePress.isSameAs( otherSlot ) )
{
return namePress.isSameAs( is );
}
// everything else
for( InscriberRecipe i : Inscribe.RECIPES )
{
if( Platform.isSameItemPrecise( i.plateA, otherSlot ) )
{
isValid = Platform.isSameItemPrecise( is, i.plateB );
}
else if( Platform.isSameItemPrecise( i.plateB, otherSlot ) )
{
isValid = Platform.isSameItemPrecise( is, i.plateA );
}
if( isValid )
break;
}
if( !isValid )
return false;
}
return true;
}
@Override
public int getCurrentProgress()
{
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.api.config.SecurityPermissions;
@@ -31,31 +32,32 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.helpers.DualityInterface;
import appeng.helpers.IInterfaceHost;
public class ContainerInterface extends ContainerUpgradeable
{
final DualityInterface myDuality;
@GuiSync(3)
@GuiSync( 3 )
public YesNo bMode = YesNo.NO;
@GuiSync(4)
@GuiSync( 4 )
public YesNo iTermMode = YesNo.YES;
public ContainerInterface(InventoryPlayer ip, IInterfaceHost te) {
public ContainerInterface( InventoryPlayer ip, IInterfaceHost te )
{
super( ip, te.getInterfaceDuality().getHost() );
this.myDuality = te.getInterfaceDuality();
for (int x = 0; x < 9; x++)
for( int x = 0; x < 9; x++ )
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.ENCODED_PATTERN, this.myDuality.getPatterns(), x, 8 + 18 * x, 90 + 7, this.invPlayer ) );
for (int x = 0; x < 8; x++)
for( int x = 0; x < 8; x++ )
this.addSlotToContainer( new SlotFake( this.myDuality.getConfig(), x, 17 + 18 * x, 35 ) );
for (int x = 0; x < 8; x++)
for( int x = 0; x < 8; x++ )
this.addSlotToContainer( new SlotNormal( this.myDuality.getStorage(), x, 17 + 18 * x, 35 + 18 ) );
}
@Override
@@ -70,13 +72,6 @@ public class ContainerInterface extends ContainerUpgradeable
this.setupUpgrades();
}
@Override
protected void loadSettingsFromHost(IConfigManager cm)
{
this.bMode = (YesNo) cm.getSetting( Settings.BLOCK );
this.iTermMode = (YesNo) cm.getSetting( Settings.INTERFACE_TERMINAL );
}
@Override
public int availableUpgrades()
{
@@ -89,4 +84,11 @@ public class ContainerInterface extends ContainerUpgradeable
this.verifyPermissions( SecurityPermissions.BUILD, false );
super.detectAndSendChanges();
}
@Override
protected void loadSettingsFromHost( IConfigManager cm )
{
this.bMode = (YesNo) cm.getSetting( Settings.BLOCK );
this.iTermMode = (YesNo) cm.getSetting( Settings.INTERFACE_TERMINAL );
}
}
@@ -53,6 +53,7 @@ import appeng.util.inv.AdaptorIInventory;
import appeng.util.inv.AdaptorPlayerHand;
import appeng.util.inv.WrapperInvSlot;
public class ContainerInterfaceTerminal extends AEBaseContainer
{
@@ -61,61 +62,124 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
*/
static private long autoBase = Long.MIN_VALUE;
static class InvTracker
{
final long which = autoBase++;
final String unlocalizedName;
public InvTracker(DualityInterface dual, IInventory patterns, String unlocalizedName) {
this.server = patterns;
this.client = new AppEngInternalInventory( null, this.server.getSizeInventory() );
this.unlocalizedName = unlocalizedName;
this.sortBy = dual.getSortValue();
}
final IInventory client;
final IInventory server;
public final long sortBy;
}
final Map<IInterfaceHost, InvTracker> diList = new HashMap<IInterfaceHost, InvTracker>();
final Map<Long, InvTracker> byId = new HashMap<Long, InvTracker>();
IGrid g;
NBTTagCompound data = new NBTTagCompound();
public ContainerInterfaceTerminal(InventoryPlayer ip, PartMonitor anchor) {
public ContainerInterfaceTerminal( InventoryPlayer ip, PartMonitor anchor )
{
super( ip, anchor );
if ( Platform.isServer() )
if( Platform.isServer() )
this.g = anchor.getActionableNode().getGrid();
this.bindPlayerInventory( ip, 0, 222 - /* height of player inventory */82 );
}
NBTTagCompound data = new NBTTagCompound();
static class PatternInvSlot extends WrapperInvSlot
@Override
public void detectAndSendChanges()
{
if( Platform.isClient() )
return;
public PatternInvSlot(IInventory inv) {
super( inv );
}
super.detectAndSendChanges();
@Override
public boolean isItemValid(ItemStack itemstack)
if( this.g == null )
return;
int total = 0;
boolean missing = false;
IActionHost host = this.getActionHost();
if( host != null )
{
return itemstack != null && itemstack.getItem() instanceof ItemEncodedPattern;
IGridNode agn = host.getActionableNode();
if( agn != null && agn.isActive() )
{
for( IGridNode gn : this.g.getMachines( TileInterface.class ) )
{
if( gn.isActive() )
{
IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
if( ih.getInterfaceDuality().getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.NO )
continue;
InvTracker t = this.diList.get( ih );
if( t == null )
missing = true;
else
{
DualityInterface dual = ih.getInterfaceDuality();
if( !t.unlocalizedName.equals( dual.getTermName() ) )
missing = true;
}
total++;
}
}
for( IGridNode gn : this.g.getMachines( PartInterface.class ) )
{
if( gn.isActive() )
{
IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
if( ih.getInterfaceDuality().getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.NO )
continue;
InvTracker t = this.diList.get( ih );
if( t == null )
missing = true;
else
{
DualityInterface dual = ih.getInterfaceDuality();
if( !t.unlocalizedName.equals( dual.getTermName() ) )
missing = true;
}
total++;
}
}
}
}
if( total != this.diList.size() || missing )
this.regenList( this.data );
else
{
for( Entry<IInterfaceHost, InvTracker> en : this.diList.entrySet() )
{
InvTracker inv = en.getValue();
for( int x = 0; x < inv.server.getSizeInventory(); x++ )
{
if( this.isDifferent( inv.server.getStackInSlot( x ), inv.client.getStackInSlot( x ) ) )
this.addItems( this.data, inv, x, 1 );
}
}
}
if( !this.data.hasNoTags() )
{
try
{
NetworkHandler.instance.sendTo( new PacketCompressedNBT( this.data ), (EntityPlayerMP) this.getPlayerInv().player );
}
catch( IOException e )
{
// :P
}
this.data = new NBTTagCompound();
}
}
@Override
public void doAction(EntityPlayerMP player, InventoryAction action, int slot, long id)
public void doAction( EntityPlayerMP player, InventoryAction action, int slot, long id )
{
InvTracker inv = this.byId.get( id );
if ( inv != null )
if( inv != null )
{
ItemStack is = inv.server.getStackInSlot( slot );
boolean hasItemInHand = player.inventory.getItemStack() != null;
@@ -127,226 +191,117 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
IInventory theSlot = slotInv.getWrapper( slot );
InventoryAdaptor interfaceSlot = new AdaptorIInventory( theSlot );
switch (action)
switch( action )
{
case PICKUP_OR_SET_DOWN:
case PICKUP_OR_SET_DOWN:
if ( hasItemInHand )
{
ItemStack inSlot = theSlot.getStackInSlot( 0 );
if ( inSlot == null )
player.inventory.setItemStack( interfaceSlot.addItems( player.inventory.getItemStack() ) );
else
if( hasItemInHand )
{
inSlot = inSlot.copy();
ItemStack inHand = player.inventory.getItemStack().copy();
theSlot.setInventorySlotContents( 0, null );
player.inventory.setItemStack( null );
player.inventory.setItemStack( interfaceSlot.addItems( inHand.copy() ) );
if ( player.inventory.getItemStack() == null )
player.inventory.setItemStack( inSlot );
ItemStack inSlot = theSlot.getStackInSlot( 0 );
if( inSlot == null )
player.inventory.setItemStack( interfaceSlot.addItems( player.inventory.getItemStack() ) );
else
{
player.inventory.setItemStack( inHand );
theSlot.setInventorySlotContents( 0, inSlot );
inSlot = inSlot.copy();
ItemStack inHand = player.inventory.getItemStack().copy();
theSlot.setInventorySlotContents( 0, null );
player.inventory.setItemStack( null );
player.inventory.setItemStack( interfaceSlot.addItems( inHand.copy() ) );
if( player.inventory.getItemStack() == null )
player.inventory.setItemStack( inSlot );
else
{
player.inventory.setItemStack( inHand );
theSlot.setInventorySlotContents( 0, inSlot );
}
}
}
}
else
{
else
{
IInventory mySlot = slotInv.getWrapper( slot );
mySlot.setInventorySlotContents( 0, playerHand.addItems( mySlot.getStackInSlot( 0 ) ) );
}
break;
case SPLIT_OR_PLACE_SINGLE:
if( hasItemInHand )
{
ItemStack extra = playerHand.removeItems( 1, null, null );
if( extra != null )
extra = interfaceSlot.addItems( extra );
if( extra != null )
playerHand.addItems( extra );
}
else if( is != null )
{
ItemStack extra = interfaceSlot.removeItems( ( is.stackSize + 1 ) / 2, null, null );
if( extra != null )
extra = playerHand.addItems( extra );
if( extra != null )
interfaceSlot.addItems( extra );
}
break;
case SHIFT_CLICK:
IInventory mySlot = slotInv.getWrapper( slot );
mySlot.setInventorySlotContents( 0, playerHand.addItems( mySlot.getStackInSlot( 0 ) ) );
}
InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
mySlot.setInventorySlotContents( 0, playerInv.addItems( mySlot.getStackInSlot( 0 ) ) );
break;
case SPLIT_OR_PLACE_SINGLE:
break;
case MOVE_REGION:
if ( hasItemInHand )
{
ItemStack extra = playerHand.removeItems( 1, null, null );
if ( extra != null )
extra = interfaceSlot.addItems( extra );
if ( extra != null )
playerHand.addItems( extra );
}
else if ( is != null )
{
ItemStack extra = interfaceSlot.removeItems( (is.stackSize + 1) / 2, null, null );
if ( extra != null )
extra = playerHand.addItems( extra );
if ( extra != null )
interfaceSlot.addItems( extra );
}
InventoryAdaptor playerInvAd = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
for( int x = 0; x < inv.server.getSizeInventory(); x++ )
{
inv.server.setInventorySlotContents( x, playerInvAd.addItems( inv.server.getStackInSlot( x ) ) );
}
break;
case SHIFT_CLICK:
break;
case CREATIVE_DUPLICATE:
IInventory mySlot = slotInv.getWrapper( slot );
InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
mySlot.setInventorySlotContents( 0, playerInv.addItems( mySlot.getStackInSlot( 0 ) ) );
if( player.capabilities.isCreativeMode && !hasItemInHand )
{
player.inventory.setItemStack( is == null ? null : is.copy() );
}
break;
case MOVE_REGION:
InventoryAdaptor playerInvAd = InventoryAdaptor.getAdaptor( player, ForgeDirection.UNKNOWN );
for (int x = 0; x < inv.server.getSizeInventory(); x++)
{
inv.server.setInventorySlotContents( x, playerInvAd.addItems( inv.server.getStackInSlot( x ) ) );
}
break;
case CREATIVE_DUPLICATE:
if ( player.capabilities.isCreativeMode && !hasItemInHand )
{
player.inventory.setItemStack( is == null ? null : is.copy() );
}
break;
default:
return;
break;
default:
return;
}
this.updateHeld( player );
}
}
@Override
public void detectAndSendChanges()
{
if ( Platform.isClient() )
return;
super.detectAndSendChanges();
if ( this.g == null )
return;
int total = 0;
boolean missing = false;
IActionHost host = this.getActionHost();
if ( host != null )
{
IGridNode agn = host.getActionableNode();
if ( agn != null && agn.isActive() )
{
for (IGridNode gn : this.g.getMachines( TileInterface.class ))
{
if ( gn.isActive() )
{
IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
if ( ih.getInterfaceDuality().getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.NO )
continue;
InvTracker t = this.diList.get( ih );
if ( t == null )
missing = true;
else
{
DualityInterface dual = ih.getInterfaceDuality();
if ( !t.unlocalizedName.equals( dual.getTermName() ) )
missing = true;
}
total++;
}
}
for (IGridNode gn : this.g.getMachines( PartInterface.class ))
{
if ( gn.isActive() )
{
IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
if ( ih.getInterfaceDuality().getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.NO )
continue;
InvTracker t = this.diList.get( ih );
if ( t == null )
missing = true;
else
{
DualityInterface dual = ih.getInterfaceDuality();
if ( !t.unlocalizedName.equals( dual.getTermName() ) )
missing = true;
}
total++;
}
}
}
}
if ( total != this.diList.size() || missing )
this.regenList( this.data );
else
{
for (Entry<IInterfaceHost, InvTracker> en : this.diList.entrySet())
{
InvTracker inv = en.getValue();
for (int x = 0; x < inv.server.getSizeInventory(); x++)
{
if ( this.isDifferent( inv.server.getStackInSlot( x ), inv.client.getStackInSlot( x ) ) )
this.addItems( this.data, inv, x, 1 );
}
}
}
if ( !this.data.hasNoTags() )
{
try
{
NetworkHandler.instance.sendTo( new PacketCompressedNBT( this.data ), (EntityPlayerMP) this.getPlayerInv().player );
}
catch (IOException e)
{
// :P
}
this.data = new NBTTagCompound();
}
}
private boolean isDifferent(ItemStack a, ItemStack b)
{
if ( a == null && b == null )
return false;
if ( a == null || b == null )
return true;
return !ItemStack.areItemStacksEqual( a, b );
}
private void regenList(NBTTagCompound data)
private void regenList( NBTTagCompound data )
{
this.byId.clear();
this.diList.clear();
IActionHost host = this.getActionHost();
if ( host != null )
if( host != null )
{
IGridNode agn = host.getActionableNode();
if ( agn != null && agn.isActive() )
if( agn != null && agn.isActive() )
{
for (IGridNode gn : this.g.getMachines( TileInterface.class ))
for( IGridNode gn : this.g.getMachines( TileInterface.class ) )
{
IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
DualityInterface dual = ih.getInterfaceDuality();
if ( gn.isActive() && dual.getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.YES )
if( gn.isActive() && dual.getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.YES )
this.diList.put( ih, new InvTracker( dual, dual.getPatterns(), dual.getTermName() ) );
}
for (IGridNode gn : this.g.getMachines( PartInterface.class ))
for( IGridNode gn : this.g.getMachines( PartInterface.class ) )
{
IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
DualityInterface dual = ih.getInterfaceDuality();
if ( gn.isActive() && dual.getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.YES )
if( gn.isActive() && dual.getConfigManager().getSetting( Settings.INTERFACE_TERMINAL ) == YesNo.YES )
this.diList.put( ih, new InvTracker( dual, dual.getPatterns(), dual.getTermName() ) );
}
}
@@ -354,7 +309,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
data.setBoolean( "clear", true );
for (Entry<IInterfaceHost, InvTracker> en : this.diList.entrySet())
for( Entry<IInterfaceHost, InvTracker> en : this.diList.entrySet() )
{
InvTracker inv = en.getValue();
this.byId.put( inv.which, inv );
@@ -362,18 +317,29 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
}
}
private void addItems(NBTTagCompound data, InvTracker inv, int offset, int length)
private boolean isDifferent( ItemStack a, ItemStack b )
{
if( a == null && b == null )
return false;
if( a == null || b == null )
return true;
return !ItemStack.areItemStacksEqual( a, b );
}
private void addItems( NBTTagCompound data, InvTracker inv, int offset, int length )
{
String name = '=' + Long.toString( inv.which, Character.MAX_RADIX );
NBTTagCompound tag = data.getCompoundTag( name );
if ( tag.hasNoTags() )
if( tag.hasNoTags() )
{
tag.setLong( "sortBy", inv.sortBy );
tag.setString( "un", inv.unlocalizedName );
}
for (int x = 0; x < length; x++)
for( int x = 0; x < length; x++ )
{
NBTTagCompound itemNBT = new NBTTagCompound();
@@ -382,7 +348,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
// "update" client side.
inv.client.setInventorySlotContents( x + offset, is == null ? null : is.copy() );
if ( is != null )
if( is != null )
is.writeToNBT( itemNBT );
tag.setTag( Integer.toString( x + offset ), itemNBT );
@@ -390,4 +356,38 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
data.setTag( name, tag );
}
static class InvTracker
{
public final long sortBy;
final long which = autoBase++;
final String unlocalizedName;
final IInventory client;
final IInventory server;
public InvTracker( DualityInterface dual, IInventory patterns, String unlocalizedName )
{
this.server = patterns;
this.client = new AppEngInternalInventory( null, this.server.getSizeInventory() );
this.unlocalizedName = unlocalizedName;
this.sortBy = dual.getSortValue();
}
}
static class PatternInvSlot extends WrapperInvSlot
{
public PatternInvSlot( IInventory inv )
{
super( inv );
}
@Override
public boolean isItemValid( ItemStack itemstack )
{
return itemstack != null && itemstack.getItem() instanceof ItemEncodedPattern;
}
}
}
@@ -39,40 +39,35 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.parts.automation.PartLevelEmitter;
import appeng.util.Platform;
public class ContainerLevelEmitter extends ContainerUpgradeable
{
final PartLevelEmitter lvlEmitter;
@SideOnly(Side.CLIENT)
@SideOnly( Side.CLIENT )
public GuiTextField textField;
@GuiSync( 2 )
public LevelType lvType;
@GuiSync( 3 )
public long EmitterValue = -1;
@GuiSync( 4 )
public YesNo cmType;
@SideOnly(Side.CLIENT)
public void setTextField(GuiTextField level)
public ContainerLevelEmitter( InventoryPlayer ip, PartLevelEmitter te )
{
super( ip, te );
this.lvlEmitter = te;
}
@SideOnly( Side.CLIENT )
public void setTextField( GuiTextField level )
{
this.textField = level;
this.textField.setText( String.valueOf( this.EmitterValue ) );
}
public ContainerLevelEmitter(InventoryPlayer ip, PartLevelEmitter te) {
super( ip, te );
this.lvlEmitter = te;
}
@Override
public int availableUpgrades()
{
return 1;
}
@Override
protected boolean supportCapacity()
{
return false;
}
public void setLevel(long l, EntityPlayer player)
public void setLevel( long l, EntityPlayer player )
{
this.lvlEmitter.setReportingValue( l );
this.EmitterValue = l;
@@ -85,34 +80,38 @@ public class ContainerLevelEmitter extends ContainerUpgradeable
int y = 40;
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
if ( this.availableUpgrades() > 0 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer )).setNotDraggable() );
if ( this.availableUpgrades() > 1 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer )).setNotDraggable() );
if ( this.availableUpgrades() > 2 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer )).setNotDraggable() );
if ( this.availableUpgrades() > 3 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer )).setNotDraggable() );
if( this.availableUpgrades() > 0 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer ) ).setNotDraggable() );
if( this.availableUpgrades() > 1 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer ) ).setNotDraggable() );
if( this.availableUpgrades() > 2 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer ) ).setNotDraggable() );
if( this.availableUpgrades() > 3 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer ) ).setNotDraggable() );
IInventory inv = this.upgradeable.getInventoryByName( "config" );
this.addSlotToContainer( new SlotFakeTypeOnly( inv, 0, x, y ) );
}
@GuiSync(2)
public LevelType lvType;
@Override
protected boolean supportCapacity()
{
return false;
}
@GuiSync(3)
public long EmitterValue = -1;
@Override
public int availableUpgrades()
{
@GuiSync(4)
public YesNo cmType;
return 1;
}
@Override
public void detectAndSendChanges()
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.EmitterValue = this.lvlEmitter.getReportingValue();
this.cmType = (YesNo) this.upgradeable.getConfigManager().getSetting( Settings.CRAFT_VIA_REDSTONE );
@@ -125,13 +124,12 @@ public class ContainerLevelEmitter extends ContainerUpgradeable
}
@Override
public void onUpdate(String field, Object oldValue, Object newValue)
public void onUpdate( String field, Object oldValue, Object newValue )
{
if ( field.equals( "EmitterValue" ) )
if( field.equals( "EmitterValue" ) )
{
if ( this.textField != null )
if( this.textField != null )
this.textField.setText( String.valueOf( this.EmitterValue ) );
}
}
}
@@ -37,22 +37,39 @@ import appeng.items.misc.ItemEncodedPattern;
import appeng.tile.crafting.TileMolecularAssembler;
import appeng.util.Platform;
public class ContainerMAC extends ContainerUpgradeable implements IProgressProvider
{
final TileMolecularAssembler tma;
private static final int MAX_CRAFT_PROGRESS = 100;
final TileMolecularAssembler tma;
@GuiSync( 4 )
public int craftProgress = 0;
public ContainerMAC(InventoryPlayer ip, TileMolecularAssembler te)
public ContainerMAC( InventoryPlayer ip, TileMolecularAssembler te )
{
super( ip, te );
this.tma = te;
}
@Override
public int availableUpgrades()
public boolean isValidItemForSlot( int slotIndex, ItemStack i )
{
return 5;
IInventory mac = this.upgradeable.getInventoryByName( "mac" );
ItemStack is = mac.getStackInSlot( 10 );
if( is == null )
return false;
if( is.getItem() instanceof ItemEncodedPattern )
{
World w = this.getTileEntity().getWorldObj();
ItemEncodedPattern iep = (ItemEncodedPattern) is.getItem();
ICraftingPatternDetails ph = iep.getPatternForItem( is, w );
if( ph.isCraftable() )
return ph.isValidItemForSlot( slotIndex, i, w );
}
return false;
}
@Override
@@ -61,35 +78,6 @@ public class ContainerMAC extends ContainerUpgradeable implements IProgressProvi
return 197;
}
@Override
protected boolean supportCapacity()
{
return false;
}
@GuiSync(4)
public int craftProgress = 0;
public boolean isValidItemForSlot(int slotIndex, ItemStack i)
{
IInventory mac = this.upgradeable.getInventoryByName( "mac" );
ItemStack is = mac.getStackInSlot( 10 );
if ( is == null )
return false;
if ( is.getItem() instanceof ItemEncodedPattern )
{
World w = this.getTileEntity().getWorldObj();
ItemEncodedPattern iep = (ItemEncodedPattern) is.getItem();
ICraftingPatternDetails ph = iep.getPatternForItem( is, w );
if ( ph.isCraftable() )
return ph.isValidItemForSlot( slotIndex, i, w );
}
return false;
}
@Override
protected void setupConfig()
{
@@ -98,8 +86,8 @@ public class ContainerMAC extends ContainerUpgradeable implements IProgressProvi
IInventory mac = this.upgradeable.getInventoryByName( "mac" );
for (int y = 0; y < 3; y++)
for (int x = 0; x < 3; x++)
for( int y = 0; y < 3; y++ )
for( int x = 0; x < 3; x++ )
{
SlotMACPattern s = new SlotMACPattern( this, mac, x + y * 3, offX + x * 18, offY + y * 18 );
this.addSlotToContainer( s );
@@ -115,16 +103,23 @@ public class ContainerMAC extends ContainerUpgradeable implements IProgressProvi
offY = 17;
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer ))
.setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer ))
.setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer ))
.setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer ))
.setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 4, 187, 8 + 18 * 4, this.invPlayer ))
.setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 4, 187, 8 + 18 * 4, this.invPlayer ) ).setNotDraggable() );
}
@Override
protected boolean supportCapacity()
{
return false;
}
@Override
public int availableUpgrades()
{
return 5;
}
@Override
@@ -132,7 +127,7 @@ public class ContainerMAC extends ContainerUpgradeable implements IProgressProvi
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.rsMode = (RedstoneMode) this.upgradeable.getConfigManager().getSetting( Settings.REDSTONE_CONTROLLED );
}
@@ -153,5 +148,4 @@ public class ContainerMAC extends ContainerUpgradeable implements IProgressProvi
{
return MAX_CRAFT_PROGRESS;
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import java.io.IOException;
import java.nio.BufferOverflowException;
@@ -66,33 +67,30 @@ import appeng.util.ConfigManager;
import appeng.util.IConfigManagerHost;
import appeng.util.Platform;
public class ContainerMEMonitorable extends AEBaseContainer implements IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver<IAEItemStack>
{
public final SlotRestrictedInput[] cellView = new SlotRestrictedInput[5];
final IMEMonitor<IAEItemStack> monitor;
final IItemList<IAEItemStack> items = AEApi.instance().storage().createItemList();
IConfigManager serverCM;
final IConfigManager clientCM;
@GuiSync(99)
public boolean canAccessViewCells = false;
@GuiSync(98)
public boolean hasPower = false;
public final SlotRestrictedInput[] cellView = new SlotRestrictedInput[5];
public IConfigManagerHost gui;
private IGridNode networkNode;
private final ITerminalHost host;
@GuiSync( 99 )
public boolean canAccessViewCells = false;
@GuiSync( 98 )
public boolean hasPower = false;
public IConfigManagerHost gui;
IConfigManager serverCM;
private IGridNode networkNode;
public IGridNode getNetworkNode()
public ContainerMEMonitorable( InventoryPlayer ip, ITerminalHost monitorable )
{
return this.networkNode;
this( ip, monitorable, true );
}
protected ContainerMEMonitorable(InventoryPlayer ip, ITerminalHost monitorable, boolean bindInventory) {
protected ContainerMEMonitorable( InventoryPlayer ip, ITerminalHost monitorable, boolean bindInventory )
{
super( ip, monitorable instanceof TileEntity ? (TileEntity) monitorable : null, monitorable instanceof IPart ? (IPart) monitorable : null );
this.host = monitorable;
@@ -102,29 +100,29 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
this.clientCM.registerSetting( Settings.VIEW_MODE, ViewItems.ALL );
this.clientCM.registerSetting( Settings.SORT_DIRECTION, SortDir.ASCENDING );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.serverCM = monitorable.getConfigManager();
this.monitor = monitorable.getItemInventory();
if ( this.monitor != null )
if( this.monitor != null )
{
this.monitor.addListener( this, null );
this.cellInv = this.monitor;
if ( monitorable instanceof IPortableCell )
if( monitorable instanceof IPortableCell )
this.powerSrc = (IPortableCell) monitorable;
else if ( monitorable instanceof IMEChest )
else if( monitorable instanceof IMEChest )
this.powerSrc = (IMEChest) monitorable;
else if ( monitorable instanceof IGridHost )
else if( monitorable instanceof IGridHost )
{
IGridNode node = ((IGridHost) monitorable).getGridNode( ForgeDirection.UNKNOWN );
if ( node != null )
IGridNode node = ( (IGridHost) monitorable ).getGridNode( ForgeDirection.UNKNOWN );
if( node != null )
{
this.networkNode = node;
IGrid g = node.getGrid();
if ( g != null )
if( g != null )
this.powerSrc = new ChannelPowerSrc( this.networkNode, (IEnergyGrid) g.getCache( IEnergyGrid.class ) );
}
}
@@ -136,48 +134,48 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
this.monitor = null;
this.canAccessViewCells = false;
if ( monitorable instanceof IViewCellStorage )
if( monitorable instanceof IViewCellStorage )
{
for (int y = 0; y < 5; y++)
for( int y = 0; y < 5; y++ )
{
this.cellView[y] = new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.VIEW_CELL, ((IViewCellStorage) monitorable).getViewCellStorage(), y, 206, y * 18 + 8,
this.invPlayer );
this.cellView[y] = new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.VIEW_CELL, ( (IViewCellStorage) monitorable ).getViewCellStorage(), y, 206, y * 18 + 8, this.invPlayer );
this.cellView[y].allowEdit = this.canAccessViewCells;
this.addSlotToContainer( this.cellView[y] );
}
}
if ( bindInventory )
if( bindInventory )
this.bindPlayerInventory( ip, 0, 0 );
}
public ContainerMEMonitorable(InventoryPlayer ip, ITerminalHost monitorable) {
this( ip, monitorable, true );
public IGridNode getNetworkNode()
{
return this.networkNode;
}
@Override
public void detectAndSendChanges()
{
if ( Platform.isServer() )
if( Platform.isServer() )
{
if ( this.monitor != this.host.getItemInventory() )
if( this.monitor != this.host.getItemInventory() )
this.isContainerValid = false;
for (Settings set : this.serverCM.getSettings())
for( Settings set : this.serverCM.getSettings() )
{
Enum<?> sideLocal = this.serverCM.getSetting( set );
Enum<?> sideRemote = this.clientCM.getSetting( set );
if ( sideLocal != sideRemote )
if( sideLocal != sideRemote )
{
this.clientCM.putSetting( set, sideLocal );
for (Object crafter : this.crafters)
for( Object crafter : this.crafters )
{
try
{
NetworkHandler.instance.sendTo( new PacketValueConfig( set.name(), sideLocal.name() ), (EntityPlayerMP) crafter );
}
catch (IOException e)
catch( IOException e )
{
AELog.error( e );
}
@@ -185,7 +183,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
}
}
if ( !this.items.isEmpty() )
if( !this.items.isEmpty() )
{
try
{
@@ -193,10 +191,10 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
PacketMEInventoryUpdate piu = new PacketMEInventoryUpdate();
for (IAEItemStack is : this.items)
for( IAEItemStack is : this.items )
{
IAEItemStack send = monitorCache.findPrecise( is );
if ( send == null )
if( send == null )
{
is.setStackSize( 0 );
piu.appendItem( is );
@@ -205,18 +203,18 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
piu.appendItem( send );
}
if ( !piu.isEmpty() )
if( !piu.isEmpty() )
{
this.items.resetStatus();
for (Object c : this.crafters)
for( Object c : this.crafters )
{
if ( c instanceof EntityPlayer )
if( c instanceof EntityPlayer )
NetworkHandler.instance.sendTo( piu, (EntityPlayerMP) c );
}
}
}
catch (IOException e)
catch( IOException e )
{
AELog.error( e );
}
@@ -226,11 +224,11 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
boolean oldCanAccessViewCells = this.canAccessViewCells;
this.canAccessViewCells = this.hasAccess( SecurityPermissions.BUILD, false );
if ( this.canAccessViewCells != oldCanAccessViewCells )
if( this.canAccessViewCells != oldCanAccessViewCells )
{
for (int y = 0; y < 5; y++)
for( int y = 0; y < 5; y++ )
{
if ( this.cellView[y] != null )
if( this.cellView[y] != null )
this.cellView[y].allowEdit = this.canAccessViewCells;
}
}
@@ -243,42 +241,55 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
{
try
{
if ( this.networkNode != null )
if( this.networkNode != null )
this.hasPower = this.networkNode.isActive();
else if ( this.powerSrc instanceof IEnergyGrid )
this.hasPower = ((IEnergyGrid) this.powerSrc).isNetworkPowered();
else if( this.powerSrc instanceof IEnergyGrid )
this.hasPower = ( (IEnergyGrid) this.powerSrc ).isNetworkPowered();
else
this.hasPower = this.powerSrc.extractAEPower( 1, Actionable.SIMULATE, PowerMultiplier.CONFIG ) > 0.8;
}
catch (Throwable t)
catch( Throwable t )
{
// :P
}
}
@Override
public void addCraftingToCrafters(ICrafting c)
public void onUpdate( String field, Object oldValue, Object newValue )
{
if( field.equals( "canAccessViewCells" ) )
{
for( int y = 0; y < 5; y++ )
if( this.cellView[y] != null )
this.cellView[y].allowEdit = this.canAccessViewCells;
}
super.onUpdate( field, oldValue, newValue );
}
@Override
public void addCraftingToCrafters( ICrafting c )
{
super.addCraftingToCrafters( c );
this.queueInventory( c );
}
public void queueInventory(ICrafting c)
public void queueInventory( ICrafting c )
{
if ( Platform.isServer() && c instanceof EntityPlayer && this.monitor != null )
if( Platform.isServer() && c instanceof EntityPlayer && this.monitor != null )
{
try
{
PacketMEInventoryUpdate piu = new PacketMEInventoryUpdate();
IItemList<IAEItemStack> monitorCache = this.monitor.getStorageList();
for (IAEItemStack send : monitorCache)
for( IAEItemStack send : monitorCache )
{
try
{
piu.appendItem( send );
}
catch (BufferOverflowException boe)
catch( BufferOverflowException boe )
{
NetworkHandler.instance.sendTo( piu, (EntityPlayerMP) c );
@@ -289,20 +300,49 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
NetworkHandler.instance.sendTo( piu, (EntityPlayerMP) c );
}
catch (IOException e)
catch( IOException e )
{
AELog.error( e );
}
}
}
@Override
public void removeCraftingFromCrafters( ICrafting c )
{
super.removeCraftingFromCrafters( c );
if( this.crafters.isEmpty() && this.monitor != null )
this.monitor.removeListener( this );
}
@Override
public void onContainerClosed( EntityPlayer player )
{
super.onContainerClosed( player );
if( this.monitor != null )
this.monitor.removeListener( this );
}
@Override
public boolean isValid( Object verificationToken )
{
return true;
}
@Override
public void postChange( IBaseMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change, BaseActionSource source )
{
for( IAEItemStack is : change )
this.items.add( is );
}
@Override
public void onListUpdate()
{
for (Object c : this.crafters)
for( Object c : this.crafters )
{
if ( c instanceof ICrafting )
if( c instanceof ICrafting )
{
ICrafting cr = (ICrafting) c;
this.queueInventory( cr );
@@ -311,59 +351,16 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
}
@Override
public void onUpdate(String field, Object oldValue, Object newValue)
public void updateSetting( IConfigManager manager, Enum settingName, Enum newValue )
{
if ( field.equals( "canAccessViewCells" ) )
{
for (int y = 0; y < 5; y++)
if ( this.cellView[y] != null )
this.cellView[y].allowEdit = this.canAccessViewCells;
}
super.onUpdate( field, oldValue, newValue );
}
@Override
public void onContainerClosed(EntityPlayer player)
{
super.onContainerClosed( player );
if ( this.monitor != null )
this.monitor.removeListener( this );
}
@Override
public void removeCraftingFromCrafters(ICrafting c)
{
super.removeCraftingFromCrafters( c );
if ( this.crafters.isEmpty() && this.monitor != null )
this.monitor.removeListener( this );
}
@Override
public void postChange(IBaseMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change, BaseActionSource source)
{
for (IAEItemStack is : change)
this.items.add( is );
}
@Override
public boolean isValid(Object verificationToken)
{
return true;
}
@Override
public void updateSetting(IConfigManager manager, Enum settingName, Enum newValue)
{
if ( this.gui != null )
if( this.gui != null )
this.gui.updateSetting( manager, settingName, newValue );
}
@Override
public IConfigManager getConfigManager()
{
if ( Platform.isServer() )
if( Platform.isServer() )
return this.serverCM;
return this.clientCM;
}
@@ -372,7 +369,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
{
ItemStack[] list = new ItemStack[this.cellView.length];
for (int x = 0; x < this.cellView.length; x++)
for( int x = 0; x < this.cellView.length; x++ )
list[x] = this.cellView[x].getStack();
return list;
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -26,33 +27,34 @@ import appeng.api.config.PowerMultiplier;
import appeng.api.implementations.guiobjects.IPortableCell;
import appeng.util.Platform;
public class ContainerMEPortableCell extends ContainerMEMonitorable
{
double powerMultiplier = 0.5;
final IPortableCell civ;
double powerMultiplier = 0.5;
int ticks = 0;
public ContainerMEPortableCell(InventoryPlayer ip, IPortableCell monitorable) {
public ContainerMEPortableCell( InventoryPlayer ip, IPortableCell monitorable )
{
super( ip, monitorable, false );
this.lockPlayerInventorySlot( ip.currentItem );
this.civ = monitorable;
this.bindPlayerInventory( ip, 0, 0 );
}
int ticks = 0;
@Override
public void detectAndSendChanges()
{
ItemStack currentItem = this.getPlayerInv().getCurrentItem();
if ( this.civ != null )
if( this.civ != null )
{
if ( currentItem != this.civ.getItemStack() )
if( currentItem != this.civ.getItemStack() )
{
if ( currentItem != null )
if( currentItem != null )
{
if ( Platform.isSameItem( this.civ.getItemStack(), currentItem ) )
if( Platform.isSameItem( this.civ.getItemStack(), currentItem ) )
this.getPlayerInv().setInventorySlotContents( this.getPlayerInv().currentItem, this.civ.getItemStack() );
else
this.isContainerValid = false;
@@ -66,7 +68,7 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable
// drain 1 ae t
this.ticks++;
if ( this.ticks > 10 )
if( this.ticks > 10 )
{
this.civ.extractAEPower( this.powerMultiplier * this.ticks, Actionable.MODULATE, PowerMultiplier.CONFIG );
this.ticks = 0;
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
@@ -42,62 +43,62 @@ import appeng.core.sync.packets.PacketMEInventoryUpdate;
import appeng.util.Platform;
import appeng.util.item.AEItemStack;
public class ContainerNetworkStatus extends AEBaseContainer
{
@GuiSync( 0 )
public long avgAddition;
@GuiSync( 1 )
public long powerUsage;
@GuiSync( 2 )
public long currentPower;
@GuiSync( 3 )
public long maxPower;
IGrid network;
int delay = 40;
public ContainerNetworkStatus(InventoryPlayer ip, INetworkTool te) {
public ContainerNetworkStatus( InventoryPlayer ip, INetworkTool te )
{
super( ip, null, null );
IGridHost host = te.getGridHost();
if ( host != null )
if( host != null )
{
this.findNode( host, ForgeDirection.UNKNOWN );
for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS)
for( ForgeDirection d : ForgeDirection.VALID_DIRECTIONS )
this.findNode( host, d );
}
if ( this.network == null && Platform.isServer() )
if( this.network == null && Platform.isServer() )
this.isContainerValid = false;
}
private void findNode(IGridHost host, ForgeDirection d)
private void findNode( IGridHost host, ForgeDirection d )
{
if ( this.network == null )
if( this.network == null )
{
IGridNode node = host.getGridNode( d );
if ( node != null )
if( node != null )
this.network = node.getGrid();
}
}
int delay = 40;
@GuiSync(0)
public long avgAddition;
@GuiSync(1)
public long powerUsage;
@GuiSync(2)
public long currentPower;
@GuiSync(3)
public long maxPower;
@Override
public void detectAndSendChanges()
{
this.delay++;
if ( Platform.isServer() && this.delay > 15 && this.network != null )
if( Platform.isServer() && this.delay > 15 && this.network != null )
{
this.delay = 0;
IEnergyGrid eg = this.network.getCache( IEnergyGrid.class );
if ( eg != null )
if( eg != null )
{
this.avgAddition = (long) (100.0 * eg.getAvgPowerInjection());
this.powerUsage = (long) (100.0 * eg.getAvgPowerUsage());
this.currentPower = (long) (100.0 * eg.getStoredPower());
this.maxPower = (long) (100.0 * eg.getMaxStoredPower());
this.avgAddition = (long) ( 100.0 * eg.getAvgPowerInjection() );
this.powerUsage = (long) ( 100.0 * eg.getAvgPowerUsage() );
this.currentPower = (long) ( 100.0 * eg.getStoredPower() );
this.maxPower = (long) ( 100.0 * eg.getMaxStoredPower() );
}
PacketMEInventoryUpdate piu;
@@ -105,37 +106,36 @@ public class ContainerNetworkStatus extends AEBaseContainer
{
piu = new PacketMEInventoryUpdate();
for (Class<? extends IGridHost> machineClass : this.network.getMachinesClasses())
for( Class<? extends IGridHost> machineClass : this.network.getMachinesClasses() )
{
IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
for (IGridNode machine : this.network.getMachines( machineClass ))
for( IGridNode machine : this.network.getMachines( machineClass ) )
{
IGridBlock blk = machine.getGridBlock();
ItemStack is = blk.getMachineRepresentation();
if ( is != null && is.getItem() != null )
if( is != null && is.getItem() != null )
{
IAEItemStack ais = AEItemStack.create( is );
ais.setStackSize( 1 );
ais.setCountRequestable( (long) (blk.getIdlePowerUsage() * 100.0) );
ais.setCountRequestable( (long) ( blk.getIdlePowerUsage() * 100.0 ) );
list.add( ais );
}
}
for (IAEItemStack ais : list)
for( IAEItemStack ais : list )
piu.appendItem( ais );
}
for (Object c : this.crafters)
for( Object c : this.crafters )
{
if ( c instanceof EntityPlayer )
if( c instanceof EntityPlayer )
NetworkHandler.instance.sendTo( piu, (EntityPlayerMP) c );
}
}
catch (IOException e)
catch( IOException e )
{
// :P
}
}
super.detectAndSendChanges();
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -28,23 +29,25 @@ import appeng.container.guisync.GuiSync;
import appeng.container.slot.SlotRestrictedInput;
import appeng.util.Platform;
public class ContainerNetworkTool extends AEBaseContainer
{
final INetworkTool toolInv;
@GuiSync(1)
@GuiSync( 1 )
public boolean facadeMode;
public ContainerNetworkTool(InventoryPlayer ip, INetworkTool te) {
public ContainerNetworkTool( InventoryPlayer ip, INetworkTool te )
{
super( ip, null, null );
this.toolInv = te;
this.lockPlayerInventorySlot( ip.currentItem );
for (int y = 0; y < 3; y++)
for (int x = 0; x < 3; x++)
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, te, y * 3 + x, 80 - 18 + x * 18, 37 - 18 + y * 18, this.invPlayer )) );
for( int y = 0; y < 3; y++ )
for( int x = 0; x < 3; x++ )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, te, y * 3 + x, 80 - 18 + x * 18, 37 - 18 + y * 18, this.invPlayer ) ) );
this.bindPlayerInventory( ip, 0, 166 - /* height of player inventory */82 );
}
@@ -61,11 +64,11 @@ public class ContainerNetworkTool extends AEBaseContainer
{
ItemStack currentItem = this.getPlayerInv().getCurrentItem();
if ( currentItem != this.toolInv.getItemStack() )
if( currentItem != this.toolInv.getItemStack() )
{
if ( currentItem != null )
if( currentItem != null )
{
if ( Platform.isSameItem( this.toolInv.getItemStack(), currentItem ) )
if( Platform.isSameItem( this.toolInv.getItemStack(), currentItem ) )
{
this.getPlayerInv().setInventorySlotContents( this.getPlayerInv().currentItem, this.toolInv.getItemStack() );
}
@@ -76,7 +79,7 @@ public class ContainerNetworkTool extends AEBaseContainer
this.isContainerValid = false;
}
if ( this.isContainerValid )
if( this.isContainerValid )
{
NBTTagCompound data = Platform.openNbtData( currentItem );
this.facadeMode = data.getBoolean( "hideFacades" );
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import java.util.ArrayList;
import java.util.List;
@@ -65,23 +66,22 @@ import appeng.util.Platform;
import appeng.util.inv.AdaptorPlayerHand;
import appeng.util.item.AEItemStack;
public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEAppEngInventory, IOptionalSlotHost, IContainerCraftingPacket
{
public final PartPatternTerminal ct;
final AppEngInternalInventory cOut = new AppEngInternalInventory( null, 1 );
final IInventory crafting;
final SlotFakeCraftingMatrix[] craftingSlots = new SlotFakeCraftingMatrix[9];
final OptionalSlotFake[] outputSlots = new OptionalSlotFake[3];
final SlotPatternTerm craftSlot;
final SlotRestrictedInput patternSlotIN;
final SlotRestrictedInput patternSlotOUT;
@GuiSync( 97 )
public boolean craftingMode = true;
public final PartPatternTerminal ct;
public ContainerPatternTerm(InventoryPlayer ip, ITerminalHost monitorable)
public ContainerPatternTerm( InventoryPlayer ip, ITerminalHost monitorable )
{
super( ip, monitorable, false );
this.ct = (PartPatternTerminal) monitorable;
@@ -90,14 +90,14 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
IInventory output = this.ct.getInventoryByName( "output" );
this.crafting = this.ct.getInventoryByName( "crafting" );
for (int y = 0; y < 3; y++)
for (int x = 0; x < 3; x++)
for( int y = 0; y < 3; y++ )
for( int x = 0; x < 3; x++ )
this.addSlotToContainer( this.craftingSlots[x + y * 3] = new SlotFakeCraftingMatrix( this.crafting, x + y * 3, 18 + x * 18, -76 + y * 18 ) );
this.addSlotToContainer( this.craftSlot = new SlotPatternTerm( ip.player, this.mySrc, this.powerSrc, monitorable, this.crafting, patternInv, this.cOut, 110, -76 + 18, this, 2, this ) );
this.craftSlot.IIcon = -1;
for (int y = 0; y < 3; y++)
for( int y = 0; y < 3; y++ )
{
this.addSlotToContainer( this.outputSlots[y] = new SlotPatternOutputs( output, this, y, 110, -76 + y * 18, 0, 0, 1 ) );
this.outputSlots[y].renderDisabled = false;
@@ -115,31 +115,31 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
private void updateOrderOfOutputSlots()
{
if ( !this.craftingMode )
if( !this.craftingMode )
{
this.craftSlot.xDisplayPosition = -9000;
for (int y = 0; y < 3; y++)
for( int y = 0; y < 3; y++ )
this.outputSlots[y].xDisplayPosition = this.outputSlots[y].defX;
}
else
{
this.craftSlot.xDisplayPosition = this.craftSlot.defX;
for (int y = 0; y < 3; y++)
for( int y = 0; y < 3; y++ )
this.outputSlots[y].xDisplayPosition = -9000;
}
}
@Override
public void putStackInSlot(int par1, ItemStack par2ItemStack)
public void putStackInSlot( int par1, ItemStack par2ItemStack )
{
super.putStackInSlot( par1, par2ItemStack );
this.getAndUpdateOutput();
}
@Override
public void putStacksInSlots(ItemStack[] par1ArrayOfItemStack)
public void putStacksInSlots( ItemStack[] par1ArrayOfItemStack )
{
super.putStacksInSlots( par1ArrayOfItemStack );
this.getAndUpdateOutput();
@@ -148,7 +148,7 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
public ItemStack getAndUpdateOutput()
{
InventoryCrafting ic = new InventoryCrafting( this, 3, 3 );
for (int x = 0; x < ic.getSizeInventory(); x++)
for( int x = 0; x < ic.getSizeInventory(); x++ )
ic.setInventorySlotContents( x, this.crafting.getStackInSlot( x ) );
ItemStack is = CraftingManager.getInstance().findMatchingRecipe( ic, this.getPlayerInv().player.worldObj );
@@ -156,41 +156,18 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
return is;
}
@GuiSync(97)
public boolean craftingMode = true;
@Override
public void detectAndSendChanges()
{
super.detectAndSendChanges();
if ( Platform.isServer() )
{
if ( this.craftingMode != this.ct.isCraftingRecipe() )
{
this.craftingMode = this.ct.isCraftingRecipe();
this.updateOrderOfOutputSlots();
}
}
}
@Override
public void onUpdate(String field, Object oldValue, Object newValue)
{
super.onUpdate( field, oldValue, newValue );
if ( field.equals( "craftingMode" ) )
{
this.getAndUpdateOutput();
this.updateOrderOfOutputSlots();
}
}
@Override
public void saveChanges()
{
}
@Override
public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack )
{
}
public void encode()
{
ItemStack output = this.patternSlotOUT.getStack();
@@ -199,27 +176,27 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
ItemStack[] out = this.getOutputs();
// if there is no input, this would be silly.
if ( in == null || out == null )
if( in == null || out == null )
return;
// first check the output slots, should either be null, or a pattern
if ( output != null && !this.isPattern( output ) )
if( output != null && !this.isPattern( output ) )
return;
// if nothing is there we should snag a new pattern.
else if ( output == null )
// if nothing is there we should snag a new pattern.
else if( output == null )
{
output = this.patternSlotIN.getStack();
if ( output == null || !this.isPattern( output ) )
if( output == null || !this.isPattern( output ) )
return; // no blanks.
// remove one, and clear the input slot.
output.stackSize--;
if ( output.stackSize == 0 )
if( output.stackSize == 0 )
this.patternSlotIN.putStack( null );
// add a new encoded pattern.
for ( ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() )
for( ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() )
{
output = encodedPatternStack;
this.patternSlotOUT.putStack( output );
@@ -232,10 +209,10 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
NBTTagList tagIn = new NBTTagList();
NBTTagList tagOut = new NBTTagList();
for (ItemStack i : in)
for( ItemStack i : in )
tagIn.appendTag( this.createItemTag( i ) );
for (ItemStack i : out)
for( ItemStack i : out )
tagOut.appendTag( this.createItemTag( i ) );
encodedValue.setTag( "in", tagIn );
@@ -245,29 +222,19 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
output.setTagCompound( encodedValue );
}
private NBTBase createItemTag(ItemStack i)
{
NBTTagCompound c = new NBTTagCompound();
if ( i != null )
i.writeToNBT( c );
return c;
}
private ItemStack[] getInputs()
{
ItemStack[] input = new ItemStack[9];
boolean hasValue = false;
for (int x = 0; x < this.craftingSlots.length; x++)
for( int x = 0; x < this.craftingSlots.length; x++ )
{
input[x] = this.craftingSlots[x].getStack();
if ( input[x] != null )
if( input[x] != null )
hasValue = true;
}
if ( hasValue )
if( hasValue )
return input;
return null;
@@ -275,10 +242,10 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
private ItemStack[] getOutputs()
{
if ( this.craftingMode )
if( this.craftingMode )
{
ItemStack out = this.getAndUpdateOutput();
if ( out != null && out.stackSize > 0 )
if( out != null && out.stackSize > 0 )
return new ItemStack[] { out };
}
else
@@ -286,26 +253,26 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
List<ItemStack> list = new ArrayList<ItemStack>( 3 );
boolean hasValue = false;
for (OptionalSlotFake outputSlot : this.outputSlots)
for( OptionalSlotFake outputSlot : this.outputSlots )
{
ItemStack out = outputSlot.getStack();
if ( out != null && out.stackSize > 0 )
if( out != null && out.stackSize > 0 )
{
list.add( out );
hasValue = true;
}
}
if ( hasValue )
if( hasValue )
return list.toArray( new ItemStack[list.size()] );
}
return null;
}
private boolean isPattern(ItemStack output)
private boolean isPattern( ItemStack output )
{
if ( output == null )
if( output == null )
return false;
final IDefinitions definitions = AEApi.instance().definitions();
@@ -316,44 +283,48 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
return isPattern;
}
@Override
public boolean isSlotEnabled(int idx)
private NBTBase createItemTag( ItemStack i )
{
if ( idx == 1 )
NBTTagCompound c = new NBTTagCompound();
if( i != null )
i.writeToNBT( c );
return c;
}
@Override
public boolean isSlotEnabled( int idx )
{
if( idx == 1 )
return Platform.isServer() ? !this.ct.isCraftingRecipe() : !this.craftingMode;
else if ( idx == 2 )
else if( idx == 2 )
return Platform.isServer() ? this.ct.isCraftingRecipe() : this.craftingMode;
else
return false;
}
@Override
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack)
public void craftOrGetItem( PacketPatternSlot packetPatternSlot )
{
}
public void craftOrGetItem(PacketPatternSlot packetPatternSlot)
{
if ( packetPatternSlot.slotItem != null && this.cellInv != null )
if( packetPatternSlot.slotItem != null && this.cellInv != null )
{
IAEItemStack out = packetPatternSlot.slotItem.copy();
InventoryAdaptor inv = new AdaptorPlayerHand( this.getPlayerInv().player );
InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor( this.getPlayerInv().player, ForgeDirection.UNKNOWN );
if ( packetPatternSlot.shift )
if( packetPatternSlot.shift )
inv = playerInv;
if ( inv.simulateAdd( out.getItemStack() ) != null )
if( inv.simulateAdd( out.getItemStack() ) != null )
return;
IAEItemStack extracted = Platform.poweredExtraction( this.powerSrc, this.cellInv, out, this.mySrc );
EntityPlayer p = this.getPlayerInv().player;
if ( extracted != null )
if( extracted != null )
{
inv.addItems( extracted.getItemStack() );
if ( p instanceof EntityPlayerMP )
if( p instanceof EntityPlayerMP )
this.updateHeld( (EntityPlayerMP) p );
this.detectAndSendChanges();
return;
@@ -361,14 +332,14 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
InventoryCrafting ic = new InventoryCrafting( new ContainerNull(), 3, 3 );
InventoryCrafting real = new InventoryCrafting( new ContainerNull(), 3, 3 );
for (int x = 0; x < 9; x++)
for( int x = 0; x < 9; x++ )
{
ic.setInventorySlotContents( x, packetPatternSlot.pattern[x] == null ? null : packetPatternSlot.pattern[x].getItemStack() );
}
IRecipe r = Platform.findMatchingRecipe( ic, p.worldObj );
if ( r == null )
if( r == null )
return;
IMEMonitor<IAEItemStack> storage = this.ct.getItemInventory();
@@ -376,68 +347,92 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
ItemStack is = r.getCraftingResult( ic );
for (int x = 0; x < ic.getSizeInventory(); x++)
for( int x = 0; x < ic.getSizeInventory(); x++ )
{
if ( ic.getStackInSlot( x ) != null )
if( ic.getStackInSlot( x ) != null )
{
ItemStack pulled = Platform.extractItemsByRecipe( this.powerSrc, this.mySrc, storage, p.worldObj, r, is, ic, ic.getStackInSlot( x ), x, all,
Actionable.MODULATE, ItemViewCell.createFilter( this.getViewCells() ) );
ItemStack pulled = Platform.extractItemsByRecipe( this.powerSrc, this.mySrc, storage, p.worldObj, r, is, ic, ic.getStackInSlot( x ), x, all, Actionable.MODULATE, ItemViewCell.createFilter( this.getViewCells() ) );
real.setInventorySlotContents( x, pulled );
}
}
IRecipe rr = Platform.findMatchingRecipe( real, p.worldObj );
if ( rr == r && Platform.isSameItemPrecise( rr.getCraftingResult( real ), is ) )
if( rr == r && Platform.isSameItemPrecise( rr.getCraftingResult( real ), is ) )
{
SlotCrafting sc = new SlotCrafting( p, real, this.cOut, 0, 0, 0 );
sc.onPickupFromSlot( p, is );
for (int x = 0; x < real.getSizeInventory(); x++)
for( int x = 0; x < real.getSizeInventory(); x++ )
{
ItemStack failed = playerInv.addItems( real.getStackInSlot( x ) );
if ( failed != null )
if( failed != null )
p.dropPlayerItemWithRandomChoice( failed, false );
}
inv.addItems( is );
if ( p instanceof EntityPlayerMP )
if( p instanceof EntityPlayerMP )
this.updateHeld( (EntityPlayerMP) p );
this.detectAndSendChanges();
}
else
{
for (int x = 0; x < real.getSizeInventory(); x++)
for( int x = 0; x < real.getSizeInventory(); x++ )
{
ItemStack failed = real.getStackInSlot( x );
if ( failed != null )
if( failed != null )
{
this.cellInv.injectItems( AEItemStack.create( failed ), Actionable.MODULATE, new MachineSource( this.ct ) );
}
}
}
}
}
@Override
public void onSlotChange(Slot s)
public void detectAndSendChanges()
{
if ( s == this.patternSlotOUT && Platform.isServer() )
super.detectAndSendChanges();
if( Platform.isServer() )
{
for (Object crafter : this.crafters)
if( this.craftingMode != this.ct.isCraftingRecipe() )
{
this.craftingMode = this.ct.isCraftingRecipe();
this.updateOrderOfOutputSlots();
}
}
}
@Override
public void onUpdate( String field, Object oldValue, Object newValue )
{
super.onUpdate( field, oldValue, newValue );
if( field.equals( "craftingMode" ) )
{
this.getAndUpdateOutput();
this.updateOrderOfOutputSlots();
}
}
@Override
public void onSlotChange( Slot s )
{
if( s == this.patternSlotOUT && Platform.isServer() )
{
for( Object crafter : this.crafters )
{
ICrafting icrafting = (ICrafting) crafter;
for (Object g : this.inventorySlots)
for( Object g : this.inventorySlots )
{
if ( g instanceof OptionalSlotFake || g instanceof SlotFakeCraftingMatrix )
if( g instanceof OptionalSlotFake || g instanceof SlotFakeCraftingMatrix )
{
Slot sri = (Slot) g;
icrafting.sendSlotContents( this, sri.slotNumber, sri.getStack() );
}
}
((EntityPlayerMP) icrafting).isChangingQuantityOnly = false;
( (EntityPlayerMP) icrafting ).isChangingQuantityOnly = false;
}
this.detectAndSendChanges();
}
@@ -445,10 +440,10 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
public void clear()
{
for (Slot s : this.craftingSlots)
for( Slot s : this.craftingSlots )
s.putStack( null );
for (Slot s : this.outputSlots)
for( Slot s : this.outputSlots )
s.putStack( null );
this.detectAndSendChanges();
@@ -456,9 +451,9 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
}
@Override
public IInventory getInventoryByName(String name)
public IInventory getInventoryByName( String name )
{
if (name.equals("player"))
if( name.equals( "player" ) )
{
return this.invPlayer;
}
@@ -34,30 +34,31 @@ import appeng.container.guisync.GuiSync;
import appeng.helpers.IPriorityHost;
import appeng.util.Platform;
public class ContainerPriority extends AEBaseContainer
{
final IPriorityHost priHost;
@SideOnly(Side.CLIENT)
@SideOnly( Side.CLIENT )
public GuiTextField textField;
@GuiSync( 2 )
public long PriorityValue = -1;
@SideOnly(Side.CLIENT)
public void setTextField(GuiTextField level)
public ContainerPriority( InventoryPlayer ip, IPriorityHost te )
{
super( ip, (TileEntity) ( te instanceof TileEntity ? te : null ), (IPart) ( te instanceof IPart ? te : null ) );
this.priHost = te;
}
@SideOnly( Side.CLIENT )
public void setTextField( GuiTextField level )
{
this.textField = level;
this.textField.setText( String.valueOf( this.PriorityValue ) );
}
public ContainerPriority(InventoryPlayer ip, IPriorityHost te) {
super( ip, (TileEntity) (te instanceof TileEntity ? te : null), (IPart) (te instanceof IPart ? te : null) );
this.priHost = te;
}
@GuiSync(2)
public long PriorityValue = -1;
public void setPriority(int newValue, EntityPlayer player)
public void setPriority( int newValue, EntityPlayer player )
{
this.priHost.setPriority( newValue );
this.PriorityValue = newValue;
@@ -69,18 +70,18 @@ public class ContainerPriority extends AEBaseContainer
super.detectAndSendChanges();
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.PriorityValue = this.priHost.getPriority();
}
}
@Override
public void onUpdate(String field, Object oldValue, Object newValue)
public void onUpdate( String field, Object oldValue, Object newValue )
{
if ( field.equals( "PriorityValue" ) )
if( field.equals( "PriorityValue" ) )
{
if ( this.textField != null )
if( this.textField != null )
this.textField.setText( String.valueOf( this.PriorityValue ) );
}
@@ -18,24 +18,26 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.qnb.TileQuantumBridge;
public class ContainerQNB extends AEBaseContainer
{
final TileQuantumBridge quantumBridge;
public ContainerQNB(InventoryPlayer ip, TileQuantumBridge quantumBridge) {
public ContainerQNB( InventoryPlayer ip, TileQuantumBridge quantumBridge )
{
super( ip, quantumBridge, null );
this.quantumBridge = quantumBridge;
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.QE_SINGULARITY, quantumBridge, 0, 80, 37, this.invPlayer )).setStackLimit( 1 ) );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.QE_SINGULARITY, quantumBridge, 0, 80, 37, this.invPlayer ) ).setStackLimit( 1 ) );
this.bindPlayerInventory( ip, 0, 166 - /* height of player inventory */82 );
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
@@ -36,6 +37,7 @@ import appeng.tile.inventory.IAEAppEngInventory;
import appeng.tile.inventory.InvOperation;
import appeng.util.Platform;
public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngInventory, IInventory
{
@@ -46,12 +48,8 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
final QuartzKnifeOutput output;
String myName = "";
public void setName(String value)
public ContainerQuartzKnife( InventoryPlayer ip, QuartzKnifeObj te )
{
this.myName = value;
}
public ContainerQuartzKnife(InventoryPlayer ip, QuartzKnifeObj te) {
super( ip, null, null );
this.toolInv = te;
@@ -63,16 +61,21 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
this.bindPlayerInventory( ip, 0, 184 - /* height of player inventory */82 );
}
public void setName( String value )
{
this.myName = value;
}
@Override
public void detectAndSendChanges()
{
ItemStack currentItem = this.getPlayerInv().getCurrentItem();
if ( currentItem != this.toolInv.getItemStack() )
if( currentItem != this.toolInv.getItemStack() )
{
if ( currentItem != null )
if( currentItem != null )
{
if ( Platform.isSameItem( this.toolInv.getItemStack(), currentItem ) )
if( Platform.isSameItem( this.toolInv.getItemStack(), currentItem ) )
this.getPlayerInv().setInventorySlotContents( this.getPlayerInv().currentItem, this.toolInv.getItemStack() );
else
this.isContainerValid = false;
@@ -85,9 +88,9 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public void onContainerClosed(EntityPlayer par1EntityPlayer)
public void onContainerClosed( EntityPlayer par1EntityPlayer )
{
if ( this.inSlot.getStackInSlot( 0 ) != null )
if( this.inSlot.getStackInSlot( 0 ) != null )
par1EntityPlayer.dropPlayerItemWithRandomChoice( this.inSlot.getStackInSlot( 0 ), false );
}
@@ -98,7 +101,7 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack)
public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack )
{
}
@@ -110,17 +113,17 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public ItemStack getStackInSlot(int var1)
public ItemStack getStackInSlot( int var1 )
{
ItemStack input = this.inSlot.getStackInSlot( 0 );
if ( input == null )
if( input == null )
return null;
if ( SlotRestrictedInput.isMetalIngot( input ) )
if( SlotRestrictedInput.isMetalIngot( input ) )
{
if ( this.myName.length() > 0 )
if( this.myName.length() > 0 )
{
for ( ItemStack namePressStack : AEApi.instance().definitions().materials().namePress().maybeStack( 1 ).asSet() )
for( ItemStack namePressStack : AEApi.instance().definitions().materials().namePress().maybeStack( 1 ).asSet() )
{
final NBTTagCompound compound = Platform.openNbtData( namePressStack );
compound.setString( "InscribeName", this.myName );
@@ -134,12 +137,12 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public ItemStack decrStackSize(int var1, int var2)
public ItemStack decrStackSize( int var1, int var2 )
{
ItemStack is = this.getStackInSlot( 0 );
if ( is != null )
if( is != null )
{
if ( this.makePlate() )
if( this.makePlate() )
return is;
}
return null;
@@ -147,12 +150,12 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
private boolean makePlate()
{
if ( this.inSlot.decrStackSize( 0, 1 ) != null )
if( this.inSlot.decrStackSize( 0, 1 ) != null )
{
ItemStack item = this.toolInv.getItemStack();
item.damageItem( 1, this.getPlayerInv().player );
if ( item.stackSize == 0 )
if( item.stackSize == 0 )
{
this.getPlayerInv().mainInventory[this.getPlayerInv().currentItem] = null;
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( this.getPlayerInv().player, item ) );
@@ -164,15 +167,15 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public ItemStack getStackInSlotOnClosing(int var1)
public ItemStack getStackInSlotOnClosing( int var1 )
{
return null;
}
@Override
public void setInventorySlotContents(int var1, ItemStack var2)
public void setInventorySlotContents( int var1, ItemStack var2 )
{
if ( var2 == null && Platform.isServer() )
if( var2 == null && Platform.isServer() )
this.makePlate();
}
@@ -201,7 +204,7 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public boolean isUseableByPlayer(EntityPlayer var1)
public boolean isUseableByPlayer( EntityPlayer var1 )
{
return false;
}
@@ -219,9 +222,8 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
}
@Override
public boolean isItemValidForSlot(int var1, ItemStack var2)
public boolean isItemValidForSlot( int var1, ItemStack var2 )
{
return false;
}
}
@@ -39,6 +39,7 @@ import appeng.tile.inventory.IAEAppEngInventory;
import appeng.tile.inventory.InvOperation;
import appeng.tile.misc.TileSecurity;
public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppEngInventory
{
@@ -50,8 +51,11 @@ public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppE
final SlotOutput wirelessOut;
final TileSecurity securityBox;
@GuiSync( 0 )
public int security = 0;
public ContainerSecurity(InventoryPlayer ip, ITerminalHost monitorable) {
public ContainerSecurity( InventoryPlayer ip, ITerminalHost monitorable )
{
super( ip, monitorable, false );
this.securityBox = (TileSecurity) monitorable;
@@ -64,38 +68,23 @@ public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppE
this.bindPlayerInventory( ip, 0, 0 );
}
@GuiSync(0)
public int security = 0;
@Override
public void onContainerClosed(EntityPlayer player)
{
super.onContainerClosed( player );
if ( this.wirelessIn.getHasStack() )
player.dropPlayerItemWithRandomChoice( this.wirelessIn.getStack(), false );
if ( this.wirelessOut.getHasStack() )
player.dropPlayerItemWithRandomChoice( this.wirelessOut.getStack(), false );
}
public void toggleSetting(String value, EntityPlayer player)
public void toggleSetting( String value, EntityPlayer player )
{
try
{
SecurityPermissions permission = SecurityPermissions.valueOf( value );
ItemStack a = this.configSlot.getStack();
if ( a != null && a.getItem() instanceof IBiometricCard )
if( a != null && a.getItem() instanceof IBiometricCard )
{
IBiometricCard bc = (IBiometricCard) a.getItem();
if ( bc.hasPermission( a, permission ) )
if( bc.hasPermission( a, permission ) )
bc.removePermission( a, permission );
else
bc.addPermission( a, permission );
}
}
catch (EnumConstantNotPresentException ex)
catch( EnumConstantNotPresentException ex )
{
// :(
}
@@ -109,11 +98,11 @@ public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppE
this.security = 0;
ItemStack a = this.configSlot.getStack();
if ( a != null && a.getItem() instanceof IBiometricCard )
if( a != null && a.getItem() instanceof IBiometricCard )
{
IBiometricCard bc = (IBiometricCard) a.getItem();
for (SecurityPermissions sp : bc.getPermissions( a ))
for( SecurityPermissions sp : bc.getPermissions( a ) )
this.security |= ( 1 << sp.ordinal() );
}
@@ -122,6 +111,18 @@ public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppE
super.detectAndSendChanges();
}
@Override
public void onContainerClosed( EntityPlayer player )
{
super.onContainerClosed( player );
if( this.wirelessIn.getHasStack() )
player.dropPlayerItemWithRandomChoice( this.wirelessIn.getStack(), false );
if( this.wirelessOut.getHasStack() )
player.dropPlayerItemWithRandomChoice( this.wirelessOut.getStack(), false );
}
@Override
public void saveChanges()
{
@@ -129,23 +130,23 @@ public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppE
}
@Override
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack)
public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack )
{
if ( !this.wirelessOut.getHasStack() )
if( !this.wirelessOut.getHasStack() )
{
if ( this.wirelessIn.getHasStack() )
if( this.wirelessIn.getHasStack() )
{
ItemStack term = this.wirelessIn.getStack().copy();
INetworkEncodable networkEncodable = null;
if ( term.getItem() instanceof INetworkEncodable )
if( term.getItem() instanceof INetworkEncodable )
networkEncodable = (INetworkEncodable) term.getItem();
IWirelessTermHandler wTermHandler = AEApi.instance().registries().wireless().getWirelessTerminalHandler( term );
if ( wTermHandler != null )
if( wTermHandler != null )
networkEncodable = wTermHandler;
if ( networkEncodable != null )
if( networkEncodable != null )
{
networkEncodable.setEncryptionKey( term, String.valueOf( this.securityBox.securityKey ), "" );
@@ -153,14 +154,13 @@ public class ContainerSecurity extends ContainerMEMonitorable implements IAEAppE
this.wirelessOut.putStack( term );
// update the two slots in question...
for (Object crafter : this.crafters)
for( Object crafter : this.crafters )
{
ICrafting icrafting = (ICrafting) crafter;
icrafting.sendSlotContents( this, this.wirelessIn.slotNumber, this.wirelessIn.getStack() );
icrafting.sendSlotContents( this, this.wirelessOut.slotNumber, this.wirelessOut.getStack() );
}
}
}
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
@@ -27,19 +28,21 @@ import appeng.container.AEBaseContainer;
import appeng.container.slot.SlotNormal;
import appeng.tile.storage.TileSkyChest;
@ChestContainer
public class ContainerSkyChest extends AEBaseContainer
{
final TileSkyChest chest;
public ContainerSkyChest(InventoryPlayer ip, TileSkyChest chest) {
public ContainerSkyChest( InventoryPlayer ip, TileSkyChest chest )
{
super( ip, chest, null );
this.chest = chest;
for (int y = 0; y < 4; y++)
for( int y = 0; y < 4; y++ )
{
for (int x = 0; x < 9; x++)
for( int x = 0; x < 9; x++ )
{
this.addSlotToContainer( new SlotNormal( this.chest, y * 9 + x, 8 + 18 * x, 24 + 18 * y ) );
}
@@ -51,7 +54,7 @@ public class ContainerSkyChest extends AEBaseContainer
}
@Override
public void onContainerClosed(EntityPlayer par1EntityPlayer)
public void onContainerClosed( EntityPlayer par1EntityPlayer )
{
super.onContainerClosed( par1EntityPlayer );
this.chest.closeInventory();
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraftforge.common.util.ForgeDirection;
@@ -32,29 +33,28 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.spatial.TileSpatialIOPort;
import appeng.util.Platform;
public class ContainerSpatialIOPort extends AEBaseContainer
{
final TileSpatialIOPort spatialIOPort;
IGrid network;
@GuiSync(0)
@GuiSync( 0 )
public long currentPower;
@GuiSync(1)
@GuiSync( 1 )
public long maxPower;
@GuiSync(2)
@GuiSync( 2 )
public long reqPower;
@GuiSync(3)
@GuiSync( 3 )
public long eff;
IGrid network;
int delay = 40;
public ContainerSpatialIOPort(InventoryPlayer ip, TileSpatialIOPort spatialIOPort) {
public ContainerSpatialIOPort( InventoryPlayer ip, TileSpatialIOPort spatialIOPort )
{
super( ip, spatialIOPort, null );
this.spatialIOPort = spatialIOPort;
if ( Platform.isServer() )
if( Platform.isServer() )
this.network = spatialIOPort.getGridNode( ForgeDirection.UNKNOWN ).getGrid();
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.SPATIAL_STORAGE_CELLS, spatialIOPort, 0, 52, 48, this.invPlayer ) );
@@ -68,21 +68,21 @@ public class ContainerSpatialIOPort extends AEBaseContainer
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.delay++;
if ( this.delay > 15 && this.network != null )
if( this.delay > 15 && this.network != null )
{
this.delay = 0;
IEnergyGrid eg = this.network.getCache( IEnergyGrid.class );
ISpatialCache sc = this.network.getCache( ISpatialCache.class );
if ( eg != null )
if( eg != null )
{
this.currentPower = (long) (100.0 * eg.getStoredPower());
this.maxPower = (long) (100.0 * eg.getMaxStoredPower());
this.reqPower = (long) (100.0 * sc.requiredPower());
this.eff = (long) (100.0f * sc.currentEfficiency());
this.currentPower = (long) ( 100.0 * eg.getStoredPower() );
this.maxPower = (long) ( 100.0 * eg.getMaxStoredPower() );
this.reqPower = (long) ( 100.0 * sc.requiredPower() );
this.eff = (long) ( 100.0f * sc.currentEfficiency() );
}
}
}
@@ -43,18 +43,20 @@ import appeng.parts.misc.PartStorageBus;
import appeng.util.Platform;
import appeng.util.iterators.NullIterator;
public class ContainerStorageBus extends ContainerUpgradeable
{
final PartStorageBus storageBus;
@GuiSync(3)
@GuiSync( 3 )
public AccessRestriction rwMode = AccessRestriction.READ_WRITE;
@GuiSync(4)
@GuiSync( 4 )
public StorageFilter storageFilter = StorageFilter.EXTRACTABLE_ONLY;
public ContainerStorageBus(InventoryPlayer ip, PartStorageBus te) {
public ContainerStorageBus( InventoryPlayer ip, PartStorageBus te )
{
super( ip, te );
this.storageBus = te;
}
@@ -66,9 +68,29 @@ public class ContainerStorageBus extends ContainerUpgradeable
}
@Override
public int availableUpgrades()
protected void setupConfig()
{
return 5;
int xo = 8;
int yo = 23 + 6;
IInventory config = this.upgradeable.getInventoryByName( "config" );
for( int y = 0; y < 7; y++ )
{
for( int x = 0; x < 9; x++ )
{
if( y < 2 )
this.addSlotToContainer( new SlotFakeTypeOnly( config, y * 9 + x, xo + x * 18, yo + y * 18 ) );
else
this.addSlotToContainer( new OptionalSlotFakeTypeOnly( config, this, y * 9 + x, xo, yo, x, y, y - 2 ) );
}
}
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer ) ).setNotDraggable() );
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 4, 187, 8 + 18 * 4, this.invPlayer ) ).setNotDraggable() );
}
@Override
@@ -78,37 +100,9 @@ public class ContainerStorageBus extends ContainerUpgradeable
}
@Override
public boolean isSlotEnabled(int idx)
public int availableUpgrades()
{
int upgrades = this.upgradeable.getInstalledUpgrades( Upgrades.CAPACITY );
return upgrades > idx;
}
@Override
protected void setupConfig()
{
int xo = 8;
int yo = 23 + 6;
IInventory config = this.upgradeable.getInventoryByName( "config" );
for (int y = 0; y < 7; y++)
{
for (int x = 0; x < 9; x++)
{
if ( y < 2 )
this.addSlotToContainer( new SlotFakeTypeOnly( config, y * 9 + x, xo + x * 18, yo + y * 18 ) );
else
this.addSlotToContainer( new OptionalSlotFakeTypeOnly( config, this, y * 9 + x, xo, yo, x, y, y - 2 ) );
}
}
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer )).setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer )).setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer )).setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer )).setNotDraggable() );
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 4, 187, 8 + 18 * 4, this.invPlayer )).setNotDraggable() );
return 5;
}
@Override
@@ -116,7 +110,7 @@ public class ContainerStorageBus extends ContainerUpgradeable
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.fzMode = (FuzzyMode) this.upgradeable.getConfigManager().getSetting( Settings.FUZZY_MODE );
this.rwMode = (AccessRestriction) this.upgradeable.getConfigManager().getSetting( Settings.ACCESS );
@@ -126,10 +120,18 @@ public class ContainerStorageBus extends ContainerUpgradeable
this.standardDetectAndSendChanges();
}
@Override
public boolean isSlotEnabled( int idx )
{
int upgrades = this.upgradeable.getInstalledUpgrades( Upgrades.CAPACITY );
return upgrades > idx;
}
public void clear()
{
IInventory inv = this.upgradeable.getInventoryByName( "config" );
for (int x = 0; x < inv.getSizeInventory(); x++)
for( int x = 0; x < inv.getSizeInventory(); x++ )
inv.setInventorySlotContents( x, null );
this.detectAndSendChanges();
}
@@ -141,15 +143,15 @@ public class ContainerStorageBus extends ContainerUpgradeable
IMEInventory<IAEItemStack> cellInv = this.storageBus.getInternalHandler();
Iterator<IAEItemStack> i = new NullIterator<IAEItemStack>();
if ( cellInv != null )
if( cellInv != null )
{
IItemList<IAEItemStack> list = cellInv.getAvailableItems( AEApi.instance().storage().createItemList() );
i = list.iterator();
}
for (int x = 0; x < inv.getSizeInventory(); x++)
for( int x = 0; x < inv.getSizeInventory(); x++ )
{
if ( i.hasNext() && this.isSlotEnabled( (x / 9) - 2 ) )
if( i.hasNext() && this.isSlotEnabled( ( x / 9 ) - 2 ) )
{
ItemStack g = i.next().getItemStack();
g.stackSize = 1;
@@ -161,5 +163,4 @@ public class ContainerStorageBus extends ContainerUpgradeable
this.detectAndSendChanges();
}
}
@@ -46,16 +46,23 @@ import appeng.items.tools.ToolNetworkTool;
import appeng.parts.automation.PartExportBus;
import appeng.util.Platform;
public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSlotHost
{
final IUpgradeableHost upgradeable;
@GuiSync( 0 )
public RedstoneMode rsMode = RedstoneMode.IGNORE;
@GuiSync( 1 )
public FuzzyMode fzMode = FuzzyMode.IGNORE_ALL;
@GuiSync( 5 )
public YesNo cMode = YesNo.NO;
int tbSlot;
NetworkToolViewer tbInventory;
public ContainerUpgradeable(InventoryPlayer ip, IUpgradeableHost te) {
super( ip, (TileEntity) (te instanceof TileEntity ? te : null), (IPart) (te instanceof IPart ? te : null) );
public ContainerUpgradeable( InventoryPlayer ip, IUpgradeableHost te )
{
super( ip, (TileEntity) ( te instanceof TileEntity ? te : null ), (IPart) ( te instanceof IPart ? te : null ) );
this.upgradeable = te;
World w = null;
@@ -63,7 +70,7 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
int yCoord = 0;
int zCoord = 0;
if ( te instanceof TileEntity )
if( te instanceof TileEntity )
{
TileEntity myTile = (TileEntity) te;
w = myTile.getWorldObj();
@@ -72,7 +79,7 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
zCoord = myTile.zCoord;
}
if ( te instanceof IPart )
if( te instanceof IPart )
{
TileEntity mk = te.getTile();
w = mk.getWorldObj();
@@ -82,24 +89,23 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
}
IInventory pi = this.getPlayerInv();
for (int x = 0; x < pi.getSizeInventory(); x++)
for( int x = 0; x < pi.getSizeInventory(); x++ )
{
ItemStack pii = pi.getStackInSlot( x );
if ( pii != null && pii.getItem() instanceof ToolNetworkTool )
if( pii != null && pii.getItem() instanceof ToolNetworkTool )
{
this.lockPlayerInventorySlot( x );
this.tbSlot = x;
this.tbInventory = (NetworkToolViewer) ((ToolNetworkTool) pii.getItem()).getGuiObject( pii, w, xCoord, yCoord, zCoord );
this.tbInventory = (NetworkToolViewer) ( (ToolNetworkTool) pii.getItem() ).getGuiObject( pii, w, xCoord, yCoord, zCoord );
break;
}
}
if ( this.hasToolbox() )
if( this.hasToolbox() )
{
for (int v = 0; v < 3; v++)
for (int u = 0; u < 3; u++)
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, this.tbInventory, u + v * 3, 186 + u * 18, this.getHeight() - 82 + v * 18,
this.invPlayer )).setPlayerSide() );
for( int v = 0; v < 3; v++ )
for( int u = 0; u < 3; u++ )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, this.tbInventory, u + v * 3, 186 + u * 18, this.getHeight() - 82 + v * 18, this.invPlayer ) ).setPlayerSide() );
}
this.setupConfig();
@@ -107,17 +113,14 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
this.bindPlayerInventory( ip, 0, this.getHeight() - /* height of player inventory */82 );
}
protected void setupUpgrades()
public boolean hasToolbox()
{
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
if ( this.availableUpgrades() > 0 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer )).setNotDraggable() );
if ( this.availableUpgrades() > 1 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer )).setNotDraggable() );
if ( this.availableUpgrades() > 2 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer )).setNotDraggable() );
if ( this.availableUpgrades() > 3 )
this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer )).setNotDraggable() );
return this.tbInventory != null;
}
protected int getHeight()
{
return 184;
}
protected void setupConfig()
@@ -129,7 +132,7 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
IInventory inv = this.upgradeable.getInventoryByName( "config" );
this.addSlotToContainer( new SlotFakeTypeOnly( inv, 0, x, y ) );
if ( this.supportCapacity() )
if( this.supportCapacity() )
{
this.addSlotToContainer( new OptionalSlotFakeTypeOnly( inv, this, 1, x, y, -1, 0, 1 ) );
this.addSlotToContainer( new OptionalSlotFakeTypeOnly( inv, this, 2, x, y, 1, 0, 1 ) );
@@ -143,14 +146,17 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
}
}
protected int getHeight()
protected void setupUpgrades()
{
return 184;
}
public int availableUpgrades()
{
return 4;
IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" );
if( this.availableUpgrades() > 0 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer ) ).setNotDraggable() );
if( this.availableUpgrades() > 1 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer ) ).setNotDraggable() );
if( this.availableUpgrades() > 2 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer ) ).setNotDraggable() );
if( this.availableUpgrades() > 3 )
this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3, this.invPlayer ) ).setNotDraggable() );
}
protected boolean supportCapacity()
@@ -158,26 +164,56 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
return true;
}
@GuiSync(0)
public RedstoneMode rsMode = RedstoneMode.IGNORE;
public int availableUpgrades()
{
return 4;
}
@GuiSync(1)
public FuzzyMode fzMode = FuzzyMode.IGNORE_ALL;
@Override
public void detectAndSendChanges()
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
@GuiSync(5)
public YesNo cMode = YesNo.NO;
if( Platform.isServer() )
{
IConfigManager cm = this.upgradeable.getConfigManager();
this.loadSettingsFromHost( cm );
}
this.checkToolbox();
for( Object o : this.inventorySlots )
{
if( o instanceof OptionalSlotFake )
{
OptionalSlotFake fs = (OptionalSlotFake) o;
if( !fs.isEnabled() && fs.getDisplayStack() != null )
fs.clearStack();
}
}
this.standardDetectAndSendChanges();
}
protected void loadSettingsFromHost( IConfigManager cm )
{
this.fzMode = (FuzzyMode) cm.getSetting( Settings.FUZZY_MODE );
this.rsMode = (RedstoneMode) cm.getSetting( Settings.REDSTONE_CONTROLLED );
if( this.upgradeable instanceof PartExportBus )
this.cMode = (YesNo) cm.getSetting( Settings.CRAFT_ONLY );
}
public void checkToolbox()
{
if ( this.hasToolbox() )
if( this.hasToolbox() )
{
ItemStack currentItem = this.getPlayerInv().getStackInSlot( this.tbSlot );
if ( currentItem != this.tbInventory.getItemStack() )
if( currentItem != this.tbInventory.getItemStack() )
{
if ( currentItem != null )
if( currentItem != null )
{
if ( Platform.isSameItem( this.tbInventory.getItemStack(), currentItem ) )
if( Platform.isSameItem( this.tbInventory.getItemStack(), currentItem ) )
this.getPlayerInv().setInventorySlotContents( this.tbSlot, this.tbInventory.getItemStack() );
else
this.isContainerValid = false;
@@ -188,61 +224,21 @@ public class ContainerUpgradeable extends AEBaseContainer implements IOptionalSl
}
}
@Override
public void detectAndSendChanges()
{
this.verifyPermissions( SecurityPermissions.BUILD, false );
if ( Platform.isServer() )
{
IConfigManager cm = this.upgradeable.getConfigManager();
this.loadSettingsFromHost( cm );
}
this.checkToolbox();
for (Object o : this.inventorySlots)
{
if ( o instanceof OptionalSlotFake )
{
OptionalSlotFake fs = (OptionalSlotFake) o;
if ( !fs.isEnabled() && fs.getDisplayStack() != null )
fs.clearStack();
}
}
this.standardDetectAndSendChanges();
}
protected void loadSettingsFromHost(IConfigManager cm)
{
this.fzMode = (FuzzyMode) cm.getSetting( Settings.FUZZY_MODE );
this.rsMode = (RedstoneMode) cm.getSetting( Settings.REDSTONE_CONTROLLED );
if ( this.upgradeable instanceof PartExportBus )
this.cMode = (YesNo) cm.getSetting( Settings.CRAFT_ONLY );
}
protected void standardDetectAndSendChanges()
{
super.detectAndSendChanges();
}
public boolean hasToolbox()
{
return this.tbInventory != null;
}
@Override
public boolean isSlotEnabled(int idx)
public boolean isSlotEnabled( int idx )
{
int upgrades = this.upgradeable.getInstalledUpgrades( Upgrades.CAPACITY );
if ( idx == 1 && upgrades > 0 )
if( idx == 1 && upgrades > 0 )
return true;
if ( idx == 2 && upgrades > 1 )
if( idx == 2 && upgrades > 1 )
return true;
return false;
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
@@ -27,13 +28,20 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.misc.TileVibrationChamber;
import appeng.util.Platform;
public class ContainerVibrationChamber extends AEBaseContainer implements IProgressProvider
{
final TileVibrationChamber vibrationChamber;
private static final int MAX_BURN_TIME = 200;
public final int aePerTick = 5;
final TileVibrationChamber vibrationChamber;
@GuiSync( 0 )
public int burnProgress = 0;
@GuiSync( 1 )
public int burnSpeed = 100;
public ContainerVibrationChamber(InventoryPlayer ip, TileVibrationChamber vibrationChamber) {
public ContainerVibrationChamber( InventoryPlayer ip, TileVibrationChamber vibrationChamber )
{
super( ip, vibrationChamber, null );
this.vibrationChamber = vibrationChamber;
@@ -42,20 +50,12 @@ public class ContainerVibrationChamber extends AEBaseContainer implements IProgr
this.bindPlayerInventory( ip, 0, 166 - /* height of player inventory */82 );
}
public final int aePerTick = 5;
@GuiSync(0)
public int burnProgress = 0;
@GuiSync(1)
public int burnSpeed = 100;
@Override
public void detectAndSendChanges()
{
if ( Platform.isServer() )
if( Platform.isServer() )
{
this.burnProgress = (int) (this.vibrationChamber.maxBurnTime <= 0 ? 0 : 12 * this.vibrationChamber.burnTime / this.vibrationChamber.maxBurnTime);
this.burnProgress = (int) ( this.vibrationChamber.maxBurnTime <= 0 ? 0 : 12 * this.vibrationChamber.burnTime / this.vibrationChamber.maxBurnTime );
this.burnSpeed = this.vibrationChamber.burnSpeed;
}
@@ -73,5 +73,4 @@ public class ContainerVibrationChamber extends AEBaseContainer implements IProgr
{
return MAX_BURN_TIME;
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
@@ -26,20 +27,19 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.core.AEConfig;
import appeng.tile.networking.TileWireless;
public class ContainerWireless extends AEBaseContainer
{
final TileWireless wirelessTerminal;
@GuiSync(1)
final SlotRestrictedInput boosterSlot;
@GuiSync( 1 )
public long range = 0;
@GuiSync(2)
@GuiSync( 2 )
public long drain = 0;
final SlotRestrictedInput boosterSlot;
public ContainerWireless(InventoryPlayer ip, TileWireless te) {
public ContainerWireless( InventoryPlayer ip, TileWireless te )
{
super( ip, te, null );
this.wirelessTerminal = te;
@@ -53,10 +53,9 @@ public class ContainerWireless extends AEBaseContainer
{
int boosters = this.boosterSlot.getStack() == null ? 0 : this.boosterSlot.getStack().stackSize;
this.range = (long) (10 * AEConfig.instance.wireless_getMaxRange( boosters ));
this.drain = (long) (100 * AEConfig.instance.wireless_getPowerDrain( boosters ));
this.range = (long) ( 10 * AEConfig.instance.wireless_getMaxRange( boosters ) );
this.drain = (long) ( 100 * AEConfig.instance.wireless_getPowerDrain( boosters ) );
super.detectAndSendChanges();
}
}
@@ -18,6 +18,7 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.core.AEConfig;
@@ -25,12 +26,14 @@ import appeng.core.localization.PlayerMessages;
import appeng.helpers.WirelessTerminalGuiObject;
import appeng.util.Platform;
public class ContainerWirelessTerm extends ContainerMEPortableCell
{
final WirelessTerminalGuiObject wirelessTerminalGUIObject;
public ContainerWirelessTerm(InventoryPlayer ip, WirelessTerminalGuiObject wirelessTerminalGUIObject) {
public ContainerWirelessTerm( InventoryPlayer ip, WirelessTerminalGuiObject wirelessTerminalGUIObject )
{
super( ip, wirelessTerminalGUIObject );
this.wirelessTerminalGUIObject = wirelessTerminalGUIObject;
}
@@ -40,9 +43,9 @@ public class ContainerWirelessTerm extends ContainerMEPortableCell
{
super.detectAndSendChanges();
if ( !this.wirelessTerminalGUIObject.rangeCheck() )
if( !this.wirelessTerminalGUIObject.rangeCheck() )
{
if ( Platform.isServer() && this.isContainerValid )
if( Platform.isServer() && this.isContainerValid )
this.getPlayerInv().player.addChatMessage( PlayerMessages.OutOfRange.get() );
this.isContainerValid = false;
@@ -18,20 +18,21 @@
package appeng.container.implementations;
import appeng.api.networking.crafting.ICraftingCPU;
import appeng.util.ItemSorters;
public class CraftingCPURecord implements Comparable<CraftingCPURecord>
{
public final String myName;
final ICraftingCPU cpu;
final long size;
final int processors;
public final String myName;
public CraftingCPURecord(long size, int coProcessors, ICraftingCPU server) {
public CraftingCPURecord( long size, int coProcessors, ICraftingCPU server )
{
this.size = size;
this.processors = coProcessors;
this.cpu = server;
@@ -39,12 +40,11 @@ public class CraftingCPURecord implements Comparable<CraftingCPURecord>
}
@Override
public int compareTo(CraftingCPURecord o)
public int compareTo( CraftingCPURecord o )
{
int a = ItemSorters.compareLong( o.processors, this.processors );
if ( a != 0 )
if( a != 0 )
return a;
return ItemSorters.compareLong( o.size, this.size );
}
}
@@ -18,14 +18,15 @@
package appeng.container.interfaces;
import appeng.client.gui.widgets.GuiProgressBar;
/**
* This interface provides the data for anything simulating a progress.
*
* Its main use is in combination with the {@link GuiProgressBar}, which ensures to scale it to a percentage of 0 to
* 100.
*
*/
public interface IProgressProvider
{
@@ -46,5 +47,4 @@ public interface IProgressProvider
* @return An int representing the max progress
*/
int getMaxProgress();
}
@@ -18,6 +18,7 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
@@ -33,13 +34,18 @@ import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
import cpw.mods.fml.common.FMLCommonHandler;
public class AppEngCraftingSlot extends AppEngSlot
{
/** The craft matrix inventory linked to this result slot. */
/**
* The craft matrix inventory linked to this result slot.
*/
private final IInventory craftMatrix;
/** The player that is using the GUI where this slot resides. */
/**
* The player that is using the GUI where this slot resides.
*/
private final EntityPlayer thePlayer;
/**
@@ -47,7 +53,8 @@ public class AppEngCraftingSlot extends AppEngSlot
*/
private int amountCrafted;
public AppEngCraftingSlot(EntityPlayer par1EntityPlayer, IInventory par2IInventory, IInventory par3IInventory, int par4, int par5, int par6) {
public AppEngCraftingSlot( EntityPlayer par1EntityPlayer, IInventory par2IInventory, IInventory par3IInventory, int par4, int par5, int par6 )
{
super( par3IInventory, par4, par5, par6 );
this.thePlayer = par1EntityPlayer;
this.craftMatrix = par2IInventory;
@@ -57,32 +64,17 @@ public class AppEngCraftingSlot extends AppEngSlot
* Check if the stack is a valid item for this slot. Always true beside for the armor slots.
*/
@Override
public boolean isItemValid(ItemStack par1ItemStack)
public boolean isItemValid( ItemStack par1ItemStack )
{
return false;
}
/**
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
* stack.
*/
@Override
public ItemStack decrStackSize(int par1)
{
if ( this.getHasStack() )
{
this.amountCrafted += Math.min( par1, this.getStack().stackSize );
}
return super.decrStackSize( par1 );
}
/**
* the itemStack passed in is the output - ie, iron ingots, and pickaxes, not ore and wood. Typically increases an
* internal count then calls onCrafting(item).
*/
@Override
protected void onCrafting(ItemStack par1ItemStack, int par2)
protected void onCrafting( ItemStack par1ItemStack, int par2 )
{
this.amountCrafted += par2;
this.onCrafting( par1ItemStack );
@@ -92,90 +84,89 @@ public class AppEngCraftingSlot extends AppEngSlot
* the itemStack passed in is the output - ie, iron ingots, and pickaxes, not ore and wood.
*/
@Override
protected void onCrafting(ItemStack par1ItemStack)
protected void onCrafting( ItemStack par1ItemStack )
{
par1ItemStack.onCrafting( this.thePlayer.worldObj, this.thePlayer, this.amountCrafted );
this.amountCrafted = 0;
if ( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.crafting_table ) )
if( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.crafting_table ) )
{
this.thePlayer.addStat( AchievementList.buildWorkBench, 1 );
}
if ( par1ItemStack.getItem() instanceof ItemPickaxe )
if( par1ItemStack.getItem() instanceof ItemPickaxe )
{
this.thePlayer.addStat( AchievementList.buildPickaxe, 1 );
}
if ( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.furnace ) )
if( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.furnace ) )
{
this.thePlayer.addStat( AchievementList.buildFurnace, 1 );
}
if ( par1ItemStack.getItem() instanceof ItemHoe )
if( par1ItemStack.getItem() instanceof ItemHoe )
{
this.thePlayer.addStat( AchievementList.buildHoe, 1 );
}
if ( par1ItemStack.getItem() == Items.bread )
if( par1ItemStack.getItem() == Items.bread )
{
this.thePlayer.addStat( AchievementList.makeBread, 1 );
}
if ( par1ItemStack.getItem() == Items.cake )
if( par1ItemStack.getItem() == Items.cake )
{
this.thePlayer.addStat( AchievementList.bakeCake, 1 );
}
if ( par1ItemStack.getItem() instanceof ItemPickaxe && ((ItemPickaxe) par1ItemStack.getItem()).func_150913_i() != Item.ToolMaterial.WOOD )
if( par1ItemStack.getItem() instanceof ItemPickaxe && ( (ItemPickaxe) par1ItemStack.getItem() ).func_150913_i() != Item.ToolMaterial.WOOD )
{
this.thePlayer.addStat( AchievementList.buildBetterPickaxe, 1 );
}
if ( par1ItemStack.getItem() instanceof ItemSword )
if( par1ItemStack.getItem() instanceof ItemSword )
{
this.thePlayer.addStat( AchievementList.buildSword, 1 );
}
if ( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.enchanting_table ) )
if( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.enchanting_table ) )
{
this.thePlayer.addStat( AchievementList.enchantments, 1 );
}
if ( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.bookshelf ) )
if( par1ItemStack.getItem() == Item.getItemFromBlock( Blocks.bookshelf ) )
{
this.thePlayer.addStat( AchievementList.bookcase, 1 );
}
}
@Override
public void onPickupFromSlot(EntityPlayer par1EntityPlayer, ItemStack par2ItemStack)
public void onPickupFromSlot( EntityPlayer par1EntityPlayer, ItemStack par2ItemStack )
{
FMLCommonHandler.instance().firePlayerCraftingEvent( par1EntityPlayer, par2ItemStack, this.craftMatrix );
this.onCrafting( par2ItemStack );
for (int i = 0; i < this.craftMatrix.getSizeInventory(); ++i)
for( int i = 0; i < this.craftMatrix.getSizeInventory(); ++i )
{
ItemStack itemstack1 = this.craftMatrix.getStackInSlot( i );
if ( itemstack1 != null )
if( itemstack1 != null )
{
this.craftMatrix.decrStackSize( i, 1 );
if ( itemstack1.getItem().hasContainerItem( itemstack1 ) )
if( itemstack1.getItem().hasContainerItem( itemstack1 ) )
{
ItemStack itemstack2 = itemstack1.getItem().getContainerItem( itemstack1 );
if ( itemstack2 != null && itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage() )
if( itemstack2 != null && itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage() )
{
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( this.thePlayer, itemstack2 ) );
continue;
}
if ( !itemstack1.getItem().doesContainerItemLeaveCraftingGrid( itemstack1 )
|| !this.thePlayer.inventory.addItemStackToInventory( itemstack2 ) )
if( !itemstack1.getItem().doesContainerItemLeaveCraftingGrid( itemstack1 ) || !this.thePlayer.inventory.addItemStackToInventory( itemstack2 ) )
{
if ( this.craftMatrix.getStackInSlot( i ) == null )
if( this.craftMatrix.getStackInSlot( i ) == null )
{
this.craftMatrix.setInventorySlotContents( i, itemstack2 );
}
@@ -188,4 +179,19 @@ public class AppEngCraftingSlot extends AppEngSlot
}
}
}
/**
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
* stack.
*/
@Override
public ItemStack decrStackSize( int par1 )
{
if( this.getHasStack() )
{
this.amountCrafted += Math.min( par1, this.getStack().stackSize );
}
return super.decrStackSize( par1 );
}
}
@@ -18,6 +18,7 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
@@ -26,17 +27,26 @@ import net.minecraft.item.ItemStack;
import appeng.container.AEBaseContainer;
import appeng.tile.inventory.AppEngInternalInventory;
public class AppEngSlot extends Slot
{
public enum hasCalculatedValidness
{
NotAvailable, Valid, Invalid
}
public final int defX;
public final int defY;
public boolean isDraggable = true;
public boolean isPlayerSide = false;
public AEBaseContainer myContainer = null;
public int IIcon = -1;
public hasCalculatedValidness isValid;
public boolean isDisplay = false;
public AppEngSlot( IInventory inv, int idx, int x, int y )
{
super( inv, idx, x, y );
this.defX = x;
this.defY = y;
this.isValid = hasCalculatedValidness.NotAvailable;
}
public Slot setNotDraggable()
{
@@ -50,95 +60,76 @@ public class AppEngSlot extends Slot
return this;
}
public int IIcon = -1;
public hasCalculatedValidness isValid;
public final int defX;
public final int defY;
@Override
public boolean func_111238_b()
{
return this.isEnabled();
}
public boolean isEnabled()
{
return true;
}
public String getTooltip()
{
return null;
}
@Override
public void onSlotChanged()
{
if ( this.inventory instanceof AppEngInternalInventory )
((AppEngInternalInventory) this.inventory).markDirty( this.getSlotIndex() );
else
super.onSlotChanged();
this.isValid = hasCalculatedValidness.NotAvailable;
}
public AppEngSlot(IInventory inv, int idx, int x, int y) {
super( inv, idx, x, y );
this.defX = x;
this.defY = y;
this.isValid = hasCalculatedValidness.NotAvailable;
}
public boolean isDisplay = false;
@Override
public ItemStack getStack()
{
if ( !this.isEnabled() )
return null;
if ( this.inventory.getSizeInventory() <= this.getSlotIndex() )
return null;
if ( this.isDisplay )
{
this.isDisplay = false;
return this.getDisplayStack();
}
return super.getStack();
}
@Override
public void putStack(ItemStack par1ItemStack)
{
if ( this.isEnabled() )
{
super.putStack( par1ItemStack );
if ( this.myContainer != null )
this.myContainer.onSlotChange( this );
}
}
public void clearStack()
{
super.putStack( null );
}
@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
public boolean isItemValid( ItemStack par1ItemStack )
{
if ( this.isEnabled() )
if( this.isEnabled() )
return super.isItemValid( par1ItemStack );
return false;
}
@Override
public ItemStack getStack()
{
if( !this.isEnabled() )
return null;
if( this.inventory.getSizeInventory() <= this.getSlotIndex() )
return null;
if( this.isDisplay )
{
this.isDisplay = false;
return this.getDisplayStack();
}
return super.getStack();
}
@Override
public void putStack( ItemStack par1ItemStack )
{
if( this.isEnabled() )
{
super.putStack( par1ItemStack );
if( this.myContainer != null )
this.myContainer.onSlotChange( this );
}
}
@Override
public void onSlotChanged()
{
if( this.inventory instanceof AppEngInternalInventory )
( (AppEngInternalInventory) this.inventory ).markDirty( this.getSlotIndex() );
else
super.onSlotChanged();
this.isValid = hasCalculatedValidness.NotAvailable;
}
@Override
public boolean canTakeStack( EntityPlayer par1EntityPlayer )
{
if( this.isEnabled() )
return super.canTakeStack( par1EntityPlayer );
return false;
}
@Override
public boolean isItemValid(ItemStack par1ItemStack)
public boolean func_111238_b()
{
if ( this.isEnabled() )
return super.isItemValid( par1ItemStack );
return false;
return this.isEnabled();
}
public ItemStack getDisplayStack()
@@ -146,6 +137,11 @@ public class AppEngSlot extends Slot
return super.getStack();
}
public boolean isEnabled()
{
return true;
}
public float getOpacityOfIcon()
{
return 0.4f;
@@ -171,4 +167,8 @@ public class AppEngSlot extends Slot
return this.isEnabled();
}
public enum hasCalculatedValidness
{
NotAvailable, Valid, Invalid
}
}
@@ -18,9 +18,9 @@
package appeng.container.slot;
public interface IOptionalSlotHost
{
boolean isSlotEnabled(int idx);
boolean isSlotEnabled( int idx );
}
@@ -18,32 +18,35 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class NullSlot extends Slot
{
public NullSlot() {
public NullSlot()
{
super( null, 0, 0, 0 );
}
@Override
public void onSlotChange(ItemStack par1ItemStack, ItemStack par2ItemStack)
public void onSlotChange( ItemStack par1ItemStack, ItemStack par2ItemStack )
{
}
@Override
public void onPickupFromSlot(EntityPlayer par1EntityPlayer, ItemStack par2ItemStack)
public void onPickupFromSlot( EntityPlayer par1EntityPlayer, ItemStack par2ItemStack )
{
}
@Override
public boolean isItemValid(ItemStack par1ItemStack)
public boolean isItemValid( ItemStack par1ItemStack )
{
return false;
}
@@ -55,7 +58,7 @@ public class NullSlot extends Slot
}
@Override
public void putStack(ItemStack par1ItemStack)
public void putStack( ItemStack par1ItemStack )
{
}
@@ -73,19 +76,19 @@ public class NullSlot extends Slot
}
@Override
public ItemStack decrStackSize(int par1)
public ItemStack decrStackSize( int par1 )
{
return null;
}
@Override
public boolean isSlotInInventory(IInventory par1IInventory, int par2)
public boolean isSlotInInventory( IInventory par1IInventory, int par2 )
{
return false;
}
@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
public boolean canTakeStack( EntityPlayer par1EntityPlayer )
{
return false;
}
@@ -18,22 +18,23 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class OptionalSlotFake extends SlotFake
{
public final int srcX;
public final int srcY;
final int invSlot;
final int groupNum;
final IOptionalSlotHost host;
public boolean renderDisabled = true;
public final int srcX;
public final int srcY;
public OptionalSlotFake(IInventory inv, IOptionalSlotHost containerBus, int idx, int x, int y, int offX, int offY, int groupNum) {
public OptionalSlotFake( IInventory inv, IOptionalSlotHost containerBus, int idx, int x, int y, int offX, int offY, int groupNum )
{
super( inv, idx, x + offX * 18, y + offY * 18 );
this.srcX = x;
this.srcY = y;
@@ -45,9 +46,9 @@ public class OptionalSlotFake extends SlotFake
@Override
public ItemStack getStack()
{
if ( !this.isEnabled() )
if( !this.isEnabled() )
{
if ( this.getDisplayStack() != null )
if( this.getDisplayStack() != null )
this.clearStack();
}
@@ -57,7 +58,7 @@ public class OptionalSlotFake extends SlotFake
@Override
public boolean isEnabled()
{
if ( this.host == null )
if( this.host == null )
return false;
return this.host.isSlotEnabled( this.groupNum );
@@ -67,5 +68,4 @@ public class OptionalSlotFake extends SlotFake
{
return this.renderDisabled;
}
}
@@ -18,25 +18,28 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class OptionalSlotFakeTypeOnly extends OptionalSlotFake
{
public OptionalSlotFakeTypeOnly(IInventory inv, IOptionalSlotHost containerBus, int idx, int x, int y, int offX, int offY, int groupNum) {
public OptionalSlotFakeTypeOnly( IInventory inv, IOptionalSlotHost containerBus, int idx, int x, int y, int offX, int offY, int groupNum )
{
super( inv, containerBus, idx, x, y, offX, offY, groupNum );
}
@Override
public void putStack(ItemStack is)
public void putStack( ItemStack is )
{
if ( is != null )
if( is != null )
{
is = is.copy();
if ( is.stackSize > 1 )
if( is.stackSize > 1 )
is.stackSize = 1;
else if ( is.stackSize < -1 )
else if( is.stackSize < -1 )
is.stackSize = -1;
}
@@ -18,15 +18,18 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class OptionalSlotNormal extends AppEngSlot
{
final int groupNum;
final IOptionalSlotHost host;
public OptionalSlotNormal(IInventory inv, IOptionalSlotHost containerBus, int slot, int xPos, int yPos, int groupNum) {
public OptionalSlotNormal( IInventory inv, IOptionalSlotHost containerBus, int slot, int xPos, int yPos, int groupNum )
{
super( inv, slot, xPos, yPos );
this.groupNum = groupNum;
this.host = containerBus;
@@ -35,10 +38,9 @@ public class OptionalSlotNormal extends AppEngSlot
@Override
public boolean isEnabled()
{
if ( this.host == null )
if( this.host == null )
return false;
return this.host.isSlotEnabled( this.groupNum );
}
}
@@ -18,17 +18,19 @@
package appeng.container.slot;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
public class OptionalSlotRestrictedInput extends SlotRestrictedInput
{
final int groupNum;
final IOptionalSlotHost host;
public OptionalSlotRestrictedInput(PlacableItemType valid, IInventory i, IOptionalSlotHost host, int slotIndex, int x, int y, int grpNum,
InventoryPlayer invPlayer) {
public OptionalSlotRestrictedInput( PlacableItemType valid, IInventory i, IOptionalSlotHost host, int slotIndex, int x, int y, int grpNum, InventoryPlayer invPlayer )
{
super( valid, i, slotIndex, x, y, invPlayer );
this.groupNum = grpNum;
this.host = host;
@@ -37,10 +39,9 @@ public class OptionalSlotRestrictedInput extends SlotRestrictedInput
@Override
public boolean isEnabled()
{
if ( this.host == null )
if( this.host == null )
return false;
return this.host.isSlotEnabled( this.groupNum );
}
}
@@ -18,13 +18,15 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class QuartzKnifeOutput extends SlotOutput
{
public QuartzKnifeOutput(IInventory a, int b, int c, int d, int i) {
public QuartzKnifeOutput( IInventory a, int b, int c, int d, int i )
{
super( a, b, c, d, i );
}
}
@@ -18,26 +18,23 @@
package appeng.container.slot;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class SlotCraftingMatrix extends AppEngSlot
{
final Container c;
public SlotCraftingMatrix(Container c, IInventory par1iInventory, int par2, int par3, int par4) {
public SlotCraftingMatrix( Container c, IInventory par1iInventory, int par2, int par3, int par4 )
{
super( par1iInventory, par2, par3, par4 );
this.c = c;
}
@Override
public boolean isPlayerSide()
{
return true;
}
@Override
public void clearStack()
{
@@ -46,18 +43,23 @@ public class SlotCraftingMatrix extends AppEngSlot
}
@Override
public ItemStack decrStackSize(int par1)
{
ItemStack is = super.decrStackSize( par1 );
this.c.onCraftMatrixChanged( this.inventory );
return is;
}
@Override
public void putStack(ItemStack par1ItemStack)
public void putStack( ItemStack par1ItemStack )
{
super.putStack( par1ItemStack );
this.c.onCraftMatrixChanged( this.inventory );
}
@Override
public boolean isPlayerSide()
{
return true;
}
@Override
public ItemStack decrStackSize( int par1 )
{
ItemStack is = super.decrStackSize( par1 );
this.c.onCraftMatrixChanged( this.inventory );
return is;
}
}
@@ -1,4 +1,3 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
@@ -58,8 +57,7 @@ public class SlotCraftingTerm extends AppEngCraftingSlot
private final IStorageMonitorable storage;
private final IContainerCraftingPacket container;
public SlotCraftingTerm( EntityPlayer player, BaseActionSource mySrc, IEnergySource energySrc, IStorageMonitorable storage, IInventory cMatrix,
IInventory secondMatrix, IInventory output, int x, int y, IContainerCraftingPacket ccp )
public SlotCraftingTerm( EntityPlayer player, BaseActionSource mySrc, IEnergySource energySrc, IStorageMonitorable storage, IInventory cMatrix, IInventory secondMatrix, IInventory output, int x, int y, IContainerCraftingPacket ccp )
{
super( player, cMatrix, output, 0, x, y );
this.energySrc = energySrc;
@@ -83,11 +81,67 @@ public class SlotCraftingTerm extends AppEngCraftingSlot
@Override
public void onPickupFromSlot( EntityPlayer p, ItemStack is )
{}
public void makeItem( EntityPlayer p, ItemStack is )
{
super.onPickupFromSlot( p, is );
}
public void doClick( InventoryAction action, EntityPlayer who )
{
if( this.getStack() == null )
return;
if( Platform.isClient() )
return;
IMEMonitor<IAEItemStack> inv = this.storage.getItemInventory();
int howManyPerCraft = this.getStack().stackSize;
int maxTimesToCraft = 0;
InventoryAdaptor ia = null;
if( action == InventoryAction.CRAFT_SHIFT ) // craft into player inventory...
{
ia = InventoryAdaptor.getAdaptor( who, null );
maxTimesToCraft = (int) Math.floor( (double) this.getStack().getMaxStackSize() / (double) howManyPerCraft );
}
else if( action == InventoryAction.CRAFT_STACK ) // craft into hand, full stack
{
ia = new AdaptorPlayerHand( who );
maxTimesToCraft = (int) Math.floor( (double) this.getStack().getMaxStackSize() / (double) howManyPerCraft );
}
else
// pick up what was crafted...
{
ia = new AdaptorPlayerHand( who );
maxTimesToCraft = 1;
}
maxTimesToCraft = this.CapCraftingAttempts( maxTimesToCraft );
if( ia == null )
return;
ItemStack rs = Platform.cloneItemStack( this.getStack() );
if( rs == null )
return;
for( int x = 0; x < maxTimesToCraft; x++ )
{
if( ia.simulateAdd( rs ) == null )
{
IItemList<IAEItemStack> all = inv.getStorageList();
ItemStack extra = ia.addItems( this.craftItem( who, rs, inv, all ) );
if( extra != null )
{
List<ItemStack> drops = new ArrayList<ItemStack>();
drops.add( extra );
Platform.spawnDrops( who.worldObj, (int) who.posX, (int) who.posY, (int) who.posZ, drops );
return;
}
}
}
}
protected int CapCraftingAttempts( int maxTimesToCraft )
{
return maxTimesToCraft;
}
public ItemStack craftItem( EntityPlayer p, ItemStack request, IMEMonitor<IAEItemStack> inv, IItemList all )
@@ -95,34 +149,34 @@ public class SlotCraftingTerm extends AppEngCraftingSlot
// update crafting matrix...
ItemStack is = this.getStack();
if ( is != null && Platform.isSameItem( request, is ) )
if( is != null && Platform.isSameItem( request, is ) )
{
ItemStack[] set = new ItemStack[this.pattern.getSizeInventory()];
// add one of each item to the items on the board...
if ( Platform.isServer() )
if( Platform.isServer() )
{
InventoryCrafting ic = new InventoryCrafting( new ContainerNull(), 3, 3 );
for ( int x = 0; x < 9; x++ )
for( int x = 0; x < 9; x++ )
ic.setInventorySlotContents( x, this.pattern.getStackInSlot( x ) );
IRecipe r = Platform.findMatchingRecipe( ic, p.worldObj );
if ( r == null )
if( r == null )
{
Item target = request.getItem();
if ( target.isDamageable() && target.isRepairable() )
if( target.isDamageable() && target.isRepairable() )
{
boolean isBad = false;
for ( int x = 0; x < ic.getSizeInventory(); x++ )
for( int x = 0; x < ic.getSizeInventory(); x++ )
{
ItemStack pis = ic.getStackInSlot( x );
if ( pis == null )
if( pis == null )
continue;
if ( pis.getItem() != target )
if( pis.getItem() != target )
isBad = true;
}
if ( !isBad )
if( !isBad )
{
super.onPickupFromSlot( p, is );
// actually necessary to cleanup this case...
@@ -135,21 +189,20 @@ public class SlotCraftingTerm extends AppEngCraftingSlot
is = r.getCraftingResult( ic );
if ( inv != null )
if( inv != null )
{
for ( int x = 0; x < this.pattern.getSizeInventory(); x++ )
for( int x = 0; x < this.pattern.getSizeInventory(); x++ )
{
if ( this.pattern.getStackInSlot( x ) != null )
if( this.pattern.getStackInSlot( x ) != null )
{
set[x] = Platform.extractItemsByRecipe( this.energySrc, this.mySrc, inv, p.worldObj, r, is, ic, this.pattern.getStackInSlot( x ), x, all,
Actionable.MODULATE, ItemViewCell.createFilter( this.container.getViewCells() ) );
set[x] = Platform.extractItemsByRecipe( this.energySrc, this.mySrc, inv, p.worldObj, r, is, ic, this.pattern.getStackInSlot( x ), x, all, Actionable.MODULATE, ItemViewCell.createFilter( this.container.getViewCells() ) );
ic.setInventorySlotContents( x, set[x] );
}
}
}
}
if ( this.preCraft( p, inv, set, is ) )
if( this.preCraft( p, inv, set, is ) )
{
this.makeItem( p, is );
@@ -170,92 +223,36 @@ public class SlotCraftingTerm extends AppEngCraftingSlot
return true;
}
public void makeItem( EntityPlayer p, ItemStack is )
{
super.onPickupFromSlot( p, is );
}
public void postCraft( EntityPlayer p, IMEMonitor<IAEItemStack> inv, ItemStack[] set, ItemStack result )
{
List<ItemStack> drops = new ArrayList<ItemStack>();
// add one of each item to the items on the board...
if ( Platform.isServer() )
if( Platform.isServer() )
{
// set new items onto the crafting table...
for ( int x = 0; x < this.craftInv.getSizeInventory(); x++ )
for( int x = 0; x < this.craftInv.getSizeInventory(); x++ )
{
if ( this.craftInv.getStackInSlot( x ) == null )
if( this.craftInv.getStackInSlot( x ) == null )
{
this.craftInv.setInventorySlotContents( x, set[x] );
}
else if ( set[x] != null )
else if( set[x] != null )
{
// eek! put it back!
IAEItemStack fail = inv.injectItems( AEItemStack.create( set[x] ), Actionable.MODULATE, this.mySrc );
if ( fail != null )
if( fail != null )
drops.add( fail.getItemStack() );
}
}
}
if ( drops.size() > 0 )
Platform.spawnDrops( p.worldObj, ( int ) p.posX, ( int ) p.posY, ( int ) p.posZ, drops );
if( drops.size() > 0 )
Platform.spawnDrops( p.worldObj, (int) p.posX, (int) p.posY, (int) p.posZ, drops );
}
public void doClick( InventoryAction action, EntityPlayer who )
{
if ( this.getStack() == null )
return;
if ( Platform.isClient() )
return;
IMEMonitor<IAEItemStack> inv = this.storage.getItemInventory();
int howManyPerCraft = this.getStack().stackSize;
int maxTimesToCraft = 0;
InventoryAdaptor ia = null;
if ( action == InventoryAction.CRAFT_SHIFT ) // craft into player inventory...
{
ia = InventoryAdaptor.getAdaptor( who, null );
maxTimesToCraft = ( int ) Math.floor( ( double ) this.getStack().getMaxStackSize() / ( double ) howManyPerCraft );
}
else if ( action == InventoryAction.CRAFT_STACK ) // craft into hand, full stack
{
ia = new AdaptorPlayerHand( who );
maxTimesToCraft = ( int ) Math.floor( ( double ) this.getStack().getMaxStackSize() / ( double ) howManyPerCraft );
}
else
// pick up what was crafted...
{
ia = new AdaptorPlayerHand( who );
maxTimesToCraft = 1;
}
maxTimesToCraft = this.CapCraftingAttempts( maxTimesToCraft );
if ( ia == null )
return;
ItemStack rs = Platform.cloneItemStack( this.getStack() );
if ( rs == null )
return;
for ( int x = 0; x < maxTimesToCraft; x++ )
{
if ( ia.simulateAdd( rs ) == null )
{
IItemList<IAEItemStack> all = inv.getStorageList();
ItemStack extra = ia.addItems( this.craftItem( who, rs, inv, all ) );
if ( extra != null )
{
List<ItemStack> drops = new ArrayList<ItemStack>();
drops.add( extra );
Platform.spawnDrops( who.worldObj, ( int ) who.posX, ( int ) who.posY, ( int ) who.posZ, drops );
return;
}
}
}
}
protected int CapCraftingAttempts( int maxTimesToCraft )
{
return maxTimesToCraft;
}
}
@@ -18,25 +18,28 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class SlotDisabled extends AppEngSlot
{
public SlotDisabled(IInventory par1iInventory, int slotIndex, int x, int y) {
public SlotDisabled( IInventory par1iInventory, int slotIndex, int x, int y )
{
super( par1iInventory, slotIndex, x, y );
}
@Override
public boolean isItemValid(ItemStack par1ItemStack)
public boolean isItemValid( ItemStack par1ItemStack )
{
return false;
}
@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
public boolean canTakeStack( EntityPlayer par1EntityPlayer )
{
return false;
}
@@ -18,50 +18,52 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class SlotFake extends AppEngSlot
{
final int invSlot;
public SlotFake(IInventory inv, int idx, int x, int y) {
public SlotFake( IInventory inv, int idx, int x, int y )
{
super( inv, idx, x, y );
this.invSlot = idx;
}
@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
public void onPickupFromSlot( EntityPlayer par1EntityPlayer, ItemStack par2ItemStack )
{
return false;
}
@Override
public ItemStack decrStackSize(int par1)
public ItemStack decrStackSize( int par1 )
{
return null;
}
@Override
public void onPickupFromSlot(EntityPlayer par1EntityPlayer, ItemStack par2ItemStack)
public boolean isItemValid( ItemStack par1ItemStack )
{
return false;
}
@Override
public void putStack(ItemStack is)
public void putStack( ItemStack is )
{
if ( is != null )
if( is != null )
is = is.copy();
super.putStack( is );
}
@Override
public boolean isItemValid(ItemStack par1ItemStack)
public boolean canTakeStack( EntityPlayer par1EntityPlayer )
{
return false;
}
}
@@ -18,19 +18,16 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class SlotFakeBlacklist extends SlotFakeTypeOnly
{
public SlotFakeBlacklist(IInventory inv, int idx, int x, int y) {
super( inv, idx, x, y );
}
@Override
public boolean renderIconWithItem()
public SlotFakeBlacklist( IInventory inv, int idx, int x, int y )
{
return true;
super( inv, idx, x, y );
}
@Override
@@ -39,14 +36,19 @@ public class SlotFakeBlacklist extends SlotFakeTypeOnly
return 0.8f;
}
@Override
public boolean renderIconWithItem()
{
return true;
}
@Override
public int getIcon()
{
if ( this.getHasStack() )
if( this.getHasStack() )
{
return this.getStack().stackSize > 0 ? 16 + 14 : 14;
}
return -1;
}
}
@@ -18,13 +18,15 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class SlotFakeCraftingMatrix extends SlotFake
{
public SlotFakeCraftingMatrix(IInventory inv, int idx, int x, int y) {
public SlotFakeCraftingMatrix( IInventory inv, int idx, int x, int y )
{
super( inv, idx, x, y );
}
}
@@ -18,25 +18,28 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class SlotFakeTypeOnly extends SlotFake
{
public SlotFakeTypeOnly(IInventory inv, int idx, int x, int y) {
public SlotFakeTypeOnly( IInventory inv, int idx, int x, int y )
{
super( inv, idx, x, y );
}
@Override
public void putStack(ItemStack is)
public void putStack( ItemStack is )
{
if ( is != null )
if( is != null )
{
is = is.copy();
if ( is.stackSize > 1 )
if( is.stackSize > 1 )
is.stackSize = 1;
else if ( is.stackSize < -1 )
else if( is.stackSize < -1 )
is.stackSize = -1;
}
@@ -18,29 +18,26 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class SlotInaccessible extends AppEngSlot
{
public SlotInaccessible(IInventory i, int slotIdx, int x, int y) {
ItemStack dspStack = null;
public SlotInaccessible( IInventory i, int slotIdx, int x, int y )
{
super( i, slotIdx, x, y );
}
ItemStack dspStack = null;
@Override
public ItemStack getDisplayStack()
public boolean isItemValid( ItemStack i )
{
if ( this.dspStack == null )
{
ItemStack dsp = super.getDisplayStack();
if ( dsp != null )
this.dspStack = dsp.copy();
}
return this.dspStack;
return false;
}
@Override
@@ -51,15 +48,20 @@ public class SlotInaccessible extends AppEngSlot
}
@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
public boolean canTakeStack( EntityPlayer par1EntityPlayer )
{
return false;
}
@Override
public boolean isItemValid(ItemStack i)
public ItemStack getDisplayStack()
{
return false;
if( this.dspStack == null )
{
ItemStack dsp = super.getDisplayStack();
if( dsp != null )
this.dspStack = dsp.copy();
}
return this.dspStack;
}
}
@@ -18,13 +18,15 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class SlotInaccessibleHD extends SlotInaccessible
{
public SlotInaccessibleHD(IInventory i, int slotIdx, int x, int y) {
public SlotInaccessibleHD( IInventory i, int slotIdx, int x, int y )
{
super( i, slotIdx, x, y );
}
}
@@ -18,25 +18,27 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import appeng.container.implementations.ContainerMAC;
public class SlotMACPattern extends AppEngSlot
{
final ContainerMAC mac;
public SlotMACPattern(ContainerMAC mac, IInventory i, int slotIdx, int x, int y) {
public SlotMACPattern( ContainerMAC mac, IInventory i, int slotIdx, int x, int y )
{
super( i, slotIdx, x, y );
this.mac = mac;
}
@Override
public boolean isItemValid(ItemStack i)
public boolean isItemValid( ItemStack i )
{
return this.mac.isValidItemForSlot( this.getSlotIndex(), i );
}
}
@@ -18,13 +18,15 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class SlotNormal extends AppEngSlot
{
public SlotNormal(IInventory inv, int slot, int xPos, int yPos) {
public SlotNormal( IInventory inv, int slot, int xPos, int yPos )
{
super( inv, slot, xPos, yPos );
}
}
@@ -18,19 +18,22 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class SlotOutput extends AppEngSlot
{
public SlotOutput(IInventory a, int b, int c, int d, int i) {
public SlotOutput( IInventory a, int b, int c, int d, int i )
{
super( a, b, c, d );
this.IIcon = i;
}
@Override
public boolean isItemValid(ItemStack i)
public boolean isItemValid( ItemStack i )
{
return false;
}
@@ -18,12 +18,15 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class SlotPatternOutputs extends OptionalSlotFake
{
public SlotPatternOutputs(IInventory inv, IOptionalSlotHost containerBus, int idx, int x, int y, int offX, int offY, int groupNum) {
public SlotPatternOutputs( IInventory inv, IOptionalSlotHost containerBus, int idx, int x, int y, int offX, int offY, int groupNum )
{
super( inv, containerBus, idx, x, y, offX, offY, groupNum );
}
@@ -18,6 +18,7 @@
package appeng.container.slot;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
@@ -32,28 +33,32 @@ import appeng.core.sync.AppEngPacket;
import appeng.core.sync.packets.PacketPatternSlot;
import appeng.helpers.IContainerCraftingPacket;
public class SlotPatternTerm extends SlotCraftingTerm
{
final int groupNum;
final IOptionalSlotHost host;
public SlotPatternTerm(EntityPlayer player, BaseActionSource mySrc, IEnergySource energySrc, IStorageMonitorable storage, IInventory cMatrix,
IInventory secondMatrix, IInventory output, int x, int y, IOptionalSlotHost h, int groupNumber, IContainerCraftingPacket c)
public SlotPatternTerm( EntityPlayer player, BaseActionSource mySrc, IEnergySource energySrc, IStorageMonitorable storage, IInventory cMatrix, IInventory secondMatrix, IInventory output, int x, int y, IOptionalSlotHost h, int groupNumber, IContainerCraftingPacket c )
{
super( player, mySrc, energySrc, storage, cMatrix, secondMatrix, output, x, y, c );
this.host = h;
this.groupNum = groupNumber;
}
public AppEngPacket getRequest( boolean shift ) throws IOException
{
return new PacketPatternSlot( this.pattern, AEApi.instance().storage().createItemStack( this.getStack() ), shift );
}
@Override
public ItemStack getStack()
{
if ( !this.isEnabled() )
if( !this.isEnabled() )
{
if ( this.getDisplayStack() != null )
if( this.getDisplayStack() != null )
this.clearStack();
}
@@ -63,15 +68,9 @@ public class SlotPatternTerm extends SlotCraftingTerm
@Override
public boolean isEnabled()
{
if ( this.host == null )
if( this.host == null )
return false;
return this.host.isSlotEnabled( this.groupNum );
}
public AppEngPacket getRequest(boolean shift) throws IOException
{
return new PacketPatternSlot( this.pattern, AEApi.instance().storage().createItemStack( this.getStack() ), shift );
}
}
@@ -18,12 +18,15 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
public class SlotPlayerHotBar extends AppEngSlot
{
public SlotPlayerHotBar(IInventory par1iInventory, int par2, int par3, int par4) {
public SlotPlayerHotBar( IInventory par1iInventory, int par2, int par3, int par4 )
{
super( par1iInventory, par2, par3, par4 );
this.isPlayerSide = true;
}
@@ -18,14 +18,17 @@
package appeng.container.slot;
import net.minecraft.inventory.IInventory;
// there is nothing special about this slot, its simply used to represent the players inventory, vs a container slot.
public class SlotPlayerInv extends AppEngSlot
{
public SlotPlayerInv(IInventory par1iInventory, int par2, int par3, int par4) {
public SlotPlayerInv( IInventory par1iInventory, int par2, int par3, int par4 )
{
super( par1iInventory, par2, par3, par4 );
this.isPlayerSide = true;
@@ -18,6 +18,7 @@
package appeng.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Items;
@@ -44,67 +45,17 @@ import appeng.items.misc.ItemEncodedPattern;
import appeng.recipes.handlers.Inscribe;
import appeng.util.Platform;
public class SlotRestrictedInput extends AppEngSlot
{
public enum PlacableItemType
{
STORAGE_CELLS(15), ORE( 16 + 15), STORAGE_COMPONENT(3 * 16 + 15),
ENCODABLE_ITEM(4 * 16 + 15), TRASH(5 * 16 + 15), VALID_ENCODED_PATTERN_W_OUTPUT(7 * 16 + 15), ENCODED_PATTERN_W_OUTPUT(7 * 16 + 15),
ENCODED_CRAFTING_PATTERN(7 * 16 + 15), ENCODED_PATTERN(7 * 16 + 15), PATTERN(8 * 16 + 15), BLANK_PATTERN(8 * 16 + 15), POWERED_TOOL(9 * 16 + 15),
RANGE_BOOSTER(6 * 16 + 15), QE_SINGULARITY(10 * 16 + 15), SPATIAL_STORAGE_CELLS(11 * 16 + 15),
FUEL(12 * 16 + 15), UPGRADES(13 * 16 + 15), WORKBENCH_CELL(15), BIOMETRIC_CARD(14 * 16 + 15), VIEW_CELL(4 * 16 + 14),
INSCRIBER_PLATE(2 * 16 + 14), INSCRIBER_INPUT(3 * 16 + 14), METAL_INGOTS(3 * 16 + 14);
public final int IIcon;
PlacableItemType( int o ) {
this.IIcon = o;
}
}
@Override
public int getSlotStackLimit()
{
if ( this.stackLimit != -1 )
return this.stackLimit;
return super.getSlotStackLimit();
}
public boolean isValid(ItemStack is, World theWorld)
{
if ( this.which == PlacableItemType.VALID_ENCODED_PATTERN_W_OUTPUT )
{
ICraftingPatternDetails ap = is.getItem() instanceof ICraftingPatternItem ? ((ICraftingPatternItem) is.getItem()).getPatternForItem( is, theWorld )
: null;
return ap != null;
}
return true;
}
public final PlacableItemType which;
private final InventoryPlayer p;
public boolean allowEdit = true;
public int stackLimit = -1;
private final InventoryPlayer p;
@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
public SlotRestrictedInput( PlacableItemType valid, IInventory i, int slotIndex, int x, int y, InventoryPlayer p )
{
return this.allowEdit;
}
public Slot setStackLimit(int i)
{
this.stackLimit = i;
return this;
}
public SlotRestrictedInput(PlacableItemType valid, IInventory i, int slotIndex, int x, int y, InventoryPlayer p) {
super( i, slotIndex, x, y );
this.which = valid;
this.IIcon = valid.IIcon;
@@ -112,58 +63,66 @@ public class SlotRestrictedInput extends AppEngSlot
}
@Override
public ItemStack getDisplayStack()
public int getSlotStackLimit()
{
if ( Platform.isClient() && (this.which == PlacableItemType.ENCODED_PATTERN) )
if( this.stackLimit != -1 )
return this.stackLimit;
return super.getSlotStackLimit();
}
public boolean isValid( ItemStack is, World theWorld )
{
if( this.which == PlacableItemType.VALID_ENCODED_PATTERN_W_OUTPUT )
{
ItemStack is = super.getStack();
if ( is != null && is.getItem() instanceof ItemEncodedPattern )
{
ItemEncodedPattern iep = (ItemEncodedPattern) is.getItem();
ItemStack out = iep.getOutput( is );
if ( out != null )
return out;
}
ICraftingPatternDetails ap = is.getItem() instanceof ICraftingPatternItem ? ( (ICraftingPatternItem) is.getItem() ).getPatternForItem( is, theWorld ) : null;
return ap != null;
}
return super.getStack();
return true;
}
public Slot setStackLimit( int i )
{
this.stackLimit = i;
return this;
}
@Override
public boolean isItemValid(ItemStack i)
public boolean isItemValid( ItemStack i )
{
if ( !this.myContainer.isValidForSlot( this, i ) )
if( !this.myContainer.isValidForSlot( this, i ) )
return false;
if ( i == null )
if( i == null )
return false;
if ( i.getItem() == null )
if( i.getItem() == null )
return false;
if ( !this.inventory.isItemValidForSlot( this.getSlotIndex(), i ) )
if( !this.inventory.isItemValidForSlot( this.getSlotIndex(), i ) )
return false;
if ( !this.allowEdit )
if( !this.allowEdit )
return false;
final IDefinitions definitions = AEApi.instance().definitions();
final IMaterials materials = definitions.materials();
final IItems items = definitions.items();
switch (this.which)
switch( this.which )
{
case ENCODED_CRAFTING_PATTERN:
if ( i.getItem() instanceof ICraftingPatternItem )
if( i.getItem() instanceof ICraftingPatternItem )
{
ICraftingPatternItem b = (ICraftingPatternItem) i.getItem();
ICraftingPatternDetails de = b.getPatternForItem( i, this.p.player.worldObj );
if ( de != null )
if( de != null )
return de.isCraftable();
}
return false;
case VALID_ENCODED_PATTERN_W_OUTPUT:
case ENCODED_PATTERN_W_OUTPUT:
case ENCODED_PATTERN: {
if ( i.getItem() instanceof ICraftingPatternItem )
case ENCODED_PATTERN:
{
if( i.getItem() instanceof ICraftingPatternItem )
return true;
// ICraftingPatternDetails pattern = i.getItem() instanceof ICraftingPatternItem ? ((ICraftingPatternItem)
// i.getItem()).getPatternForItem( i ) : null;
@@ -174,19 +133,19 @@ public class SlotRestrictedInput extends AppEngSlot
case PATTERN:
if ( i.getItem() instanceof ICraftingPatternItem )
if( i.getItem() instanceof ICraftingPatternItem )
return true;
return materials.blankPattern().isSameAs( i );
case INSCRIBER_PLATE:
if ( materials.namePress().isSameAs( i ) )
if( materials.namePress().isSameAs( i ) )
{
return true;
}
for (ItemStack is : Inscribe.PLATES )
if ( Platform.isSameItemPrecise( is, i ) )
for( ItemStack is : Inscribe.PLATES )
if( Platform.isSameItemPrecise( is, i ) )
return true;
return false;
@@ -217,15 +176,15 @@ public class SlotRestrictedInput extends AppEngSlot
return materials.wirelessBooster().isSameAs( i );
case SPATIAL_STORAGE_CELLS:
return i.getItem() instanceof ISpatialStorageCell && ((ISpatialStorageCell) i.getItem()).isSpatialStorage( i );
return i.getItem() instanceof ISpatialStorageCell && ( (ISpatialStorageCell) i.getItem() ).isSpatialStorage( i );
case STORAGE_CELLS:
return AEApi.instance().registries().cell().isCellHandled( i );
case WORKBENCH_CELL:
return i.getItem() instanceof ICellWorkbenchItem && ((ICellWorkbenchItem) i.getItem()).isEditable( i );
return i.getItem() instanceof ICellWorkbenchItem && ( (ICellWorkbenchItem) i.getItem() ).isEditable( i );
case STORAGE_COMPONENT:
return i.getItem() instanceof IStorageComponent && ((IStorageComponent) i.getItem()).isStorageComponent( i );
return i.getItem() instanceof IStorageComponent && ( (IStorageComponent) i.getItem() ).isStorageComponent( i );
case TRASH:
if ( AEApi.instance().registries().cell().isCellHandled( i ) )
if( AEApi.instance().registries().cell().isCellHandled( i ) )
return false;
return !( i.getItem() instanceof IStorageComponent && ( (IStorageComponent) i.getItem() ).isStorageComponent( i ) );
@@ -234,7 +193,7 @@ public class SlotRestrictedInput extends AppEngSlot
case BIOMETRIC_CARD:
return i.getItem() instanceof IBiometricCard;
case UPGRADES:
return i.getItem() instanceof IUpgradeModule && ((IUpgradeModule) i.getItem()).getType( i ) != null;
return i.getItem() instanceof IUpgradeModule && ( (IUpgradeModule) i.getItem() ).getType( i ) != null;
default:
break;
}
@@ -242,20 +201,65 @@ public class SlotRestrictedInput extends AppEngSlot
return false;
}
static public boolean isMetalIngot(ItemStack i)
@Override
public boolean canTakeStack( EntityPlayer par1EntityPlayer )
{
if ( Platform.isSameItemPrecise( i, new ItemStack( Items.iron_ingot ) ) )
return this.allowEdit;
}
@Override
public ItemStack getDisplayStack()
{
if( Platform.isClient() && ( this.which == PlacableItemType.ENCODED_PATTERN ) )
{
ItemStack is = super.getStack();
if( is != null && is.getItem() instanceof ItemEncodedPattern )
{
ItemEncodedPattern iep = (ItemEncodedPattern) is.getItem();
ItemStack out = iep.getOutput( is );
if( out != null )
return out;
}
}
return super.getStack();
}
static public boolean isMetalIngot( ItemStack i )
{
if( Platform.isSameItemPrecise( i, new ItemStack( Items.iron_ingot ) ) )
return true;
for (String name : new String[] { "Copper", "Tin", "Obsidian", "Iron", "Lead", "Bronze", "Brass", "Nickel", "Aluminium" })
for( String name : new String[] { "Copper", "Tin", "Obsidian", "Iron", "Lead", "Bronze", "Brass", "Nickel", "Aluminium" } )
{
for (ItemStack ingot : OreDictionary.getOres( "ingot" + name ))
for( ItemStack ingot : OreDictionary.getOres( "ingot" + name ) )
{
if ( Platform.isSameItemPrecise( i, ingot ) )
if( Platform.isSameItemPrecise( i, ingot ) )
return true;
}
}
return false;
}
public enum PlacableItemType
{
STORAGE_CELLS( 15 ), ORE( 16 + 15 ), STORAGE_COMPONENT( 3 * 16 + 15 ),
ENCODABLE_ITEM( 4 * 16 + 15 ), TRASH( 5 * 16 + 15 ), VALID_ENCODED_PATTERN_W_OUTPUT( 7 * 16 + 15 ), ENCODED_PATTERN_W_OUTPUT( 7 * 16 + 15 ),
ENCODED_CRAFTING_PATTERN( 7 * 16 + 15 ), ENCODED_PATTERN( 7 * 16 + 15 ), PATTERN( 8 * 16 + 15 ), BLANK_PATTERN( 8 * 16 + 15 ), POWERED_TOOL( 9 * 16 + 15 ),
RANGE_BOOSTER( 6 * 16 + 15 ), QE_SINGULARITY( 10 * 16 + 15 ), SPATIAL_STORAGE_CELLS( 11 * 16 + 15 ),
FUEL( 12 * 16 + 15 ), UPGRADES( 13 * 16 + 15 ), WORKBENCH_CELL( 15 ), BIOMETRIC_CARD( 14 * 16 + 15 ), VIEW_CELL( 4 * 16 + 14 ),
INSCRIBER_PLATE( 2 * 16 + 14 ), INSCRIBER_INPUT( 3 * 16 + 14 ), METAL_INGOTS( 3 * 16 + 14 );
public final int IIcon;
PlacableItemType( int o )
{
this.IIcon = o;
}
}
}