diff --git a/build.xml b/build.xml index 2688524..2976cfa 100644 --- a/build.xml +++ b/build.xml @@ -1,94 +1,91 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ljdp/minechem/common/ModMinechem.java b/ljdp/minechem/common/ModMinechem.java index 44dedd7..8b0966c 100644 --- a/ljdp/minechem/common/ModMinechem.java +++ b/ljdp/minechem/common/ModMinechem.java @@ -1,65 +1,35 @@ package ljdp.minechem.common; import java.io.IOException; -import java.util.List; import java.util.logging.Logger; import buildcraft.api.power.PowerFramework; -import ljdp.minechem.client.gui.GuiDecomposer; -import ljdp.minechem.client.gui.GuiFusion; -import ljdp.minechem.client.gui.GuiMicroscope; -import ljdp.minechem.client.gui.GuiProjector; -import ljdp.minechem.client.gui.GuiSynthesis; -import ljdp.minechem.client.sound.MinechemSoundEvent; import ljdp.minechem.common.blueprint.MinechemBlueprint; -import ljdp.minechem.common.containers.ContainerDecomposer; -import ljdp.minechem.common.containers.ContainerFusion; -import ljdp.minechem.common.containers.ContainerMicroscope; -import ljdp.minechem.common.containers.ContainerProjector; -import ljdp.minechem.common.containers.ContainerSynthesis; import ljdp.minechem.common.gates.MinechemTriggers; import ljdp.minechem.common.network.PacketHandler; import ljdp.minechem.common.recipe.MinechemRecipes; -import ljdp.minechem.common.tileentity.TileEntityBlueprintProjector; -import ljdp.minechem.common.tileentity.TileEntityDecomposer; -import ljdp.minechem.common.tileentity.TileEntityFusion; -import ljdp.minechem.common.tileentity.TileEntityMicroscope; -import ljdp.minechem.common.tileentity.TileEntityProxy; -import ljdp.minechem.common.tileentity.TileEntitySynthesis; import ljdp.minechem.common.utils.Localization; import ljdp.minechem.common.utils.MinechemHelper; import ljdp.minechem.computercraft.ICCMain; import net.minecraft.command.CommandHandler; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.item.Item; -import net.minecraft.src.TradeEntry; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; import net.minecraftforge.common.Configuration; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.oredict.OreDictionary; import cpw.mods.fml.common.FMLLog; -import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.PostInit; import cpw.mods.fml.common.Mod.PreInit; import cpw.mods.fml.common.Mod.ServerStarting; -import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; -import cpw.mods.fml.common.modloader.ModLoaderHelper; -import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.common.registry.VillagerRegistry; import cpw.mods.fml.relauncher.Side; diff --git a/ljdp/minechem/common/blocks/BlockMicroscope.java b/ljdp/minechem/common/blocks/BlockMicroscope.java index 1009a2a..fef8fcb 100644 --- a/ljdp/minechem/common/blocks/BlockMicroscope.java +++ b/ljdp/minechem/common/blocks/BlockMicroscope.java @@ -49,8 +49,11 @@ public TileEntity createNewTileEntity(World var1) { @Override public ArrayList addStacksDroppedOnBlockBreak(TileEntity tileEntity, ArrayList itemStacks) { ItemStack inputStack = ((TileEntityMicroscope)tileEntity).getStackInSlot(0); + ItemStack journal = ((TileEntityMicroscope)tileEntity).getStackInSlot(1); if(inputStack != null) itemStacks.add(inputStack); + if(journal != null) + itemStacks.add(journal); return itemStacks; } diff --git a/ljdp/minechem/common/containers/ContainerSynthesis.java b/ljdp/minechem/common/containers/ContainerSynthesis.java index 099bceb..e270174 100644 --- a/ljdp/minechem/common/containers/ContainerSynthesis.java +++ b/ljdp/minechem/common/containers/ContainerSynthesis.java @@ -7,63 +7,71 @@ import ljdp.minechem.common.tileentity.TileEntitySynthesis; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class ContainerSynthesis extends ContainerWithFakeSlots implements IRadiationShield { +public class ContainerSynthesis extends ContainerWithFakeSlots implements + IRadiationShield { private TileEntitySynthesis synthesis; - - public ContainerSynthesis(InventoryPlayer inventoryPlayer, TileEntitySynthesis synthesis) { + + public ContainerSynthesis(InventoryPlayer inventoryPlayer, + TileEntitySynthesis synthesis) { this.synthesis = synthesis; - addSlotToContainer(new SlotSynthesisOutput(synthesis, synthesis.kStartOutput, 134, 18)); + addSlotToContainer(new SlotSynthesisOutput(synthesis, + TileEntitySynthesis.kStartOutput, 134, 18)); bindRecipeMatrixSlots(); bindTestTubeSlots(); bindStorageSlots(); - addSlotToContainer(new SlotJournal(synthesis, synthesis.kStartJournal, 26, 36)); + addSlotToContainer(new SlotJournal(synthesis, + TileEntitySynthesis.kStartJournal, 26, 36)); bindPlayerInventory(inventoryPlayer); } - + private void bindRecipeMatrixSlots() { int slot = 0; - for(int row = 0; row < 3; row++) { - for(int col = 0; col < 3; col++) { - addSlotToContainer(new SlotFake(synthesis, synthesis.kStartRecipe + slot, 62 + (col * 18), 18 + (row * 18))); + for (int row = 0; row < 3; row++) { + for (int col = 0; col < 3; col++) { + addSlotToContainer(new SlotFake(synthesis, + TileEntitySynthesis.kStartRecipe + slot, + 62 + (col * 18), 18 + (row * 18))); slot++; } } } - + private void bindStorageSlots() { int slot = 0; - for(int col = 0; col < 9; col++) { - addSlotToContainer(new SlotChemical(synthesis, synthesis.kStartStorage + slot, 8 + (col * 18), 84)); + for (int col = 0; col < 9; col++) { + addSlotToContainer(new SlotChemical(synthesis, + TileEntitySynthesis.kStartStorage + slot, 8 + (col * 18), + 84)); slot++; } } - + private void bindTestTubeSlots() { int slot = 0; - for(int row = 0; row < 2; row++) { - for(int col = 0; col < 2; col++) { - addSlotToContainer(new SlotOutput(synthesis, synthesis.kStartBottles + slot, 134 + (col * 18), 40 + (row * 18))); + for (int row = 0; row < 2; row++) { + for (int col = 0; col < 2; col++) { + addSlotToContainer(new SlotOutput(synthesis, + TileEntitySynthesis.kStartBottles + slot, + 134 + (col * 18), 40 + (row * 18))); slot++; } } } - + private void bindPlayerInventory(InventoryPlayer inventoryPlayer) { for (int i = 0; i < 3; i++) { - for (int j = 0; j < 9; j++) { - addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, - 8 + j * 18, 105 + i * 18) - ); - } + for (int j = 0; j < 9; j++) { + addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, + 8 + j * 18, 105 + i * 18)); + } } for (int i = 0; i < 9; i++) { - addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 163)); + addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 163)); } } @@ -71,63 +79,75 @@ private void bindPlayerInventory(InventoryPlayer inventoryPlayer) { public boolean canInteractWith(EntityPlayer var1) { return synthesis.isUseableByPlayer(var1); } - + @Override public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slot) { Slot slotObject = (Slot) inventorySlots.get(slot); - if(slotObject != null && slotObject.getHasStack()) { + if (slotObject != null && slotObject.getHasStack()) { ItemStack stackInSlot = slotObject.getStack(); ItemStack stack = stackInSlot.copy(); - if(slot != synthesis.kStartJournal && stack.itemID == MinechemItems.journal.itemID - && !getSlot(synthesis.kStartJournal).getHasStack()) - { + if (slot != TileEntitySynthesis.kStartJournal + && stack.itemID == MinechemItems.journal.itemID + && !getSlot(TileEntitySynthesis.kStartJournal) + .getHasStack()) { ItemStack copystack = slotObject.decrStackSize(1); - getSlot(synthesis.kStartJournal).putStack(copystack); + getSlot(TileEntitySynthesis.kStartJournal).putStack(copystack); return null; - } else if(slot == synthesis.kStartOutput) { - if(!craftMaxmimum()) + } else if (slot == TileEntitySynthesis.kStartOutput) { + if (!craftMaxmimum()) return null; - } else if(slot >= synthesis.kStartBottles && slot < synthesis.kStartBottles + synthesis.kSizeBottles) { - if(!mergeItemStack(stackInSlot, synthesis.getSizeInventory(), inventorySlots.size(), true)) + } else if (slot >= TileEntitySynthesis.kStartBottles + && slot < TileEntitySynthesis.kStartBottles + + TileEntitySynthesis.kSizeBottles) { + if (!mergeItemStack(stackInSlot, synthesis.getSizeInventory(), + inventorySlots.size(), true)) return null; - } else if(slot >= synthesis.getSizeInventory() && slot < inventorySlots.size() - && (stackInSlot.itemID == MinechemItems.element.itemID - || stackInSlot.itemID == MinechemItems.molecule.itemID)) - { - if(!mergeItemStack(stackInSlot, synthesis.kStartStorage, synthesis.kStartStorage + synthesis.kSizeStorage, false)) + } else if (slot >= synthesis.getSizeInventory() + && slot < inventorySlots.size() + && (stackInSlot.itemID == MinechemItems.element.itemID || stackInSlot.itemID == MinechemItems.molecule.itemID)) { + if (!mergeItemStack(stackInSlot, + TileEntitySynthesis.kStartStorage, + TileEntitySynthesis.kStartStorage + + TileEntitySynthesis.kSizeStorage, false)) return null; - } else if(slot >= synthesis.kStartStorage && slot < synthesis.kStartStorage + synthesis.kSizeStorage) { - if(!mergeItemStack(stackInSlot, synthesis.getSizeInventory(), inventorySlots.size(), true)) + } else if (slot >= TileEntitySynthesis.kStartStorage + && slot < TileEntitySynthesis.kStartStorage + + TileEntitySynthesis.kSizeStorage) { + if (!mergeItemStack(stackInSlot, synthesis.getSizeInventory(), + inventorySlots.size(), true)) return null; - } else if(slot == synthesis.kStartJournal) { - if(!mergeItemStack(stackInSlot, synthesis.getSizeInventory(), inventorySlots.size(), true)) + } else if (slot == TileEntitySynthesis.kStartJournal) { + if (!mergeItemStack(stackInSlot, synthesis.getSizeInventory(), + inventorySlots.size(), true)) return null; } else return null; - - if(stackInSlot.stackSize == 0) + + if (stackInSlot.stackSize == 0) slotObject.putStack(null); else slotObject.onSlotChanged(); - + return stack; } return null; } - + public boolean craftMaxmimum() { List outputs = synthesis.getMaximumOutput(); - if(outputs == null) + if (outputs == null) return false; - for(ItemStack output : outputs) { - if(!mergeItemStack(output, synthesis.getSizeInventory(), inventorySlots.size(), true)) + for (ItemStack output : outputs) { + if (!mergeItemStack(output, synthesis.getSizeInventory(), + inventorySlots.size(), true)) return false; } return true; } @Override - public float getRadiationReductionFactor(int baseDamage, ItemStack itemstack, EntityPlayer player) { + public float getRadiationReductionFactor(int baseDamage, + ItemStack itemstack, EntityPlayer player) { return 0.4F; } diff --git a/ljdp/minechem/common/inventory/BoundedInventory.java b/ljdp/minechem/common/inventory/BoundedInventory.java index 16d8fc9..1aa1180 100644 --- a/ljdp/minechem/common/inventory/BoundedInventory.java +++ b/ljdp/minechem/common/inventory/BoundedInventory.java @@ -37,7 +37,7 @@ public ItemStack[] copyInventoryToArray() { } public List copyInventoryToList() { - List itemstacks = new ArrayList(); + List itemstacks = new ArrayList(); for(int slot = 0; slot < getSizeInventory(); slot++) { if(getStackInSlot(slot) != null) itemstacks.add(getStackInSlot(slot).copy()); diff --git a/ljdp/minechem/common/inventory/Transactor.java b/ljdp/minechem/common/inventory/Transactor.java index 9901d7b..6814564 100644 --- a/ljdp/minechem/common/inventory/Transactor.java +++ b/ljdp/minechem/common/inventory/Transactor.java @@ -5,7 +5,6 @@ import ljdp.minechem.api.util.Util; import net.minecraft.item.ItemStack; -import net.minecraftforge.common.ForgeDirection; public class Transactor { @@ -21,7 +20,7 @@ public Transactor(BoundedInventory inventory, int maxStackSize) { this.maxStackSize = maxStackSize; } - public ItemStack add(ItemStack stack, boolean doAdd) { + public int add(ItemStack stack, boolean doAdd) { int totalAmountAdded = 0; int totalAmountToAdd = stack.stackSize; int slot = 0; @@ -31,17 +30,12 @@ public ItemStack add(ItemStack stack, boolean doAdd) { totalAmountToAdd -= amountAdded; slot++; } - ItemStack remainingStack = stack.copy(); - remainingStack.stackSize -= totalAmountAdded; - if(remainingStack.stackSize <= 0) - remainingStack = null; - return remainingStack; + return totalAmountAdded; } public ItemStack[] remove(int amount, boolean doRemove) { - int totalAmountRemoved = 0; int totalAmountToRemove = amount; - List removed = new ArrayList(); + List removed = new ArrayList(); int slot = 0; while(totalAmountToRemove > 0 && slot < inventory.getSizeInventory()) { ItemStack stackRemoved; @@ -53,7 +47,6 @@ public ItemStack[] remove(int amount, boolean doRemove) { stackRemoved.stackSize = Math.min(amount, stackRemoved.stackSize); } if(stackRemoved != null) { - totalAmountRemoved += stackRemoved.stackSize; totalAmountToRemove -= stackRemoved.stackSize; removed.add(stackRemoved); } @@ -81,11 +74,11 @@ public ItemStack removeItem(boolean doRemove) { public int putStackInSlot(ItemStack stack, int amount, int slot, boolean doAdd) { ItemStack stackInSlot = inventory.getStackInSlot(slot); if(stackInSlot == null) { - if(stack.stackSize > getMaxStackSize(stack)) - stack.stackSize = getMaxStackSize(stack); + ItemStack stackToAdd = stack.copy(); + stackToAdd.stackSize = Math.min(amount,getMaxStackSize(stack)); if(doAdd) - inventory.setInventorySlotContents(slot, stack); - return stack.stackSize; + inventory.setInventorySlotContents(slot, stackToAdd); + return stackToAdd.stackSize; } if(Util.stacksAreSameKind(stack, stackInSlot)) { return appendStackToSlot(stack, amount, slot, doAdd); diff --git a/ljdp/minechem/common/tileentity/TileEntityDecomposer.java b/ljdp/minechem/common/tileentity/TileEntityDecomposer.java index 4c1021e..fa17711 100644 --- a/ljdp/minechem/common/tileentity/TileEntityDecomposer.java +++ b/ljdp/minechem/common/tileentity/TileEntityDecomposer.java @@ -13,126 +13,126 @@ import ljdp.minechem.common.gates.MinechemTriggers; import ljdp.minechem.common.inventory.BoundedInventory; import ljdp.minechem.common.inventory.Transactor; -import ljdp.minechem.common.items.ItemMolecule; import ljdp.minechem.common.network.PacketDecomposerUpdate; import ljdp.minechem.common.network.PacketHandler; import ljdp.minechem.common.recipe.DecomposerRecipeHandler; import ljdp.minechem.common.utils.MinechemHelper; import ljdp.minechem.computercraft.IMinechemMachinePeripheral; import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ISidedInventory; -import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.gates.ActionManager; import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITriggerProvider; import buildcraft.api.inventory.ISpecialInventory; import buildcraft.api.power.IPowerProvider; import buildcraft.api.power.IPowerReceptor; -import buildcraft.api.power.PowerFramework; import buildcraft.api.transport.IPipe; -import java.util.List; -public class TileEntityDecomposer extends MinechemTileEntity implements ISidedInventory, -IPowerReceptor, ITriggerProvider, IMinechemTriggerProvider, ISpecialInventory, IMinechemMachinePeripheral -{ - +public class TileEntityDecomposer extends MinechemTileEntity implements + ISidedInventory, IPowerReceptor, ITriggerProvider, + IMinechemTriggerProvider, ISpecialInventory, IMinechemMachinePeripheral { + private static final int MAX_POWER_STORAGE = 100; private static final float MIN_WORK_PER_SECOND = 1.0F; private static final float MAX_WORK_PER_SECOND = 10.0F; - + private ArrayList outputBuffer; public final int kInputSlot = 0; - public final int kOutputSlotStart = 1; - public final int kOutputSlotEnd = 9; + public final int kOutputSlotStart = 1; + public final int kOutputSlotEnd = 9; public final int kEmptyTestTubeSlotStart = 10; - public final int kEmptyTestTubeSlotEnd = 13; + public final int kEmptyTestTubeSlotEnd = 13; public final int kEmptyBottleSlotsSize = 4; - public final int kOutputSlotsSize = 9; + public final int kOutputSlotsSize = 9; private MinechemPowerProvider powerProvider; - private SafeTimeTracker updateTracker = new SafeTimeTracker(); public State state = State.kProcessIdle; private ItemStack activeStack; private float workToDo = 0; public ModelDecomposer model; private boolean hasFullEnergy; - + private final BoundedInventory testTubeInventory; private final BoundedInventory outputInventory; private final BoundedInventory inputInventory; private Transactor testTubeTransactor; private Transactor outputTransactor; private Transactor inputTransactor; - + public enum State { kProcessIdle, kProcessActive, kProcessFinished, kProcessJammed, kProcessNoBottles } - + public TileEntityDecomposer() { - testTubeInventory = new BoundedInventory(this, kEmptyTestTubeSlotStart, kEmptyTestTubeSlotEnd + 1); - outputInventory = new BoundedInventory(this, kOutputSlotStart, kOutputSlotEnd + 1); - inputInventory = new BoundedInventory(this, kInputSlot, kInputSlot + 1); + testTubeInventory = new BoundedInventory(this, kEmptyTestTubeSlotStart, + kEmptyTestTubeSlotEnd + 1); + outputInventory = new BoundedInventory(this, kOutputSlotStart, + kOutputSlotEnd + 1); + inputInventory = new BoundedInventory(this, kInputSlot, kInputSlot + 1); testTubeTransactor = new Transactor(testTubeInventory); - outputTransactor = new Transactor(outputInventory); - inputTransactor = new Transactor(inputInventory); + outputTransactor = new Transactor(outputInventory); + inputTransactor = new Transactor(inputInventory); inventory = new ItemStack[getSizeInventory()]; outputBuffer = new ArrayList(); powerProvider = new MinechemPowerProvider(2, 20, 0, 10000); - powerProvider.configurePowerPerdition(1, Constants.TICKS_PER_SECOND * 2); + powerProvider + .configurePowerPerdition(1, Constants.TICKS_PER_SECOND * 2); model = new ModelDecomposer(); ActionManager.registerTriggerProvider(this); } - + @Override public void updateEntity() { powerProvider.update(this); - if(!worldObj.isRemote && (powerProvider.didEnergyStoredChange() || powerProvider.didEnergyUsageChange())) + if (!worldObj.isRemote + && (powerProvider.didEnergyStoredChange() || powerProvider + .didEnergyUsageChange())) sendUpdatePacket(); - + float energyStored = powerProvider.getEnergyStored(); - if(energyStored >= powerProvider.getMaxEnergyStored()) + if (energyStored >= powerProvider.getMaxEnergyStored()) hasFullEnergy = true; - if(hasFullEnergy && energyStored < powerProvider.getMaxEnergyStored() / 2) + if (hasFullEnergy + && energyStored < powerProvider.getMaxEnergyStored() / 2) hasFullEnergy = false; - - if((state == State.kProcessIdle || state == State.kProcessFinished) && canDecomposeInput()) { + + if ((state == State.kProcessIdle || state == State.kProcessFinished) + && canDecomposeInput()) { activeStack = null; decomposeActiveStack(); state = State.kProcessActive; this.onInventoryChanged(); - } else if(!canTakeEmptyTestTube()) { + } else if (!canTakeEmptyTestTube()) { state = State.kProcessNoBottles; - } else if(state == State.kProcessFinished) { + } else if (state == State.kProcessFinished) { activeStack = null; state = State.kProcessIdle; - } else if(state == State.kProcessJammed && canUnjam()) { + } else if (state == State.kProcessJammed && canUnjam()) { state = State.kProcessActive; - } else if(state == State.kProcessNoBottles && canTakeEmptyTestTube()) { + } else if (state == State.kProcessNoBottles && canTakeEmptyTestTube()) { state = State.kProcessActive; } } - + @Override public void sendUpdatePacket() { - if(worldObj.isRemote) return; - PacketDecomposerUpdate packetDecomposerUpdate = new PacketDecomposerUpdate(this); + if (worldObj.isRemote) + return; + PacketDecomposerUpdate packetDecomposerUpdate = new PacketDecomposerUpdate( + this); int dimensionID = worldObj.getWorldInfo().getDimension(); - PacketHandler.getInstance().decomposerUpdateHandler.sendToAllPlayersInDimension(packetDecomposerUpdate, dimensionID); + PacketHandler.getInstance().decomposerUpdateHandler + .sendToAllPlayersInDimension(packetDecomposerUpdate, + dimensionID); } - + private ItemStack getActiveStack() { - if(activeStack == null){ - if(getStackInSlot(kInputSlot) != null) { + if (activeStack == null) { + if (getStackInSlot(kInputSlot) != null) { activeStack = decrStackSize(kInputSlot, 1); } else { return null; @@ -143,44 +143,47 @@ private ItemStack getActiveStack() { private boolean canDecomposeInput() { ItemStack inputStack = getStackInSlot(kInputSlot); - if(inputStack == null) + if (inputStack == null) return false; - DecomposerRecipe recipe = DecomposerRecipeHandler.instance.getRecipe(inputStack); + DecomposerRecipe recipe = DecomposerRecipeHandler.instance + .getRecipe(inputStack); return (recipe != null) && canTakeEmptyTestTube(); } - + private void decomposeActiveStack() { ItemStack inputStack = getActiveStack(); - DecomposerRecipe recipe = DecomposerRecipeHandler.instance.getRecipe(inputStack); - if(recipe != null && recipe.getOutput() != null) { - ArrayList stacks = MinechemHelper.convertChemicalsIntoItemStacks(recipe.getOutput()); + DecomposerRecipe recipe = DecomposerRecipeHandler.instance + .getRecipe(inputStack); + if (recipe != null && recipe.getOutput() != null) { + ArrayList stacks = MinechemHelper + .convertChemicalsIntoItemStacks(recipe.getOutput()); placeStacksInBuffer(stacks); } } - + private void placeStacksInBuffer(ArrayList outputStacks) { - if(outputStacks != null) { + if (outputStacks != null) { outputBuffer = outputStacks; } else { state = State.kProcessFinished; } } - + private boolean canUnjam() { - for(int slot = kOutputSlotStart; slot <= kOutputSlotEnd; slot++) { - if(getStackInSlot(slot) == null) + for (int slot = kOutputSlotStart; slot <= kOutputSlotEnd; slot++) { + if (getStackInSlot(slot) == null) return true; } return false; } - + private State moveBufferItemToOutputSlot() { - for(ItemStack outputStack : outputBuffer) { - if(!canTakeEmptyTestTube()) + for (ItemStack outputStack : outputBuffer) { + if (!canTakeEmptyTestTube()) return State.kProcessNoBottles; - else if(addStackToOutputSlots(outputStack.copy().splitStack(1))) { + else if (addStackToOutputSlots(outputStack.copy().splitStack(1))) { outputStack.splitStack(1); - if(outputStack.stackSize == 0) + if (outputStack.stackSize == 0) outputBuffer.remove(outputStack); takeEmptyTestTube(); return State.kProcessActive; @@ -190,15 +193,15 @@ else if(addStackToOutputSlots(outputStack.copy().splitStack(1))) { } return State.kProcessFinished; } - + private boolean addStackToOutputSlots(ItemStack itemstack) { itemstack.getItem().onCreated(itemstack, this.worldObj, null); - for(int outputSlot = kOutputSlotStart; outputSlot <= kOutputSlotEnd; outputSlot++) { + for (int outputSlot = kOutputSlotStart; outputSlot <= kOutputSlotEnd; outputSlot++) { ItemStack stackInSlot = getStackInSlot(outputSlot); - if(stackInSlot == null) { + if (stackInSlot == null) { setInventorySlotContents(outputSlot, itemstack); return true; - } else if(Util.stacksAreSameKind(stackInSlot, itemstack) + } else if (Util.stacksAreSameKind(stackInSlot, itemstack) && (stackInSlot.stackSize + itemstack.stackSize) <= getInventoryStackLimit()) { stackInSlot.stackSize += itemstack.stackSize; return true; @@ -206,7 +209,7 @@ private boolean addStackToOutputSlots(ItemStack itemstack) { } return false; } - + private boolean canTakeEmptyTestTube() { ItemStack testTube = testTubeTransactor.removeItem(false); return testTube != null; @@ -214,7 +217,7 @@ private boolean canTakeEmptyTestTube() { @Override public int getStartInventorySide(ForgeDirection side) { - switch(side) { + switch (side) { case NORTH: case SOUTH: return kInputSlot; @@ -231,7 +234,7 @@ public int getStartInventorySide(ForgeDirection side) { @Override public int getSizeInventorySide(ForgeDirection side) { - switch(side) { + switch (side) { case NORTH: case SOUTH: return 1; @@ -248,22 +251,23 @@ public int getSizeInventorySide(ForgeDirection side) { @Override public int addItem(ItemStack incoming, boolean doAdd, ForgeDirection from) { - - if (incoming != null){ - if (incoming.itemID == MinechemItems.testTube.itemID) { - return testTubeTransactor.add(incoming, doAdd).stackSize; - } else { - ItemStack tmp = inputTransactor.add(incoming, doAdd); return (tmp == null) ? 0 : tmp.stackSize; - } - - }else{ - - } - return kEmptyBottleSlotsSize; + + if (incoming != null) { + if (incoming.itemID == MinechemItems.testTube.itemID) { + return testTubeTransactor.add(incoming, doAdd); + } else { + return inputTransactor.add(incoming, doAdd); + } + + } else { + } + return kEmptyBottleSlotsSize; + } @Override - public ItemStack[] extractItem(boolean doRemove, ForgeDirection from, int maxItemCount) { + public ItemStack[] extractItem(boolean doRemove, ForgeDirection from, + int maxItemCount) { return outputTransactor.remove(maxItemCount, doRemove); } @@ -276,33 +280,37 @@ public int getSizeInventory() { public String getInvName() { return "container.decomposer"; } - + @Override public void writeToNBT(NBTTagCompound nbtTagCompound) { super.writeToNBT(nbtTagCompound); - NBTTagList inventoryTagList = MinechemHelper.writeItemStackArrayToTagList(inventory); - NBTTagList buffer = MinechemHelper.writeItemStackListToTagList(outputBuffer); + NBTTagList inventoryTagList = MinechemHelper + .writeItemStackArrayToTagList(inventory); + NBTTagList buffer = MinechemHelper + .writeItemStackListToTagList(outputBuffer); nbtTagCompound.setTag("inventory", inventoryTagList); nbtTagCompound.setTag("buffer", buffer); - if(activeStack != null) { + if (activeStack != null) { NBTTagCompound activeStackCompound = new NBTTagCompound(); activeStack.writeToNBT(activeStackCompound); nbtTagCompound.setTag("activeStack", activeStackCompound); } - nbtTagCompound.setByte("state", (byte)state.ordinal()); + nbtTagCompound.setByte("state", (byte) state.ordinal()); powerProvider.writeToNBT(nbtTagCompound); } - + @Override public void readFromNBT(NBTTagCompound nbtTagCompound) { super.readFromNBT(nbtTagCompound); NBTTagList inventoryTagList = nbtTagCompound.getTagList("inventory"); - NBTTagList buffer = nbtTagCompound.getTagList("buffer"); - outputBuffer = MinechemHelper.readTagListToItemStackList(buffer); - inventory = MinechemHelper.readTagListToItemStackArray(inventoryTagList, new ItemStack[getSizeInventory()]); - - if(nbtTagCompound.getTag("activeStack") != null) { - NBTTagCompound activeStackCompound = (NBTTagCompound)nbtTagCompound.getTag("activeStack"); + NBTTagList buffer = nbtTagCompound.getTagList("buffer"); + outputBuffer = MinechemHelper.readTagListToItemStackList(buffer); + inventory = MinechemHelper.readTagListToItemStackArray( + inventoryTagList, new ItemStack[getSizeInventory()]); + + if (nbtTagCompound.getTag("activeStack") != null) { + NBTTagCompound activeStackCompound = (NBTTagCompound) nbtTagCompound + .getTag("activeStack"); activeStack = ItemStack.loadItemStackFromNBT(activeStackCompound); } state = State.values()[nbtTagCompound.getByte("state")]; @@ -329,24 +337,24 @@ public IPowerProvider getPowerProvider() { @Override public void doWork() { - if(state != State.kProcessActive) + if (state != State.kProcessActive) return; - + State oldState = state; float minEnergy = powerProvider.getMinEnergyReceived(); float maxEnergy = powerProvider.getMaxEnergyReceived(); float energyUsed = powerProvider.useEnergy(minEnergy, maxEnergy, true); - workToDo += MinechemHelper.translateValue(energyUsed, minEnergy, maxEnergy, - MIN_WORK_PER_SECOND / 20, MAX_WORK_PER_SECOND / 20); - if(!worldObj.isRemote) { - while(workToDo >= 1) { + workToDo += MinechemHelper.translateValue(energyUsed, minEnergy, + maxEnergy, MIN_WORK_PER_SECOND / 20, MAX_WORK_PER_SECOND / 20); + if (!worldObj.isRemote) { + while (workToDo >= 1) { workToDo--; state = moveBufferItemToOutputSlot(); - if(state != State.kProcessActive) + if (state != State.kProcessActive) break; } this.onInventoryChanged(); - if(!state.equals(oldState)) { + if (!state.equals(oldState)) { sendUpdatePacket(); } } @@ -354,7 +362,8 @@ public void doWork() { @Override public int powerRequest() { - if(powerProvider.getEnergyStored() < powerProvider.getMaxEnergyStored()) { + if (powerProvider.getEnergyStored() < powerProvider + .getMaxEnergyStored()) { return powerProvider.getMaxEnergyReceived(); } else { return 0; @@ -362,7 +371,9 @@ public int powerRequest() { } public boolean isPowered() { - return (state != State.kProcessJammed && state != State.kProcessNoBottles && (powerProvider.getEnergyStored() > powerProvider.getMinEnergyReceived())); + return (state != State.kProcessJammed + && state != State.kProcessNoBottles && (powerProvider + .getEnergyStored() > powerProvider.getMinEnergyReceived())); } @Override @@ -372,8 +383,8 @@ public LinkedList getPipeTriggers(IPipe pipe) { @Override public LinkedList getNeighborTriggers(Block block, TileEntity tile) { - if(tile instanceof TileEntityDecomposer) { - LinkedList triggers = new LinkedList(); + if (tile instanceof TileEntityDecomposer) { + LinkedList triggers = new LinkedList(); triggers.add(MinechemTriggers.fullEnergy); triggers.add(MinechemTriggers.noTestTubes); triggers.add(MinechemTriggers.outputJammed); @@ -386,7 +397,7 @@ public LinkedList getNeighborTriggers(Block block, TileEntity tile) { public boolean hasFullEnergy() { return this.hasFullEnergy; } - + @Override public boolean hasNoTestTubes() { return this.state == State.kProcessNoBottles; @@ -403,7 +414,7 @@ public ItemStack takeEmptyTestTube() { } @Override - public ItemStack putEmptyTestTube(ItemStack testTube) { + public int putEmptyTestTube(ItemStack testTube) { return testTubeTransactor.add(testTube, true); } @@ -413,7 +424,7 @@ public ItemStack takeOutput() { } @Override - public ItemStack putInput(ItemStack input) { + public int putInput(ItemStack input) { return inputTransactor.add(input, true); } @@ -423,8 +434,8 @@ public ItemStack takeFusionStar() { } @Override - public ItemStack putFusionStar(ItemStack fusionStar) { - return null; + public int putFusionStar(ItemStack fusionStar) { + return 0; } @Override @@ -433,12 +444,12 @@ public ItemStack takeJournal() { } @Override - public ItemStack putJournal(ItemStack journal) { - return null; + public int putJournal(ItemStack journal) { + return 0; } @Override - public ItemStack putOutput(ItemStack output) { + public int putOutput(ItemStack output) { return outputTransactor.add(output, true); } @@ -449,13 +460,14 @@ public ItemStack takeInput() { @Override public String getMachineState() { - if(this.state == State.kProcessJammed) { + if (this.state == State.kProcessJammed) { return "outputjammed"; - } else if(this.state == State.kProcessNoBottles) { + } else if (this.state == State.kProcessNoBottles) { return "needtesttubes"; - } else if(this.state == State.kProcessActive) { + } else if (this.state == State.kProcessActive) { return "decomposing"; - } else if(this.powerProvider.getEnergyStored() > this.powerProvider.getMinEnergyReceived()) { + } else if (this.powerProvider.getEnergyStored() > this.powerProvider + .getMinEnergyReceived()) { return "powered"; } else { return "unpowered"; diff --git a/ljdp/minechem/common/tileentity/TileEntityFusion.java b/ljdp/minechem/common/tileentity/TileEntityFusion.java index 82dfe6f..6780ac0 100644 --- a/ljdp/minechem/common/tileentity/TileEntityFusion.java +++ b/ljdp/minechem/common/tileentity/TileEntityFusion.java @@ -6,24 +6,20 @@ import ljdp.minechem.common.blueprint.BlueprintFusion; import ljdp.minechem.common.inventory.BoundedInventory; import ljdp.minechem.common.inventory.Transactor; -import ljdp.minechem.common.network.PacketHandler; import ljdp.minechem.common.utils.MinechemHelper; import ljdp.minechem.computercraft.IMinechemMachinePeripheral; import buildcraft.api.core.SafeTimeTracker; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ISidedInventory; -public class TileEntityFusion extends TileEntityMultiBlock implements ISidedInventory, IMinechemMachinePeripheral { - +public class TileEntityFusion extends TileEntityMultiBlock implements + ISidedInventory, IMinechemMachinePeripheral { + public static int kStartFusionStar = 0; public static int kStartInput1 = 1; public static int kStartInput2 = 2; @@ -31,52 +27,57 @@ public class TileEntityFusion extends TileEntityMultiBlock implements ISidedInve public static int kSizeInput = 2; public static int kSizeOutput = 1; public static int kSizeFusionStar = 1; - + private final BoundedInventory inputInventory; private final BoundedInventory outputInventory; private final BoundedInventory starInventory; private Transactor inputTransactor; private Transactor outputTransactor; private Transactor starTransactor; - + int energyStored = 0; int maxEnergy = 9; int targetEnergy = 0; boolean isRecharging = false; SafeTimeTracker energyUpdateTracker = new SafeTimeTracker(); boolean shouldSendUpdatePacket; - + public TileEntityFusion() { - inputInventory = new BoundedInventory(this, kStartInput1, kStartInput1 + kSizeInput); - outputInventory = new BoundedInventory(this, kStartOutput, kStartOutput + kSizeOutput); - starInventory = new BoundedInventory(this, kStartFusionStar, kSizeFusionStar + kSizeFusionStar); + inputInventory = new BoundedInventory(this, kStartInput1, kStartInput1 + + kSizeInput); + outputInventory = new BoundedInventory(this, kStartOutput, kStartOutput + + kSizeOutput); + starInventory = new BoundedInventory(this, kStartFusionStar, + kSizeFusionStar + kSizeFusionStar); inputTransactor = new Transactor(inputInventory); outputTransactor = new Transactor(outputInventory); starTransactor = new Transactor(starInventory, 1); this.inventory = new ItemStack[this.getSizeInventory()]; setBlueprint(new BlueprintFusion()); } - + @Override public void updateEntity() { super.updateEntity(); - if(!completeStructure) + if (!completeStructure) return; - + shouldSendUpdatePacket = false; - if(!worldObj.isRemote && inventory[kStartFusionStar] != null - && energyUpdateTracker.markTimeIfDelay(worldObj, Constants.TICKS_PER_SECOND * 2)) - { - if(!isRecharging) - targetEnergy = takeEnergyFromStar(inventory[kStartFusionStar], true); - if(targetEnergy > 0) + if (!worldObj.isRemote + && inventory[kStartFusionStar] != null + && energyUpdateTracker.markTimeIfDelay(worldObj, + Constants.TICKS_PER_SECOND * 2)) { + if (!isRecharging) + targetEnergy = takeEnergyFromStar(inventory[kStartFusionStar], + true); + if (targetEnergy > 0) isRecharging = true; - if(isRecharging) { + if (isRecharging) { recharge(); } else { ItemStack fusionResult = getFusionOutput(); - while(fusionResult != null && canFuse(fusionResult)) { - if(!worldObj.isRemote) { + while (fusionResult != null && canFuse(fusionResult)) { + if (!worldObj.isRemote) { addToOutput(fusionResult); removeInputs(); } @@ -86,19 +87,19 @@ public void updateEntity() { } } } - if(shouldSendUpdatePacket && !worldObj.isRemote) + if (shouldSendUpdatePacket && !worldObj.isRemote) sendUpdatePacket(); } - + private void addToOutput(ItemStack fusionResult) { - if(inventory[kStartOutput] == null) { + if (inventory[kStartOutput] == null) { ItemStack output = fusionResult.copy(); inventory[kStartOutput] = output; } else { inventory[kStartOutput].stackSize++; } } - + private void removeInputs() { decrStackSize(kStartInput1, 1); decrStackSize(kStartInput2, 1); @@ -106,19 +107,20 @@ private void removeInputs() { private boolean canFuse(ItemStack fusionResult) { ItemStack itemInOutput = inventory[kStartOutput]; - if(itemInOutput != null) - return itemInOutput.stackSize < getInventoryStackLimit() - && itemInOutput.isItemEqual(fusionResult) && energyStored >= getEnergyCost(fusionResult); + if (itemInOutput != null) + return itemInOutput.stackSize < getInventoryStackLimit() + && itemInOutput.isItemEqual(fusionResult) + && energyStored >= getEnergyCost(fusionResult); else return energyStored >= getEnergyCost(fusionResult); } private ItemStack getFusionOutput() { - if(hasInputs()) { + if (hasInputs()) { int mass1 = inventory[kStartInput1].getItemDamage() + 1; int mass2 = inventory[kStartInput2].getItemDamage() + 1; int massSum = mass1 + mass2; - if(massSum <= EnumElement.heaviestMass) { + if (massSum <= EnumElement.heaviestMass) { return new ItemStack(MinechemItems.element, 1, massSum - 1); } else { return null; @@ -127,19 +129,21 @@ private ItemStack getFusionOutput() { return null; } } - + private int getEnergyCost(ItemStack itemstack) { int mass = itemstack.getItemDamage(); - int cost = (int) MinechemHelper.translateValue(mass + 1, 1, EnumElement.heaviestMass, 1, this.maxEnergy); + int cost = (int) MinechemHelper.translateValue(mass + 1, 1, + EnumElement.heaviestMass, 1, this.maxEnergy); return cost; } private boolean hasInputs() { - return inventory[kStartInput1] != null && inventory[kStartInput2] != null; + return inventory[kStartInput1] != null + && inventory[kStartInput2] != null; } private void recharge() { - if(energyStored < targetEnergy) { + if (energyStored < targetEnergy) { energyStored++; shouldSendUpdatePacket = true; } else { @@ -147,71 +151,72 @@ private void recharge() { targetEnergy = 0; } } - + @Override public void sendUpdatePacket() { } - + private int takeEnergyFromStar(ItemStack fusionStar, boolean doTake) { int energyCapacityAvailable = maxEnergy - energyStored; int fusionStarDamage = fusionStar.getItemDamage(); int energyInStar = fusionStar.getMaxDamage() - fusionStarDamage; - if(energyCapacityAvailable == 0) { + if (energyCapacityAvailable == 0) { return 0; - } else if(energyInStar > energyCapacityAvailable) { - if(doTake) { + } else if (energyInStar > energyCapacityAvailable) { + if (doTake) { fusionStarDamage += energyCapacityAvailable; fusionStar.setItemDamage(fusionStarDamage); } return maxEnergy; } else { - if(doTake) { + if (doTake) { destroyFusionStar(fusionStar); } return energyStored + energyInStar; } } - + private void destroyFusionStar(ItemStack fusionStar) { this.inventory[kStartFusionStar] = null; } - + @Override public int getSizeInventory() { return 4; } - + @Override public void setInventorySlotContents(int slot, ItemStack itemstack) { - if(itemstack != null && itemstack.itemID == Item.netherStar.itemID) { + if (itemstack != null && itemstack.itemID == Item.netherStar.itemID) { this.inventory[slot] = new ItemStack(MinechemItems.fusionStar); } else { this.inventory[slot] = itemstack; } } - + @Override public String getInvName() { return "container.minechemFusion"; } - + @Override public boolean isUseableByPlayer(EntityPlayer entityPlayer) { - if(!completeStructure) + if (!completeStructure) return false; return true; } - + @Override public void writeToNBT(NBTTagCompound nbtTagCompound) { super.writeToNBT(nbtTagCompound); nbtTagCompound.setInteger("energyStored", energyStored); nbtTagCompound.setInteger("targetEnergy", targetEnergy); nbtTagCompound.setBoolean("isRecharging", isRecharging); - NBTTagList inventoryTagList = MinechemHelper.writeItemStackArrayToTagList(inventory); + NBTTagList inventoryTagList = MinechemHelper + .writeItemStackArrayToTagList(inventory); nbtTagCompound.setTag("inventory", inventoryTagList); } - + @Override public void readFromNBT(NBTTagCompound nbtTagCompound) { super.readFromNBT(nbtTagCompound); @@ -219,24 +224,25 @@ public void readFromNBT(NBTTagCompound nbtTagCompound) { targetEnergy = nbtTagCompound.getInteger("targetEnergy"); isRecharging = nbtTagCompound.getBoolean("isRecharging"); inventory = new ItemStack[getSizeInventory()]; - MinechemHelper.readTagListToItemStackArray(nbtTagCompound.getTagList("inventory"), inventory); + MinechemHelper.readTagListToItemStackArray( + nbtTagCompound.getTagList("inventory"), inventory); } public int getEnergyStored() { return this.energyStored; } - + public void setEnergyStored(int amount) { this.energyStored = amount; } - + public int getMaxEnergy() { return this.maxEnergy; } @Override public int getStartInventorySide(ForgeDirection side) { - switch(side) { + switch (side) { case NORTH: case SOUTH: case EAST: @@ -252,7 +258,7 @@ public int getStartInventorySide(ForgeDirection side) { @Override public int getSizeInventorySide(ForgeDirection side) { - switch(side) { + switch (side) { case NORTH: case SOUTH: case EAST: @@ -272,8 +278,8 @@ public ItemStack takeEmptyTestTube() { } @Override - public ItemStack putEmptyTestTube(ItemStack testTube) { - return null; + public int putEmptyTestTube(ItemStack testTube) { + return 0; } @Override @@ -282,7 +288,7 @@ public ItemStack takeOutput() { } @Override - public ItemStack putOutput(ItemStack output) { + public int putOutput(ItemStack output) { return outputTransactor.add(output, true); } @@ -292,7 +298,7 @@ public ItemStack takeInput() { } @Override - public ItemStack putInput(ItemStack input) { + public int putInput(ItemStack input) { return inputTransactor.add(input, true); } @@ -302,8 +308,8 @@ public ItemStack takeFusionStar() { } @Override - public ItemStack putFusionStar(ItemStack fusionStar) { - return starTransactor.removeItem(true); + public int putFusionStar(ItemStack fusionStar) { + return starTransactor.add(fusionStar, true); } @Override @@ -312,15 +318,15 @@ public ItemStack takeJournal() { } @Override - public ItemStack putJournal(ItemStack journal) { - return null; + public int putJournal(ItemStack journal) { + return 0; } @Override public String getMachineState() { - if(starInventory.getStackInSlot(0) == null) { + if (starInventory.getStackInSlot(0) == null) { return "needfusionstar"; - } else if(isRecharging) { + } else if (isRecharging) { return "recharging"; } else { return "powered"; diff --git a/ljdp/minechem/common/tileentity/TileEntityMicroscope.java b/ljdp/minechem/common/tileentity/TileEntityMicroscope.java index b457c53..5f09ac3 100644 --- a/ljdp/minechem/common/tileentity/TileEntityMicroscope.java +++ b/ljdp/minechem/common/tileentity/TileEntityMicroscope.java @@ -1,26 +1,18 @@ package ljdp.minechem.common.tileentity; -import java.util.ArrayList; - -import ljdp.minechem.api.core.EnumMolecule; import ljdp.minechem.api.recipe.DecomposerRecipe; import ljdp.minechem.api.recipe.SynthesisRecipe; import ljdp.minechem.common.MinechemItems; import ljdp.minechem.common.inventory.BoundedInventory; import ljdp.minechem.common.inventory.Transactor; -import ljdp.minechem.common.items.ItemMolecule; import ljdp.minechem.common.recipe.DecomposerRecipeHandler; -import ljdp.minechem.common.recipe.MinechemRecipes; import ljdp.minechem.common.recipe.SynthesisRecipeHandler; -import ljdp.minechem.common.utils.MinechemHelper; import ljdp.minechem.computercraft.IMinechemMachinePeripheral; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; public class TileEntityMicroscope extends MinechemTileEntity implements IInventory, IMinechemMachinePeripheral { @@ -148,8 +140,8 @@ public ItemStack takeEmptyTestTube() { } @Override - public ItemStack putEmptyTestTube(ItemStack testTube) { - return null; + public int putEmptyTestTube(ItemStack testTube) { + return 0; } @Override @@ -158,8 +150,8 @@ public ItemStack takeOutput() { } @Override - public ItemStack putOutput(ItemStack output) { - return null; + public int putOutput(ItemStack output) { + return 0; } @Override @@ -168,7 +160,7 @@ public ItemStack takeInput() { } @Override - public ItemStack putInput(ItemStack input) { + public int putInput(ItemStack input) { return inputTransactor.add(input, true); } @@ -178,8 +170,8 @@ public ItemStack takeFusionStar() { } @Override - public ItemStack putFusionStar(ItemStack fusionStar) { - return null; + public int putFusionStar(ItemStack fusionStar) { + return 0; } @Override @@ -188,7 +180,7 @@ public ItemStack takeJournal() { } @Override - public ItemStack putJournal(ItemStack journal) { + public int putJournal(ItemStack journal) { return journalTransactor.add(journal, true); } diff --git a/ljdp/minechem/common/tileentity/TileEntitySynthesis.java b/ljdp/minechem/common/tileentity/TileEntitySynthesis.java index 9355aa1..09ac1c0 100644 --- a/ljdp/minechem/common/tileentity/TileEntitySynthesis.java +++ b/ljdp/minechem/common/tileentity/TileEntitySynthesis.java @@ -21,14 +21,12 @@ import ljdp.minechem.computercraft.IMinechemMachinePeripheral; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ISidedInventory; -import buildcraft.api.core.Position; import buildcraft.api.gates.ActionManager; import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITriggerProvider; @@ -37,18 +35,11 @@ import buildcraft.api.power.IPowerReceptor; import buildcraft.api.transport.IPipe; -public class TileEntitySynthesis extends MinechemTileEntity implements ISidedInventory, -IPowerReceptor, ITriggerProvider, IMinechemTriggerProvider, ISpecialInventory, IMinechemMachinePeripheral -{ - - private class ItemStackPointer { - IInventory inventory; - ItemStack itemstack; - int slot; - public int stackSize; - } +public class TileEntitySynthesis extends MinechemTileEntity implements + ISidedInventory, IPowerReceptor, ITriggerProvider, + IMinechemTriggerProvider, ISpecialInventory, IMinechemMachinePeripheral { public static final int kSizeOutput = 1; - public static final int kSizeRecipe = 9; + public static final int kSizeRecipe = 9; public static final int kSizeBottles = 4; public static final int kSizeStorage = 9; public static final int kSizeJournal = 1; @@ -57,84 +48,88 @@ private class ItemStackPointer { public static final int kStartBottles = 10; public static final int kStartStorage = 14; public static final int kStartJournal = 23; - - //public static final int + private SynthesisRecipe currentRecipe; MinechemPowerProvider powerProvider; - public ModelSynthesizer model; - private final BoundedInventory recipeMatrix = - new BoundedInventory(this, kStartRecipe, kStartRecipe + kSizeRecipe); - private final BoundedInventory storageInventory = - new BoundedInventory(this, kStartStorage, kStartStorage + kSizeStorage); - private final BoundedInventory tubeInventory = - new BoundedInventory(this, kStartBottles, kStartBottles + kSizeBottles); - private final BoundedInventory outputInventory = - new BoundedInventory(this, kStartOutput, kStartOutput + kSizeOutput); - private final BoundedInventory journalInventory = - new BoundedInventory(this, kStartJournal, kStartJournal + kSizeJournal); + public ModelSynthesizer model; + private final BoundedInventory recipeMatrix = new BoundedInventory(this, + kStartRecipe, kStartRecipe + kSizeRecipe); + private final BoundedInventory storageInventory = new BoundedInventory( + this, kStartStorage, kStartStorage + kSizeStorage); + private final BoundedInventory tubeInventory = new BoundedInventory(this, + kStartBottles, kStartBottles + kSizeBottles); + private final BoundedInventory outputInventory = new BoundedInventory(this, + kStartOutput, kStartOutput + kSizeOutput); + private final BoundedInventory journalInventory = new BoundedInventory( + this, kStartJournal, kStartJournal + kSizeJournal); private Transactor testTubeTransactor; private Transactor storageTransactor; private Transactor outputTransactor; private Transactor recipeMatrixTransactor; private Transactor journalTransactor; - + int minEnergyPerTick = 30; int maxEnergyPerTick = 200; int activationEnergy = 100; int energyStorage = 900000; - + private boolean hasFullEnergy; - + public TileEntitySynthesis() { - inventory = new ItemStack[getSizeInventory()]; - testTubeTransactor = new Transactor(tubeInventory); - storageTransactor = new Transactor(storageInventory); - outputTransactor = new Transactor(outputInventory); - journalTransactor = new Transactor(journalInventory, 1); + inventory = new ItemStack[getSizeInventory()]; + testTubeTransactor = new Transactor(tubeInventory); + storageTransactor = new Transactor(storageInventory); + outputTransactor = new Transactor(outputInventory); + journalTransactor = new Transactor(journalInventory, 1); recipeMatrixTransactor = new Transactor(recipeMatrix); - powerProvider = new MinechemPowerProvider(minEnergyPerTick, maxEnergyPerTick, activationEnergy, energyStorage); - powerProvider.configurePowerPerdition(1, Constants.TICKS_PER_SECOND * 2); + powerProvider = new MinechemPowerProvider(minEnergyPerTick, + maxEnergyPerTick, activationEnergy, energyStorage); + powerProvider + .configurePowerPerdition(1, Constants.TICKS_PER_SECOND * 2); model = new ModelSynthesizer(); ActionManager.registerTriggerProvider(this); } - @Override + @Override public int addItem(ItemStack stack, boolean doAdd, ForgeDirection direction) { - return new Transactor(storageInventory).add(stack, doAdd).stackSize; + return storageTransactor.add(stack, doAdd); } - + public boolean canTakeOutputStack() { - return inventory[kStartOutput] != null && hasEnoughPowerForCurrentRecipe() && takeStacksFromStorage(false); + return inventory[kStartOutput] != null + && hasEnoughPowerForCurrentRecipe() + && takeStacksFromStorage(false); } - + public void clearRecipeMatrix() { - for(int slot = kStartRecipe; slot < kStartRecipe + kSizeRecipe; slot++) { + for (int slot = kStartRecipe; slot < kStartRecipe + kSizeRecipe; slot++) { inventory[slot] = null; } } - + @Override - public void closeChest() {} - + public void closeChest() { + } + @Override public ItemStack decrStackSize(int slot, int amount) { - if(slot == kStartJournal) + if (slot == kStartJournal) clearRecipeMatrix(); - if(this.inventory[slot] != null) { + if (this.inventory[slot] != null) { ItemStack itemstack; - if(slot == kStartOutput) { - if(takeInputStacks()) + if (slot == kStartOutput) { + if (takeInputStacks()) takeEnergy(currentRecipe); else return null; } - if(this.inventory[slot].stackSize <= amount) { + if (this.inventory[slot].stackSize <= amount) { itemstack = this.inventory[slot]; this.inventory[slot] = null; return itemstack; } else { itemstack = this.inventory[slot].splitStack(amount); - if(this.inventory[slot].stackSize == 0) + if (this.inventory[slot].stackSize == 0) this.inventory[slot] = null; return itemstack; } @@ -142,52 +137,54 @@ public ItemStack decrStackSize(int slot, int amount) { return null; } } - + @Override public void doWork() { } - + @Override - public ItemStack[] extractItem(boolean doRemove, ForgeDirection direction, int maxItemCount) { + public ItemStack[] extractItem(boolean doRemove, ForgeDirection direction, + int maxItemCount) { switch (direction) { - case NORTH: - case SOUTH: - case EAST: - case WEST: - case UNKNOWN: - return extractOutput(doRemove, maxItemCount); - case UP: - case DOWN: - return extractTestTubes(doRemove, maxItemCount); - - } - return new ItemStack[0]; - } - + case NORTH: + case SOUTH: + case EAST: + case WEST: + case UNKNOWN: + return extractOutput(doRemove, maxItemCount); + case UP: + case DOWN: + return extractTestTubes(doRemove, maxItemCount); + + } + return new ItemStack[0]; + } + public ItemStack[] extractOutput(boolean doRemove, int maxItemCount) { - if(currentRecipe == null || !takeInputStacks() || !canAffordRecipe(currentRecipe)) - return null; - ItemStack outputStack = currentRecipe.getOutput().copy(); - ItemStack[] output = new ItemStack[] { outputStack }; - if(doRemove) { - takeEnergy(currentRecipe); - addEmptyBottles(currentRecipe.getIngredientCount()); - } - return output; - } - + if (currentRecipe == null || !takeStacksFromStorage(false) + || !canAffordRecipe(currentRecipe)) + return null; + ItemStack outputStack = currentRecipe.getOutput().copy(); + ItemStack[] output = new ItemStack[] { outputStack }; + if (doRemove) { + takeEnergy(currentRecipe); + takeStacksFromStorage(true); + } + return output; + } + public ItemStack[] extractTestTubes(boolean doRemove, int maxItemCount) { return testTubeTransactor.remove(maxItemCount, doRemove); } - + public SynthesisRecipe getCurrentRecipe() { return currentRecipe; } - + public int getFacing() { return worldObj.getBlockMetadata(xCoord, yCoord, zCoord); } - + @Override public String getInvName() { return "container.synthesis"; @@ -195,8 +192,8 @@ public String getInvName() { @Override public LinkedList getNeighborTriggers(Block block, TileEntity tile) { - if(tile instanceof TileEntitySynthesis) { - LinkedList triggers = new LinkedList(); + if (tile instanceof TileEntitySynthesis) { + LinkedList triggers = new LinkedList(); triggers.add(MinechemTriggers.fullEnergy); triggers.add(MinechemTriggers.noTestTubes); triggers.add(MinechemTriggers.outputJammed); @@ -221,12 +218,13 @@ public ItemStack[] getRecipeMatrixItems() { @Override public int getSizeInventory() { - return kSizeOutput + kSizeRecipe + kSizeStorage + kSizeBottles + kSizeJournal; + return kSizeOutput + kSizeRecipe + kSizeStorage + kSizeBottles + + kSizeJournal; } @Override public int getSizeInventorySide(ForgeDirection side) { - switch(side) { + switch (side) { case NORTH: case SOUTH: case UNKNOWN: @@ -240,10 +238,10 @@ public int getSizeInventorySide(ForgeDirection side) { return kSizeBottles; } } - + @Override public int getStartInventorySide(ForgeDirection side) { - switch(side) { + switch (side) { case NORTH: case SOUTH: case UNKNOWN: @@ -259,19 +257,21 @@ public int getStartInventorySide(ForgeDirection side) { } public boolean hasEnoughPowerForCurrentRecipe() { - return currentRecipe != null && powerProvider.getEnergyStored() >= currentRecipe.energyCost(); + return currentRecipe != null + && powerProvider.getEnergyStored() >= currentRecipe + .energyCost(); } - + @Override public boolean hasFullEnergy() { return hasFullEnergy; } - + @Override public boolean hasNoTestTubes() { boolean hasNoTestTubes = true; - for(int slot = kStartBottles; slot < kStartBottles + kSizeBottles; slot++) { - if(this.inventory[slot] != null) { + for (int slot = kStartBottles; slot < kStartBottles + kSizeBottles; slot++) { + if (this.inventory[slot] != null) { hasNoTestTubes = false; break; } @@ -282,18 +282,20 @@ public boolean hasNoTestTubes() { @Override public boolean isJammed() { int count = 0; - for(int slot = kStartBottles; slot < kStartBottles + kSizeBottles; slot++) { - if(inventory[slot] != null) { + for (int slot = kStartBottles; slot < kStartBottles + kSizeBottles; slot++) { + if (inventory[slot] != null) { count += inventory[slot].stackSize; } } - return count == (64*4); + return count == (64 * 4); } - + @Override public boolean isUseableByPlayer(EntityPlayer entityPlayer) { - double dist = entityPlayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D); - return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : dist <= 64.0D; + double dist = entityPlayer.getDistanceSq((double) xCoord + 0.5D, + (double) yCoord + 0.5D, (double) zCoord + 0.5D); + return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false + : dist <= 64.0D; } @Override @@ -303,13 +305,14 @@ public void onInventoryChanged() { } public void onOuputPickupFromSlot() { - if(takeInputStacks()) + if (takeInputStacks()) takeEnergy(currentRecipe); } @Override public int powerRequest() { - if(powerProvider.getEnergyStored() < powerProvider.getMaxEnergyStored()) + if (powerProvider.getEnergyStored() < powerProvider + .getMaxEnergyStored()) return powerProvider.getMaxEnergyReceived(); else return 0; @@ -319,20 +322,22 @@ public int powerRequest() { public void readFromNBT(NBTTagCompound nbtTagCompound) { super.readFromNBT(nbtTagCompound); NBTTagList inventoryTagList = nbtTagCompound.getTagList("inventory"); - inventory = MinechemHelper.readTagListToItemStackArray(inventoryTagList, new ItemStack[getSizeInventory()]); + inventory = MinechemHelper.readTagListToItemStackArray( + inventoryTagList, new ItemStack[getSizeInventory()]); powerProvider.readFromNBT(nbtTagCompound); } public void sendUpdatePacket() { PacketSynthesisUpdate packet = new PacketSynthesisUpdate(this); int dimensionID = worldObj.getWorldInfo().getDimension(); - PacketHandler.getInstance().synthesisUpdateHandler.sendToAllPlayersInDimension(packet, dimensionID); + PacketHandler.getInstance().synthesisUpdateHandler + .sendToAllPlayersInDimension(packet, dimensionID); } @Override public void setInventorySlotContents(int slot, ItemStack itemstack) { super.setInventorySlotContents(slot, itemstack); - if(slot == kStartJournal && itemstack != null) + if (slot == kStartJournal && itemstack != null) onPutJournal(itemstack); } @@ -341,74 +346,81 @@ public void setPowerProvider(IPowerProvider provider) { this.powerProvider = (MinechemPowerProvider) provider; } - public boolean takeStacksFromStorage(boolean doTake) { - List ingredients = MinechemHelper.convertChemicalsIntoItemStacks(currentRecipe.getShapelessRecipe()); + public boolean takeStacksFromStorage(boolean doTake) { + List ingredients = MinechemHelper + .convertChemicalsIntoItemStacks(currentRecipe + .getShapelessRecipe()); ItemStack[] storage = storageInventory.copyInventoryToArray(); - for(ItemStack ingredient : ingredients) { - if(!takeStackFromStorage(ingredient, storage)) + for (ItemStack ingredient : ingredients) { + if (!takeStackFromStorage(ingredient, storage)) return false; } - if(doTake) { + if (doTake) { addEmptyBottles(currentRecipe.getIngredientCount()); storageInventory.setInventoryStacks(storage); } return true; } - + @Override public void updateEntity() { powerProvider.update(this); - if(!worldObj.isRemote && powerProvider.didEnergyStoredChange()) { + if (!worldObj.isRemote && powerProvider.didEnergyStoredChange()) { sendUpdatePacket(); } - if(powerProvider.getEnergyStored() >= powerProvider.getMaxEnergyStored()) + if (powerProvider.getEnergyStored() >= powerProvider + .getMaxEnergyStored()) hasFullEnergy = true; - if(hasFullEnergy && powerProvider.getEnergyStored() < powerProvider.getMaxEnergyStored()/2) + if (hasFullEnergy + && powerProvider.getEnergyStored() < powerProvider + .getMaxEnergyStored() / 2) hasFullEnergy = false; - - if(currentRecipe != null && inventory[kStartOutput] == null) - { + + if (currentRecipe != null && inventory[kStartOutput] == null) { inventory[kStartOutput] = currentRecipe.getOutput().copy(); } } - + @Override - public void validate() { - super.validate(); - getRecipeResult(); - } - + public void validate() { + super.validate(); + getRecipeResult(); + } + @Override public void writeToNBT(NBTTagCompound nbtTagCompound) { super.writeToNBT(nbtTagCompound); - NBTTagList inventoryTagList = MinechemHelper.writeItemStackArrayToTagList(inventory); + NBTTagList inventoryTagList = MinechemHelper + .writeItemStackArrayToTagList(inventory); nbtTagCompound.setTag("inventory", inventoryTagList); powerProvider.writeToNBT(nbtTagCompound); } - - + private void addEmptyBottles(int amount) { - for(int slot = kStartBottles; slot < kStartBottles + kSizeBottles; slot++) { - if(inventory[slot] == null) { + for (int slot = kStartBottles; slot < kStartBottles + kSizeBottles; slot++) { + if (inventory[slot] == null) { int stackSize = Math.min(amount, getInventoryStackLimit()); - setInventorySlotContents(slot, new ItemStack(MinechemItems.testTube, stackSize)); + setInventorySlotContents(slot, new ItemStack( + MinechemItems.testTube, stackSize)); amount -= stackSize; - } else if(inventory[slot].itemID == MinechemItems.testTube.itemID) { - int stackAddition = getInventoryStackLimit() - inventory[slot].stackSize; + } else if (inventory[slot].itemID == MinechemItems.testTube.itemID) { + int stackAddition = getInventoryStackLimit() + - inventory[slot].stackSize; stackAddition = Math.min(amount, stackAddition); inventory[slot].stackSize += stackAddition; amount -= stackAddition; } - if(amount <= 0) + if (amount <= 0) break; } // Drop the test tubes. - if(amount > 0) { + if (amount > 0) { ItemStack tubes = new ItemStack(MinechemItems.testTube, amount); - MinechemHelper.ejectItemStackIntoWorld(tubes, worldObj, xCoord, yCoord, zCoord); + MinechemHelper.ejectItemStackIntoWorld(tubes, worldObj, xCoord, + yCoord, zCoord); } } - + private boolean canAffordRecipe(SynthesisRecipe recipe) { int energyCost = recipe.energyCost(); return powerProvider.getEnergyStored() >= energyCost; @@ -416,8 +428,9 @@ private boolean canAffordRecipe(SynthesisRecipe recipe) { private boolean getRecipeResult() { ItemStack[] recipeMatrixItems = getRecipeMatrixItems(); - SynthesisRecipe recipe = SynthesisRecipeHandler.instance.getRecipeFromInput(recipeMatrixItems); - if(recipe != null) { + SynthesisRecipe recipe = SynthesisRecipeHandler.instance + .getRecipeFromInput(recipeMatrixItems); + if (recipe != null) { inventory[kStartOutput] = recipe.getOutput().copy(); currentRecipe = recipe; return true; @@ -428,95 +441,11 @@ private boolean getRecipeResult() { } } - private ArrayList getStackFromAdjacentChest(int itemId, int itemDamage, int stackSize, ForgeDirection direction, - ArrayListallPointers) - { - Position position = new Position(xCoord, yCoord, zCoord, direction); - position.moveForwards(1.0); - TileEntity tileEntity = worldObj.getBlockTileEntity((int)position.x, (int)position.y, (int)position.z); - ArrayList itemStackPointers = new ArrayList(); - - if(tileEntity instanceof IInventory) { - IInventory inventory = MinechemHelper.getInventory((IInventory)tileEntity); - for(int slot = 0; slot < inventory.getSizeInventory(); slot++) { - ItemStack itemstack = inventory.getStackInSlot(slot); - if(itemstack != null && itemstack.itemID == itemId && itemstack.getItemDamage() == itemDamage - && !itemStackPointersHasSlot(allPointers, slot, inventory)) - { - int amount = Math.min(stackSize, itemstack.stackSize); - stackSize -= amount; - - ItemStackPointer itemStackPointer = new ItemStackPointer(); - itemStackPointer.inventory = inventory; - itemStackPointer.itemstack = itemstack; - itemStackPointer.slot = slot; - itemStackPointer.stackSize = amount; - itemStackPointers.add(itemStackPointer); - - if(stackSize <= 0) { - return itemStackPointers; - } - } - } - } - return null; - } - - private ArrayList getStackFromAdjacentChests(int itemId, int itemDamage, int stackSize, - ArrayListallPointers) - { - ArrayList itemStackPointers = null; - itemStackPointers = getStackFromAdjacentChest(itemId, itemDamage, stackSize, ForgeDirection.NORTH, allPointers); - if(itemStackPointers == null) - itemStackPointers = getStackFromAdjacentChest(itemId, itemDamage, stackSize, ForgeDirection.EAST, allPointers); - if(itemStackPointers == null) - itemStackPointers = getStackFromAdjacentChest(itemId, itemDamage, stackSize, ForgeDirection.SOUTH, allPointers); - if(itemStackPointers == null) - itemStackPointers = getStackFromAdjacentChest(itemId, itemDamage, stackSize, ForgeDirection.WEST, allPointers); - if(itemStackPointers == null) - itemStackPointers = getStackFromAdjacentChest(itemId, itemDamage, stackSize, ForgeDirection.UP, allPointers); - return itemStackPointers; - } - - private ArrayList getStacksFromAdjacentChests(ArrayList stacks) { - ArrayList allPointers = new ArrayList(); - for(ItemStack itemstack : stacks) { - ArrayList itemStackPointers = getStackFromAdjacentChests( - itemstack.itemID, - itemstack.getItemDamage(), - itemstack.stackSize, - allPointers - ); - if(itemStackPointers != null) { - allPointers.addAll(itemStackPointers); - } else { - return null; - } - } - return allPointers; - } - - private boolean hasItemsInRecipeMatrix() { - ItemStack[] recipeMatrixItems = getRecipeMatrixItems(); - for(ItemStack itemstack : recipeMatrixItems) { - if(itemstack != null) - return true; - } - return false; - } - - private boolean itemStackPointersHasSlot(ArrayList allPointers, int slot, IInventory inventory) { - for(ItemStackPointer itemstackPointer : allPointers) { - if(itemstackPointer.inventory == inventory && itemstackPointer.slot == slot) - return true; - } - return false; - } - private void onPutJournal(ItemStack itemstack) { ItemStack activeItem = MinechemItems.journal.getActiveStack(itemstack); - if(activeItem != null) { - SynthesisRecipe recipe = SynthesisRecipeHandler.instance.getRecipeFromOutput(activeItem); + if (activeItem != null) { + SynthesisRecipe recipe = SynthesisRecipeHandler.instance + .getRecipeFromOutput(activeItem); setRecipe(recipe); } } @@ -526,49 +455,29 @@ private void takeEnergy(SynthesisRecipe recipe) { powerProvider.useEnergy(energyCost, energyCost, true); } - private boolean takeStackFromStorage(ItemStack ingredient, ItemStack[] storage) { + private boolean takeStackFromStorage(ItemStack ingredient, + ItemStack[] storage) { int ingredientAmountLeft = ingredient.stackSize; - for(int slot = 0; slot < storage.length; slot++) { + for (int slot = 0; slot < storage.length; slot++) { ItemStack storageItem = storage[slot]; - if(storageItem != null && Util.stacksAreSameKind(storageItem, ingredient)) { - int amountToTake = Math.min(storageItem.stackSize, ingredientAmountLeft); - ingredientAmountLeft -= amountToTake; + if (storageItem != null + && Util.stacksAreSameKind(storageItem, ingredient)) { + int amountToTake = Math.min(storageItem.stackSize, + ingredientAmountLeft); + ingredientAmountLeft -= amountToTake; storageItem.stackSize -= amountToTake; - if(storageItem.stackSize <= 0) + if (storageItem.stackSize <= 0) storage[slot] = null; - if(ingredientAmountLeft <= 0) + if (ingredientAmountLeft <= 0) break; } } return ingredientAmountLeft == 0; } - - private int takeInputStacks(int times) { - int count = 0; - while(times > 0) { - if(!takeInputStacks()) - break; - else - count++; - } - return count; - } private boolean takeInputStacks() { - if(takeStacksFromStorage(false)) { - takeStacksFromStorage(true); - return true; - } - return false; - } - - private boolean takeStacksFromAdjacentChests(SynthesisRecipe recipe, boolean doTake) { - ArrayList ingredients = MinechemHelper.convertChemicalsIntoItemStacks(recipe.getShapelessRecipe()); - ArrayList itemStackPointers = getStacksFromAdjacentChests(ingredients); - if(itemStackPointers != null) { - for(ItemStackPointer pointer : itemStackPointers) { - pointer.inventory.decrStackSize(pointer.slot, pointer.stackSize); - } + if (takeStacksFromStorage(false)) { + takeStacksFromStorage(true); return true; } return false; @@ -577,33 +486,35 @@ private boolean takeStacksFromAdjacentChests(SynthesisRecipe recipe, boolean doT public List getMaximumOutput() { return getOutput(0, true); } - + public ItemStack getOutputTemplate() { ItemStack template = null; ItemStack outputStack = inventory[kStartOutput]; - if(outputStack != null) { + if (outputStack != null) { template = outputStack.copy(); - if(template.stackSize == 0) + if (template.stackSize == 0) template.stackSize = 1; } return template; } - + public List getOutput(int amount, boolean all) { - if(currentRecipe == null) + if (currentRecipe == null) return null; ItemStack template = getOutputTemplate(); - List outputs = new ArrayList(); + List outputs = new ArrayList(); ItemStack initialStack = template.copy(); initialStack.stackSize = 0; outputs.add(initialStack); - while(canTakeOutputStack() && (amount > 0 || all) && takeInputStacks()) { + while (canTakeOutputStack() && (amount > 0 || all) && takeInputStacks()) { takeEnergy(currentRecipe); - ItemStack output = outputs.get(outputs.size()-1); - if(output.stackSize + template.stackSize > output.getMaxStackSize()) { - int leftOverStackSize = template.stackSize - (output.getMaxStackSize() - output.stackSize); + ItemStack output = outputs.get(outputs.size() - 1); + if (output.stackSize + template.stackSize > output + .getMaxStackSize()) { + int leftOverStackSize = template.stackSize + - (output.getMaxStackSize() - output.stackSize); output.stackSize = output.getMaxStackSize(); - if(leftOverStackSize > 0) { + if (leftOverStackSize > 0) { ItemStack newOutput = template.copy(); newOutput.stackSize = leftOverStackSize; outputs.add(newOutput); @@ -619,9 +530,11 @@ public List getOutput(int amount, boolean all) { public void setRecipe(SynthesisRecipe recipe) { clearRecipeMatrix(); - if(recipe != null) { - ItemStack[] ingredients = MinechemHelper.convertChemicalArrayIntoItemStackArray(recipe.getShapedRecipe()); - for(int i = 0; i < Math.min(kSizeRecipe, ingredients.length); i++) { + if (recipe != null) { + ItemStack[] ingredients = MinechemHelper + .convertChemicalArrayIntoItemStackArray(recipe + .getShapedRecipe()); + for (int i = 0; i < Math.min(kSizeRecipe, ingredients.length); i++) { inventory[kStartRecipe + i] = ingredients[i]; } onInventoryChanged(); @@ -634,7 +547,7 @@ public ItemStack takeEmptyTestTube() { } @Override - public ItemStack putEmptyTestTube(ItemStack testTube) { + public int putEmptyTestTube(ItemStack testTube) { return testTubeTransactor.add(testTube, true); } @@ -644,7 +557,7 @@ public ItemStack takeOutput() { } @Override - public ItemStack putOutput(ItemStack output) { + public int putOutput(ItemStack output) { return outputTransactor.add(output, true); } @@ -654,7 +567,7 @@ public ItemStack takeInput() { } @Override - public ItemStack putInput(ItemStack input) { + public int putInput(ItemStack input) { return storageTransactor.add(input, true); } @@ -664,8 +577,8 @@ public ItemStack takeFusionStar() { } @Override - public ItemStack putFusionStar(ItemStack fusionStar) { - return null; + public int putFusionStar(ItemStack fusionStar) { + return 0; } @Override @@ -674,17 +587,17 @@ public ItemStack takeJournal() { } @Override - public ItemStack putJournal(ItemStack journal) { + public int putJournal(ItemStack journal) { return journalTransactor.add(journal, true); } @Override public String getMachineState() { - if(currentRecipe == null) { + if (currentRecipe == null) { return "norecipe"; } else { int energyCost = currentRecipe.energyCost(); - if(this.powerProvider.getEnergyStored() >= energyCost) + if (this.powerProvider.getEnergyStored() >= energyCost) return "powered"; else return "unpowered"; diff --git a/ljdp/minechem/common/tileentity/TileEntityVat.java b/ljdp/minechem/common/tileentity/TileEntityVat.java index 8be3637..943f9c9 100644 --- a/ljdp/minechem/common/tileentity/TileEntityVat.java +++ b/ljdp/minechem/common/tileentity/TileEntityVat.java @@ -10,8 +10,6 @@ import ljdp.minechem.common.inventory.Transactor; import ljdp.minechem.common.utils.MinechemHelper; import ljdp.minechem.computercraft.IMinechemMachinePeripheral; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -21,44 +19,49 @@ public class TileEntityVat extends MinechemTileEntity implements ISpecialInventory, ISidedInventory, IMinechemMachinePeripheral { - + public static final int MAX_CHEMICAL_AMOUNT = 64 * 256; - public static final int kStartInput = 0; - public static final int kStartTestTubeIn = 1; - public static final int kStartTestTubeOut = 2; - public static final int kStartOutput = 3; - + public static final int kStartInput = 0; + public static final int kStartTestTubeIn = 1; + public static final int kStartTestTubeOut = 2; + public static final int kStartOutput = 3; + public Chemical chemical; public int amountOfChemical = 0; public int amountOfTestTube = 0; private int maxChemicalAmount = MAX_CHEMICAL_AMOUNT; public boolean isSpoiled = false; - - private final BoundedInventory inputInventory = new BoundedInventory(this, kStartInput, kStartInput + 1); - private final BoundedInventory tubeInInventory = new BoundedInventory(this, kStartTestTubeIn, kStartTestTubeIn + 1); - private final BoundedInventory tubeOutInventory = new BoundedInventory(this, kStartTestTubeOut, kStartTestTubeOut + 1); - private final BoundedInventory outputInventory = new BoundedInventory(this, kStartOutput, kStartOutput + 1); + + private final BoundedInventory inputInventory = new BoundedInventory(this, + kStartInput, kStartInput + 1); + private final BoundedInventory tubeInInventory = new BoundedInventory(this, + kStartTestTubeIn, kStartTestTubeIn + 1); + private final BoundedInventory tubeOutInventory = new BoundedInventory( + this, kStartTestTubeOut, kStartTestTubeOut + 1); + private final BoundedInventory outputInventory = new BoundedInventory(this, + kStartOutput, kStartOutput + 1); private Transactor outputTransactor = new Transactor(outputInventory); - private Transactor inputTransactor = new Transactor(inputInventory); + private Transactor inputTransactor = new Transactor(inputInventory); + private Transactor tubeInTransactor = new Transactor(tubeInInventory); private Transactor tubeOutTransactor = new Transactor(tubeOutInventory); private boolean workNeeded = false; - + public TileEntityVat() { this.inventory = new ItemStack[getSizeInventory()]; } - + @Override public void updateEntity() { super.updateEntity(); - //if(workNeeded) { - boolean did1 = moveInputToStorage(); - boolean did2 = moveStorageToTestTubeIn(); - boolean did3 = moveStorageToOutput(); - if(!did1 && !did2 && !did3) - workNeeded = false; - //} + // if(workNeeded) { + boolean did1 = moveInputToStorage(); + boolean did2 = moveStorageToTestTubeIn(); + boolean did3 = moveStorageToOutput(); + if (!did1 && !did2 && !did3) + workNeeded = false; + // } } - + @Override public void onInventoryChanged() { super.onInventoryChanged(); @@ -77,7 +80,7 @@ public String getInvName() { @Override public int getStartInventorySide(ForgeDirection side) { - if(side == side.UP) { + if (side == ForgeDirection.UP) { return kStartInput; } else { return kStartOutput; @@ -91,19 +94,17 @@ public int getSizeInventorySide(ForgeDirection side) { @Override public int addItem(ItemStack stack, boolean doAdd, ForgeDirection from) { - int stackSize = stack.stackSize; - ItemStack remainingStack = inputTransactor.add(stack, doAdd); - int remainingStackSize = remainingStack == null ? 0 : remainingStack.stackSize; - return stackSize - remainingStackSize; + return inputTransactor.add(stack, doAdd); } @Override - public ItemStack[] extractItem(boolean doRemove, ForgeDirection from, int maxItemCount) { - if(doRemove) { - List outputs = new ArrayList(); - for(int i = 0; i < maxItemCount; i++) { + public ItemStack[] extractItem(boolean doRemove, ForgeDirection from, + int maxItemCount) { + if (doRemove) { + List outputs = new ArrayList(); + for (int i = 0; i < maxItemCount; i++) { ItemStack output = takeOutput(); - if(output != null) + if (output != null) outputs.add(output); else break; @@ -112,7 +113,7 @@ public ItemStack[] extractItem(boolean doRemove, ForgeDirection from, int maxIte } else { return outputTransactor.remove(maxItemCount, false); } - + } @Override @@ -122,7 +123,7 @@ void sendUpdatePacket() { @Override public ItemStack takeEmptyTestTube() { - if(amountOfTestTube > 0) { + if (amountOfTestTube > 0) { amountOfTestTube--; return new ItemStack(MinechemItems.testTube, 1); } @@ -130,28 +131,27 @@ public ItemStack takeEmptyTestTube() { } @Override - public ItemStack putEmptyTestTube(ItemStack testTube) { - if(amountOfTestTube < maxChemicalAmount) { - int amountToAdd = Math.min(maxChemicalAmount - amountOfTestTube, testTube.stackSize); + public int putEmptyTestTube(ItemStack testTube) { + if (amountOfTestTube < maxChemicalAmount) { + int amountToAdd = Math.min(maxChemicalAmount - amountOfTestTube, + testTube.stackSize); amountOfTestTube++; testTube.stackSize -= amountToAdd; - if(testTube.stackSize == 0) - return null; - else - return testTube; } - return testTube; + return testTube.stackSize; } - + private boolean moveInputToStorage() { ItemStack inputStack = decrStackSize(kStartInput, 1); - if(inputStack == null || !Util.isStackAChemical(inputStack)) + if (inputStack == null || !Util.isStackAChemical(inputStack)) return false; - if(amountOfChemical < maxChemicalAmount && amountOfTestTube < maxChemicalAmount) { - Chemical inputChemical = MinechemHelper.itemStackToChemical(inputStack); - if(chemical == null) + if (amountOfChemical < maxChemicalAmount + && amountOfTestTube < maxChemicalAmount) { + Chemical inputChemical = MinechemHelper + .itemStackToChemical(inputStack); + if (chemical == null) chemical = inputChemical; - else if(!chemical.sameAs(inputChemical)) + else if (!chemical.sameAs(inputChemical)) isSpoiled = true; amountOfChemical++; amountOfTestTube++; @@ -159,29 +159,32 @@ else if(!chemical.sameAs(inputChemical)) } return false; } - + private boolean moveStorageToTestTubeIn() { - if(amountOfTestTube == 0) + if (amountOfTestTube == 0) return false; ItemStack testTube = getStackInSlot(kStartTestTubeIn); - if(testTube == null) { - setInventorySlotContents(kStartTestTubeIn, new ItemStack(MinechemItems.testTube)); + if (testTube == null) { + setInventorySlotContents(kStartTestTubeIn, new ItemStack( + MinechemItems.testTube)); amountOfTestTube--; return true; - } else if(testTube.stackSize < 64) { + } else if (testTube.stackSize < 64) { testTube.stackSize++; amountOfTestTube--; return true; } return false; } - + private boolean moveStorageToOutput() { ItemStack testTube = tubeOutTransactor.removeItem(true); - if(testTube != null && chemical != null && amountOfChemical > 0 && amountOfTestTube > 0 && !isSpoiled) { - ItemStack outputStack = MinechemHelper.chemicalToItemStack(chemical, 1); - ItemStack remainingStack = putOutput(outputStack); - if(remainingStack == null) { + if (testTube != null && chemical != null && amountOfChemical > 0 + && amountOfTestTube > 0 && !isSpoiled) { + ItemStack outputStack = MinechemHelper.chemicalToItemStack( + chemical, 1); + int added = putOutput(outputStack); + if (added == outputStack.stackSize) { amountOfChemical--; return true; } else { @@ -194,14 +197,15 @@ private boolean moveStorageToOutput() { @Override public ItemStack takeOutput() { ItemStack outputStack = getStackInSlot(kStartOutput); - if(outputStack != null || (outputStack == null && moveStorageToOutput())) { + if (outputStack != null + || (outputStack == null && moveStorageToOutput())) { return decrStackSize(kStartOutput, 1); } return null; } @Override - public ItemStack putOutput(ItemStack output) { + public int putOutput(ItemStack output) { return outputTransactor.add(output, true); } @@ -211,26 +215,18 @@ public ItemStack takeInput() { } @Override - public ItemStack putInput(ItemStack input) { + public int putInput(ItemStack input) { return inputTransactor.add(input, true); } - private int getChemicalSpaceAvailable() { - return this.maxChemicalAmount - this.amountOfChemical; - } - - private int getTestTubeSpaceAvailable() { - return this.maxChemicalAmount - this.amountOfTestTube; - } - @Override public ItemStack takeFusionStar() { return null; } @Override - public ItemStack putFusionStar(ItemStack fusionStar) { - return null; + public int putFusionStar(ItemStack fusionStar) { + return 0; } @Override @@ -239,32 +235,33 @@ public ItemStack takeJournal() { } @Override - public ItemStack putJournal(ItemStack journal) { - return null; + public int putJournal(ItemStack journal) { + return 0; } @Override public String getMachineState() { return null; } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setInteger("amountOfChemical", amountOfChemical); nbt.setInteger("amountOfTestTube", amountOfTestTube); - NBTTagList inventoryTagList = MinechemHelper.writeItemStackArrayToTagList(inventory); + NBTTagList inventoryTagList = MinechemHelper + .writeItemStackArrayToTagList(inventory); nbt.setTag("inventory", inventoryTagList); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.amountOfChemical = nbt.getInteger("amountOfChemical"); this.amountOfTestTube = nbt.getInteger("amountOfTestTube"); NBTTagList inventoryTagList = nbt.getTagList("inventory"); - this.inventory = MinechemHelper.readTagListToItemStackArray(inventoryTagList, - new ItemStack[getSizeInventory()]); + this.inventory = MinechemHelper.readTagListToItemStackArray( + inventoryTagList, new ItemStack[getSizeInventory()]); } } diff --git a/ljdp/minechem/common/utils/MinechemHelper.java b/ljdp/minechem/common/utils/MinechemHelper.java index 974f51e..856ec39 100644 --- a/ljdp/minechem/common/utils/MinechemHelper.java +++ b/ljdp/minechem/common/utils/MinechemHelper.java @@ -6,12 +6,12 @@ import ljdp.minechem.api.core.Chemical; import ljdp.minechem.api.core.Element; -import ljdp.minechem.api.core.EnumElement; import ljdp.minechem.api.core.EnumMolecule; import ljdp.minechem.api.core.Molecule; import ljdp.minechem.api.util.Constants; import ljdp.minechem.api.util.Util; import ljdp.minechem.common.MinechemItems; +import ljdp.minechem.common.items.ItemElement; import buildcraft.api.core.Position; @@ -106,7 +106,7 @@ public static ArrayList readTagListToItemStackList(NBTTagList taglist } public static ArrayList convertChemicalsIntoItemStacks(ArrayList chemicals) { - ArrayList stacks = new ArrayList(); + ArrayList stacks = new ArrayList(); if(chemicals == null) return stacks; for(Chemical chemical : chemicals) { @@ -172,7 +172,7 @@ public static void ejectItemStackIntoWorld(ItemStack itemstack, World world, int if(randomN > itemstack.stackSize) randomN = itemstack.stackSize; itemstack.stackSize -= randomN; - EntityItem droppedEntity = new EntityItem(world, + new EntityItem(world, (double)((float)x + randomX), (double)((float)y + randomY), (double)((float)z + randomZ), @@ -311,7 +311,7 @@ public static void triggerPlayerEffect(EnumMolecule molecule, EntityPlayer entit } public static void cureAllPotions(World world, EntityPlayer entityPlayer) { - List activePotions = new ArrayList(entityPlayer.getActivePotionEffects()); + List activePotions = new ArrayList(entityPlayer.getActivePotionEffects()); for(PotionEffect potionEffect : activePotions) { entityPlayer.removePotionEffect(potionEffect.getPotionID()); } @@ -379,7 +379,7 @@ else if(chemical instanceof Molecule) } public static Chemical itemStackToChemical(ItemStack itemstack) { if(Util.isStackAnElement(itemstack)) { - return new Element(MinechemItems.element.getElement(itemstack), itemstack.stackSize); + return new Element(ItemElement.getElement(itemstack), itemstack.stackSize); } else if(Util.isStackAMolecule(itemstack)) { return new Molecule(MinechemItems.molecule.getMolecule(itemstack), itemstack.stackSize); } diff --git a/ljdp/minechem/computercraft/IMinechemMachinePeripheral.java b/ljdp/minechem/computercraft/IMinechemMachinePeripheral.java index edd9490..7cc1987 100644 --- a/ljdp/minechem/computercraft/IMinechemMachinePeripheral.java +++ b/ljdp/minechem/computercraft/IMinechemMachinePeripheral.java @@ -3,27 +3,87 @@ import net.minecraft.item.ItemStack; public interface IMinechemMachinePeripheral { - + + /** + * Turtle is got ItemStack from Machine's TestTube Inventory + * + * @return ItemStack to send to Turtle + */ public ItemStack takeEmptyTestTube(); - - public ItemStack putEmptyTestTube(ItemStack testTube); - + + /** + * Turtle is put ItemStack to Machine's TestTube Inventory + * + * @param output + * ItemStack send from Turtle + * @return Amount of items used from the passed stack. + */ + public int putEmptyTestTube(ItemStack testTube); + + /** + * Turtle is got ItemStack from Machine's Output Inventory + * + * @return ItemStack to send to Turtle + */ public ItemStack takeOutput(); - - public ItemStack putOutput(ItemStack output); - + + /** + * Turtle is put ItemStack to Machine's Output Inventory + * + * @param output + * ItemStack send from Turtle + * @return Amount of items used from the passed stack. + */ + public int putOutput(ItemStack output); + + /** + * Turtle is got ItemStack from Machine's Input Inventory + * + * @return ItemStack to send to Turtle + */ public ItemStack takeInput(); - - public ItemStack putInput(ItemStack input); - + + /** + * Turtle is put ItemStack to Machine's Input Inventory + * + * @param output + * ItemStack send from Turtle + * @return Amount of items used from the passed stack. + */ + public int putInput(ItemStack input); + + /** + * Turtle is got ItemStack from Machine's FusionStar Inventory + * + * @return ItemStack to send to Turtle + */ public ItemStack takeFusionStar(); - - public ItemStack putFusionStar(ItemStack fusionStar); - + + /** + * Turtle is put ItemStack to Machine's FusionStar Inventory + * + * @param output + * ItemStack send from Turtle + * @return Amount of items used from the passed stack. + */ + public int putFusionStar(ItemStack fusionStar); + + /** + * Turtle is got ItemStack from Machine's Journal Inventory + * + * @return ItemStack to send to Turtle + */ public ItemStack takeJournal(); - - public ItemStack putJournal(ItemStack journal); - + + /** + * Turtle is put ItemStack to Machine's Journal Inventory + * + * @param output + * ItemStack send from Turtle + * @return Amount of items used from the passed stack. + */ + public int putJournal(ItemStack journal); + public String getMachineState(); - + } \ No newline at end of file diff --git a/ljdp/minechem/computercraft/method/InteractMachine.java b/ljdp/minechem/computercraft/method/InteractMachine.java index 9d91a10..f6c1497 100644 --- a/ljdp/minechem/computercraft/method/InteractMachine.java +++ b/ljdp/minechem/computercraft/method/InteractMachine.java @@ -1,6 +1,5 @@ package ljdp.minechem.computercraft.method; -import ljdp.minechem.common.tileentity.TileEntitySynthesis; import ljdp.minechem.computercraft.IMinechemMachinePeripheral; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -25,14 +24,14 @@ public IMinechemMachinePeripheral getMachineInFront(ITurtleAccess turtle) { return null; } - public boolean tryPut(ItemStack beforeStack, ItemStack afterStack, ITurtleAccess turtle) { + public boolean tryPut(ItemStack beforeStack, int used, ITurtleAccess turtle) { int selectedSlot = turtle.getSelectedSlot(); - beforeStack.stackSize -= afterStack.stackSize; + beforeStack.stackSize -= used; if(beforeStack.stackSize <= 0) turtle.setSlotContents(selectedSlot, null); else turtle.setSlotContents(selectedSlot, beforeStack); - if(afterStack.stackSize > 0) + if(used > 0) return true; else return false; diff --git a/ljdp/minechem/computercraft/method/PutEmptyTestTube.java b/ljdp/minechem/computercraft/method/PutEmptyTestTube.java index 15ad55a..f023394 100644 --- a/ljdp/minechem/computercraft/method/PutEmptyTestTube.java +++ b/ljdp/minechem/computercraft/method/PutEmptyTestTube.java @@ -15,17 +15,19 @@ public String getMethodName() { } @Override - public Object[] call(IComputerAccess computer, ITurtleAccess turtle, Object[] arguments) throws Exception { + public Object[] call(IComputerAccess computer, ITurtleAccess turtle, + Object[] arguments) throws Exception { boolean didPut = false; IMinechemMachinePeripheral machine = getMachineInFront(turtle); int selectedSlot = turtle.getSelectedSlot(); ItemStack selectedStack = turtle.getSlotContents(selectedSlot); - if(machine != null && selectedStack != null && Util.isStackAnEmptyTestTube(selectedStack)) { - ItemStack before = selectedStack.copy(); - ItemStack after = machine.putEmptyTestTube(selectedStack); - didPut = tryPut(before, after, turtle); + if (machine != null && selectedStack != null + && Util.isStackAnEmptyTestTube(selectedStack)) { + ItemStack before = selectedStack.copy(); + int used = machine.putEmptyTestTube(selectedStack); + didPut = tryPut(before, used, turtle); } - return new Object[]{ didPut }; + return new Object[] { didPut }; } } diff --git a/ljdp/minechem/computercraft/method/PutFusionStar.java b/ljdp/minechem/computercraft/method/PutFusionStar.java index cd352e3..d003ccb 100644 --- a/ljdp/minechem/computercraft/method/PutFusionStar.java +++ b/ljdp/minechem/computercraft/method/PutFusionStar.java @@ -16,20 +16,20 @@ public String getMethodName() { } @Override - public Object[] call(IComputerAccess computer, ITurtleAccess turtle, Object[] arguments) throws Exception - { + public Object[] call(IComputerAccess computer, ITurtleAccess turtle, + Object[] arguments) throws Exception { IMinechemMachinePeripheral machine = getMachineInFront(turtle); - ItemStack selectedStack = turtle.getSlotContents(turtle.getSelectedSlot()); + ItemStack selectedStack = turtle.getSlotContents(turtle + .getSelectedSlot()); boolean didPut = false; - if(machine != null && selectedStack != null - && (selectedStack.itemID == Item.netherStar.itemID - || selectedStack.itemID == MinechemItems.fusionStar.itemID)) - { + if (machine != null + && selectedStack != null + && (selectedStack.itemID == Item.netherStar.itemID || selectedStack.itemID == MinechemItems.fusionStar.itemID)) { ItemStack before = selectedStack.copy(); - ItemStack after = machine.putFusionStar(selectedStack); - didPut = tryPut(before, after, turtle); + int used = machine.putFusionStar(selectedStack); + didPut = tryPut(before, used, turtle); } - return new Object[]{ didPut }; + return new Object[] { didPut }; } } diff --git a/ljdp/minechem/computercraft/method/PutInput.java b/ljdp/minechem/computercraft/method/PutInput.java index cf767e4..0158095 100644 --- a/ljdp/minechem/computercraft/method/PutInput.java +++ b/ljdp/minechem/computercraft/method/PutInput.java @@ -21,8 +21,8 @@ public Object[] call(IComputerAccess computer, ITurtleAccess turtle, Object[] ar boolean didPut = false; if(machine != null && selectedStack != null) { ItemStack before = selectedStack.copy(); - ItemStack after = machine.putInput(selectedStack); - didPut = tryPut(before, after, turtle); + int used = machine.putInput(selectedStack); + didPut = tryPut(before, used, turtle); } return new Object[]{ didPut }; } diff --git a/ljdp/minechem/computercraft/method/PutJournal.java b/ljdp/minechem/computercraft/method/PutJournal.java index 9cbb841..77d24ec 100644 --- a/ljdp/minechem/computercraft/method/PutJournal.java +++ b/ljdp/minechem/computercraft/method/PutJournal.java @@ -23,8 +23,8 @@ public Object[] call(IComputerAccess computer, ITurtleAccess turtle, boolean didPut = false; if(machine != null && selectedStack != null && selectedStack.itemID == MinechemItems.journal.itemID) { ItemStack before = selectedStack.copy(); - ItemStack after = machine.putJournal(selectedStack); - didPut = tryPut(before, after, turtle); + int used = machine.putJournal(selectedStack); + didPut = tryPut(before, used, turtle); } return new Object[]{ didPut }; } diff --git a/ljdp/minechem/computercraft/method/StoreSynthesisRecipe.java b/ljdp/minechem/computercraft/method/StoreSynthesisRecipe.java index 95f4a90..bbec696 100644 --- a/ljdp/minechem/computercraft/method/StoreSynthesisRecipe.java +++ b/ljdp/minechem/computercraft/method/StoreSynthesisRecipe.java @@ -3,10 +3,8 @@ import net.minecraft.item.ItemStack; import dan200.computer.api.IComputerAccess; import dan200.turtle.api.ITurtleAccess; -import dan200.turtle.api.TurtleSide; import ljdp.minechem.api.recipe.SynthesisRecipe; import ljdp.minechem.common.recipe.SynthesisRecipeHandler; -import ljdp.minechem.computercraft.CCMain; import ljdp.minechem.computercraft.ChemistryTurtleUpgradePeripherial; import ljdp.minechem.computercraft.ICCMethod; import ljdp.minechem.computercraft.IMinechemTurtlePeripheral; diff --git a/ljdp/minechem/computercraft/method/TakeEmptyTestTube.java b/ljdp/minechem/computercraft/method/TakeEmptyTestTube.java index a116848..d16a194 100644 --- a/ljdp/minechem/computercraft/method/TakeEmptyTestTube.java +++ b/ljdp/minechem/computercraft/method/TakeEmptyTestTube.java @@ -14,25 +14,20 @@ public String getMethodName() { } @Override - public Object[] call(IComputerAccess computer, ITurtleAccess turtle, Object[] arguments) throws Exception - { - return take(turtle); - } - - private Object[] take(ITurtleAccess turtle) { + public Object[] call(IComputerAccess computer, ITurtleAccess turtle, + Object[] arguments) throws Exception { IMinechemMachinePeripheral machine = getMachineInFront(turtle); boolean didTake = false; - if(machine != null) { + if (machine != null) { ItemStack takenStack = machine.takeEmptyTestTube(); - if(takenStack != null) { - if(!turtle.storeItemStack(takenStack)) { - machine.putEmptyTestTube(takenStack); - } else { + if (takenStack != null) { + if (turtle.storeItemStack(takenStack)) { didTake = true; + } else { + machine.putEmptyTestTube(takenStack); } } } - return new Object[]{ didTake }; + return new Object[] { didTake }; } - } diff --git a/ljdp/minechem/computercraft/method/TakeFusionStar.java b/ljdp/minechem/computercraft/method/TakeFusionStar.java index 734650d..6ac3aa9 100644 --- a/ljdp/minechem/computercraft/method/TakeFusionStar.java +++ b/ljdp/minechem/computercraft/method/TakeFusionStar.java @@ -14,21 +14,21 @@ public String getMethodName() { } @Override - public Object[] call(IComputerAccess computer, ITurtleAccess turtle, Object[] arguments) throws Exception - { + public Object[] call(IComputerAccess computer, ITurtleAccess turtle, + Object[] arguments) throws Exception { IMinechemMachinePeripheral machine = getMachineInFront(turtle); boolean didTake = false; - if(machine != null) { + if (machine != null) { ItemStack takenStack = machine.takeFusionStar(); - if(takenStack != null) { - if(turtle.storeItemStack(takenStack)) { + if (takenStack != null) { + if (turtle.storeItemStack(takenStack)) { didTake = true; } else { machine.putFusionStar(takenStack); } } } - return new Object[]{ didTake }; + return new Object[] { didTake }; } } diff --git a/ljdp/minechem/computercraft/method/TakeJournal.java b/ljdp/minechem/computercraft/method/TakeJournal.java index b0e0bd3..6a8dfeb 100644 --- a/ljdp/minechem/computercraft/method/TakeJournal.java +++ b/ljdp/minechem/computercraft/method/TakeJournal.java @@ -15,19 +15,20 @@ public String getMethodName() { @Override public Object[] call(IComputerAccess computer, ITurtleAccess turtle, - Object[] arguments) throws Exception - { + Object[] arguments) throws Exception { IMinechemMachinePeripheral machine = getMachineInFront(turtle); - ItemStack takenStack = machine.takeJournal(); boolean didTake = false; - if(takenStack != null){ - if(turtle.storeItemStack(takenStack)) { - didTake = true; - } else { - machine.putJournal(takenStack); + if (machine != null) { + ItemStack takenStack = machine.takeJournal(); + if (takenStack != null) { + if (turtle.storeItemStack(takenStack)) { + didTake = true; + } else { + machine.putJournal(takenStack); + } } } - return new Object[]{ didTake }; + return new Object[] { didTake }; } } diff --git a/ljdp/minechem/computercraft/method/TakeOuput.java b/ljdp/minechem/computercraft/method/TakeOuput.java index 5fc3a80..b8aa8b3 100644 --- a/ljdp/minechem/computercraft/method/TakeOuput.java +++ b/ljdp/minechem/computercraft/method/TakeOuput.java @@ -15,21 +15,20 @@ public String getMethodName() { @Override public Object[] call(IComputerAccess computer, ITurtleAccess turtle, - Object[] arguments) throws Exception - { + Object[] arguments) throws Exception { IMinechemMachinePeripheral machine = getMachineInFront(turtle); boolean didTake = false; - if(machine != null) { + if (machine != null) { ItemStack takenStack = machine.takeOutput(); - if(takenStack != null) { - if(turtle.storeItemStack(takenStack)) { + if (takenStack != null) { + if (turtle.storeItemStack(takenStack)) { didTake = true; } else { machine.putOutput(takenStack); } } } - return new Object[]{ didTake }; + return new Object[] { didTake }; } }