From 3eedebde811b9b9fa39e1f9a10f7cc4bad42aa0f Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 23 Jan 2023 08:36:38 +0100 Subject: [PATCH] remove test-util source set, AirBlock --- build.gradle.kts | 6 +- .../data/registries/blocks/types/TestBlock.kt | 0 .../data/world/chunk/ChunkTestingUtil.kt | 0 .../data/world/chunk/ChunkTestingUtil.kt | 90 +++++++++++++++++++ .../blocks/factory/BlockFactories.kt | 5 ++ .../blocks/factory/PixLyzerBlockFactories.kt | 2 - .../registries/blocks/types/air/AirBlock.kt | 59 ++++++++++++ .../blocks/types/pixlyzer/AirBlock.kt | 30 ------- .../registries/registry/BlockStateRegistry.kt | 4 +- 9 files changed, 159 insertions(+), 37 deletions(-) rename src/{test-util => benchmark}/kotlin/de/bixilon/minosoft/data/registries/blocks/types/TestBlock.kt (100%) rename src/{test-util => benchmark}/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt (100%) create mode 100644 src/integration-test/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt create mode 100644 src/main/java/de/bixilon/minosoft/data/registries/blocks/types/air/AirBlock.kt delete mode 100644 src/main/java/de/bixilon/minosoft/data/registries/blocks/types/pixlyzer/AirBlock.kt diff --git a/build.gradle.kts b/build.gradle.kts index 22088241d..6401db9a8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -224,13 +224,13 @@ testing { } sources { kotlin { - setSrcDirs(listOf("src/integration-test/kotlin", "src/test-util/kotlin")) + setSrcDirs(listOf("src/integration-test/kotlin")) } } } val benchmark by registering(JvmTestSuite::class) { testType.set(TestSuiteType.PERFORMANCE_TEST) - useTestNG("7.7.0") + useTestNG("7.7.1") dependencies { implementation(project()) @@ -265,7 +265,7 @@ testing { } sources { kotlin { - setSrcDirs(listOf("src/benchmark/kotlin", "src/test-util/kotlin")) + setSrcDirs(listOf("src/benchmark/kotlin")) } } } diff --git a/src/test-util/kotlin/de/bixilon/minosoft/data/registries/blocks/types/TestBlock.kt b/src/benchmark/kotlin/de/bixilon/minosoft/data/registries/blocks/types/TestBlock.kt similarity index 100% rename from src/test-util/kotlin/de/bixilon/minosoft/data/registries/blocks/types/TestBlock.kt rename to src/benchmark/kotlin/de/bixilon/minosoft/data/registries/blocks/types/TestBlock.kt diff --git a/src/test-util/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt b/src/benchmark/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt similarity index 100% rename from src/test-util/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt rename to src/benchmark/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt b/src/integration-test/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt new file mode 100644 index 000000000..571108da4 --- /dev/null +++ b/src/integration-test/kotlin/de/bixilon/minosoft/data/world/chunk/ChunkTestingUtil.kt @@ -0,0 +1,90 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * 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.world.chunk + +import de.bixilon.kotlinglm.vec2.Vec2i +import de.bixilon.kutil.concurrent.lock.thread.ThreadLock +import de.bixilon.kutil.observer.DataObserver +import de.bixilon.kutil.reflection.ReflectionUtil.forceSet +import de.bixilon.minosoft.data.registries.blocks.state.BlockState +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties +import de.bixilon.minosoft.data.world.World +import de.bixilon.minosoft.data.world.chunk.light.ChunkLight +import de.bixilon.minosoft.data.world.chunk.neighbours.ChunkNeighbours +import de.bixilon.minosoft.data.world.positions.ChunkPosition +import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY +import de.bixilon.minosoft.modding.event.master.EventMaster +import de.bixilon.minosoft.protocol.network.connection.Connection +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +import org.objenesis.ObjenesisStd +import kotlin.reflect.jvm.javaField + +const val SECTIONS = 16 + +@Deprecated("Shit") +object ChunkTestingUtil { + private val world = createWorld() + + fun createConnection(): PlayConnection { + val connection = ObjenesisStd().newInstance(PlayConnection::class.java) + + Connection::events.javaField!!.forceSet(connection, EventMaster()) + return connection + } + + fun createWorld(): World { + val objenesis = ObjenesisStd() + val world = objenesis.newInstance(World::class.java) + world::dimension.javaField!!.forceSet(world, DataObserver(DimensionProperties(hasSkyLight = true))) + world::connection.javaField!!.forceSet(world, createConnection()) + + return world + } + + fun createEmptyChunk(position: ChunkPosition): Chunk { + val objenesis = ObjenesisStd() + val chunk = objenesis.newInstance(Chunk::class.java) + Chunk::lock.javaField!!.forceSet(chunk, ThreadLock()) + chunk::chunkPosition.forceSet(position) + Chunk::world.javaField!!.forceSet(chunk, world) + Chunk::maxSection.javaField!!.forceSet(chunk, chunk.world.dimension!!.maxSection) + Chunk::connection.javaField!!.forceSet(chunk, chunk.world.connection) + Chunk::light.javaField!!.forceSet(chunk, ChunkLight(chunk)) + Chunk::neighbours.javaField!!.forceSet(chunk, ChunkNeighbours(chunk)) + chunk.sections = arrayOfNulls(SECTIONS) + + return chunk + } + + fun createChunkWithNeighbours(): Chunk { + val chunk = createEmptyChunk(Vec2i.EMPTY) + var index = 0 + for (x in -1..1) { + for (z in -1..1) { + if (x == 0 && z == 0) { + continue + } + chunk.neighbours[index++] = createEmptyChunk(Vec2i(x, z)) + } + } + + return chunk + } + + fun ChunkSection.fill(state: BlockState) { + for (index in 0 until 4096) { + blocks.unsafeSet(index, state) + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/BlockFactories.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/BlockFactories.kt index ce208c1a9..dfab94d4b 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/BlockFactories.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/BlockFactories.kt @@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.registries.blocks.factory import de.bixilon.minosoft.data.registries.blocks.settings.BlockSettings import de.bixilon.minosoft.data.registries.blocks.types.Block +import de.bixilon.minosoft.data.registries.blocks.types.air.AirBlock import de.bixilon.minosoft.data.registries.blocks.types.fluid.LavaFluidBlock import de.bixilon.minosoft.data.registries.blocks.types.fluid.WaterFluidBlock import de.bixilon.minosoft.data.registries.blocks.types.stone.RockBlock @@ -22,7 +23,11 @@ import de.bixilon.minosoft.data.registries.factory.DefaultFactory import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.registries.Registries + +@Suppress("DEPRECATION") object BlockFactories : DefaultFactory>( + AirBlock.Air, AirBlock.VoidAir, AirBlock.CaveAir, + RockBlock.Stone, RockBlock.Granite, RockBlock.PolishedGranite, RockBlock.Diorite, RockBlock.PolishedDiorite, diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/PixLyzerBlockFactories.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/PixLyzerBlockFactories.kt index b36a6a04a..0bf498990 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/PixLyzerBlockFactories.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/factory/PixLyzerBlockFactories.kt @@ -49,10 +49,8 @@ import de.bixilon.minosoft.data.registries.blocks.types.pixlyzer.water.KelpPlant import de.bixilon.minosoft.data.registries.blocks.types.pixlyzer.water.SeagrassBlock import de.bixilon.minosoft.data.registries.factory.clazz.DefaultClassFactory -@Suppress("DEPRECATION_ERROR") @Deprecated("BlockFactories") object PixLyzerBlockFactories : DefaultClassFactory>( - AirBlock, PixLyzerBlock, DoorBlock, LeverBlock, diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/air/AirBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/air/AirBlock.kt new file mode 100644 index 000000000..e1d6ff75a --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/air/AirBlock.kt @@ -0,0 +1,59 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * 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.blocks.types.air + +import de.bixilon.kutil.exception.Broken +import de.bixilon.minosoft.data.registries.blocks.factory.BlockFactory +import de.bixilon.minosoft.data.registries.blocks.settings.BlockSettings +import de.bixilon.minosoft.data.registries.blocks.types.Block +import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft +import de.bixilon.minosoft.data.registries.identified.ResourceLocation +import de.bixilon.minosoft.data.registries.registries.Registries + +@Deprecated("air == null") +@Suppress("DEPRECATION") +abstract class AirBlock(identifier: ResourceLocation, settings: BlockSettings) : Block(identifier, settings) { + override val hardness: Float get() = Broken("Its air!") + + + @Deprecated("air == null") + open class Air(identifier: ResourceLocation = this.identifier, settings: BlockSettings) : AirBlock(identifier, settings) { + + companion object : BlockFactory { + override val identifier = minecraft("air") + + override fun build(registries: Registries, settings: BlockSettings) = Air(settings = settings) + } + } + + @Deprecated("air == null") + open class VoidAir(identifier: ResourceLocation = this.identifier, settings: BlockSettings) : AirBlock(identifier, settings) { + + companion object : BlockFactory { + override val identifier = minecraft("void_air") + + override fun build(registries: Registries, settings: BlockSettings) = VoidAir(settings = settings) + } + } + + @Deprecated("air == null") + open class CaveAir(identifier: ResourceLocation = this.identifier, settings: BlockSettings) : AirBlock(identifier, settings) { + + companion object : BlockFactory { + override val identifier = minecraft("cave_air") + + override fun build(registries: Registries, settings: BlockSettings) = CaveAir(settings = settings) + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/pixlyzer/AirBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/pixlyzer/AirBlock.kt deleted file mode 100644 index 2182c1c32..000000000 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/pixlyzer/AirBlock.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * 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.blocks.types.pixlyzer - -import de.bixilon.minosoft.data.registries.blocks.factory.PixLyzerBlockFactory -import de.bixilon.minosoft.data.registries.identified.ResourceLocation -import de.bixilon.minosoft.data.registries.registries.Registries - -@Deprecated("Air == null!") -open class AirBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map) : PixLyzerBlock(resourceLocation, registries, data) { - - @Suppress("DEPRECATION_ERROR") - companion object : PixLyzerBlockFactory { - - override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map): AirBlock { - return AirBlock(resourceLocation, registries, data) - } - } -} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt index 97c912904..6c8b3eef3 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.data.registries.registries.registry import de.bixilon.kutil.exception.Broken import de.bixilon.kutil.json.JsonObject import de.bixilon.minosoft.data.registries.blocks.state.BlockState -import de.bixilon.minosoft.data.registries.blocks.types.pixlyzer.AirBlock +import de.bixilon.minosoft.data.registries.blocks.types.air.AirBlock import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition @@ -69,7 +69,7 @@ class BlockStateRegistry(var flattened: Boolean) : AbstractRegistry return getOrNull(id) } - @Suppress("DEPRECATION_ERROR") + @Suppress("DEPRECATION") override fun getOrNull(id: Int): BlockState? { if (id == ProtocolDefinition.AIR_BLOCK_ID) { return null