Added all the crafting cpu "blocks" - needs textures and renders.
Updated API
This commit is contained in:
parent
f031972fcd
commit
08d6942643
22 changed files with 306 additions and 70 deletions
|
@ -1,19 +0,0 @@
|
|||
package appeng.block.crafting;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import appeng.block.AEBaseBlock;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.tile.crafting.TileCraftingTile;
|
||||
|
||||
public class BlockCraftingMonitor extends AEBaseBlock
|
||||
{
|
||||
|
||||
public BlockCraftingMonitor() {
|
||||
super( BlockCraftingMonitor.class, Material.iron );
|
||||
setfeature( EnumSet.of( AEFeature.Crafting ) );
|
||||
setTileEntiy( TileCraftingTile.class );
|
||||
}
|
||||
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package appeng.block.crafting;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import appeng.block.AEBaseBlock;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.tile.crafting.TileCraftingTile;
|
||||
|
||||
public class BlockCraftingStorage extends AEBaseBlock
|
||||
{
|
||||
|
||||
public BlockCraftingStorage() {
|
||||
super( BlockCraftingStorage.class, Material.iron );
|
||||
setfeature( EnumSet.of( AEFeature.Crafting ) );
|
||||
setTileEntiy( TileCraftingTile.class );
|
||||
}
|
||||
|
||||
}
|
|
@ -1,8 +1,16 @@
|
|||
package appeng.block.crafting;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import appeng.block.AEBaseBlock;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.tile.crafting.TileCraftingTile;
|
||||
|
@ -10,10 +18,74 @@ import appeng.tile.crafting.TileCraftingTile;
|
|||
public class BlockCraftingUnit extends AEBaseBlock
|
||||
{
|
||||
|
||||
public final static int BASE_DAMAGE = 0;
|
||||
public final static int BASE_MONITOR = 1;
|
||||
public final static int BASE_STORAGE = 2;
|
||||
public final static int BASE_ACCELERATOR = 3;
|
||||
|
||||
public BlockCraftingUnit() {
|
||||
super( BlockCraftingUnit.class, Material.iron );
|
||||
hasSubtypes = true;
|
||||
setfeature( EnumSet.of( AEFeature.Crafting ) );
|
||||
setTileEntiy( TileCraftingTile.class );
|
||||
}
|
||||
|
||||
public ItemStack getItemStack(World world, int x, int y, int z)
|
||||
{
|
||||
TileCraftingTile ct = getTileEntity( world, x, y, z );
|
||||
|
||||
int meta = world.getBlockMetadata( x, y, z );
|
||||
if ( ct != null && meta == BASE_STORAGE )
|
||||
{
|
||||
return createStackForBytes( ct.getStorageBytes() );
|
||||
}
|
||||
|
||||
return new ItemStack( this, 1, meta );
|
||||
}
|
||||
|
||||
private ItemStack createStackForBytes(long storageBytes)
|
||||
{
|
||||
ItemStack itemDetails = new ItemStack( this, 1, BASE_STORAGE );
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
tag.setLong( "bytes", storageBytes );
|
||||
itemDetails.setTagCompound( tag );
|
||||
return itemDetails;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune)
|
||||
{
|
||||
ArrayList<ItemStack> out = new ArrayList();
|
||||
|
||||
ItemStack is = getItemStack( world, x, y, z );
|
||||
if ( is != null )
|
||||
out.add( is );
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
|
||||
{
|
||||
return getItemStack( world, x, y, z );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubBlocks(Item i, CreativeTabs c, List l)
|
||||
{
|
||||
l.add( new ItemStack( this, 1, BASE_DAMAGE ) );
|
||||
l.add( new ItemStack( this, 1, BASE_MONITOR ) );
|
||||
l.add( new ItemStack( this, 1, BASE_ACCELERATOR ) );
|
||||
l.add( createStackForBytes( 1024 ) );
|
||||
l.add( createStackForBytes( 1024 * 4 ) );
|
||||
l.add( createStackForBytes( 1024 * 16 ) );
|
||||
l.add( createStackForBytes( 1024 * 64 ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class getItemBlockClass()
|
||||
{
|
||||
return ItemBlockCraftingUnit.class;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
56
block/crafting/ItemBlockCraftingUnit.java
Normal file
56
block/crafting/ItemBlockCraftingUnit.java
Normal file
|
@ -0,0 +1,56 @@
|
|||
package appeng.block.crafting;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import appeng.block.AEBaseItemBlock;
|
||||
import appeng.core.localization.GuiText;
|
||||
|
||||
public class ItemBlockCraftingUnit extends AEBaseItemBlock
|
||||
{
|
||||
|
||||
public ItemBlockCraftingUnit(Block id) {
|
||||
super( id );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName(ItemStack is)
|
||||
{
|
||||
switch (is.getItemDamage())
|
||||
{
|
||||
case BlockCraftingUnit.BASE_STORAGE:
|
||||
return "tile.appliedenergistics2.BlockCraftingStorage";
|
||||
case BlockCraftingUnit.BASE_ACCELERATOR:
|
||||
return "tile.appliedenergistics2.BlockCraftingAccelerator";
|
||||
case BlockCraftingUnit.BASE_MONITOR:
|
||||
return "tile.appliedenergistics2.BlockCraftingMonitor";
|
||||
}
|
||||
|
||||
return super.getUnlocalizedName( is );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemStackDisplayName(ItemStack is)
|
||||
{
|
||||
String name = super.getItemStackDisplayName( is );
|
||||
|
||||
long storageBytes = getStorageBytes( is );
|
||||
if ( storageBytes > 0 )
|
||||
return name + " - " + GuiText.Stores.getLocal() + " " + (storageBytes / 1024) + "k";
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
public long getStorageBytes(ItemStack is)
|
||||
{
|
||||
NBTTagCompound tag = is.getTagCompound();
|
||||
|
||||
if ( tag != null )
|
||||
{
|
||||
return tag.getLong( "bytes" );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
|
@ -77,7 +77,7 @@ public class BlockCharger extends AEBaseBlock implements ICustomCollision
|
|||
if ( tile instanceof TileCharger )
|
||||
{
|
||||
TileCharger tc = (TileCharger) tile;
|
||||
if ( AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAs( tc.getStackInSlot( 0 ) ) )
|
||||
if ( AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAsStack( tc.getStackInSlot( 0 ) ) )
|
||||
{
|
||||
|
||||
double xOff = 0.0;
|
||||
|
|
|
@ -278,7 +278,7 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
|
|||
if ( output == null )
|
||||
return false;
|
||||
|
||||
return AEApi.instance().items().itemEncodedPattern.sameAs( output ) || AEApi.instance().materials().materialBlankPattern.sameAs( output );
|
||||
return AEApi.instance().items().itemEncodedPattern.sameAsStack( output ) || AEApi.instance().materials().materialBlankPattern.sameAsStack( output );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -133,17 +133,17 @@ public class SlotRestrictedInput extends AppEngSlot
|
|||
return false;// pattern != null;
|
||||
}
|
||||
case BLANK_PATTERN:
|
||||
return AEApi.instance().materials().materialBlankPattern.sameAs( i );
|
||||
return AEApi.instance().materials().materialBlankPattern.sameAsStack( i );
|
||||
case PATTERN:
|
||||
|
||||
if ( i.getItem() instanceof ICraftingPatternItem )
|
||||
return true;
|
||||
|
||||
return AEApi.instance().materials().materialBlankPattern.sameAs( i );
|
||||
return AEApi.instance().materials().materialBlankPattern.sameAsStack( i );
|
||||
|
||||
case INSCRIBER_PLATE:
|
||||
|
||||
if ( AEApi.instance().materials().materialNamePress.sameAs( i ) )
|
||||
if ( AEApi.instance().materials().materialNamePress.sameAsStack( i ) )
|
||||
return true;
|
||||
|
||||
for (ItemStack is : Inscribe.plates)
|
||||
|
@ -164,7 +164,7 @@ public class SlotRestrictedInput extends AppEngSlot
|
|||
return isMetalIngot( i );
|
||||
|
||||
case VIEWCELL:
|
||||
return AEApi.instance().items().itemViewCell.sameAs( i );
|
||||
return AEApi.instance().items().itemViewCell.sameAsStack( i );
|
||||
case ORE:
|
||||
return appeng.api.AEApi.instance().registries().grinder().getRecipeForInput( i ) != null;
|
||||
case FUEL:
|
||||
|
@ -172,9 +172,9 @@ public class SlotRestrictedInput extends AppEngSlot
|
|||
case POWERED_TOOL:
|
||||
return Platform.isChargeable( i );
|
||||
case QE_SINGULARTIY:
|
||||
return api.materials().materialQESingularity.sameAs( i );
|
||||
return api.materials().materialQESingularity.sameAsStack( i );
|
||||
case RANGE_BOOSTER:
|
||||
return api.materials().materialWirelessBooster.sameAs( i );
|
||||
return api.materials().materialWirelessBooster.sameAsStack( i );
|
||||
case SPATIAL_STORAGE_CELLS:
|
||||
return i.getItem() instanceof ISpatialStorageCell && ((ISpatialStorageCell) i.getItem()).isSpatialStorage( i );
|
||||
case STORAGE_CELLS:
|
||||
|
|
|
@ -77,6 +77,7 @@ import appeng.core.features.DamagedItemDefinition;
|
|||
import appeng.core.features.IAEFeature;
|
||||
import appeng.core.features.ItemStackSrc;
|
||||
import appeng.core.features.NullItemDefinition;
|
||||
import appeng.core.features.WrappedDamageItemDefinition;
|
||||
import appeng.core.features.registries.P2PTunnelRegistry;
|
||||
import appeng.core.features.registries.entries.BasicCellHandler;
|
||||
import appeng.core.features.registries.entries.CreativeCellHandler;
|
||||
|
@ -272,12 +273,16 @@ public class Registration
|
|||
// very important block!
|
||||
blocks.blockMultiPart = addFeature( BlockCableBus.class );
|
||||
|
||||
blocks.blockCraftingUnit = addFeature( BlockCraftingUnit.class );
|
||||
blocks.blockCraftingMonitor = new WrappedDamageItemDefinition( blocks.blockCraftingUnit, BlockCraftingUnit.BASE_MONITOR );
|
||||
blocks.blockCraftingStorage = new WrappedDamageItemDefinition( blocks.blockCraftingUnit, BlockCraftingUnit.BASE_STORAGE );
|
||||
blocks.blockCraftingAccelerator = new WrappedDamageItemDefinition( blocks.blockCraftingUnit, BlockCraftingUnit.BASE_ACCELERATOR );
|
||||
blocks.blockMolecularAssembler = addFeature( BlockMolecularAssembler.class );
|
||||
|
||||
blocks.blockQuartzOre = addFeature( OreQuartz.class );
|
||||
blocks.blockQuartzOreCharged = addFeature( OreQuartzCharged.class );
|
||||
blocks.blockMatrixFrame = addFeature( BlockMatrixFrame.class );
|
||||
blocks.blockQuartz = addFeature( BlockQuartz.class );
|
||||
blocks.blockCraftingUnit = addFeature( BlockCraftingUnit.class );
|
||||
blocks.blockMolecularAssembler = addFeature( BlockMolecularAssembler.class );
|
||||
blocks.blockFluix = addFeature( BlockFluix.class );
|
||||
blocks.blockSkyStone = addFeature( BlockSkyStone.class );
|
||||
blocks.blockSkyChest = addFeature( BlockSkyChest.class );
|
||||
|
|
|
@ -6,6 +6,7 @@ import net.minecraft.block.Block;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import appeng.api.util.AEItemDefinition;
|
||||
import appeng.block.AEBaseBlock;
|
||||
import appeng.block.AEBaseItemBlock;
|
||||
|
@ -175,11 +176,19 @@ public class AEFeatureHandler implements AEItemDefinition
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAs(ItemStack is)
|
||||
public boolean sameAsStack(ItemStack is)
|
||||
{
|
||||
if ( isFeatureAvailable() )
|
||||
return Platform.isSameItemType( is, stack( 1 ) );
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAsBlock(IBlockAccess world, int x, int y, int z)
|
||||
{
|
||||
if ( isFeatureAvailable() && BlockData != null )
|
||||
return world.getBlock( x, y, z ) == block();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import net.minecraft.block.Block;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import appeng.api.util.AEItemDefinition;
|
||||
|
||||
public class DamagedItemDefinition implements AEItemDefinition
|
||||
|
@ -53,7 +54,7 @@ public class DamagedItemDefinition implements AEItemDefinition
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAs(ItemStack comparableItem)
|
||||
public boolean sameAsStack(ItemStack comparableItem)
|
||||
{
|
||||
if ( comparableItem == null )
|
||||
return false;
|
||||
|
@ -61,4 +62,10 @@ public class DamagedItemDefinition implements AEItemDefinition
|
|||
return comparableItem.getItem() == baseItem && comparableItem.getItemDamage() == damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAsBlock(IBlockAccess world, int x, int y, int z)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import net.minecraft.block.Block;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import appeng.api.util.AEItemDefinition;
|
||||
|
||||
public class NullItemDefinition implements AEItemDefinition
|
||||
|
@ -34,7 +35,13 @@ public class NullItemDefinition implements AEItemDefinition
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAs(ItemStack comparableItem)
|
||||
public boolean sameAsStack(ItemStack comparableItem)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAsBlock(IBlockAccess world, int x, int y, int z)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
65
core/features/WrappedDamageItemDefinition.java
Normal file
65
core/features/WrappedDamageItemDefinition.java
Normal file
|
@ -0,0 +1,65 @@
|
|||
package appeng.core.features;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import appeng.api.util.AEItemDefinition;
|
||||
|
||||
public class WrappedDamageItemDefinition implements AEItemDefinition
|
||||
{
|
||||
|
||||
final AEItemDefinition baseItem;
|
||||
final int damage;
|
||||
|
||||
public WrappedDamageItemDefinition(AEItemDefinition def, int dmg) {
|
||||
baseItem = def;
|
||||
damage = dmg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block block()
|
||||
{
|
||||
return baseItem.block();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item item()
|
||||
{
|
||||
return baseItem.item();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends TileEntity> entity()
|
||||
{
|
||||
return baseItem.entity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack stack(int stackSize)
|
||||
{
|
||||
if ( baseItem == null )
|
||||
return null;
|
||||
|
||||
return new ItemStack( baseItem.block(), stackSize, damage );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAsStack(ItemStack comparableItem)
|
||||
{
|
||||
if ( comparableItem == null )
|
||||
return false;
|
||||
|
||||
return comparableItem.getItem() == baseItem.item() && comparableItem.getItemDamage() == damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sameAsBlock(IBlockAccess world, int x, int y, int z)
|
||||
{
|
||||
if ( block() != null )
|
||||
return world.getBlock( x, y, z ) == block() && world.getBlockMetadata( x, y, z ) == damage;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -25,10 +25,12 @@ public enum GuiText
|
|||
CraftingTerminal, FormationPlane, Inscriber, QuartzCuttingKnife,
|
||||
|
||||
METunnel, ItemTunnel, RedstoneTunnel, MJTunnel, EUTunnel, FluidTunnel, StoredSize,
|
||||
|
||||
CopyMode, CopyModeDesc, PatternTerminal, CraftingPattern, ProcessingPattern, Crafts, Creates, And, With, MolecularAssembler,
|
||||
|
||||
StoredPower, MaxPower, RequiredPower, Efficiency, InWorldCrafting, inWorldFluix, inWorldPurification, inWorldSingularity, OfSecondOutput, NoSecondOutput, RFTunnel;
|
||||
|
||||
CopyMode, CopyModeDesc, PatternTerminal, CraftingPattern, ProcessingPattern, Crafts, Creates, And, With, MolecularAssembler,
|
||||
|
||||
StoredPower, MaxPower, RequiredPower, Efficiency, InWorldCrafting, inWorldFluix, inWorldPurification, inWorldSingularity,
|
||||
|
||||
OfSecondOutput, NoSecondOutput, RFTunnel, Stores;
|
||||
|
||||
String root;
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ final public class EntityChargedQuartz extends EntityItem
|
|||
public boolean transform()
|
||||
{
|
||||
ItemStack item = getEntityItem();
|
||||
if ( AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAs( item ) )
|
||||
if ( AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAsStack( item ) )
|
||||
{
|
||||
AxisAlignedBB region = AxisAlignedBB.getBoundingBox( posX - 1, posY - 1, posZ - 1, posX + 1, posY + 1, posZ + 1 );
|
||||
List<Entity> l = worldObj.getEntitiesWithinAABBExcludingEntity( this, region );
|
||||
|
|
|
@ -50,7 +50,7 @@ final public class EntitySingularity extends EntityItem
|
|||
return;
|
||||
|
||||
ItemStack item = getEntityItem();
|
||||
if ( AEApi.instance().materials().materialSingularity.sameAs( item ) )
|
||||
if ( AEApi.instance().materials().materialSingularity.sameAsStack( item ) )
|
||||
{
|
||||
AxisAlignedBB region = AxisAlignedBB.getBoundingBox( posX - 4, posY - 4, posZ - 4, posX + 4, posY + 4, posZ + 4 );
|
||||
List<Entity> l = worldObj.getEntitiesWithinAABBExcludingEntity( this, region );
|
||||
|
|
|
@ -64,7 +64,7 @@ public class ToolWirelessTerminal extends AEBasePoweredItem implements IWireless
|
|||
@Override
|
||||
public boolean canHandle(ItemStack is)
|
||||
{
|
||||
return AEApi.instance().items().itemWirelessTerminal.sameAs( is );
|
||||
return AEApi.instance().items().itemWirelessTerminal.sameAsStack( is );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -44,7 +44,7 @@ public class SecurityInventory implements IMEInventoryHandler<IAEItemStack>
|
|||
@Override
|
||||
public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionSource src)
|
||||
{
|
||||
if ( hasPermission( src ) && AEApi.instance().items().itemBiometricCard.sameAs( input.getItemStack() ) )
|
||||
if ( hasPermission( src ) && AEApi.instance().items().itemBiometricCard.sameAsStack( input.getItemStack() ) )
|
||||
{
|
||||
if ( canAccept( input ) )
|
||||
{
|
||||
|
|
|
@ -375,7 +375,7 @@ public class AEBasePart implements IPart, IGridProxyable, IActionHost, IUpgradea
|
|||
ItemStack is = getItemStack( PartItemStack.Network );
|
||||
|
||||
// Blocks and parts share the same soul!
|
||||
if ( AEApi.instance().parts().partInterface.sameAs( is ) )
|
||||
if ( AEApi.instance().parts().partInterface.sameAsStack( is ) )
|
||||
is = AEApi.instance().blocks().blockInterface.stack( 1 );
|
||||
|
||||
String name = is.getUnlocalizedName();
|
||||
|
|
|
@ -18,8 +18,8 @@ public class FacadeRecipe implements IRecipe
|
|||
{
|
||||
if ( inv.getStackInSlot( 0 ) == null && inv.getStackInSlot( 2 ) == null && inv.getStackInSlot( 6 ) == null && inv.getStackInSlot( 8 ) == null )
|
||||
{
|
||||
if ( anchor.sameAs( inv.getStackInSlot( 1 ) ) && anchor.sameAs( inv.getStackInSlot( 3 ) ) && anchor.sameAs( inv.getStackInSlot( 5 ) )
|
||||
&& anchor.sameAs( inv.getStackInSlot( 7 ) ) )
|
||||
if ( anchor.sameAsStack( inv.getStackInSlot( 1 ) ) && anchor.sameAsStack( inv.getStackInSlot( 3 ) ) && anchor.sameAsStack( inv.getStackInSlot( 5 ) )
|
||||
&& anchor.sameAsStack( inv.getStackInSlot( 7 ) ) )
|
||||
{
|
||||
ItemStack facadeis = facade.createFacadeForItem( inv.getStackInSlot( 4 ), !createFacade );
|
||||
if ( facadeis != null && createFacade )
|
||||
|
|
|
@ -1,12 +1,58 @@
|
|||
package appeng.tile.crafting;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import appeng.api.AEApi;
|
||||
import appeng.me.cluster.IAECluster;
|
||||
import appeng.me.cluster.IAEMultiBlock;
|
||||
import appeng.tile.AEBaseTile;
|
||||
import appeng.tile.events.AETileEventHandler;
|
||||
import appeng.tile.events.TileEventType;
|
||||
|
||||
public class TileCraftingTile extends AEBaseTile implements IAEMultiBlock
|
||||
{
|
||||
|
||||
private long storageBytes = 0;
|
||||
|
||||
public TileCraftingTile() {
|
||||
addNewHandler( new AETileEventHandler( TileEventType.NETWORK, TileEventType.WORLD_NBT ) {
|
||||
|
||||
public void writeToNBT(NBTTagCompound data)
|
||||
{
|
||||
if ( storageBytes > 0 )
|
||||
data.setLong( "bytes", storageBytes );
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound data)
|
||||
{
|
||||
storageBytes = data.getLong( "bytes" );
|
||||
}
|
||||
|
||||
public boolean readFromStream(io.netty.buffer.ByteBuf data) throws java.io.IOException
|
||||
{
|
||||
storageBytes = data.readLong();
|
||||
return false;
|
||||
}
|
||||
|
||||
public void writeToStream(io.netty.buffer.ByteBuf data) throws java.io.IOException
|
||||
{
|
||||
data.writeLong( storageBytes );
|
||||
}
|
||||
|
||||
} );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlacement(ItemStack stack, EntityPlayer player, int side)
|
||||
{
|
||||
if ( AEApi.instance().blocks().blockCraftingStorage.sameAsStack( stack ) && stack.hasTagCompound() )
|
||||
{
|
||||
NBTTagCompound data = stack.getTagCompound();
|
||||
storageBytes = data.getLong( "bytes" );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnect()
|
||||
{
|
||||
|
@ -28,4 +74,9 @@ public class TileCraftingTile extends AEBaseTile implements IAEMultiBlock
|
|||
return false;
|
||||
}
|
||||
|
||||
public long getStorageBytes()
|
||||
{
|
||||
return storageBytes;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable
|
|||
tickTickTimer = 20; // keep tickin...
|
||||
}
|
||||
}
|
||||
else if ( internalCurrentPower > 1499 && AEApi.instance().materials().materialCertusQuartzCrystal.sameAs( myItem ) )
|
||||
else if ( internalCurrentPower > 1499 && AEApi.instance().materials().materialCertusQuartzCrystal.sameAsStack( myItem ) )
|
||||
{
|
||||
if ( Platform.getRandomFloat() > 0.8f ) // simulate wait
|
||||
{
|
||||
|
@ -167,7 +167,7 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable
|
|||
injectExternalPower( PowerUnits.AE, 150 );
|
||||
|
||||
ItemStack myItem = getStackInSlot( 0 );
|
||||
if ( internalCurrentPower > 1499 && AEApi.instance().materials().materialCertusQuartzCrystal.sameAs( myItem ) )
|
||||
if ( internalCurrentPower > 1499 && AEApi.instance().materials().materialCertusQuartzCrystal.sameAsStack( myItem ) )
|
||||
{
|
||||
extractAEPower( internalMaxPower, Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500
|
||||
setInventorySlotContents( 0, AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( myItem.stackSize ) );
|
||||
|
@ -207,7 +207,7 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable
|
|||
@Override
|
||||
public boolean isItemValidForSlot(int i, ItemStack itemstack)
|
||||
{
|
||||
return Platform.isChargeable( itemstack ) || AEApi.instance().materials().materialCertusQuartzCrystal.sameAs( itemstack );
|
||||
return Platform.isChargeable( itemstack ) || AEApi.instance().materials().materialCertusQuartzCrystal.sameAsStack( itemstack );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -220,7 +220,7 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable
|
|||
return true;
|
||||
}
|
||||
|
||||
return AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAs( itemstack );
|
||||
return AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAsStack( itemstack );
|
||||
}
|
||||
|
||||
public void activate(EntityPlayer player)
|
||||
|
@ -232,7 +232,7 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable
|
|||
if ( myItem == null )
|
||||
{
|
||||
ItemStack held = player.inventory.getCurrentItem();
|
||||
if ( AEApi.instance().materials().materialCertusQuartzCrystal.sameAs( held ) || Platform.isChargeable( held ) )
|
||||
if ( AEApi.instance().materials().materialCertusQuartzCrystal.sameAsStack( held ) || Platform.isChargeable( held ) )
|
||||
{
|
||||
held = player.inventory.decrStackSize( player.inventory.currentItem, 1 );
|
||||
setInventorySlotContents( 0, held );
|
||||
|
|
|
@ -178,7 +178,7 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable
|
|||
|
||||
if ( i == 0 || i == 1 )
|
||||
{
|
||||
if ( AEApi.instance().materials().materialNamePress.sameAs( itemstack ) )
|
||||
if ( AEApi.instance().materials().materialNamePress.sameAsStack( itemstack ) )
|
||||
return true;
|
||||
|
||||
for (ItemStack s : Inscribe.plates)
|
||||
|
@ -243,8 +243,8 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable
|
|||
if ( renamedItem != null && renamedItem.stackSize > 1 )
|
||||
return null;
|
||||
|
||||
boolean isNameA = AEApi.instance().materials().materialNamePress.sameAs( PlateA );
|
||||
boolean isNameB = AEApi.instance().materials().materialNamePress.sameAs( PlateB );
|
||||
boolean isNameA = AEApi.instance().materials().materialNamePress.sameAsStack( PlateA );
|
||||
boolean isNameB = AEApi.instance().materials().materialNamePress.sameAsStack( PlateB );
|
||||
|
||||
if ( (isNameA || isNameB) && (isNameA || PlateA == null) && (isNameB || PlateB == null) )
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue