ASMR/src/main/kotlin/net/shadowfacts/asmr/manager/ManagerBlockEntity.kt

45 lines
1.2 KiB
Kotlin

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()
}
}