use of binnie.core.machines.MachineUtil in project Binnie by ForestryMC.
the class PackageSplicer method createMachine.
@Override
public void createMachine(final Machine machine) {
new ComponentGeneticGUI(machine, GeneticsGUI.SPLICER);
final ComponentInventorySlots inventory = new ComponentInventorySlots(machine);
InventorySlot slotSerumVial = inventory.addSlot(Splicer.SLOT_SERUM_VIAL, getSlotRL("serum.active"));
slotSerumVial.forbidInteraction();
slotSerumVial.setReadOnly();
final SlotValidator serumValid = new SerumSlotValidator();
slotSerumVial.setValidator(serumValid);
for (InventorySlot slot : inventory.addSlotArray(Splicer.SLOT_SERUM_RESERVE, getSlotRL("serum.input"))) {
slot.setValidator(serumValid);
slot.forbidExtraction();
}
for (InventorySlot slot : inventory.addSlotArray(Splicer.SLOT_SERUM_EXPENDED, getSlotRL("serum.output"))) {
slot.setValidator(serumValid);
slot.setReadOnly();
}
for (InventorySlot slot : inventory.addSlotArray(Splicer.SLOT_RESERVE, getSlotRL("input"))) {
slot.forbidExtraction();
slot.setValidator(new ValidatorIndividualInoculate());
}
InventorySlot slotTarget = inventory.addSlot(Splicer.SLOT_TARGET, getSlotRL("process"));
slotTarget.setValidator(new ValidatorIndividualInoculate());
slotTarget.setReadOnly();
slotTarget.forbidInteraction();
for (InventorySlot slot : inventory.addSlotArray(Splicer.SLOT_FINISHED, getSlotRL("output"))) {
slot.setReadOnly();
slot.forbidInsertion();
slot.setValidator(new ValidatorIndividualInoculate());
}
final ComponentInventoryTransfer transfer = new ComponentInventoryTransfer(machine);
transfer.addRestock(Splicer.SLOT_RESERVE, Splicer.SLOT_TARGET, 1);
transfer.addRestock(Splicer.SLOT_SERUM_RESERVE, Splicer.SLOT_SERUM_VIAL);
transfer.addStorage(Splicer.SLOT_SERUM_VIAL, Splicer.SLOT_SERUM_EXPENDED, (stack) -> Engineering.getCharges(stack) == 0);
transfer.addStorage(Splicer.SLOT_TARGET, Splicer.SLOT_FINISHED, (stack) -> {
if (!stack.isEmpty()) {
IMachine machine1 = transfer.getMachine();
MachineUtil machineUtil = machine1.getMachineUtil();
if (!machineUtil.getStack(Splicer.SLOT_SERUM_VIAL).isEmpty() && machine1.getInterface(SplicerLogic.class).isValidSerum() != null) {
return true;
}
}
return false;
});
new ComponentPowerReceptor(machine, 20000);
new SplicerLogic(machine);
new SplicerFX(machine);
}
use of binnie.core.machines.MachineUtil in project Binnie by ForestryMC.
the class LumbermillLogic method onFinishTask.
@Override
protected void onFinishTask() {
MachineUtil util = getUtil();
final ItemStack logStack = util.getStack(LumbermillMachine.SLOT_LOG);
final ItemStack result = LumbermillRecipeManager.getPlankProduct(logStack, util.getWorld());
if (result.isEmpty()) {
return;
}
util.addStack(LumbermillMachine.SLOT_PLANKS, result);
util.addStack(LumbermillMachine.SLOT_SAWDUST, ExtraTreeItems.SAWDUST.get(2));
util.addStack(LumbermillMachine.SLOT_BARK, ExtraTreeItems.Bark.get(2));
util.decreaseStack(LumbermillMachine.SLOT_LOG, 1);
}
Aggregations