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.source = left.output it.right.source = right.output it.position = Point(120.0, 0.0) } val print = program.addBlock(PrintBlock(INT)) { it.input.source = divide.output it.position = Point(240.0, 0.0) } program.startBlock.nextExecutableBlock = divide divide.nextExecutableBlock = print } fun activate() { program.execute() } }