diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt index d68fcd9b1..c8a49e77b 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt @@ -89,7 +89,7 @@ abstract class PlayerEntity( return field } - val skinParts: MutableSet by observedSet(mutableSetOf()) + val skinParts: MutableSet by observedSet(SkinParts.set()) override val isNameVisible get() = true override val name: ChatComponent? get() = additional.tabDisplayName // minecraft does use the plain name diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt index 77e8ea912..3c7b8ce3b 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt @@ -22,7 +22,6 @@ import de.bixilon.minosoft.data.registries.blocks.types.Block import de.bixilon.minosoft.data.registries.blocks.types.building.dirt.SnowyBlock import de.bixilon.minosoft.data.registries.blocks.types.building.snow.SnowLayerBlock import de.bixilon.minosoft.data.registries.blocks.types.fluid.FluidBlock -import java.util.* @Deprecated("Fallback data") object BlockProperties { @@ -36,7 +35,7 @@ object BlockProperties { val WATERLOGGED = BooleanProperty("waterlogged").register() val STAIR_DIRECTIONAL = EnumProperty("shape", Shapes).register() val SLAB_HALF = EnumProperty("half", Halves).register() - val STAIR_HALF = EnumProperty("half", Halves, EnumSet.of(Halves.UPPER, Halves.LOWER)) + val STAIR_HALF = EnumProperty("half", Halves, Halves.set(Halves.UPPER, Halves.LOWER)) val SLAB_TYPE = EnumProperty("type", Halves).register() val FLUID_LEVEL = FluidBlock.LEVEL.register() val MOISTURE_LEVEL = IntProperty("moisture").register() @@ -119,7 +118,7 @@ object BlockProperties { val AXIS = EnumProperty("axis", Axes).register() val FACING = EnumProperty("facing", Directions).register() - val FACING_HORIZONTAL = EnumProperty("facing", Directions, EnumSet.of(Directions.NORTH, Directions.SOUTH, Directions.WEST, Directions.EAST)) + val FACING_HORIZONTAL = EnumProperty("facing", Directions, Directions.set(Directions.NORTH, Directions.SOUTH, Directions.WEST, Directions.EAST)) val ROTATION = IntProperty("rotation").register() val ORIENTATION = EnumProperty("orientation", Orientations).register() diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/EnumProperty.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/EnumProperty.kt index 5b29a94db..acca72f64 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/EnumProperty.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/EnumProperty.kt @@ -13,12 +13,13 @@ package de.bixilon.minosoft.data.registries.blocks.properties +import de.bixilon.kutil.enums.BitEnumSet import de.bixilon.kutil.enums.ValuesEnum class EnumProperty>( name: String, val values: ValuesEnum, - val allowed: Set? = null, + val allowed: BitEnumSet? = null, ) : BlockProperty(name) { override fun parse(value: Any): T { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/door/DoorBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/door/DoorBlock.kt index b2087dda5..a797699a1 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/door/DoorBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/door/DoorBlock.kt @@ -65,7 +65,6 @@ import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus import de.bixilon.minosoft.input.interaction.InteractionResults import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.versions.Version -import java.util.* abstract class DoorBlock(identifier: ResourceLocation, settings: BlockSettings) : Block(identifier, settings), BlockWithItem, ModelChooser, DoubleSizeBlock, InteractBlockHandler, OutlinedBlock, CollidableBlock, BlockStateBuilder, LightedBlock { override val item: Item = this::item.inject(identifier) @@ -168,7 +167,7 @@ abstract class DoorBlock(identifier: ResourceLocation, settings: BlockSettings) } companion object { - val HALF = EnumProperty("half", Halves, EnumSet.of(Halves.UPPER, Halves.LOWER)) + val HALF = EnumProperty("half", Halves, Halves.set(Halves.UPPER, Halves.LOWER)) val HINGE = EnumProperty("hinge", Sides) val POWERED = BlockProperties.POWERED val FACING = BlockProperties.FACING_HORIZONTAL diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/plants/DoublePlant.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/plants/DoublePlant.kt index 558f153fb..ba33f3cab 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/plants/DoublePlant.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/building/plants/DoublePlant.kt @@ -94,7 +94,7 @@ abstract class DoublePlant(identifier: ResourceLocation, settings: BlockSettings } companion object { - val HALF = EnumProperty("half", Halves, setOf(Halves.UPPER, Halves.LOWER)) + val HALF = EnumProperty("half", Halves, Halves.set(Halves.UPPER, Halves.LOWER)) } open class Sunflower(identifier: ResourceLocation = Companion.identifier, settings: BlockSettings) : DoublePlant(identifier, settings) { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderingCapabilities.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderingCapabilities.kt index 7e4506242..3f2704f1e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderingCapabilities.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/RenderingCapabilities.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * 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. * @@ -13,10 +13,18 @@ package de.bixilon.minosoft.gui.rendering.system.base +import de.bixilon.kutil.enums.ValuesEnum +import de.bixilon.kutil.enums.ValuesEnum.Companion.names + enum class RenderingCapabilities { DEPTH_TEST, BLENDING, FACE_CULLING, POLYGON_OFFSET, ; + + companion object : ValuesEnum { + override val VALUES = values() + override val NAME_MAP: Map = names() + } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt index 4f7a1a98b..bf9c71586 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt @@ -46,7 +46,6 @@ import org.lwjgl.opengl.GL43.GL_DEBUG_OUTPUT import org.lwjgl.opengl.GL43.glDebugMessageCallback import java.nio.ByteBuffer import java.nio.FloatBuffer -import java.util.* class OpenGLRenderSystem( private val context: RenderContext, @@ -54,7 +53,7 @@ class OpenGLRenderSystem( private var thread: Thread? = null override val nativeShaders: MutableSet = mutableSetOf() override val shaders: MutableSet = mutableSetOf() - private val capabilities: EnumSet = EnumSet.noneOf(RenderingCapabilities::class.java) + private val capabilities: MutableSet = RenderingCapabilities.set() override lateinit var vendor: OpenGLVendor private set override var active: Boolean = false diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt index c396d26d9..10edf1174 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt @@ -35,7 +35,7 @@ class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { init { - val actions = if (buffer.versionId < ProtocolVersions.V_22W42A) LegacyActions[buffer.readVarInt()].actions else buffer.readEnumSet(Actions.VALUES_22W42A).actions() + val actions = if (buffer.versionId < ProtocolVersions.V_22W42A) LegacyActions[buffer.readVarInt()].actions else buffer.readEnumSet(Actions, Actions.VALUES_22W42A).actions() val entries: MutableMap = mutableMapOf() for (index in 0 until buffer.readVarInt()) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/actions/Actions.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/actions/Actions.kt index 61c8e646f..372af22ff 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/actions/Actions.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/actions/Actions.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * 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. * @@ -13,6 +13,9 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.tab.actions +import de.bixilon.kutil.enums.ValuesEnum +import de.bixilon.kutil.enums.ValuesEnum.Companion.names + enum class Actions(val action: AbstractAction) { INITIALIZE(InitializeAction), CHAT(ChatAction), @@ -22,7 +25,9 @@ enum class Actions(val action: AbstractAction) { DISPLAY_NAME(DisplayNameAction), ; - companion object { + companion object : ValuesEnum { + override val VALUES = values() + override val NAME_MAP = names() val VALUES_22W42A = arrayOf(INITIALIZE, CHAT, GAMEMODE, LISTED, LATENCY, DISPLAY_NAME) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/buffers/play/PlayInByteBuffer.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/buffers/play/PlayInByteBuffer.kt index e3638c600..835098968 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/buffers/play/PlayInByteBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/buffers/play/PlayInByteBuffer.kt @@ -328,13 +328,12 @@ class PlayInByteBuffer : InByteBuffer { } } - @Deprecated("use values enum") - inline fun > readEnumSet(values: Array): Set { + inline fun > readEnumSet(universe: ValuesEnum, values: Array): Set { val bitset = readBitSet(values.size) if (bitset.isEmpty) { return emptySet() } - val set = EnumSet.noneOf(T::class.java) + val set = universe.set() readEnumSet(bitset, set, values) return set }