package zmaster587.advancedRocketry.tile.multiblock; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; import zmaster587.advancedRocketry.api.AdvancedRocketryBlocks; import zmaster587.advancedRocketry.api.Configuration; import zmaster587.advancedRocketry.api.stations.ISpaceObject; import zmaster587.advancedRocketry.stations.SpaceObject; import zmaster587.advancedRocketry.stations.SpaceObjectManager; import zmaster587.libVulpes.api.LibVulpesBlocks; import zmaster587.libVulpes.api.material.AllowedProducts; import zmaster587.libVulpes.api.material.Material; import zmaster587.libVulpes.api.material.MaterialRegistry; import zmaster587.libVulpes.block.BlockMeta; import zmaster587.libVulpes.tile.multiblock.TileMultiBlock; public class TileWarpCore extends TileMultiBlock { private SpaceObject station; public static final Object[][][] structure = { {{"blockTitanium", "blockTitanium", "blockTitanium"}, {"blockTitanium", 'I', "blockTitanium"}, {"blockTitanium", "blockTitanium", "blockTitanium"}}, {{null, new BlockMeta(LibVulpesBlocks.blockStructureBlock), null}, {new BlockMeta(LibVulpesBlocks.blockStructureBlock), new BlockMeta(Blocks.gold_block), new BlockMeta(LibVulpesBlocks.blockStructureBlock)}, {null, new BlockMeta(LibVulpesBlocks.blockStructureBlock), null}}, {{"blockTitanium", 'c', "blockTitanium"}, {"blockTitanium", new BlockMeta(Blocks.gold_block), "blockTitanium"}, {"blockTitanium", "blockTitanium", "blockTitanium"}}, }; private SpaceObject getSpaceObject() { if(station == null && worldObj.provider.dimensionId == Configuration.spaceDimId) { ISpaceObject object = SpaceObjectManager.getSpaceManager().getSpaceStationFromBlockCoords(xCoord, zCoord); if(object instanceof SpaceObject) station = (SpaceObject) object; } return station; } @Override public Object[][][] getStructure() { return structure; } @Override public boolean shouldHideBlock(World world, int x, int y, int z, Block tile) { return x == xCoord && y == yCoord && z == zCoord; } @Override public void onInventoryUpdated() { //Needs completion if(itemInPorts.isEmpty() /*&& !worldObj.isRemote*/) { attemptCompleteStructure(); } if(getSpaceObject() == null || getSpaceObject().getFuelAmount() == getSpaceObject().getMaxFuelAmount()) return; for(IInventory inv : itemInPorts) { for(int i = 0; i < inv.getSizeInventory(); i++) { ItemStack stack = inv.getStackInSlot(i); int amt = 0; if(stack != null && OreDictionary.itemMatches(MaterialRegistry.getItemStackFromMaterialAndType("Dilithium", AllowedProducts.getProductByName("CRYSTAL")), stack, false)) { int stackSize = stack.stackSize; if(!worldObj.isRemote) amt = getSpaceObject().addFuel(Configuration.fuelPointsPerDilithium*stack.stackSize); else amt = Math.min(getSpaceObject().getFuelAmount() + 10*stack.stackSize, getSpaceObject().getMaxFuelAmount()) - getSpaceObject().getFuelAmount();// inv.decrStackSize(i, amt/10); inv.markDirty(); //If full if(stackSize/10 != amt) return; } } } } @Override public String getMachineName() { return "tile.warpCore.name"; } @Override public AxisAlignedBB getRenderBoundingBox() { return AxisAlignedBB.getBoundingBox(xCoord -2,yCoord -2, zCoord -2, xCoord + 2, yCoord + 2, zCoord + 2); } }