package net.shadowfacts.asmr.manager import net.minecraft.block.entity.BlockEntity import net.shadowfacts.asmr.ASMR import net.shadowfacts.asmr.program.Program import net.shadowfacts.asmr.program.ProgramType.Companion.INT import net.shadowfacts.asmr.program.blocks.ConstantBlock import net.shadowfacts.asmr.program.blocks.PrintBlock import net.shadowfacts.asmr.program.blocks.math.BinaryOperatorBlock import net.shadowfacts.asmr.program.blocks.math.BinaryOperatorBlock.Operation.DIVIDE import net.shadowfacts.cacao.geometry.Point /** * @author shadowfacts */ class ManagerBlockEntity: BlockEntity(ASMR.managerEntityType) { val program = Program() init { val left = program.addBlock(ConstantBlock(INT, 36)) { it.position = Point(0.0, 60.0) } val right = program.addBlock(ConstantBlock(INT, 9)) { it.position = Point(0.0, 120.0) } val divide = program.addBlock(BinaryOperatorBlock(INT, DIVIDE)) { // it.left.link(from = left.output) // it.right.link(from = right.output) it.position = Point(120.0, 0.0) } val print = program.addBlock(PrintBlock(INT)) { // it.input.link(from = divide.output) it.position = Point(240.0, 0.0) } program.startBlock.link(divide) divide.link(print) } fun activate() { program.execute() } }