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

54 lines
1.7 KiB
Kotlin

package net.shadowfacts.asmr.manager
import net.fabricmc.api.EnvType
import net.fabricmc.api.Environment
import net.minecraft.block.Block
import net.minecraft.block.BlockEntityProvider
import net.minecraft.block.BlockState
import net.minecraft.block.Material
import net.minecraft.block.entity.BlockEntity
import net.minecraft.client.MinecraftClient
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.util.Hand
import net.minecraft.util.hit.BlockHitResult
import net.minecraft.util.math.BlockPos
import net.minecraft.world.BlockView
import net.minecraft.world.World
import net.shadowfacts.asmr.ui.ManagerViewController
import net.shadowfacts.cacao.CacaoScreen
import net.shadowfacts.cacao.Window
import no.birkett.kiwi.UnsatisfiableConstraintException
/**
* @author shadowfacts
*/
class ManagerBlock: Block(Settings.of(Material.METAL)), BlockEntityProvider {
@Deprecated("")
override fun activate(state: BlockState, world: World, pos: BlockPos, player: PlayerEntity, hand: Hand, hitResult: BlockHitResult?): Boolean {
if (world.isClient) {
openManagerUI(world.getBlockEntity(pos) as ManagerBlockEntity)
}
return true
}
@Environment(EnvType.CLIENT)
private fun openManagerUI(managerBlockEntity: ManagerBlockEntity) {
val vc = ManagerViewController(managerBlockEntity)
val screen = object: CacaoScreen() {
override fun isPauseScreen() = false
}
try {
val window = screen.addWindow(Window(vc))
MinecraftClient.getInstance().openScreen(screen)
} catch (e: UnsatisfiableConstraintException) {
println("Couldn't open screen")
e.printStackTrace()
}
}
override fun createBlockEntity(world: BlockView): BlockEntity {
return ManagerBlockEntity()
}
}