mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-11 08:27:29 -04:00
remove move model stuff
This commit is contained in:
parent
a228c4f412
commit
d9e1c3b97f
@ -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)
|
||||
|
@ -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<BlockProperties, Any> = mapOf(),
|
||||
val renderers: MutableList<WorldEntryRenderer> = 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<String, Any>, models: Map<ResourceLocation, BlockModel>): BlockState {
|
||||
fun deserialize(block: Block, registries: Registries, data: Map<String, Any>): BlockState {
|
||||
val properties = data["properties"]?.compoundCast()?.let {
|
||||
getProperties(it)
|
||||
} ?: mutableMapOf()
|
||||
|
||||
val renderers: MutableList<WorldEntryRenderer> = 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<WorldEntryRenderer> = 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<String, Any>, renderer: MutableList<WorldEntryRenderer>, models: Map<ResourceLocation, BlockModel>) {
|
||||
val model = models[ResourceLocation(data["model"].unsafeCast())] ?: error("Can not find block model ${data["model"]}")
|
||||
renderer.add(BlockRenderer(data, model))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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<String>()?.let { RandomOffsetTypes[it] }
|
||||
open val tint: ResourceLocation? = data["tint"].nullCast<String>()?.let { ResourceLocation(it) }
|
||||
open val renderOverride: List<WorldEntryRenderer>? = null
|
||||
open var blockEntityType: BlockEntityType? = null
|
||||
protected set
|
||||
|
||||
@ -130,7 +128,7 @@ open class Block(
|
||||
val states: MutableSet<BlockState> = 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) {
|
||||
|
@ -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<String, Any>) : Block(resourceLocation, registries, data) {
|
||||
open val fluid: Fluid = registries.fluidRegistry[data["still_fluid"]]!!
|
||||
|
||||
val fluidRenderer: FluidRenderer
|
||||
|
||||
override val renderOverride: List<WorldEntryRenderer>
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
@ -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<ContainerType> = Registry()
|
||||
val gameEventRegistry: Registry<GameEvent> = Registry()
|
||||
|
||||
internal val models: MutableMap<ResourceLocation, BlockModel> = 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<ResourceLocation, Any>) {
|
||||
for ((resourceLocation, model) in data) {
|
||||
if (models.containsKey(resourceLocation)) {
|
||||
continue
|
||||
}
|
||||
loadBlockModel(resourceLocation, model.asCompound(), data)
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadBlockModel(resourceLocation: ResourceLocation, modelData: Map<String, Any>, fullModelData: Map<ResourceLocation, Any>): BlockModel {
|
||||
var model = models[resourceLocation]
|
||||
model?.let {
|
||||
return it
|
||||
}
|
||||
var parent: BlockModel? = null
|
||||
modelData["parent"].nullCast<String>()?.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)) {
|
||||
|
@ -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<Int, ChunkSection>, 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<Int, ChunkSection>, inChunkSectionPositions: Vec3i, sectionHeight: Int): BlockState? {
|
||||
// ToDo: Broken
|
||||
return originalBlock
|
||||
}
|
||||
|
||||
private fun getBlockAbove(sections: Map<Int, ChunkSection>, inChunkSectionPositions: Vec3i, sectionHeight: Int): BlockState? {
|
||||
return sections[sectionHeight]?.getBlockState(inChunkSectionPositions)
|
||||
}
|
||||
|
@ -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,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -87,7 +87,7 @@ class DebugHUDElement(hudRenderer: HUDRenderer) : LayoutedHUDElement<GridLayout>
|
||||
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}" }
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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!!)
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user