package projectzombie.entity.tileentity; import bdf.types.BdfNamedList; import bdf.types.BdfObject; import gl_engine.vec.Vec2i; import projectzombie.Main; import projectzombie.init.Items; import projectzombie.init.Tiles; import projectzombie.inventory.Inventory; import projectzombie.items.ItemBurnable; import projectzombie.items.ItemSmeltable; import projectzombie.items.ItemSmeltable; import projectzombie.items.ItemFlint; import projectzombie.items.ItemSmeltable; import projectzombie.items.modifier.ItemModifierDamage; import projectzombie.menu.MenuInventoryStorage; import projectzombie.menu.gui.GUIItemSlotGetter; import projectzombie.util.math.ItemStack; import projectzombie.util.math.TileState; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; public class TileEntityBlastFurnace extends TileEntity { private ItemStack burning; private Inventory inventory; private int next_level; private int burn_time; private int cook_time; private int cook_slot; private int level; public TileEntityBlastFurnace(BdfObject bdf) { BdfClassLoad(bdf); } public TileEntityBlastFurnace(Vec2i pos) { inventory = new Inventory(8); burning = ItemStack.getEmpty(); } @Override public void BdfClassLoad(BdfObject bdf) { super.BdfClassLoad(bdf); BdfNamedList nl = bdf.getNamedList(); inventory = new Inventory(nl.get("inventory")); burning = new ItemStack(nl.get("burning")); burn_time = nl.get("burnTime").getInteger(); cook_time = nl.get("cookTime").getInteger(); cook_slot = nl.get("cookSlot").getInteger(); next_level = nl.get("nextLevel").getInteger(); level = nl.get("level").getInteger(); } @Override public void BdfClassSave(BdfObject bdf) { super.BdfClassSave(bdf); BdfNamedList nl = bdf.getNamedList(); inventory.BdfClassSave(nl.get("inventory")); burning.BdfClassSave(nl.get("burning")); nl.set("burnTime", bdf.newObject().setInteger(burn_time)); nl.set("cookTime", bdf.newObject().setInteger(cook_time)); nl.set("cookSlot", bdf.newObject().setInteger(cook_slot)); nl.set("nextLevel", bdf.newObject().setInteger(next_level)); nl.set("level", bdf.newObject().setInteger(level)); } private void updateTile() { chunk.setFrontTile(new TileState(Tiles.BLAST_FURNACE, (byte)level), getPos().xz().toInt()); } private void checkForFuel() { for(int i=0;i 0) { ItemStack stack = inventory.getItem(cook_slot); // Check for cookable items if things aren't being cooked if(stack.isEmpty() || !(stack.item instanceof ItemSmeltable)) { cook_time = 1600; for(int i=0;i 16) { level = 16; } else { updateTile(); } } } } public Inventory getInventory() { return inventory; } public void onOpened() { Main.menu = new MenuInventoryStorage(Main.menu, inventory, new GUIItemSlotGetter() { @Override public void setItemStack(ItemStack stack) { } @Override public boolean isAllowed(ItemStack stack) { if(stack.item instanceof ItemBurnable) { return true; } if(stack.item instanceof ItemSmeltable) { return true; } return false; } @Override public ItemStack getItemStack() { return null; } }); } }