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 dev.architectury.registry.menu.MenuRegistry
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResult import net.minecraft.world.InteractionResult
import net.minecraft.world.MenuProvider import net.minecraft.world.MenuProvider
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.Level 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.EntityBlock
import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraft.world.level.block.state.BlockState 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 net.minecraft.world.phys.BlockHitResult
import org.neoflock.neocomputers.NeoComputers import org.neoflock.neocomputers.NeoComputers
import org.neoflock.neocomputers.entity.BlockEntities 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.Menus
import org.neoflock.neocomputers.gui.menu.ScreenMenu import org.neoflock.neocomputers.gui.menu.ScreenMenu
import org.neoflock.neocomputers.network.Networking import org.neoflock.neocomputers.network.Networking
import kotlin.math.abs
import kotlin.math.max
class ScreenBlock() : NodeBlock() { 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? { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity? {
val scr = ScreenEntity(blockPos, blockState) val scr = ScreenEntity(blockPos, blockState)
@@ -53,4 +69,26 @@ class ScreenBlock() : NodeBlock() {
} }
return InteractionResult.SUCCESS 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": { "variants": {
"": { "facing=north": {
"model": "neocomputers:block/screen" "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
} }
} }
} }