40 lines
1.4 KiB
Kotlin
40 lines
1.4 KiB
Kotlin
package net.shadowfacts.phycon.block.terminal
|
|
|
|
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory
|
|
import net.minecraft.block.BlockState
|
|
import net.minecraft.entity.player.PlayerEntity
|
|
import net.minecraft.entity.player.PlayerInventory
|
|
import net.minecraft.network.PacketByteBuf
|
|
import net.minecraft.screen.ScreenHandler
|
|
import net.minecraft.server.network.ServerPlayerEntity
|
|
import net.minecraft.text.TranslatableText
|
|
import net.minecraft.util.math.BlockPos
|
|
import net.shadowfacts.phycon.init.PhyBlockEntities
|
|
import net.shadowfacts.phycon.packet.RequestInventoryPacket
|
|
|
|
/**
|
|
* @author shadowfacts
|
|
*/
|
|
class TerminalBlockEntity(pos: BlockPos, state: BlockState): AbstractTerminalBlockEntity(PhyBlockEntities.TERMINAL, pos, state) {
|
|
|
|
override fun onActivate(player: PlayerEntity) {
|
|
super.onActivate(player)
|
|
|
|
if (!world!!.isClient) {
|
|
val factory = object: ExtendedScreenHandlerFactory {
|
|
override fun createMenu(syncId: Int, playerInv: PlayerInventory, player: PlayerEntity): ScreenHandler {
|
|
return TerminalScreenHandler(syncId, playerInv, this@TerminalBlockEntity)
|
|
}
|
|
|
|
override fun getDisplayName() = TranslatableText("block.phycon.terminal")
|
|
|
|
override fun writeScreenOpeningData(player: ServerPlayerEntity, buf: PacketByteBuf) {
|
|
buf.writeBlockPos(this@TerminalBlockEntity.pos)
|
|
}
|
|
}
|
|
player.openHandledScreen(factory)
|
|
}
|
|
}
|
|
|
|
}
|