It seams like it works :), still needs some testing.
This commit is contained in:
parent
822879a6b6
commit
7e9031352a
1 changed files with 26 additions and 4 deletions
|
@ -1,7 +1,6 @@
|
||||||
package techreborn.tiles;
|
package techreborn.tiles;
|
||||||
|
|
||||||
import ic2.api.energy.prefab.BasicSink;
|
import ic2.api.energy.prefab.BasicSink;
|
||||||
import ic2.api.item.IC2Items;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -40,7 +39,7 @@ public class TileCentrifuge extends TileMachineBase implements IInventory {
|
||||||
if(isRunning){
|
if(isRunning){
|
||||||
if(ItemUtils.isItemEqual(currentRecipe.getInputItem(), getStackInSlot(0), true, true)){
|
if(ItemUtils.isItemEqual(currentRecipe.getInputItem(), getStackInSlot(0), true, true)){
|
||||||
if(!hasTakenCells){
|
if(!hasTakenCells){
|
||||||
if(getStackInSlot(1) != null && ItemUtils.isItemEqual(getStackInSlot(1), IC2Items.getItem("resin"), true, true)){
|
if(getStackInSlot(1) != null && getStackInSlot(1) != null && getStackInSlot(1).getUnlocalizedName().equals("ic2.itemFluidCell")){
|
||||||
if(getStackInSlot(1).stackSize >= currentRecipe.getCells()){
|
if(getStackInSlot(1).stackSize >= currentRecipe.getCells()){
|
||||||
decrStackSize(1, currentRecipe.getCells());
|
decrStackSize(1, currentRecipe.getCells());
|
||||||
hasTakenCells = true;
|
hasTakenCells = true;
|
||||||
|
@ -49,6 +48,9 @@ public class TileCentrifuge extends TileMachineBase implements IInventory {
|
||||||
}
|
}
|
||||||
if(hasTakenCells && hasTakenItem){
|
if(hasTakenCells && hasTakenItem){
|
||||||
if(tickTime == currentRecipe.getTickTime()) {
|
if(tickTime == currentRecipe.getTickTime()) {
|
||||||
|
if(areAnyOutputsFull()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(areOutputsEmpty()){
|
if(areOutputsEmpty()){
|
||||||
setOutput(1, currentRecipe.getOutput1());
|
setOutput(1, currentRecipe.getOutput1());
|
||||||
setOutput(2, currentRecipe.getOutput2());
|
setOutput(2, currentRecipe.getOutput2());
|
||||||
|
@ -91,7 +93,7 @@ public class TileCentrifuge extends TileMachineBase implements IInventory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!isRunning && currentRecipe != null){
|
if(!isRunning && currentRecipe != null){
|
||||||
if(areOutputsEqual() || areOutputsEmpty()){
|
if(areOutputsEqual() || areOutputsEmpty() && !areAnyOutputsFull()){
|
||||||
if(getStackInSlot(0) != null && currentRecipe.getInputItem().stackSize <= getStackInSlot(0).stackSize){
|
if(getStackInSlot(0) != null && currentRecipe.getInputItem().stackSize <= getStackInSlot(0).stackSize){
|
||||||
if(energy.canUseEnergy(euTick)){
|
if(energy.canUseEnergy(euTick)){
|
||||||
decrStackSize(0, currentRecipe.getInputItem().stackSize);
|
decrStackSize(0, currentRecipe.getInputItem().stackSize);
|
||||||
|
@ -127,6 +129,22 @@ public class TileCentrifuge extends TileMachineBase implements IInventory {
|
||||||
return getOutputItemStack(1) == null && getOutputItemStack(2) == null && getOutputItemStack(3) == null && getOutputItemStack(4) == null;
|
return getOutputItemStack(1) == null && getOutputItemStack(2) == null && getOutputItemStack(3) == null && getOutputItemStack(4) == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean areAnyOutputsFull(){
|
||||||
|
if(currentRecipe.getOutput1() != null && getOutputItemStack(1) != null && getOutputItemStack(1).stackSize + currentRecipe.getOutput1().stackSize > currentRecipe.getOutput1().getMaxStackSize()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(currentRecipe.getOutput2() != null && getOutputItemStack(2) != null && getOutputItemStack(2).stackSize + currentRecipe.getOutput2().stackSize > currentRecipe.getOutput1().getMaxStackSize()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(currentRecipe.getOutput3() != null && getOutputItemStack(3) != null && getOutputItemStack(3).stackSize + currentRecipe.getOutput3().stackSize > currentRecipe.getOutput1().getMaxStackSize()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(currentRecipe.getOutput4() != null && getOutputItemStack(4) != null && getOutputItemStack(4).stackSize + currentRecipe.getOutput4().stackSize > currentRecipe.getOutput1().getMaxStackSize()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public ItemStack getOutputItemStack(int slot){
|
public ItemStack getOutputItemStack(int slot){
|
||||||
return getStackInSlot(slot + 1);
|
return getStackInSlot(slot + 1);
|
||||||
}
|
}
|
||||||
|
@ -162,7 +180,11 @@ public class TileCentrifuge extends TileMachineBase implements IInventory {
|
||||||
public void writeToNBT(NBTTagCompound tagCompound) {
|
public void writeToNBT(NBTTagCompound tagCompound) {
|
||||||
super.writeToNBT(tagCompound);
|
super.writeToNBT(tagCompound);
|
||||||
inventory.writeToNBT(tagCompound);
|
inventory.writeToNBT(tagCompound);
|
||||||
tagCompound.setString("recipe", currentRecipe.getInputItem().getUnlocalizedName());
|
if(currentRecipe != null){
|
||||||
|
tagCompound.setString("recipe", currentRecipe.getInputItem().getUnlocalizedName());
|
||||||
|
} else {
|
||||||
|
tagCompound.setString("recipe", "none");
|
||||||
|
}
|
||||||
tagCompound.setBoolean("isRunning", isRunning);
|
tagCompound.setBoolean("isRunning", isRunning);
|
||||||
tagCompound.setInteger("tickTime", tickTime);
|
tagCompound.setInteger("tickTime", tickTime);
|
||||||
tagCompound.setBoolean("hasTakenCells", hasTakenCells);
|
tagCompound.setBoolean("hasTakenCells", hasTakenCells);
|
||||||
|
|
Loading…
Add table
Reference in a new issue