diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineElectricFurnace.java b/src/main/java/com/hbm/inventory/gui/GUIMachineElectricFurnace.java index 427d77f6f..eb56115a9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineElectricFurnace.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineElectricFurnace.java @@ -65,7 +65,7 @@ public class GUIMachineElectricFurnace extends GuiInfoContainer { fs = diFurnace; if(fs.hasPower()) { - int i = (int)diFurnace.getPowerRemainingScaled(52); + int i = (int)diFurnace.getPowerScaled(52); drawTexturedModalRect(guiLeft + 20, guiTop + 69 - i, 200, 52 - i, 16, i); } @@ -74,7 +74,7 @@ public class GUIMachineElectricFurnace extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 56, guiTop + 35, 176, 0, 16, 16); } - int j1 = fs.getDiFurnaceProgressScaled(24); + int j1 = fs.getProgressScaled(24); drawTexturedModalRect(guiLeft + 79, guiTop + 34, 176, 17, j1 + 1, 17); this.drawInfoPanel(guiLeft + 151, guiTop + 19, 8, 8, 8); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 0797dd496..03e621775 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -22,360 +22,222 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyUser { -// HOLY FUCKING SHIT I SPENT 5 DAYS ON THIS SHITFUCK CLASS FILE -// thanks Martin, vaer and Bob for the help - private ItemStack slots[]; - + // HOLY FUCKING SHIT I SPENT 5 DAYS ON THIS SHITFUCK CLASS FILE + // thanks Martin, vaer and Bob for the help public int progress; public long power; public static final long maxPower = 100000; - public int MaxProgress = 100; + public int maxProgress = 100; public int consumption = 50; - - private static final int[] slots_top = new int[] {1}; - private static final int[] slots_bottom = new int[] {2, 0}; - private static final int[] slots_side = new int[] {0}; - - private String customName; - - public TileEntityMachineElectricFurnace(){ + + private static final int[] slots_io = new int[] { 0, 1, 2 }; + + public TileEntityMachineElectricFurnace() { super(4); - slots = new ItemStack[4]; } @Override - public int getSizeInventory() { - return slots.length; + public String getName() { + return "container.electricFurnace"; } - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.electricFurnace"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 0) - if(itemStack.getItem() instanceof IBatteryItem) - return true; - - if(i == 1) - return true; - + if(i == 0) { + return itemStack.getItem() instanceof IBatteryItem; + } + + if(i == 1) { + return FurnaceRecipes.smelting().getSmeltingResult(itemStack) != null; + } + return false; } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setLong("power", power); nbt.setInteger("progress", progress); - NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); + public int[] getAccessibleSlotsFromSide(int side) { + return slots_io; } @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 0) - if (itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == 0) + if(itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem) itemStack.getItem()).getCharge(itemStack) == 0) return true; if(i == 2) return true; - + return false; } - public int getDiFurnaceProgressScaled(int i) { - return (progress * i) / MaxProgress; + public int getProgressScaled(int i) { + return (progress * i) / maxProgress; } - - public long getPowerRemainingScaled(long i) { + + public long getPowerScaled(long i) { return (power * i) / maxPower; } public boolean hasPower() { return power > 0; } - + public boolean isProcessing() { return this.progress > 0; } - + public boolean canProcess() { - if(slots[1] == null) - { + if(slots[1] == null) { return false; } - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); - - if(itemStack == null) - { + ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); + + if(itemStack == null) { return false; } - - if(slots[2] == null) - { + + if(slots[2] == null) { return true; } - + if(!slots[2].isItemEqual(itemStack)) { return false; } - + if(slots[2].stackSize < getInventoryStackLimit() && slots[2].stackSize < slots[2].getMaxStackSize()) { return true; - }else{ + } else { return slots[2].stackSize < itemStack.getMaxStackSize(); } } - + private void processItem() { if(canProcess()) { - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); - - if(slots[2] == null) - { + ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); + + if(slots[2] == null) { slots[2] = itemStack.copy(); - }else if(slots[2].isItemEqual(itemStack)) { + } else if(slots[2].isItemEqual(itemStack)) { slots[2].stackSize += itemStack.stackSize; } - - for(int i = 1; i < 2; i++) - { - if(slots[i].stackSize <= 0) - { + + for(int i = 1; i < 2; i++) { + if(slots[i].stackSize <= 0) { slots[i] = new ItemStack(slots[i].getItem().setFull3D()); - }else{ + } else { slots[i].stackSize--; } - if(slots[i].stackSize <= 0) - { + if(slots[i].stackSize <= 0) { slots[i] = null; } } } } - + @Override public void updateEntity() { this.hasPower(); boolean flag1 = false; - + if(!worldObj.isRemote) { - + + power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.updateConnections(); this.consumption = 50; - this.MaxProgress = 100; - + this.maxProgress = 100; + UpgradeManager.eval(slots, 3, 3); int speedLevel = UpgradeManager.getLevel(UpgradeType.SPEED); int powerLevel = UpgradeManager.getLevel(UpgradeType.POWER); - - MaxProgress -= speedLevel * 25; + + maxProgress -= speedLevel * 25; consumption += speedLevel * 50; - MaxProgress += powerLevel * 10; + maxProgress += powerLevel * 10; consumption -= powerLevel * 15; - - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("MaxProgress", this.MaxProgress); - data.setInteger("progress", this.progress); - this.networkPack(data, 50); - - if(hasPower() && canProcess()) - { + + if(hasPower() && canProcess()) { progress++; - + power -= consumption; - - if(this.progress == MaxProgress) - { + + if(this.progress == maxProgress) { this.progress = 0; this.processItem(); flag1 = true; } - }else{ + } else { progress = 0; } - + boolean trigger = true; - - if(hasPower() && canProcess() && this.progress == 0) - { + + if(hasPower() && canProcess() && this.progress == 0) { trigger = false; } - - if(trigger) - { - flag1 = true; - MachineElectricFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - } - - - if(flag1) - { - this.markDirty(); + if(trigger) { + flag1 = true; + MachineElectricFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", this.power); + data.setInteger("MaxProgress", this.maxProgress); + data.setInteger("progress", this.progress); + this.networkPack(data, 50); + + + if(flag1) { + this.markDirty(); + } } } + private void updateConnections() { - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); - this.MaxProgress = nbt.getInteger("MaxProgress"); + this.maxProgress = nbt.getInteger("MaxProgress"); this.progress = nbt.getInteger("progress"); } + @Override public void setPower(long i) { power = i; - + } @Override public long getPower() { return power; - + } @Override public long getMaxPower() { return maxPower; } - - @Override - public String getName() { - // TODO Auto-generated method stub - return null; - } } \ No newline at end of file