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

54 lines
1.7 KiB
Kotlin
Raw Normal View History

2019-08-09 02:44:19 +00:00
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
2019-08-09 02:44:19 +00:00
/**
* @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)
2019-08-12 03:41:47 +00:00
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()
}
2019-08-09 02:44:19 +00:00
}
override fun createBlockEntity(world: BlockView): BlockEntity {
return ManagerBlockEntity()
}
}