package zmaster587.advancedRocketry.tile.multiblock.machine;
import java.util.List;
import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidHandler;
import zmaster587.advancedRocketry.api.AdvancedRocketryBlocks;
import zmaster587.advancedRocketry.inventory.TextureResources;
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.interfaces.IRecipe;
import zmaster587.libVulpes.inventory.modules.ModuleBase;
import zmaster587.libVulpes.inventory.modules.ModuleProgress;
import zmaster587.libVulpes.recipe.RecipesMachine;
import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine;
public class TileRollingMachine extends TileMultiblockMachine {
public static final Object structure[][][] = new Object[][][] {
{ {'c', null, Blocks.air, Blocks.air},
{'I', Blocks.air, LibVulpesBlocks.blockStructureBlock, Blocks.air},
{'I', Blocks.air, LibVulpesBlocks.blockStructureBlock, Blocks.air}},
{{LibVulpesBlocks.blockRFBattery, 'L', LibVulpesBlocks.blockStructureBlock, null},
{new BlockMeta(Block.getBlockFromItem(MaterialRegistry.getMaterialFromName("Copper").getProduct(AllowedProducts.getProductByName("COIL")).getItem()), MaterialRegistry.getMaterialFromName("Copper").getMeta()), LibVulpesBlocks.blockStructureBlock, LibVulpesBlocks.blockStructureBlock, 'O'},
{new BlockMeta(Block.getBlockFromItem(MaterialRegistry.getMaterialFromName("Copper").getProduct(AllowedProducts.getProductByName("COIL")).getItem()), MaterialRegistry.getMaterialFromName("Copper").getMeta()), AdvancedRocketryBlocks.blockMotor, LibVulpesBlocks.blockStructureBlock, 'O'}}
};
@Override
public Object[][][] getStructure() {
return structure;
}
@Override
public List<ModuleBase> getModules(int ID, EntityPlayer player) {
List<ModuleBase> modules = super.getModules(ID, player);
modules.add(new ModuleProgress(70, 20, 0, TextureResources.rollingMachineProgressBar, this));
return modules;
}
@Override
public boolean canProcessRecipe(IRecipe recipe) {
if(!fluidInPorts.isEmpty()) {
IFluidHandler fluidHandler = fluidInPorts.get(0);
FluidStack fluid;
if(fluidHandler == null || (fluid = fluidHandler.drain(ForgeDirection.UNKNOWN, new FluidStack(FluidRegistry.WATER, 100), false)) == null
|| fluid.amount != 100)
return false;
}
return super.canProcessRecipe(recipe);
}
@Override
public void consumeItems(IRecipe recipe) {
super.consumeItems(recipe);
IFluidHandler fluidHandler = fluidInPorts.get(0);
fluidHandler.drain(ForgeDirection.UNKNOWN, new FluidStack(FluidRegistry.WATER, 100), true);
}
@Override
public ResourceLocation getSound() {
return TextureResources.sndRollingMachine;
}
@Override
public int getSoundDuration() {
return 30;
}
@Override
public boolean shouldHideBlock(World world, int x, int y, int z, Block tile) {
return tile != Block.getBlockFromItem(MaterialRegistry.getMaterialFromName("Copper").getProduct(AllowedProducts.getProductByName("COIL")).getItem());
}
@Override
public String getMachineName() {
return "tile.rollingMachine.name";
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
return AxisAlignedBB.getBoundingBox(xCoord -4, yCoord -4, zCoord -4, xCoord + 4, yCoord + 4, zCoord + 4);
}
}