Skip to content

Commit 4f373ef

Browse files
committed
remove some unspecific block properties
1 parent 7ce6ce5 commit 4f373ef

File tree

10 files changed

+27
-38
lines changed

10 files changed

+27
-38
lines changed

src/integration-test/kotlin/de/bixilon/minosoft/data/registries/blocks/factory/VerifyIntegratedBlockRegistry.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import de.bixilon.minosoft.data.registries.blocks.types.Block
2828
import de.bixilon.minosoft.data.registries.blocks.types.building.FenceBlock
2929
import de.bixilon.minosoft.data.registries.blocks.types.building.end.EndStoneBrick
3030
import de.bixilon.minosoft.data.registries.blocks.types.building.nether.SoulSand
31+
import de.bixilon.minosoft.data.registries.blocks.types.building.plants.DoublePlant
3132
import de.bixilon.minosoft.data.registries.blocks.types.building.plants.FernBlock
3233
import de.bixilon.minosoft.data.registries.blocks.types.building.plants.FlowerBlock
3334
import de.bixilon.minosoft.data.registries.blocks.types.building.snow.SnowLayerBlock
@@ -126,6 +127,9 @@ object VerifyIntegratedBlockRegistry {
126127
flags -= BlockStateFlags.FULL_COLLISION
127128
flags -= BlockStateFlags.FULL_OUTLINE
128129
}
130+
if (block is DoublePlant) {
131+
flags -= BlockStateFlags.OFFSET
132+
}
129133

130134
return flags
131135
}
@@ -233,7 +237,7 @@ object VerifyIntegratedBlockRegistry {
233237
fake.setParent(registries)
234238
SHAPES[fake] = registries.shape
235239

236-
val states = FlattenedBlockStateCodec.deserialize(parsed, BlockStateFlags.of(parsed), value, version, fake)
240+
val states = FlattenedBlockStateCodec.deserialize(parsed, integrated.properties, BlockStateFlags.of(parsed), value, version, fake)
237241

238242
Block.STATES[parsed] = states
239243

src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ object BlockProperties {
3535
val INVERTED = BooleanProperty("inverted").register()
3636
val LIT = BooleanProperty("lit").register()
3737
val WATERLOGGED = BooleanProperty("waterlogged").register()
38-
val STAIR_DIRECTIONAL = EnumProperty("shape", Shapes).register()
3938
val SLAB_HALF = EnumProperty("half", Halves).register()
40-
val STAIR_HALF = EnumProperty("half", Halves, Halves.set(Halves.UPPER, Halves.LOWER))
4139
val SLAB_TYPE = SlabBlock.TYPE.register()
4240
val FLUID_LEVEL = FluidBlock.LEVEL.register()
4341
val MOISTURE_LEVEL = IntProperty("moisture").register()

src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/Shapes.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,7 @@ import de.bixilon.kutil.enums.EnumUtil
1717
import de.bixilon.kutil.enums.ValuesEnum
1818

1919
enum class Shapes {
20-
@Deprecated("stairs")
2120
STRAIGHT,
22-
23-
@Deprecated("stairs")
24-
INNER_LEFT,
25-
26-
@Deprecated("stairs")
27-
INNER_RIGHT,
28-
29-
@Deprecated("stairs")
30-
OUTER_LEFT,
31-
32-
@Deprecated("stairs")
33-
OUTER_RIGHT,
34-
3521
NORTH_SOUTH,
3622
SOUTH_EAST,
3723
SOUTH_WEST,

src/main/java/de/bixilon/minosoft/data/registries/blocks/registry/BlockRegistry.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Minosoft
3-
* Copyright (C) 2020-2025 Moritz Zwerger
3+
* Copyright (C) 2020-2026 Moritz Zwerger
44
*
55
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
66
*
@@ -50,7 +50,7 @@ class BlockRegistry(
5050
val flags = block.flags
5151

5252
val manager = when {
53-
flattened -> FlattenedBlockStateCodec.deserialize(block, flags, data, version, registries)
53+
flattened -> FlattenedBlockStateCodec.deserialize(block, block.properties, flags, data, version, registries)
5454
else -> LegacyBlockStateCodec.deserialize(block, flags, data, version, registries)
5555
}
5656

src/main/java/de/bixilon/minosoft/data/registries/blocks/registry/codec/FlattenedBlockStateCodec.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Minosoft
3-
* Copyright (C) 2020-2025 Moritz Zwerger
3+
* Copyright (C) 2020-2026 Moritz Zwerger
44
*
55
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
66
*
@@ -19,6 +19,7 @@ import de.bixilon.kutil.enums.inline.IntInlineSet
1919
import de.bixilon.kutil.json.JsonObject
2020
import de.bixilon.kutil.primitive.IntUtil.toInt
2121
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperty
22+
import de.bixilon.minosoft.data.registries.blocks.properties.list.BlockPropertyList
2223
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
2324
import de.bixilon.minosoft.data.registries.blocks.state.builder.BlockStateBuilder
2425
import de.bixilon.minosoft.data.registries.blocks.state.manager.BlockStateManager
@@ -31,13 +32,13 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet
3132

3233
object FlattenedBlockStateCodec {
3334

34-
fun deserialize(block: Block, flags: IntInlineSet, data: JsonObject, version: Version, registries: Registries): BlockStateManager {
35+
fun deserialize(block: Block, propertyList: BlockPropertyList, flags: IntInlineSet, data: JsonObject, version: Version, registries: Registries): BlockStateManager {
3536
val properties: MutableMap<BlockProperty<*>, MutableSet<Any>> = mutableMapOf()
3637

3738
val states: MutableSet<BlockState> = ObjectOpenHashSet()
3839

3940
for ((stateId, stateJson) in data["states"].asAnyMap()) {
40-
val settings = BlockStateBuilder.of(block, flags, registries, stateJson.unsafeCast())
41+
val settings = BlockStateBuilder.of(block, propertyList, flags, registries, stateJson.unsafeCast())
4142
val state = block.buildState(version, settings)
4243

4344
states += state

src/main/java/de/bixilon/minosoft/data/registries/blocks/registry/codec/LegacyBlockStateCodec.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Minosoft
3-
* Copyright (C) 2020-2025 Moritz Zwerger
3+
* Copyright (C) 2020-2026 Moritz Zwerger
44
*
55
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
66
*
@@ -39,7 +39,7 @@ object LegacyBlockStateCodec {
3939
if (statesData == null) {
4040
// block has only a single state
4141
if (id == null) throw IllegalArgumentException("Missing id (block=$block)!")
42-
val settings = BlockStateBuilder.of(block, flags, registries, data)
42+
val settings = BlockStateBuilder.of(block, block.properties, flags, registries, data)
4343
val state = block.buildState(version, settings)
4444
registries.blockState[id, meta] = state
4545

@@ -51,7 +51,7 @@ object LegacyBlockStateCodec {
5151

5252
val states: MutableSet<BlockState> = ObjectOpenHashSet(statesData.size)
5353
for (stateJson in statesData) {
54-
val settings = BlockStateBuilder.of(block, flags, registries, stateJson.unsafeCast())
54+
val settings = BlockStateBuilder.of(block, block.properties, flags, registries, stateJson.unsafeCast())
5555
val state = block.buildState(version, settings)
5656

5757
states += state

src/main/java/de/bixilon/minosoft/data/registries/blocks/state/builder/BlockStateBuilder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ class BlockStateBuilder(
118118
return lightProperties
119119
}
120120

121-
fun of(block: Block, flags: IntInlineSet, registries: Registries, data: JsonObject): BlockStateBuilder {
121+
fun of(block: Block, properties: BlockPropertyList, flags: IntInlineSet, registries: Registries, data: JsonObject): BlockStateBuilder {
122122
val implemented = !(block is PixLyzerBlock || block is LegacyBlock || block is FenceBlock || block is StairsBlock) // TODO: implement missing shapes
123-
val properties = data.getProperties(block.properties) ?: emptyMap()
123+
val properties = data.getProperties(properties) ?: emptyMap()
124124
val collisionShape = if (!implemented) data.getCollisionShape(registries.shape) else null
125125
val outlineShape = if (!implemented) data.getOutlineShape(registries.shape) else null
126126

src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/DoorBlock.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import de.bixilon.minosoft.data.registries.blocks.types.properties.item.BlockWit
3737
import de.bixilon.minosoft.data.registries.blocks.types.properties.shape.collision.CollidableBlock
3838
import de.bixilon.minosoft.data.registries.blocks.types.properties.shape.outline.OutlinedBlock
3939
import de.bixilon.minosoft.data.registries.blocks.types.properties.size.DoubleSizeBlock
40+
import de.bixilon.minosoft.data.registries.blocks.types.properties.size.DoubleSizeBlock.Companion.HALF
4041
import de.bixilon.minosoft.data.registries.identified.Namespaces
4142
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
4243
import de.bixilon.minosoft.data.registries.item.items.Item
@@ -168,7 +169,6 @@ abstract class DoorBlock(identifier: ResourceLocation, settings: BlockSettings)
168169
}
169170

170171
companion object {
171-
val HALF = EnumProperty("half", Halves.Companion, Halves.set(Halves.UPPER, Halves.LOWER))
172172
val HINGE = EnumProperty("hinge", Sides.Companion)
173173
val POWERED = BlockProperties.POWERED
174174
val FACING = BlockProperties.FACING_HORIZONTAL

src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/plants/DoublePlant.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import de.bixilon.kutil.reflection.ReflectionUtil.forceSet
1919
import de.bixilon.minosoft.data.direction.Directions
2020
import de.bixilon.minosoft.data.registries.blocks.factory.BlockFactory
2121
import de.bixilon.minosoft.data.registries.blocks.light.TransparentProperty
22-
import de.bixilon.minosoft.data.registries.blocks.properties.EnumProperty
2322
import de.bixilon.minosoft.data.registries.blocks.properties.Halves
2423
import de.bixilon.minosoft.data.registries.blocks.properties.list.MapPropertyList
2524
import de.bixilon.minosoft.data.registries.blocks.settings.BlockSettings
@@ -34,6 +33,7 @@ import de.bixilon.minosoft.data.registries.blocks.types.properties.offset.Random
3433
import de.bixilon.minosoft.data.registries.blocks.types.properties.offset.RandomOffsetTypes
3534
import de.bixilon.minosoft.data.registries.blocks.types.properties.shape.outline.OutlinedBlock
3635
import de.bixilon.minosoft.data.registries.blocks.types.properties.size.DoubleSizeBlock
36+
import de.bixilon.minosoft.data.registries.blocks.types.properties.size.DoubleSizeBlock.Companion.HALF
3737
import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft
3838
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
3939
import de.bixilon.minosoft.data.registries.item.items.Item
@@ -103,10 +103,6 @@ abstract class DoublePlant(identifier: ResourceLocation, settings: BlockSettings
103103
}
104104
}
105105

106-
companion object {
107-
val HALF = EnumProperty("half", Halves, Halves.set(Halves.UPPER, Halves.LOWER))
108-
}
109-
110106
open class Sunflower(identifier: ResourceLocation = Companion.identifier, settings: BlockSettings) : DoublePlant(identifier, settings) {
111107

112108
companion object : BlockFactory<Sunflower> {

src/main/java/de/bixilon/minosoft/data/registries/blocks/types/properties/size/DoubleSizeBlock.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Minosoft
3-
* Copyright (C) 2020-2025 Moritz Zwerger
3+
* Copyright (C) 2020-2026 Moritz Zwerger
44
*
55
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
66
*
@@ -15,7 +15,7 @@ package de.bixilon.minosoft.data.registries.blocks.types.properties.size
1515

1616
import de.bixilon.minosoft.data.direction.Directions
1717
import de.bixilon.minosoft.data.entities.block.BlockEntity
18-
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
18+
import de.bixilon.minosoft.data.registries.blocks.properties.EnumProperty
1919
import de.bixilon.minosoft.data.registries.blocks.properties.Halves
2020
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
2121
import de.bixilon.minosoft.data.world.positions.BlockPosition
@@ -24,9 +24,9 @@ import de.bixilon.minosoft.protocol.network.session.play.PlaySession
2424
interface DoubleSizeBlock : MultiSizeBlock {
2525

2626

27-
fun isTop(state: BlockState, session: PlaySession) = state.properties[BlockProperties.STAIR_HALF] == Halves.UPPER
28-
fun getTop(state: BlockState, session: PlaySession): BlockState = state.withProperties(BlockProperties.STAIR_HALF to Halves.UPPER)
29-
fun getBottom(state: BlockState, session: PlaySession): BlockState = state.withProperties(BlockProperties.STAIR_HALF to Halves.LOWER)
27+
fun isTop(state: BlockState, session: PlaySession) = state[HALF] == Halves.UPPER
28+
fun getTop(state: BlockState, session: PlaySession): BlockState = state.withProperties(HALF to Halves.UPPER)
29+
fun getBottom(state: BlockState, session: PlaySession): BlockState = state.withProperties(HALF to Halves.LOWER)
3030

3131
override fun onBreak(session: PlaySession, position: BlockPosition, state: BlockState, entity: BlockEntity?) {
3232
val offset = if (isTop(state, session)) Directions.DOWN else Directions.UP
@@ -42,4 +42,8 @@ interface DoubleSizeBlock : MultiSizeBlock {
4242

4343
session.world[position + offset] = otherState
4444
}
45+
46+
companion object {
47+
val HALF = EnumProperty("half", Halves, Halves.set(Halves.UPPER, Halves.LOWER))
48+
}
4549
}

0 commit comments

Comments
 (0)