From 13a91a0812d090daab866d91e716426dd2ebc623 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 18 Oct 2021 13:37:12 +0200 Subject: [PATCH] rename DimensionType to DimensionProperties --- .../data/registries/dimension/Dimension.kt | 4 ++-- .../{DimensionType.kt => DimensionProperties.kt} | 6 +++--- .../java/de/bixilon/minosoft/data/world/World.kt | 4 ++-- .../modding/event/events/RespawnEvent.java | 14 +++++++------- .../packets/s2c/login/LoginSuccessS2CP.kt | 8 ++------ .../protocol/packets/s2c/play/JoinGameS2CP.kt | 16 ++++++++-------- .../packets/s2c/play/PlayerEntitySpawnS2CP.kt | 3 +-- .../protocol/packets/s2c/play/RespawnS2CP.kt | 6 +++--- .../minosoft/protocol/protocol/InByteBuffer.kt | 9 +++++++++ .../de/bixilon/minosoft/util/chunk/ChunkUtil.kt | 10 +++++----- .../de/bixilon/minosoft/util/chunk/LightUtil.kt | 6 +++--- 11 files changed, 45 insertions(+), 41 deletions(-) rename src/main/java/de/bixilon/minosoft/data/registries/dimension/{DimensionType.kt => DimensionProperties.kt} (95%) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/dimension/Dimension.kt b/src/main/java/de/bixilon/minosoft/data/registries/dimension/Dimension.kt index 3cbdee992..bec719964 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/dimension/Dimension.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/dimension/Dimension.kt @@ -19,7 +19,7 @@ import de.bixilon.minosoft.data.registries.registries.registry.ResourceLocationD data class Dimension( override val resourceLocation: ResourceLocation, - val type: DimensionType, + val type: DimensionProperties, ) : RegistryItem() { override fun toString(): String { @@ -30,7 +30,7 @@ data class Dimension( override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map): Dimension { return Dimension( resourceLocation = resourceLocation, - type = DimensionType.deserialize(data) + type = DimensionProperties.deserialize(data) ) } } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionType.kt b/src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionProperties.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionType.kt rename to src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionProperties.kt index 2129d32f3..e7e9e0649 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionType.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionProperties.kt @@ -9,7 +9,7 @@ import de.bixilon.minosoft.util.KUtil.toInt import de.bixilon.minosoft.util.KUtil.unsafeCast import de.bixilon.minosoft.util.nbt.tag.NBTUtil.get -data class DimensionType( +data class DimensionProperties( val piglinSafe: Boolean = false, val natural: Boolean = true, val ambientLight: Float = 0.0f, @@ -51,8 +51,8 @@ data class DimensionType( companion object { - fun deserialize(data: Map): DimensionType { - return DimensionType( + fun deserialize(data: Map): DimensionProperties { + return DimensionProperties( piglinSafe = data["piglin_safe"]?.toBoolean() ?: false, natural = data["natural"]?.toBoolean() ?: false, ambientLight = data["ambient_light"]?.unsafeCast() ?: 0.0f, diff --git a/src/main/java/de/bixilon/minosoft/data/world/World.kt b/src/main/java/de/bixilon/minosoft/data/world/World.kt index a6013d750..85c3de2c3 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/World.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/World.kt @@ -19,7 +19,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock -import de.bixilon.minosoft.data.registries.dimension.DimensionType +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.data.registries.sounds.SoundEvent import de.bixilon.minosoft.data.registries.tweaker.VersionTweaker import de.bixilon.minosoft.data.world.biome.accessor.BiomeAccessor @@ -61,7 +61,7 @@ class World( val chunks: MutableMap = synchronizedMapOf() val entities = WorldEntities() var hardcore = false - var dimension: DimensionType? = null + var dimension: DimensionProperties? = null var difficulty: Difficulties? = null var difficultyLocked = false val worldLightAccessor = WorldLightAccessor(this) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.java index 0261c61e1..5c3adebc1 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.java +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.java @@ -15,7 +15,7 @@ package de.bixilon.minosoft.modding.event.events; import de.bixilon.minosoft.data.Difficulties; import de.bixilon.minosoft.data.abilities.Gamemodes; -import de.bixilon.minosoft.data.registries.dimension.DimensionType; +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties; import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent; import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection; import de.bixilon.minosoft.protocol.packets.s2c.play.RespawnS2CP; @@ -23,20 +23,20 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.RespawnS2CP; @Deprecated public class RespawnEvent extends PlayConnectionEvent { private final Gamemodes gamemode; - private final DimensionType dimensionType; + private final DimensionProperties dimensionProperties; private final Difficulties difficulty; - public RespawnEvent(PlayConnection connection, Gamemodes gamemode, DimensionType dimensionType, Difficulties difficulty) { + public RespawnEvent(PlayConnection connection, Gamemodes gamemode, DimensionProperties dimensionProperties, Difficulties difficulty) { super(connection); this.gamemode = gamemode; - this.dimensionType = dimensionType; + this.dimensionProperties = dimensionProperties; this.difficulty = difficulty; } public RespawnEvent(PlayConnection connection, RespawnS2CP pkg) { super(connection); this.gamemode = pkg.getGamemode(); - this.dimensionType = pkg.getDimension(); + this.dimensionProperties = pkg.getDimension(); this.difficulty = pkg.getDifficulty(); } @@ -44,8 +44,8 @@ public class RespawnEvent extends PlayConnectionEvent { return this.gamemode; } - public DimensionType getDimensionType() { - return this.dimensionType; + public DimensionProperties getDimensionType() { + return this.dimensionProperties; } public Difficulties getDifficulty() { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/LoginSuccessS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/LoginSuccessS2CP.kt index 7880582c6..f23b2fdf8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/LoginSuccessS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/LoginSuccessS2CP.kt @@ -18,18 +18,14 @@ import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.ProtocolVersions -import de.bixilon.minosoft.util.Util +import de.bixilon.minosoft.util.KUtil.decide import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* class LoginSuccessS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { - val uuid: UUID = if (buffer.versionId < ProtocolVersions.V_20W12A) { - Util.getUUIDFromString(buffer.readString()) - } else { - buffer.readUUID() - } + val uuid: UUID = (buffer.versionId < ProtocolVersions.V_20W12A).decide({ buffer.readUUIDString() }, { buffer.readUUID() }) val name: String = buffer.readString() override fun handle(connection: PlayConnection) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt index 24a50896e..51aec361a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt @@ -18,7 +18,7 @@ import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.registries.DefaultRegistries import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.dimension.Dimension -import de.bixilon.minosoft.data.registries.dimension.DimensionType +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeEvent import de.bixilon.minosoft.data.world.biome.accessor.BlockBiomeAccessor import de.bixilon.minosoft.data.world.biome.accessor.NoiseBiomeAccessor @@ -50,7 +50,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { val entityId: Int val isHardcore: Boolean val gamemode: Gamemodes - var dimensionType: DimensionType + var dimensionProperties: DimensionProperties private set var difficulty: Difficulties = Difficulties.NORMAL private set @@ -87,7 +87,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { } if (buffer.versionId < ProtocolVersions.V_1_9_1) { - dimensionType = buffer.connection.registries.dimensionRegistry[buffer.readByte().toInt()].type + dimensionProperties = buffer.connection.registries.dimensionRegistry[buffer.readByte().toInt()].type difficulty = Difficulties[buffer.readUnsignedByte()] maxPlayers = buffer.readByte().toInt() if (buffer.versionId >= ProtocolVersions.V_13W42B) { @@ -104,14 +104,14 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { worlds = buffer.readArray { buffer.readResourceLocation() } } if (buffer.versionId < ProtocolVersions.V_20W21A) { - dimensionType = buffer.connection.registries.dimensionRegistry[buffer.readInt()].type + dimensionProperties = buffer.connection.registries.dimensionRegistry[buffer.readInt()].type } else { val dimensionCodec = buffer.readNBT().asCompound() dimensions = parseDimensionCodec(dimensionCodec, buffer.versionId) - dimensionType = if (buffer.versionId < ProtocolVersions.V_1_16_2_PRE3) { + dimensionProperties = if (buffer.versionId < ProtocolVersions.V_1_16_2_PRE3) { dimensions[buffer.readResourceLocation()]!!.type } else { - DimensionType.deserialize(buffer.readNBT().asCompound()) + DimensionProperties.deserialize(buffer.readNBT().asCompound()) } world = buffer.readResourceLocation() } @@ -158,7 +158,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { connection.world.hardcore = isHardcore connection.registries.dimensionRegistry.setData(dimensions) - connection.world.dimension = dimensionType + connection.world.dimension = dimensionProperties connection.world.entities.add(entityId, null, playerEntity) connection.world.hashedSeed = hashedSeed @@ -202,7 +202,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { } override fun log() { - Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Join game (entityId=$entityId, gamemode=$gamemode, dimensionType=$dimensionType, difficulty=$difficulty, hardcore=$isHardcore, viewDistance=$viewDistance)" } + Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Join game (entityId=$entityId, gamemode=$gamemode, dimensionType=$dimensionProperties, difficulty=$difficulty, hardcore=$isHardcore, viewDistance=$viewDistance)" } } companion object : ErrorHandler { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerEntitySpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerEntitySpawnS2CP.kt index 476b8342c..291c1fa46 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerEntitySpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerEntitySpawnS2CP.kt @@ -23,7 +23,6 @@ import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.terminal.RunConfiguration -import de.bixilon.minosoft.util.Util import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -42,7 +41,7 @@ class PlayerEntitySpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { val properties: MutableMap = mutableMapOf() if (buffer.versionId < ProtocolVersions.V_14W21A) { name = buffer.readString() - entityUUID = Util.getUUIDFromString(buffer.readString()) + entityUUID = buffer.readUUIDString() val length = buffer.readVarInt() for (i in 0 until length) { val property = PlayerProperty(buffer.readString(), buffer.readString(), buffer.readString()) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt index e4fec8670..4412a6caa 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.Difficulties import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.registries.dimension.DimensionType +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.modding.event.events.RespawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -29,7 +29,7 @@ import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound import glm_.vec3.Vec3d class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { - var dimension: DimensionType + var dimension: DimensionProperties private set var difficulty: Difficulties = Difficulties.NORMAL private set @@ -60,7 +60,7 @@ class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { buffer.connection.registries.dimensionRegistry[buffer.readResourceLocation()]!!.type } else -> { - DimensionType.deserialize(buffer.readNBT().asCompound()) // current dimension data + DimensionProperties.deserialize(buffer.readNBT().asCompound()) // current dimension data } } if (buffer.versionId < ProtocolVersions.V_19W11A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt index 51c95ccb7..983f30581 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt @@ -246,6 +246,15 @@ open class InByteBuffer { return readArray(length) { readUUID() } } + fun readUUIDString(): UUID { + return Util.getUUIDFromString(readString()) + } + + fun readUUIDStringArray(length: Int = readVarInt()): Array { + return readArray(length) { readUUIDString() } + } + + fun readJson(): Map { return JSONSerializer.MUTABLE_MAP_ADAPTER.fromJson(readString())!! } diff --git a/src/main/java/de/bixilon/minosoft/util/chunk/ChunkUtil.kt b/src/main/java/de/bixilon/minosoft/util/chunk/ChunkUtil.kt index a0b5ecd11..9127322bb 100644 --- a/src/main/java/de/bixilon/minosoft/util/chunk/ChunkUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/chunk/ChunkUtil.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.util.chunk import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.registries.blocks.BlockState -import de.bixilon.minosoft.data.registries.dimension.DimensionType +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.data.world.ChunkData import de.bixilon.minosoft.data.world.ChunkSection import de.bixilon.minosoft.data.world.biome.source.XZBiomeArray @@ -30,14 +30,14 @@ import java.util.* object ChunkUtil { - fun readChunkPacket(buffer: PlayInByteBuffer, dimension: DimensionType, sectionBitMask: BitSet, addBitMask: BitSet? = null, isFullChunk: Boolean, containsSkyLight: Boolean): ChunkData? { + fun readChunkPacket(buffer: PlayInByteBuffer, dimension: DimensionProperties, sectionBitMask: BitSet, addBitMask: BitSet? = null, isFullChunk: Boolean, containsSkyLight: Boolean): ChunkData? { if (buffer.versionId < V_15W35A) { // ToDo: was this really changed in 62? return readLegacyChunk(buffer, dimension, sectionBitMask, addBitMask, isFullChunk, containsSkyLight) } return readPaletteChunk(buffer, dimension, sectionBitMask, isFullChunk, containsSkyLight) } - private fun readLegacyChunkWithAddBitSet(buffer: PlayInByteBuffer, dimension: DimensionType, sectionBitMask: BitSet, addBitMask: BitSet, isFullChunk: Boolean, containsSkyLight: Boolean): ChunkData { + private fun readLegacyChunkWithAddBitSet(buffer: PlayInByteBuffer, dimension: DimensionProperties, sectionBitMask: BitSet, addBitMask: BitSet, isFullChunk: Boolean, containsSkyLight: Boolean): ChunkData { val chunkData = ChunkData() chunkData.lightAccessor = DummyLightAccessor // ToDo @@ -97,7 +97,7 @@ object ChunkUtil { return chunkData } - fun readLegacyChunk(buffer: PlayInByteBuffer, dimension: DimensionType, sectionBitMask: BitSet, addBitMask: BitSet? = null, isFullChunk: Boolean, containsSkyLight: Boolean = false): ChunkData? { + fun readLegacyChunk(buffer: PlayInByteBuffer, dimension: DimensionProperties, sectionBitMask: BitSet, addBitMask: BitSet? = null, isFullChunk: Boolean, containsSkyLight: Boolean = false): ChunkData? { if (sectionBitMask.length() == 0 && isFullChunk) { // unload chunk return null @@ -142,7 +142,7 @@ object ChunkUtil { return chunkData } - fun readPaletteChunk(buffer: PlayInByteBuffer, dimension: DimensionType, sectionBitMask: BitSet, isFullChunk: Boolean, containsSkyLight: Boolean = false): ChunkData { + fun readPaletteChunk(buffer: PlayInByteBuffer, dimension: DimensionProperties, sectionBitMask: BitSet, isFullChunk: Boolean, containsSkyLight: Boolean = false): ChunkData { val chunkData = ChunkData() val sectionMap: MutableMap = synchronizedMapOf() diff --git a/src/main/java/de/bixilon/minosoft/util/chunk/LightUtil.kt b/src/main/java/de/bixilon/minosoft/util/chunk/LightUtil.kt index 71b6ceaab..ed01efe13 100644 --- a/src/main/java/de/bixilon/minosoft/util/chunk/LightUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/chunk/LightUtil.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.util.chunk -import de.bixilon.minosoft.data.registries.dimension.DimensionType +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.data.world.light.ChunkLightAccessor import de.bixilon.minosoft.data.world.light.LightAccessor import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer @@ -23,7 +23,7 @@ import java.util.* object LightUtil { - fun readLightPacket(buffer: PlayInByteBuffer, skyLightMask: BitSet, blockLightMask: BitSet, dimension: DimensionType): LightAccessor { + fun readLightPacket(buffer: PlayInByteBuffer, skyLightMask: BitSet, blockLightMask: BitSet, dimension: DimensionProperties): LightAccessor { // ToDo val skyLight = if (dimension.hasSkyLight || buffer.versionId > V_1_16) { // ToDo: find out version readLightArray(buffer, skyLightMask, dimension) @@ -34,7 +34,7 @@ object LightUtil { return ChunkLightAccessor(blockLight, skyLight) } - private fun readLightArray(buffer: PlayInByteBuffer, lightMask: BitSet, dimension: DimensionType): MutableMap { + private fun readLightArray(buffer: PlayInByteBuffer, lightMask: BitSet, dimension: DimensionProperties): MutableMap { var highestSectionIndex = dimension.highestSection + 1 val lowesSectionIndex = dimension.lowestSection - 1 if (buffer.versionId >= ProtocolVersions.V_20W49A) {