screen directioned

This commit is contained in:
mewhenthe
2026-04-21 20:07:59 +02:00
parent f3ebc4f684
commit a14d3a2b73
2 changed files with 59 additions and 1 deletions

View File

@@ -2,19 +2,26 @@ package org.neoflock.neocomputers.block;
import dev.architectury.registry.menu.MenuRegistry
import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.network.chat.Component
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResult
import net.minecraft.world.MenuProvider
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.EntityBlock
import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.block.state.StateDefinition
import net.minecraft.world.level.block.state.properties.BooleanProperty
import net.minecraft.world.level.block.state.properties.EnumProperty
import net.minecraft.world.level.block.state.properties.EnumProperty.*
import net.minecraft.world.phys.BlockHitResult
import org.neoflock.neocomputers.NeoComputers
import org.neoflock.neocomputers.entity.BlockEntities
@@ -22,8 +29,17 @@ import org.neoflock.neocomputers.entity.ScreenEntity
import org.neoflock.neocomputers.gui.menu.Menus
import org.neoflock.neocomputers.gui.menu.ScreenMenu
import org.neoflock.neocomputers.network.Networking
import kotlin.math.abs
import kotlin.math.max
class ScreenBlock() : NodeBlock() {
companion object {
val FACING: EnumProperty<Direction> = EnumProperty.create<Direction>("facing", Direction::class.java)
}
init {
registerDefaultState(stateDefinition.any().setValue(FACING, Direction.NORTH))
}
override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity? {
val scr = ScreenEntity(blockPos, blockState)
@@ -53,4 +69,26 @@ class ScreenBlock() : NodeBlock() {
}
return InteractionResult.SUCCESS
}
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block?, BlockState?>) {
builder.add(FACING)
}
override fun setPlacedBy(level: Level, pos: BlockPos, state: BlockState, placer: LivingEntity?, stack: ItemStack) {
super.setPlacedBy(level, pos, state, placer, stack)
// state.setValue(state.)
level.setBlockAndUpdate(pos, state.setValue(FACING, lookingdir(placer!!)))
}
private fun lookingdir(placer: LivingEntity): Direction {
val vec = placer.lookAngle
NeoComputers.LOGGER.info(vec.toString())
val biggest = max(max(abs(vec.x), abs(vec.y)), abs(vec.z))
when(biggest) {
abs(vec.x) -> if(vec.x < 0) return Direction.EAST else return Direction.WEST
abs(vec.y) -> if(vec.y < 0) return Direction.UP else return Direction.DOWN
abs(vec.z) -> if(vec.z < 0) return Direction.SOUTH else return Direction.NORTH
}
NeoComputers.LOGGER.warn("Failed to obtain looking direction!")
return Direction.NORTH // wtf
}
}

View File

@@ -1,7 +1,27 @@
{
"variants": {
"": {
"facing=north": {
"model": "neocomputers:block/screen"
},
"facing=east": {
"model": "neocomputers:block/screen",
"y": 90
},
"facing=west": {
"model": "neocomputers:block/screen",
"y": -90
},
"facing=south": {
"model": "neocomputers:block/screen",
"y": 180
},
"facing=up": {
"model": "neocomputers:block/screen",
"x": -90
},
"facing=down": {
"model": "neocomputers:block/screen",
"x": 90
}
}
}