use of mcjty.rftoolscontrol.logic.compiled.CompiledEvent in project RFToolsControl by McJty.
the class ProcessorTileEntity method fireCraftEvent.
public void fireCraftEvent(String ticket, ItemStack stackToCraft) {
for (int i = 0; i < cardInfo.length; i++) {
CardInfo info = cardInfo[i];
CompiledCard compiledCard = info.getCompiledCard();
if (compiledCard != null) {
for (CompiledEvent event : compiledCard.getEvents(Opcodes.EVENT_CRAFT)) {
int index = event.getIndex();
CompiledOpcode compiledOpcode = compiledCard.getOpcodes().get(index);
ItemStack stack = evaluateItemParameter(compiledOpcode, null, 0);
Inventory inv = evaluateInventoryParameter(compiledOpcode, null, 1);
if (!stack.isEmpty()) {
if (stack.isItemEqual(stackToCraft)) {
runOrQueueEvent(i, event, ticket, null);
return;
}
} else if (inv != null) {
IItemHandler handler = getItemHandlerAt(inv);
ItemStack craftingCard = findCraftingCard(handler, stackToCraft);
if (!craftingCard.isEmpty()) {
runOrQueueEvent(i, event, ticket, null);
return;
}
}
}
}
}
}
use of mcjty.rftoolscontrol.logic.compiled.CompiledEvent in project RFToolsControl by McJty.
the class ProcessorTileEntity method getCraftableItems.
public void getCraftableItems(List<ItemStack> stacks) {
try {
for (CardInfo info : cardInfo) {
CompiledCard compiledCard = info.getCompiledCard();
if (compiledCard != null) {
for (CompiledEvent event : compiledCard.getEvents(Opcodes.EVENT_CRAFT)) {
int index = event.getIndex();
CompiledOpcode compiledOpcode = compiledCard.getOpcodes().get(index);
ItemStack stack = evaluateItemParameter(compiledOpcode, null, 0);
Inventory inv = evaluateInventoryParameter(compiledOpcode, null, 1);
if (!stack.isEmpty() && inv != null) {
throw new ProgException(EXCEPT_BADPARAMETERS);
}
if (stack.isEmpty() && inv == null) {
throw new ProgException(EXCEPT_BADPARAMETERS);
}
if (!stack.isEmpty()) {
stacks.add(stack);
} else {
// Find all crafting cards in the inventory
IItemHandler handler = getItemHandlerAt(inv);
for (int i = 0; i < handler.getSlots(); i++) {
ItemStack s = handler.getStackInSlot(i);
if (!s.isEmpty() && s.getItem() == ModItems.craftingCardItem) {
ItemStack result = CraftingCardItem.getResult(s);
if (!result.isEmpty()) {
stacks.add(result);
}
}
}
}
}
}
}
} catch (ProgException e) {
exception(e.getExceptionType(), null);
}
}
use of mcjty.rftoolscontrol.logic.compiled.CompiledEvent in project RFToolsControl by McJty.
the class ProcessorTileEntity method handleEventsRedstoneOn.
private void handleEventsRedstoneOn(int i, CompiledCard compiledCard) {
int redstoneOnMask = powerLevel & ~prevIn;
if (redstoneOnMask != 0) {
for (CompiledEvent event : compiledCard.getEvents(Opcodes.EVENT_REDSTONE_ON)) {
int index = event.getIndex();
CompiledOpcode compiledOpcode = compiledCard.getOpcodes().get(index);
BlockSide side = evaluateSideParameter(compiledOpcode, null, 0);
if (side == null || !side.hasNodeName()) {
EnumFacing facing = side == null ? null : side.getSide();
if (facing == null || ((redstoneOnMask >> facing.ordinal()) & 1) == 1) {
runOrQueueEvent(i, event, null, null);
}
}
}
}
}
use of mcjty.rftoolscontrol.logic.compiled.CompiledEvent in project RFToolsControl by McJty.
the class ProcessorTileEntity method signal.
@Override
public int signal(Tuple location) {
int cnt = 0;
for (int i = 0; i < cardInfo.length; i++) {
CardInfo info = cardInfo[i];
CompiledCard compiledCard = info.getCompiledCard();
if (compiledCard != null) {
for (CompiledEvent event : compiledCard.getEvents(Opcodes.EVENT_GFX_SELECT)) {
int index = event.getIndex();
runOrQueueEvent(i, event, null, Parameter.builder().type(ParameterType.PAR_TUPLE).value(ParameterValue.constant(location)).build());
cnt++;
}
}
}
return cnt;
}
use of mcjty.rftoolscontrol.logic.compiled.CompiledEvent in project RFToolsControl by McJty.
the class ProcessorTileEntity method handleEventsRedstoneOff.
private void handleEventsRedstoneOff(int i, CompiledCard compiledCard) {
int redstoneOffMask = prevIn & ~powerLevel;
if (redstoneOffMask != 0) {
for (CompiledEvent event : compiledCard.getEvents(Opcodes.EVENT_REDSTONE_OFF)) {
int index = event.getIndex();
CompiledOpcode compiledOpcode = compiledCard.getOpcodes().get(index);
BlockSide side = evaluateSideParameter(compiledOpcode, null, 0);
if (side == null || !side.hasNodeName()) {
EnumFacing facing = side == null ? null : side.getSide();
if (facing == null || ((redstoneOffMask >> facing.ordinal()) & 1) == 1) {
runOrQueueEvent(i, event, null, null);
}
}
}
}
}
Aggregations