package zmaster587.advancedRocketry.tile.multiblock.machine;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import zmaster587.advancedRocketry.api.AdvancedRocketryBlocks;
import zmaster587.advancedRocketry.block.BlockRotatableModel;
import zmaster587.advancedRocketry.inventory.TextureResources;
import zmaster587.libVulpes.api.LibVulpesBlocks;
import zmaster587.libVulpes.block.BlockMeta;
import zmaster587.libVulpes.block.RotatableBlock;
import zmaster587.libVulpes.client.util.ProgressBarImage;
import zmaster587.libVulpes.interfaces.IRecipe;
import zmaster587.libVulpes.inventory.modules.IModularInventory;
import zmaster587.libVulpes.inventory.modules.ModuleBase;
import zmaster587.libVulpes.inventory.modules.ModuleProgress;
import zmaster587.libVulpes.recipe.RecipesMachine;
import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;
public class TileCuttingMachine extends TileMultiblockMachine implements IModularInventory {
private static final Object[][][] structure = new Object[][][]{
{{'I', 'c', 'O'},
{new BlockMeta(AdvancedRocketryBlocks.blockMotor, BlockMeta.WILDCARD), AdvancedRocketryBlocks.blockSawBlade, new BlockMeta(LibVulpesBlocks.blockRFBattery, 0)}}};
@Override
public Object[][][] getStructure() {
return structure;
}
@Override
public void updateEntity() {
super.updateEntity();
if(isRunning() && worldObj.getTotalWorldTime() % 20 == 0) {
ForgeDirection back = RotatableBlock.getFront(this.getBlockMetadata()).getOpposite();
float xCoord = this.xCoord + (0.5f*back.offsetX);
float zCoord = this.zCoord + (0.5f*back.offsetZ);
for(Object entity : worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5f, zCoord + 1))) {
((EntityLivingBase)entity).attackEntityFrom(DamageSource.cactus, 1f);
}
}
}
@Override
public ResourceLocation getSound() {
return TextureResources.sndCuttingMachine;
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
return AxisAlignedBB.getBoundingBox(xCoord -2,yCoord -2, zCoord -2, xCoord + 2, yCoord + 2, zCoord + 2);
}
public boolean completeStructure() {
boolean result = super.completeStructure();
return result;
}
@Override
public String getMachineName() {
return "container.cuttingmachine";
}
@Override
public List<ModuleBase> getModules(int ID, EntityPlayer player) {
List<ModuleBase> modules = super.getModules(ID, player);
modules.add(new ModuleProgress(100, 20, 0, TextureResources.cuttingMachineProgressBar, this));
return modules;
}
}