From d9e1c3b97faabb48a40b65c88630dbac9c626ade Mon Sep 17 00:00:00 2001 From: Bixilon Date: Tue, 2 Nov 2021 11:25:13 +0100 Subject: [PATCH] remove move model stuff --- doc/rendering/world_renderer.md | 2 + .../data/registries/blocks/BlockState.kt | 59 +------------------ .../data/registries/blocks/types/Block.kt | 4 +- .../registries/blocks/types/FluidBlock.kt | 15 +---- .../data/registries/registries/Registries.kt | 43 ++------------ .../data/registries/tweaker/VersionTweaker.kt | 34 ----------- .../de/bixilon/minosoft/data/world/World.kt | 16 +---- .../gui/rendering/block/WorldRenderer.kt | 4 +- .../gui/hud/elements/other/DebugHUDElement.kt | 2 +- .../advanced/block/BlockDustParticle.kt | 17 +----- .../packets/s2c/play/ChunkDataS2CP.kt | 4 -- .../packets/s2c/play/MassBlockSetS2CP.kt | 11 +--- .../packets/s2c/play/MassChunkDataS2CP.kt | 6 -- 13 files changed, 20 insertions(+), 197 deletions(-) diff --git a/doc/rendering/world_renderer.md b/doc/rendering/world_renderer.md index 1516840fe..fd5bafab0 100644 --- a/doc/rendering/world_renderer.md +++ b/doc/rendering/world_renderer.md @@ -38,3 +38,5 @@ - Don't render bedrock on y == dimension::minHeight - Meshing - Greedy meshing +- Model deciding (for pre flattening versions) +- Assets manager: Create file from jar with all models inside and load models from there (make them moddable) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockState.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockState.kt index 02eb27fff..728594638 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockState.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockState.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.data.registries.blocks -import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.VoxelShape import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties @@ -22,24 +21,15 @@ import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.data.registries.sounds.SoundEvent import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.TintColorCalculator -import de.bixilon.minosoft.gui.rendering.block.models.BlockModel -import de.bixilon.minosoft.gui.rendering.block.renderable.WorldEntryRenderer -import de.bixilon.minosoft.gui.rendering.block.renderable.block.BlockRenderer -import de.bixilon.minosoft.gui.rendering.block.renderable.block.MultipartRenderer import de.bixilon.minosoft.util.KUtil.toBoolean import de.bixilon.minosoft.util.KUtil.toInt import de.bixilon.minosoft.util.KUtil.unsafeCast -import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast -import glm_.vec3.Vec3i import java.util.* -import kotlin.math.abs -import kotlin.random.Random data class BlockState( val block: Block, val properties: Map = mapOf(), - val renderers: MutableList = mutableListOf(), val tintColor: RGBColor? = null, val material: Material, val collisionShape: VoxelShape, @@ -112,50 +102,13 @@ data class BlockState( return String.format("%s%s", block.resourceLocation, out) } - fun getBlockRenderer(blockPosition: Vec3i): WorldEntryRenderer { - if (renderers.isEmpty()) { - throw IllegalArgumentException("$this has not renderer!") - } - if (renderers.size == 1 || !Minosoft.config.config.game.other.antiMoirePattern) { - return renderers[0] - } - val random = Random(getPositionSeed(blockPosition.x, blockPosition.y, blockPosition.z)) - return renderers[abs(random.nextLong().toInt() % renderers.size)] - } - companion object { - fun deserialize(block: Block, registries: Registries, data: Map, models: Map): BlockState { + fun deserialize(block: Block, registries: Registries, data: Map): BlockState { val properties = data["properties"]?.compoundCast()?.let { getProperties(it) } ?: mutableMapOf() - val renderers: MutableList = mutableListOf() - - data["render"]?.let { - when (it) { - is Collection<*> -> { - for (model in it) { - when (model) { - is Map<*, *> -> { - addBlockModel(model.asCompound(), renderers, models) - } - is Collection<*> -> { - val modelList: MutableList = mutableListOf() - for (singleModel in model) { - addBlockModel(singleModel!!.asCompound(), modelList, models) - } - renderers.add(MultipartRenderer(modelList.toList())) - } - } - } - } - is Map<*, *> -> { - addBlockModel(it.asCompound(), renderers, models) - } - else -> error("Not a render json!") - } - } val tintColor: RGBColor? = data["tint_color"]?.toInt()?.let { TintColorCalculator.getJsonColor(it) } ?: block.tintColor @@ -181,15 +134,10 @@ data class BlockState( val occlusionShape = data["occlusion_shapes"]?.asShape() ?: VoxelShape.EMPTY val outlineShape = data["outline_shape"]?.asShape() ?: VoxelShape.EMPTY - block.renderOverride?.let { - renderers.clear() - renderers.addAll(it) - } return BlockState( block = block, properties = properties.toMap(), - renderers = renderers, tintColor = tintColor, material = material, collisionShape = collisionShape, @@ -229,11 +177,6 @@ data class BlockState( } return properties } - - private fun addBlockModel(data: Map, renderer: MutableList, models: Map) { - val model = models[ResourceLocation(data["model"].unsafeCast())] ?: error("Can not find block model ${data["model"]}") - renderer.add(BlockRenderer(data, model)) - } } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/Block.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/Block.kt index 10ec3c61d..80d5b8de4 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/Block.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/Block.kt @@ -30,7 +30,6 @@ import de.bixilon.minosoft.data.registries.registries.registry.RegistryItem import de.bixilon.minosoft.data.registries.registries.registry.ResourceLocationDeserializer import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.TintColorCalculator -import de.bixilon.minosoft.gui.rendering.block.renderable.WorldEntryRenderer import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -52,7 +51,6 @@ open class Block( open val tintColor: RGBColor? = data["tint_color"]?.toInt()?.let { TintColorCalculator.getJsonColor(it) } open val randomOffsetType: RandomOffsetTypes? = data["offset_type"].nullCast()?.let { RandomOffsetTypes[it] } open val tint: ResourceLocation? = data["tint"].nullCast()?.let { ResourceLocation(it) } - open val renderOverride: List? = null open var blockEntityType: BlockEntityType? = null protected set @@ -130,7 +128,7 @@ open class Block( val states: MutableSet = mutableSetOf() for ((stateId, stateJson) in data["states"]?.mapCast()!!) { check(stateJson is Map<*, *>) { "Not a state element!" } - val state = BlockState.deserialize(block, registries, stateJson.asCompound(), registries.models) + val state = BlockState.deserialize(block, registries, stateJson.asCompound()) registries.blockStateRegistry[stateId.toInt()] = state states.add(state) for ((property, value) in state.properties) { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt index 699e3e219..3bee4229d 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt @@ -20,8 +20,6 @@ import de.bixilon.minosoft.data.registries.blocks.BlockFactory import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.fluid.Fluid import de.bixilon.minosoft.data.registries.registries.Registries -import de.bixilon.minosoft.gui.rendering.block.renderable.WorldEntryRenderer -import de.bixilon.minosoft.gui.rendering.block.renderable.fluid.FluidRenderer import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3 @@ -31,24 +29,13 @@ import kotlin.random.Random open class FluidBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map) : Block(resourceLocation, registries, data) { open val fluid: Fluid = registries.fluidRegistry[data["still_fluid"]]!! - val fluidRenderer: FluidRenderer - - override val renderOverride: List - - init { - let { - fluidRenderer = FluidRenderer(it, fluid) - renderOverride = listOf(fluidRenderer) - } - } - override fun getOutlineShape(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i): VoxelShape { return VoxelShape(mutableListOf(AABB(Vec3.EMPTY, Vec3(1.0f, fluid.getHeight(blockState), 1.0f)))) } override fun randomTick(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i, random: Random) { super.randomTick(connection, blockState, blockPosition, random) - // ToDO + // ToDo fluid.randomTick(connection, blockState, blockPosition, random) } 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 e3a025747..7bc0742e6 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 @@ -16,7 +16,10 @@ import de.bixilon.minosoft.data.entities.EntityMetaDataFields import de.bixilon.minosoft.data.entities.block.BlockEntityMetaType import de.bixilon.minosoft.data.entities.meta.EntityMetaData import de.bixilon.minosoft.data.inventory.InventorySlots -import de.bixilon.minosoft.data.registries.* +import de.bixilon.minosoft.data.registries.AABB +import de.bixilon.minosoft.data.registries.DefaultRegistries +import de.bixilon.minosoft.data.registries.Motive +import de.bixilon.minosoft.data.registries.VoxelShape import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.registries.biomes.BiomeCategory import de.bixilon.minosoft.data.registries.biomes.BiomePrecipitation @@ -40,7 +43,6 @@ import de.bixilon.minosoft.data.registries.registries.registry.* import de.bixilon.minosoft.data.registries.sounds.SoundEvent import de.bixilon.minosoft.data.registries.statistics.Statistic import de.bixilon.minosoft.data.registries.versions.Version -import de.bixilon.minosoft.gui.rendering.block.models.BlockModel import de.bixilon.minosoft.protocol.packets.c2s.play.EntityActionC2SP import de.bixilon.minosoft.protocol.packets.s2c.play.EntityAnimationS2CP import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleS2CF @@ -49,8 +51,6 @@ import de.bixilon.minosoft.util.KUtil.mapCast import de.bixilon.minosoft.util.KUtil.nullCast import de.bixilon.minosoft.util.KUtil.unsafeCast import de.bixilon.minosoft.util.collections.Clearable -import de.bixilon.minosoft.util.json.ResourceLocationJsonMap.toResourceLocationMap -import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast import java.lang.reflect.Field import java.lang.reflect.ParameterizedType @@ -101,9 +101,6 @@ class Registries { val containerTypeRegistry: Registry = Registry() val gameEventRegistry: Registry = Registry() - internal val models: MutableMap = mutableMapOf() - - var isFullyLoaded = false private set @@ -137,8 +134,6 @@ class Registries { // pre init stuff loadShapes(pixlyzerData["shapes"]?.compoundCast()) - loadBlockModels(pixlyzerData["models"]?.mapCast()?.toResourceLocationMap() ?: mutableMapOf()) - // enums loadEnumRegistry(version, pixlyzerData["equipment_slots"], equipmentSlotRegistry, DefaultRegistries.EQUIPMENT_SLOTS_REGISTRY) loadEnumRegistry(version, pixlyzerData["hand_equipment_slots"], handEquipmentSlotRegistry, DefaultRegistries.HAND_EQUIPMENT_SLOTS_REGISTRY) @@ -210,36 +205,6 @@ class Registries { return aabbs } - private fun loadBlockModels(data: Map) { - for ((resourceLocation, model) in data) { - if (models.containsKey(resourceLocation)) { - continue - } - loadBlockModel(resourceLocation, model.asCompound(), data) - } - } - - private fun loadBlockModel(resourceLocation: ResourceLocation, modelData: Map, fullModelData: Map): BlockModel { - var model = models[resourceLocation] - model?.let { - return it - } - var parent: BlockModel? = null - modelData["parent"].nullCast()?.let { - val parentResourceLocation = ResourceLocation(it) - if (parentResourceLocation.path.startsWith("builtin/")) { - // ToDo - return@let - } - - parent = loadBlockModel(parentResourceLocation, fullModelData[parentResourceLocation]!!.asCompound(), fullModelData) - } - model = BlockModel(parent, modelData) - - models[resourceLocation] = model - return model - } - fun clear() { for (field in this::class.java.fields) { if (!field.type.isAssignableFrom(Clearable::class.java)) { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/tweaker/VersionTweaker.kt b/src/main/java/de/bixilon/minosoft/data/registries/tweaker/VersionTweaker.kt index a3af8f62a..91d25d5ca 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/tweaker/VersionTweaker.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/tweaker/VersionTweaker.kt @@ -20,8 +20,6 @@ import de.bixilon.minosoft.data.entities.entities.vehicle.* import de.bixilon.minosoft.data.entities.meta.EntityMetaData import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.world.ChunkSection -import de.bixilon.minosoft.data.world.ChunkSection.Companion.indexPosition -import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import glm_.vec3.Vec3i @@ -88,38 +86,6 @@ object VersionTweaker { return fakeClass } - @JvmStatic - fun transformSections(sections: Map, versionId: Int) { - // some blocks need to be tweaked. eg. Grass with a snow block on top becomes snowy grass block - if (versionId >= ProtocolDefinition.FLATTING_VERSION_ID) { - return - } - for ((sectionHeight, section) in sections) { - for ((index, blockState) in section.blocks.withIndex()) { - if (blockState == null) { - continue - } - val location = index.indexPosition - val newBlock = transformBlock(blockState, sections, location, sectionHeight) - if (newBlock === blockState) { - continue - } - if (newBlock == null) { - section.setBlockState(location, null) - continue - } - section.setBlockState(location, newBlock) - } - } - } - - - @JvmStatic - fun transformBlock(originalBlock: BlockState?, sections: Map, inChunkSectionPositions: Vec3i, sectionHeight: Int): BlockState? { - // ToDo: Broken - return originalBlock - } - private fun getBlockAbove(sections: Map, inChunkSectionPositions: Vec3i, sectionHeight: Int): BlockState? { return sections[sectionHeight]?.getBlockState(inChunkSectionPositions) } 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 2d41ebcff..3077083cb 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/World.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/World.kt @@ -21,7 +21,6 @@ import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock 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 import de.bixilon.minosoft.data.world.biome.accessor.NullBiomeAccessor import de.bixilon.minosoft.data.world.light.WorldLightAccessor @@ -31,10 +30,8 @@ import de.bixilon.minosoft.gui.rendering.sound.AudioPlayer import de.bixilon.minosoft.gui.rendering.util.VecUtil.blockPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.inChunkPosition -import de.bixilon.minosoft.gui.rendering.util.VecUtil.inChunkSectionPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.minus import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus -import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.BlockSetEvent import de.bixilon.minosoft.modding.event.events.ChunkUnloadEvent @@ -98,25 +95,18 @@ class World( operator fun set(blockPosition: Vec3i, blockState: BlockState?) { val chunkPosition = blockPosition.chunkPosition chunks[chunkPosition]?.let { - val sections = it.sections ?: return - - val transformedBlockState = if (connection.version.isFlattened()) { - blockState - } else { - VersionTweaker.transformBlock(blockState, sections, blockPosition.inChunkSectionPosition, blockPosition.sectionHeight) - } val inChunkPosition = blockPosition.inChunkPosition val previousBlock = it[inChunkPosition] - if (previousBlock == transformedBlockState) { + if (previousBlock == blockState) { return } previousBlock?.block?.onBreak(connection, blockPosition, previousBlock, it.getBlockEntity(inChunkPosition)) blockState?.block?.onPlace(connection, blockPosition, blockState) - it[inChunkPosition] = transformedBlockState + it[inChunkPosition] = blockState connection.fireEvent(BlockSetEvent( connection = connection, blockPosition = blockPosition, - blockState = transformedBlockState, + blockState = blockState, )) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt index 2efc82a0d..bbf5bdd3e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt @@ -20,14 +20,16 @@ import de.bixilon.minosoft.data.world.World import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.Renderer import de.bixilon.minosoft.gui.rendering.RendererBuilder +import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec2.Vec2i class WorldRenderer( private val connection: PlayConnection, - val renderWindow: RenderWindow, + override val renderWindow: RenderWindow, ) : Renderer { + override val renderSystem: RenderSystem = renderWindow.renderSystem private val world: World = connection.world diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt index ab3c1dcfb..59d00a2c3 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt @@ -87,7 +87,7 @@ class DebugHUDElement(hudRenderer: HUDRenderer) : LayoutedHUDElement layout += TextElement(hudRenderer, TextComponent(RunConfiguration.VERSION_STRING, ChatColors.RED)) layout += AutoTextElement(hudRenderer, 1) { "FPS ${renderWindow.renderStats.smoothAvgFPS.round10}" } renderWindow[WorldRenderer]?.apply { - layout += AutoTextElement(hudRenderer, 1) { "C v=${visibleChunks.size}, p=${allChunkSections.size}, q=${queuedChunks.size}, t=${connection.world.chunks.size}" } + // ToDo: layout += AutoTextElement(hudRenderer, 1) { "C v=${visibleChunks.size}, p=${allChunkSections.size}, q=${queuedChunks.size}, t=${connection.world.chunks.size}" } } layout += AutoTextElement(hudRenderer, 1) { "E t=${connection.world.entities.size}" } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt index 045e555b3..befb657ad 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt @@ -19,10 +19,6 @@ import de.bixilon.minosoft.data.registries.particle.data.BlockParticleData import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.data.text.RGBColor.Companion.asGray -import de.bixilon.minosoft.gui.rendering.block.renderable.WorldEntryRenderer -import de.bixilon.minosoft.gui.rendering.block.renderable.block.BlockRenderer -import de.bixilon.minosoft.gui.rendering.block.renderable.block.MultipartRenderer -import de.bixilon.minosoft.gui.rendering.block.renderable.fluid.FluidRenderer import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.advanced.AdvancedTextureParticle import de.bixilon.minosoft.gui.rendering.util.VecUtil.blockPosition @@ -35,17 +31,8 @@ class BlockDustParticle(connection: PlayConnection, position: Vec3d, velocity: V init { val blockPosition = position.blockPosition - var renderer: WorldEntryRenderer? = data.blockState!!.getBlockRenderer(blockPosition) - - if (renderer is MultipartRenderer) { - renderer = renderer.models.getOrNull(0) - } - - texture = when (renderer) { - is BlockRenderer -> renderer.textureMapping.iterator().next().value // ToDo: If this is empty the rendering crashes - is FluidRenderer -> renderer.stillTexture // ToDo - else -> TODO() - } + check(data.blockState != null) + // ToDo: Texture gravityStrength = 1.0f color = 0.6f.asGray() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChunkDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChunkDataS2CP.kt index f32122a3a..f70a7f5ed 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChunkDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChunkDataS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.entities.block.BlockEntity import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.registries.tweaker.VersionTweaker import de.bixilon.minosoft.data.world.ChunkData import de.bixilon.minosoft.data.world.biome.source.SpatialBiomeArray import de.bixilon.minosoft.datafixer.BlockEntityFixer.fix @@ -124,9 +123,6 @@ class ChunkDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { } override fun handle(connection: PlayConnection) { - chunkData?.blocks?.let { - VersionTweaker.transformSections(it, connection.version.versionId) - } chunkData?.let { val chunk = connection.world.getOrCreateChunk(chunkPosition) chunk.setData(chunkData!!) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassBlockSetS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassBlockSetS2CP.kt index 436180728..123f13e52 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassBlockSetS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassBlockSetS2CP.kt @@ -14,9 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.registries.blocks.BlockState -import de.bixilon.minosoft.data.registries.tweaker.VersionTweaker -import de.bixilon.minosoft.gui.rendering.util.VecUtil.inChunkSectionPosition -import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight import de.bixilon.minosoft.modding.event.events.MassBlockSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket @@ -88,12 +85,8 @@ class MassBlockSetS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { // tweak if (!connection.version.isFlattened()) { - for ((key, value) in blocks) { - val block = VersionTweaker.transformBlock(value, chunk.sections!!, key.inChunkSectionPosition, key.sectionHeight) - if (block === value) { - continue - } - chunk[key] = block + for ((position, blockState) in blocks) { + chunk[position] = blockState } } connection.fireEvent(MassBlockSetEvent(connection, this)) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassChunkDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassChunkDataS2CP.kt index 44c375002..66894cf13 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassChunkDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MassChunkDataS2CP.kt @@ -13,10 +13,8 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.Minosoft -import de.bixilon.minosoft.data.registries.tweaker.VersionTweaker import de.bixilon.minosoft.data.world.ChunkData import de.bixilon.minosoft.modding.event.EventInitiators - import de.bixilon.minosoft.modding.event.events.ChunkDataChangeEvent import de.bixilon.minosoft.modding.event.events.ChunkUnloadEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -73,10 +71,6 @@ class MassChunkDataS2CP() : PlayS2CPacket() { override fun handle(connection: PlayConnection) { // transform data for ((chunkPosition, data) in data) { - data?.blocks?.let { - VersionTweaker.transformSections(it, connection.version.versionId) - } - data?.let { val chunk = connection.world.getOrCreateChunk(chunkPosition) chunk.setData(data)