-
Notifications
You must be signed in to change notification settings - Fork 256
Expand file tree
/
Copy pathCondenserMK2Tile.java
More file actions
89 lines (78 loc) · 2.25 KB
/
Copy pathCondenserMK2Tile.java
File metadata and controls
89 lines (78 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package moze_intel.projecte.gameObjs.tiles;
import moze_intel.projecte.gameObjs.container.slots.SlotPredicates;
import moze_intel.projecte.utils.EMCHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nonnull;
public class CondenserMK2Tile extends CondenserTile
{
protected IItemHandler createAutomationInventory()
{
IItemHandlerModifiable automationInput = new WrappedItemHandler(getInput(), WrappedItemHandler.WriteMode.IN)
{
@Override
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate)
{
return SlotPredicates.HAS_EMC.test(stack) && !isStackEqualToLock(stack)
? super.insertItem(slot, stack, simulate)
: stack;
}
};
IItemHandlerModifiable automationOutput = new WrappedItemHandler(getOutput(), WrappedItemHandler.WriteMode.OUT);
return new CombinedInvWrapper(automationInput, automationOutput);
}
@Override
protected ItemStackHandler createInput()
{
return new StackHandler(42);
}
@Override
protected ItemStackHandler createOutput()
{
return new StackHandler(42);
}
@Override
protected void condense()
{
while (this.hasSpace() && this.getStoredEmc() >= requiredEmc)
{
pushStack();
this.removeEMC(requiredEmc);
}
if (this.hasSpace())
{
for (int i = 0; i < getInput().getSlots(); i++)
{
ItemStack stack = getInput().getStackInSlot(i);
if (stack.isEmpty())
{
continue;
}
this.addEMC(EMCHelper.getEmcSellValue(stack, true) * stack.getCount());
getInput().setStackInSlot(i, ItemStack.EMPTY);
break;
}
}
}
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
getOutput().deserializeNBT(nbt.getCompoundTag("Output"));
}
@Nonnull
@Override
public NBTTagCompound writeToNBT(NBTTagCompound nbt)
{
nbt = super.writeToNBT(nbt);
nbt.setTag("Output", getOutput().serializeNBT());
return nbt;
}
}