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
new file mode 100644
index 000000000..3cbdee992
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/data/registries/dimension/Dimension.kt
@@ -0,0 +1,37 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020 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.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+package de.bixilon.minosoft.data.registries.dimension
+
+import de.bixilon.minosoft.data.registries.ResourceLocation
+import de.bixilon.minosoft.data.registries.registries.Registries
+import de.bixilon.minosoft.data.registries.registries.registry.RegistryItem
+import de.bixilon.minosoft.data.registries.registries.registry.ResourceLocationDeserializer
+
+data class Dimension(
+ override val resourceLocation: ResourceLocation,
+ val type: DimensionType,
+) : RegistryItem() {
+
+ override fun toString(): String {
+ return resourceLocation.full
+ }
+
+ companion object : ResourceLocationDeserializer {
+ override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map): Dimension {
+ return Dimension(
+ resourceLocation = resourceLocation,
+ type = DimensionType.deserialize(data)
+ )
+ }
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/data/registries/Dimension.kt b/src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionType.kt
similarity index 58%
rename from src/main/java/de/bixilon/minosoft/data/registries/Dimension.kt
rename to src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionType.kt
index aa7b83bd3..2129d32f3 100644
--- a/src/main/java/de/bixilon/minosoft/data/registries/Dimension.kt
+++ b/src/main/java/de/bixilon/minosoft/data/registries/dimension/DimensionType.kt
@@ -1,21 +1,7 @@
-/*
- * Minosoft
- * Copyright (C) 2020 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.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with this program. If not, see .
- *
- * This software is not affiliated with Mojang AB, the original developer of Minecraft.
- */
-package de.bixilon.minosoft.data.registries
+package de.bixilon.minosoft.data.registries.dimension
-import de.bixilon.minosoft.data.registries.registries.Registries
-import de.bixilon.minosoft.data.registries.registries.registry.RegistryItem
-import de.bixilon.minosoft.data.registries.registries.registry.ResourceLocationDeserializer
-import de.bixilon.minosoft.gui.rendering.util.VecUtil.lerp
+import de.bixilon.minosoft.data.registries.ResourceLocation
+import de.bixilon.minosoft.gui.rendering.util.VecUtil
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import de.bixilon.minosoft.util.KUtil.nullCast
import de.bixilon.minosoft.util.KUtil.toBoolean
@@ -23,8 +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 Dimension(
- override val resourceLocation: ResourceLocation,
+data class DimensionType(
val piglinSafe: Boolean = false,
val natural: Boolean = true,
val ambientLight: Float = 0.0f,
@@ -32,7 +17,7 @@ data class Dimension(
val respawnAnchorWorks: Boolean = false,
val hasSkyLight: Boolean = true,
val bedWorks: Boolean = true,
- val effects: ResourceLocation = ResourceLocation("overworld"),
+ val skyProperties: ResourceLocation = ResourceLocation("overworld"),
val hasRaids: Boolean = true,
val logicalHeight: Int = 256,
val coordinateScale: Double = 0.0,
@@ -41,7 +26,7 @@ data class Dimension(
val ultraWarm: Boolean = false,
val height: Int = 256,
val supports3DBiomes: Boolean = true,
-) : RegistryItem() {
+) {
val lowestSection = if (minY < 0) {
(minY + 1) / ProtocolDefinition.SECTION_HEIGHT_Y - 1
} else {
@@ -60,19 +45,14 @@ data class Dimension(
for (i in lightLevels.indices) {
val asFloat = i / 15.0f
- lightLevels[i] = lerp(ambientLight, asFloat / (4.0f - 3.0f * asFloat), 1.0f)
+ lightLevels[i] = VecUtil.lerp(ambientLight, asFloat / (4.0f - 3.0f * asFloat), 1.0f)
}
}
- override fun toString(): String {
- return resourceLocation.full
- }
-
- companion object : ResourceLocationDeserializer {
- override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map): Dimension {
- return Dimension(
- resourceLocation = resourceLocation,
+ companion object {
+ fun deserialize(data: Map): DimensionType {
+ return DimensionType(
piglinSafe = data["piglin_safe"]?.toBoolean() ?: false,
natural = data["natural"]?.toBoolean() ?: false,
ambientLight = data["ambient_light"]?.unsafeCast() ?: 0.0f,
@@ -80,7 +60,7 @@ data class Dimension(
respawnAnchorWorks = data["respawn_anchor_works"]?.toBoolean() ?: false,
hasSkyLight = data["has_skylight", "has_sky_light"]?.toBoolean() ?: false,
bedWorks = data["bed_works"]?.toBoolean() ?: false,
- effects = ResourceLocation(data["effects"].nullCast() ?: "overworld"),
+ skyProperties = ResourceLocation(data["effects"].nullCast() ?: "overworld"),
hasRaids = data["has_raids"]?.toBoolean() ?: false,
logicalHeight = data["logical_height"]?.toInt() ?: 256,
coordinateScale = data["coordinate_scale"].nullCast() ?: 0.0,
diff --git a/src/main/java/de/bixilon/minosoft/data/registries/items/Item.kt b/src/main/java/de/bixilon/minosoft/data/registries/items/Item.kt
index ab3a535ea..3e2f369ff 100644
--- a/src/main/java/de/bixilon/minosoft/data/registries/items/Item.kt
+++ b/src/main/java/de/bixilon/minosoft/data/registries/items/Item.kt
@@ -114,7 +114,7 @@ open class Item(
"PowderSnowBucketItem" -> PowderSnowBucketItem(resourceLocation, registries, data)
"SnowballItem" -> SnowballItem(resourceLocation, registries, data)
"MilkBucketItem" -> MilkBucketItem(resourceLocation, registries, data)
- "EntityBucketItem" -> EntityBucketItem(resourceLocation, registries, data)
+ "FishBucketItem", "EntityBucketItem" -> EntityBucketItem(resourceLocation, registries, data)
"BookItem" -> BookItem(resourceLocation, registries, data)
"EggItem" -> EggItem(resourceLocation, registries, data)
"CompassItem" -> CompassItem(resourceLocation, registries, data)
diff --git a/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt b/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt
index 879af0068..e3a025747 100644
--- a/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt
+++ b/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.data.registries.biomes.BiomePrecipitation
import de.bixilon.minosoft.data.registries.blocks.entites.BlockEntityType
import de.bixilon.minosoft.data.registries.blocks.entites.BlockEntityTypeRegistry
import de.bixilon.minosoft.data.registries.blocks.types.Block
+import de.bixilon.minosoft.data.registries.dimension.Dimension
import de.bixilon.minosoft.data.registries.effects.StatusEffect
import de.bixilon.minosoft.data.registries.enchantment.Enchantment
import de.bixilon.minosoft.data.registries.entities.EntityType
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 ae0f28ae2..a6013d750 100644
--- a/src/main/java/de/bixilon/minosoft/data/world/World.kt
+++ b/src/main/java/de/bixilon/minosoft/data/world/World.kt
@@ -15,11 +15,11 @@ package de.bixilon.minosoft.data.world
import de.bixilon.minosoft.data.Difficulties
import de.bixilon.minosoft.data.entities.block.BlockEntity
import de.bixilon.minosoft.data.registries.AABB
-import de.bixilon.minosoft.data.registries.Dimension
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.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: Dimension? = null
+ var dimension: DimensionType? = null
var difficulty: Difficulties? = null
var difficultyLocked = false
val worldLightAccessor = WorldLightAccessor(this)
diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/DebugHUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/DebugHUDElement.kt
index 8def06105..4fe47eb6f 100644
--- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/DebugHUDElement.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/DebugHUDElement.kt
@@ -261,7 +261,7 @@ class DebugHUDElement(hudRenderer: HUDRenderer) : HUDElement(hudRend
}
clear()
- this@DebugWorldInfo += AutoTextElement(hudRenderer, 1) { BaseComponent("Dimension ", connection.world.dimension?.resourceLocation) }
+ this@DebugWorldInfo += AutoTextElement(hudRenderer, 1) { BaseComponent("Sky properties ", connection.world.dimension?.skyProperties) }
this@DebugWorldInfo += AutoTextElement(hudRenderer, 1) { BaseComponent("Biome ", connection.world.getBiome(blockPosition)) }
this@DebugWorldInfo += AutoTextElement(hudRenderer, 1) { with(connection.world.worldLightAccessor) { BaseComponent("Light block=", getBlockLight(blockPosition), ", sky=", getSkyLight(blockPosition)) } }
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 fd72257e0..0261c61e1 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,27 +15,28 @@ 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;
+import de.bixilon.minosoft.data.registries.dimension.DimensionType;
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;
+@Deprecated
public class RespawnEvent extends PlayConnectionEvent {
private final Gamemodes gamemode;
- private final Dimension dimension;
+ private final DimensionType dimensionType;
private final Difficulties difficulty;
- public RespawnEvent(PlayConnection connection, Gamemodes gamemode, Dimension dimension, Difficulties difficulty) {
+ public RespawnEvent(PlayConnection connection, Gamemodes gamemode, DimensionType dimensionType, Difficulties difficulty) {
super(connection);
this.gamemode = gamemode;
- this.dimension = dimension;
+ this.dimensionType = dimensionType;
this.difficulty = difficulty;
}
public RespawnEvent(PlayConnection connection, RespawnS2CP pkg) {
super(connection);
this.gamemode = pkg.getGamemode();
- this.dimension = pkg.getDimension();
+ this.dimensionType = pkg.getDimension();
this.difficulty = pkg.getDifficulty();
}
@@ -43,8 +44,8 @@ public class RespawnEvent extends PlayConnectionEvent {
return this.gamemode;
}
- public Dimension getDimension() {
- return this.dimension;
+ public DimensionType getDimensionType() {
+ return this.dimensionType;
}
public Difficulties getDifficulty() {
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java b/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java
index 1b9888f80..b61116a27 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/socket/BlockingSocketNetwork.java
@@ -128,6 +128,7 @@ public class BlockingSocketNetwork extends Network {
socketSendThread.interrupt();
}
if (exception instanceof SocketException && exception.getMessage().equals("Socket closed")) {
+ Log.log(LogMessageType.NETWORK_STATUS, LogLevels.INFO, "Socket closed, disconnecting...");
this.connection.setProtocolState(ProtocolStates.DISCONNECTED);
return;
}
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 a5a338ae9..260ebdc94 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
@@ -16,8 +16,9 @@ import com.google.common.collect.HashBiMap
import de.bixilon.minosoft.data.Difficulties
import de.bixilon.minosoft.data.abilities.Gamemodes
import de.bixilon.minosoft.data.registries.DefaultRegistries
-import de.bixilon.minosoft.data.registries.Dimension
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.world.biome.accessor.BlockBiomeAccessor
import de.bixilon.minosoft.data.world.biome.accessor.NoiseBiomeAccessor
import de.bixilon.minosoft.modding.channels.DefaultPluginChannels
@@ -47,7 +48,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
val entityId: Int
val isHardcore: Boolean
val gamemode: Gamemodes
- var dimension: Dimension
+ var dimensionType: DimensionType
private set
var difficulty: Difficulties = Difficulties.NORMAL
private set
@@ -65,6 +66,10 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
private set
var dimensions: HashBiMap = HashBiMap.create()
private set
+ var worlds: Array? = null
+ private set
+ var world: ResourceLocation? = null
+ private set
init {
entityId = buffer.readInt()
@@ -80,7 +85,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
if (buffer.versionId < ProtocolVersions.V_1_9_1) {
- dimension = buffer.connection.registries.dimensionRegistry[buffer.readByte().toInt()]
+ dimensionType = buffer.connection.registries.dimensionRegistry[buffer.readByte().toInt()].type
difficulty = Difficulties[buffer.readUnsignedByte()]
maxPlayers = buffer.readByte().toInt()
if (buffer.versionId >= ProtocolVersions.V_13W42B) {
@@ -94,20 +99,19 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
buffer.readByte() // previous game mode
}
if (buffer.versionId >= ProtocolVersions.V_20W22A) {
- buffer.readStringArray() // dimensions
+ worlds = buffer.readArray { buffer.readResourceLocation() }
}
if (buffer.versionId < ProtocolVersions.V_20W21A) {
- dimension = buffer.connection.registries.dimensionRegistry[buffer.readInt()]
+ dimensionType = buffer.connection.registries.dimensionRegistry[buffer.readInt()].type
} else {
val dimensionCodec = buffer.readNBT().asCompound()
dimensions = parseDimensionCodec(dimensionCodec, buffer.versionId)
- if (buffer.versionId < ProtocolVersions.V_1_16_2_PRE3) {
- dimension = dimensions[buffer.readResourceLocation()]!!
+ dimensionType = if (buffer.versionId < ProtocolVersions.V_1_16_2_PRE3) {
+ dimensions[buffer.readResourceLocation()]!!.type
} else {
- buffer.readNBT()!!.compoundCast() // dimension tag
+ DimensionType.deserialize(buffer.readNBT().asCompound())
}
- val currentDimension = buffer.readResourceLocation()
- dimension = dimensions[currentDimension] ?: buffer.connection.registries.dimensionRegistry[currentDimension]!!
+ world = buffer.readResourceLocation()
}
if (buffer.versionId >= ProtocolVersions.V_19W36A) {
@@ -146,7 +150,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
connection.world.hardcore = isHardcore
connection.registries.dimensionRegistry.setData(dimensions)
- connection.world.dimension = dimension
+ connection.world.dimension = dimensionType
connection.world.entities.add(entityId, null, playerEntity)
connection.world.hashedSeed = hashedSeed
@@ -178,7 +182,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
"key"
} else {
"name"
- }].unsafeCast())
+ }].unsafeCast())
val dimensionPropertyTag = if (versionId < ProtocolVersions.V_1_16_PRE3 || versionId >= ProtocolVersions.V_1_16_2_PRE1) {
tag["element"].asCompound()
} else {
@@ -190,7 +194,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
- Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Join game (entityId=$entityId, gamemode=$gamemode, dimension=$dimension, difficulty=$difficulty, hardcore=$isHardcore, viewDistance=$viewDistance)" }
+ Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Join game (entityId=$entityId, gamemode=$gamemode, dimensionType=$dimensionType, difficulty=$difficulty, hardcore=$isHardcore, viewDistance=$viewDistance)" }
}
companion object : ErrorHandler {
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 509746bf2..c3a24c0c4 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
@@ -14,7 +14,8 @@ 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.Dimension
+import de.bixilon.minosoft.data.registries.ResourceLocation
+import de.bixilon.minosoft.data.registries.dimension.DimensionType
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
@@ -24,11 +25,11 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels
import de.bixilon.minosoft.util.logging.LogMessageType
-import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
+import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound
import glm_.vec3.Vec3d
class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
- lateinit var dimension: Dimension
+ lateinit var dimension: DimensionType
private set
var difficulty: Difficulties = Difficulties.NORMAL
private set
@@ -43,6 +44,8 @@ class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
private set
var copyMetaData = false
private set
+ var world: ResourceLocation? = null
+ private set
init {
when {
@@ -51,20 +54,20 @@ class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
buffer.readByte().toInt()
} else {
buffer.readInt()
- }]
+ }].type
}
buffer.versionId < ProtocolVersions.V_1_16_2_PRE3 -> {
- dimension = buffer.connection.registries.dimensionRegistry[buffer.readResourceLocation()]!!
+ dimension = buffer.connection.registries.dimensionRegistry[buffer.readResourceLocation()]!!.type
}
else -> {
- buffer.readNBT()?.compoundCast() // current dimension data
+ dimension = DimensionType.deserialize(buffer.readNBT().asCompound()) // current dimension data
}
}
if (buffer.versionId < ProtocolVersions.V_19W11A) {
difficulty = Difficulties[buffer.readUnsignedByte()]
}
if (buffer.versionId >= ProtocolVersions.V_20W22A) {
- dimension = buffer.connection.registries.dimensionRegistry[buffer.readResourceLocation()]!!
+ world = buffer.readResourceLocation()
}
if (buffer.versionId >= ProtocolVersions.V_19W36A) {
hashedSeed = buffer.readLong()
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusPongS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusPongS2CP.kt
index 55a4dc39c..75537932d 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusPongS2CP.kt
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusPongS2CP.kt
@@ -29,7 +29,7 @@ class StatusPongS2CP(buffer: InByteBuffer) : StatusS2CPacket() {
val pingQuery = connection.pingQuery ?: return
if (pingQuery.pingId != pingId) {
Log.log(LogMessageType.NETWORK_PACKETS_IN, LogLevels.WARN) { "Unknown status pong (pingId=$pingId, expected=${pingQuery.pingId})" }
- return
+ // return ToDo: feather-rs is sending a wrong ping id back
}
val latency = System.currentTimeMillis() - pingQuery.time
connection.disconnect()
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 fe78ca083..a0b5ecd11 100644
--- a/src/main/java/de/bixilon/minosoft/util/chunk/ChunkUtil.kt
+++ b/src/main/java/de/bixilon/minosoft/util/chunk/ChunkUtil.kt
@@ -13,9 +13,9 @@
package de.bixilon.minosoft.util.chunk
-import de.bixilon.minosoft.data.registries.Dimension
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.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: Dimension, sectionBitMask: BitSet, addBitMask: BitSet? = null, isFullChunk: Boolean, containsSkyLight: Boolean): ChunkData? {
+ fun readChunkPacket(buffer: PlayInByteBuffer, dimension: DimensionType, 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: Dimension, sectionBitMask: BitSet, addBitMask: BitSet, isFullChunk: Boolean, containsSkyLight: Boolean): ChunkData {
+ private fun readLegacyChunkWithAddBitSet(buffer: PlayInByteBuffer, dimension: DimensionType, 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: Dimension, sectionBitMask: BitSet, addBitMask: BitSet? = null, isFullChunk: Boolean, containsSkyLight: Boolean = false): ChunkData? {
+ fun readLegacyChunk(buffer: PlayInByteBuffer, dimension: DimensionType, 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: Dimension, sectionBitMask: BitSet, isFullChunk: Boolean, containsSkyLight: Boolean = false): ChunkData {
+ fun readPaletteChunk(buffer: PlayInByteBuffer, dimension: DimensionType, 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 233ef6b28..71b6ceaab 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
+import de.bixilon.minosoft.data.registries.dimension.DimensionType
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: Dimension): LightAccessor {
+ fun readLightPacket(buffer: PlayInByteBuffer, skyLightMask: BitSet, blockLightMask: BitSet, dimension: DimensionType): 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: Dimension): MutableMap {
+ private fun readLightArray(buffer: PlayInByteBuffer, lightMask: BitSet, dimension: DimensionType): MutableMap {
var highestSectionIndex = dimension.highestSection + 1
val lowesSectionIndex = dimension.lowestSection - 1
if (buffer.versionId >= ProtocolVersions.V_20W49A) {