45 lines
1.2 KiB
Kotlin
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()
|
|
}
|
|
|
|
} |