diff --git a/build.gradle b/build.gradle index 862158fb4..566b13c1d 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { // Needed for Forge+Fabric id "architectury-plugin" version "3.4.146" id "dev.architectury.loom" version "1.3.355" apply false - id 'io.github.juuxel.loom-quiltflower' version '1.8.0' apply false + id 'io.github.juuxel.loom-vineflower' version '1.11.0' apply false // Kotlin id "org.jetbrains.kotlin.jvm" version "1.9.10" apply false id 'com.matthewprenger.cursegradle' version '1.4.0' apply false @@ -47,6 +47,10 @@ tasks.register("updateVsCore") { inputs.file(versionFile) outputs.file(gradleProperties) dependsOn(vsCoreBuild.task(":api-game:writeVersion")) + + [':impl', ':api', ':api-game', ':util'].each { + dependsOn(vsCoreBuild.task("${it}:publishToMavenLocal")) + } } catch (UnknownDomainObjectException ignore) {} onlyIf { @@ -64,7 +68,7 @@ subprojects { apply plugin: "dev.architectury.loom" // Apply checkstyle and ktlint to check the code style of every sub project apply plugin: "org.jetbrains.kotlin.jvm" - apply plugin: "io.github.juuxel.loom-quiltflower" + apply plugin: "io.github.juuxel.loom-vineflower" configurations.each { it.resolutionStrategy.useGlobalDependencySubstitutionRules.set(false) } diff --git a/common/build.gradle b/common/build.gradle index 6e0512c5b..419913a26 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -17,6 +17,8 @@ dependencies { exclude module: "fastutil" } + implementation("org.valkyrienskies.core:util:${rootProject.vs_core_version}") + // FTB Stuffs modCompileOnly("curse.maven:ftb-util-404465:4210935") modCompileOnly("curse.maven:ftb-teams-404468:4229138") diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/client/MixinMinecraft.java b/common/src/main/java/org/valkyrienskies/mod/mixin/client/MixinMinecraft.java index dc5955c30..a61a30f5d 100644 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/client/MixinMinecraft.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/client/MixinMinecraft.java @@ -30,7 +30,6 @@ import org.valkyrienskies.mod.common.IShipObjectWorldServerProvider; import org.valkyrienskies.mod.common.ValkyrienSkiesMod; import org.valkyrienskies.mod.common.util.EntityDragger; -import org.valkyrienskies.mod.common.world.DummyShipWorldClient; import org.valkyrienskies.mod.mixinducks.client.MinecraftDuck; @Mixin(Minecraft.class) @@ -88,7 +87,7 @@ public ClientShipWorldCore getShipObjectWorld() { if (shipObjectWorldCopy == null) { log.warn("Requested getShipObjectWorld() when shipObjectWorld was null!"); - return DummyShipWorldClient.INSTANCE; + return ValkyrienSkiesMod.getVsCore().getDummyShipWorldClient(); } return shipObjectWorldCopy; } diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/client/world/MixinClientLevel.java b/common/src/main/java/org/valkyrienskies/mod/mixin/client/world/MixinClientLevel.java index 7b77a62a7..2f532c166 100644 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/client/world/MixinClientLevel.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/client/world/MixinClientLevel.java @@ -33,8 +33,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.valkyrienskies.core.api.ships.Ship; import org.valkyrienskies.core.apigame.world.ClientShipWorldCore; -import org.valkyrienskies.core.impl.util.AABBdUtilKt; -import org.valkyrienskies.core.impl.util.VectorConversionsKt; +import org.valkyrienskies.core.util.AABBdUtilKt; +import org.valkyrienskies.core.util.VectorConversionsKt; import org.valkyrienskies.mod.client.audio.SimpleSoundInstanceOnShip; import org.valkyrienskies.mod.common.IShipObjectWorldClientProvider; import org.valkyrienskies.mod.common.VSGameUtilsKt; diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/feature/get_entities/MixinLevel.java b/common/src/main/java/org/valkyrienskies/mod/mixin/feature/get_entities/MixinLevel.java index 93b73da51..863abae56 100644 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/feature/get_entities/MixinLevel.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/feature/get_entities/MixinLevel.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.valkyrienskies.core.impl.util.RateLimiter; +import org.valkyrienskies.core.util.RateLimiter; import org.valkyrienskies.mod.common.VSGameUtilsKt; @Mixin(Level.class) diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/world/level/levelgen/MixinNoiseBasedChunkGenerator.java b/common/src/main/java/org/valkyrienskies/mod/mixin/world/level/levelgen/MixinNoiseBasedChunkGenerator.java index 79fb8acb0..08183a391 100644 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/world/level/levelgen/MixinNoiseBasedChunkGenerator.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/world/level/levelgen/MixinNoiseBasedChunkGenerator.java @@ -23,7 +23,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.valkyrienskies.core.impl.game.ChunkAllocator; import org.valkyrienskies.mod.common.VS2ChunkAllocator; @Mixin(NoiseBasedChunkGenerator.class) diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/VS2ChunkAllocator.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/VS2ChunkAllocator.kt index ccaf6dff4..ded9b6c93 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/VS2ChunkAllocator.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/VS2ChunkAllocator.kt @@ -1,14 +1,8 @@ package org.valkyrienskies.mod.common -import org.valkyrienskies.core.api.ships.properties.ChunkClaim -import org.valkyrienskies.core.impl.game.ChunkAllocator - object VS2ChunkAllocator { // TODO: Move this to ChunkAllocator eventually fun isChunkInShipyardCompanion(chunkX: Int, chunkZ: Int): Boolean { - val claimXIndex = ChunkClaim.getClaimXIndex(chunkX) - val claimZIndex = ChunkClaim.getClaimZIndex(chunkZ) - - return (claimXIndex in ChunkAllocator.X_INDEX_START..ChunkAllocator.X_INDEX_END) and (claimZIndex in ChunkAllocator.Z_INDEX_START..ChunkAllocator.Z_INDEX_END) + return vsCore.isChunkInShipyard(chunkX, chunkZ) } } diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/VSGameUtils.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/VSGameUtils.kt index 2bb4b6347..a315d0125 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/VSGameUtils.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/VSGameUtils.kt @@ -35,15 +35,13 @@ import org.valkyrienskies.core.apigame.world.chunks.TerrainUpdate import org.valkyrienskies.core.apigame.world.properties.DimensionId import org.valkyrienskies.core.game.ships.ShipObjectServer import org.valkyrienskies.core.impl.hooks.VSEvents.TickEndEvent -import org.valkyrienskies.core.impl.util.expand +import org.valkyrienskies.core.util.expand import org.valkyrienskies.mod.common.util.DimensionIdProvider import org.valkyrienskies.mod.common.util.MinecraftPlayer import org.valkyrienskies.mod.common.util.set import org.valkyrienskies.mod.common.util.toJOML import org.valkyrienskies.mod.common.util.toJOMLD import org.valkyrienskies.mod.common.util.toMinecraft -import org.valkyrienskies.mod.common.world.DummyShipWorldClient -import org.valkyrienskies.mod.common.world.DummyShipWorldServer import org.valkyrienskies.mod.mixin.accessors.resource.ResourceKeyAccessor import org.valkyrienskies.mod.mixinducks.world.entity.PlayerDuck import java.util.function.Consumer @@ -59,15 +57,15 @@ val Level?.shipWorldNullable: ShipWorldCore? } val Level?.shipObjectWorld - get() = shipWorldNullable ?: DummyShipWorldClient + get() = shipWorldNullable ?: vsCore.dummyShipWorldClient val Level?.allShips get() = this.shipObjectWorld.allShips val MinecraftServer.shipObjectWorld: ServerShipWorldCore - get() = (this as IShipObjectWorldServerProvider).shipObjectWorld ?: DummyShipWorldServer + get() = (this as IShipObjectWorldServerProvider).shipObjectWorld ?: vsCore.dummyShipWorldServer val MinecraftServer.vsPipeline get() = (this as IShipObjectWorldServerProvider).vsPipeline!! -val ServerLevel?.shipObjectWorld: ServerShipWorldCore get() = this?.server?.shipObjectWorld ?: DummyShipWorldServer +val ServerLevel?.shipObjectWorld: ServerShipWorldCore get() = this?.server?.shipObjectWorld ?: vsCore.dummyShipWorldServer val Level.dimensionId: DimensionId get() { @@ -106,7 +104,7 @@ fun MinecraftServer.getLevelFromDimensionId(dimensionId: DimensionId): ServerLev return getLevel(getResourceKey(dimensionId)) } -val Minecraft.shipObjectWorld get() = (this as IShipObjectWorldClientProvider).shipObjectWorld ?: DummyShipWorldClient +val Minecraft.shipObjectWorld get() = (this as IShipObjectWorldClientProvider).shipObjectWorld ?: vsCore.dummyShipWorldClient val ClientLevel?.shipObjectWorld get() = Minecraft.getInstance().shipObjectWorld val IPlayer.mcPlayer: Player get() = (this as MinecraftPlayer).playerEntityReference.get()!! diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/SeamlessChunksManager.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/SeamlessChunksManager.kt index 2ea311d60..bb8aac7ab 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/SeamlessChunksManager.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/SeamlessChunksManager.kt @@ -13,7 +13,7 @@ import org.valkyrienskies.core.api.ships.ClientShip import org.valkyrienskies.core.api.ships.properties.ChunkClaim import org.valkyrienskies.core.impl.hooks.VSEvents.ShipLoadEventClient import org.valkyrienskies.core.impl.networking.simple.registerClientHandler -import org.valkyrienskies.core.impl.util.pollUntilEmpty +import org.valkyrienskies.core.util.pollUntilEmpty import org.valkyrienskies.mod.common.getShipManagingPos import org.valkyrienskies.mod.common.isChunkInShipyard import org.valkyrienskies.mod.common.networking.PacketRestartChunkUpdates diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/ShipAssembly.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/ShipAssembly.kt index 81b7a4ce7..8df8aea74 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/ShipAssembly.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/assembly/ShipAssembly.kt @@ -5,7 +5,7 @@ import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.ChunkPos import org.joml.Vector3d import org.valkyrienskies.core.api.ships.ServerShip -import org.valkyrienskies.core.impl.datastructures.DenseBlockPosSet +import org.valkyrienskies.core.util.datastructures.DenseBlockPosSet import org.valkyrienskies.core.impl.game.ships.ShipData import org.valkyrienskies.core.impl.game.ships.ShipTransformImpl import org.valkyrienskies.core.impl.networking.simple.sendToClient diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/block/TestChairBlock.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/block/TestChairBlock.kt index 738fcfb1c..0a12f90c5 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/block/TestChairBlock.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/block/TestChairBlock.kt @@ -20,9 +20,9 @@ import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import org.joml.Vector3d import org.joml.Vector3dc -import org.valkyrienskies.core.impl.util.x -import org.valkyrienskies.core.impl.util.y -import org.valkyrienskies.core.impl.util.z +import org.valkyrienskies.core.util.x +import org.valkyrienskies.core.util.y +import org.valkyrienskies.core.util.z import org.valkyrienskies.mod.common.ValkyrienSkiesMod import org.valkyrienskies.mod.common.util.toDoubles diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/command/VSCommands.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/command/VSCommands.kt index 793bc41fd..f84a360c7 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/command/VSCommands.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/command/VSCommands.kt @@ -26,9 +26,9 @@ import org.valkyrienskies.core.apigame.ShipTeleportData import org.valkyrienskies.core.impl.game.ShipTeleportDataImpl import org.valkyrienskies.core.impl.game.ships.ShipData import org.valkyrienskies.core.impl.game.ships.ShipObject -import org.valkyrienskies.core.impl.util.x -import org.valkyrienskies.core.impl.util.y -import org.valkyrienskies.core.impl.util.z +import org.valkyrienskies.core.util.x +import org.valkyrienskies.core.util.y +import org.valkyrienskies.core.util.z import org.valkyrienskies.mod.common.dimensionId import org.valkyrienskies.mod.common.getShipManagingPos import org.valkyrienskies.mod.common.util.toJOML diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/entity/handling/WorldEntityHandler.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/entity/handling/WorldEntityHandler.kt index 11574a70d..295792c93 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/entity/handling/WorldEntityHandler.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/entity/handling/WorldEntityHandler.kt @@ -8,9 +8,9 @@ import net.minecraft.world.entity.projectile.AbstractHurtingProjectile import org.joml.Vector3d import org.valkyrienskies.core.api.ships.ClientShip import org.valkyrienskies.core.api.ships.Ship -import org.valkyrienskies.core.impl.util.component1 -import org.valkyrienskies.core.impl.util.component2 -import org.valkyrienskies.core.impl.util.component3 +import org.valkyrienskies.core.util.component1 +import org.valkyrienskies.core.util.component2 +import org.valkyrienskies.core.util.component3 import org.valkyrienskies.mod.common.toWorldCoordinates import org.valkyrienskies.mod.common.util.toJOML import org.valkyrienskies.mod.common.util.toMinecraft diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/item/ShipAssemblerItem.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/item/ShipAssemblerItem.kt index 437058e18..69a39780b 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/item/ShipAssemblerItem.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/item/ShipAssemblerItem.kt @@ -7,7 +7,7 @@ import net.minecraft.world.InteractionResult import net.minecraft.world.item.Item import net.minecraft.world.item.context.UseOnContext import net.minecraft.world.level.block.state.BlockState -import org.valkyrienskies.core.impl.datastructures.DenseBlockPosSet +import org.valkyrienskies.core.util.datastructures.DenseBlockPosSet import org.valkyrienskies.mod.common.assembly.createNewShipWithBlocks import org.valkyrienskies.mod.common.isChunkInShipyard diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/util/EntityShipCollisionUtils.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/util/EntityShipCollisionUtils.kt index 974209d04..eb5172f0a 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/util/EntityShipCollisionUtils.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/util/EntityShipCollisionUtils.kt @@ -12,16 +12,18 @@ import net.minecraft.world.phys.shapes.VoxelShape import org.joml.primitives.AABBd import org.joml.primitives.AABBdc import org.valkyrienskies.core.api.ships.Ship -import org.valkyrienskies.core.impl.collision.ConvexPolygonc -import org.valkyrienskies.core.impl.collision.EntityPolygonCollider -import org.valkyrienskies.core.impl.collision.EntityPolygonCollider.createPolygonFromAABB -import org.valkyrienskies.core.impl.util.extend +import org.valkyrienskies.core.apigame.collision.ConvexPolygonc +import org.valkyrienskies.core.impl.collision.k.createPolygonFromAABB +import org.valkyrienskies.core.util.extend import org.valkyrienskies.mod.common.getShipsIntersecting import org.valkyrienskies.mod.common.shipObjectWorld +import org.valkyrienskies.mod.common.vsCore import kotlin.math.max object EntityShipCollisionUtils { + private val collider = vsCore.entityPolygonCollider + @JvmStatic fun isCollidingWithUnloadedShips(entity: Entity): Boolean { val level = entity.level @@ -86,7 +88,7 @@ object EntityShipCollisionUtils { return movement } - val (newMovement, shipCollidingWith) = EntityPolygonCollider.adjustEntityMovementForPolygonCollisions( + val (newMovement, shipCollidingWith) = collider.adjustEntityMovementForPolygonCollisions( movement.toJOML(), entityBoundingBox.toJOML(), stepHeight, collidingShipPolygons ) if (entity != null) { @@ -109,7 +111,7 @@ object EntityShipCollisionUtils { val entityBoundingBoxExtended = entityBoundingBox.toJOML().extend(movement.toJOML()) for (shipObject in world.shipObjectWorld.loadedShips.getIntersecting(entityBoundingBoxExtended)) { val shipTransform = shipObject.transform - val entityPolyInShipCoordinates: ConvexPolygonc = createPolygonFromAABB( + val entityPolyInShipCoordinates: ConvexPolygonc = collider.createPolygonFromAABB( entityBoxWithMovement.toJOML(), shipTransform.worldToShip ) diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/util/GameTickForceApplier.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/util/GameTickForceApplier.kt index ed3f66fef..bef91b2b6 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/util/GameTickForceApplier.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/common/util/GameTickForceApplier.kt @@ -3,7 +3,7 @@ package org.valkyrienskies.mod.common.util import org.joml.Vector3dc import org.valkyrienskies.core.api.ships.PhysShip import org.valkyrienskies.core.api.ships.ShipForcesInducer -import org.valkyrienskies.core.impl.util.pollUntilEmpty +import org.valkyrienskies.core.util.pollUntilEmpty import java.util.concurrent.ConcurrentLinkedQueue class GameTickForceApplier : ShipForcesInducer { diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/world/DummyShipWorldClient.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/world/DummyShipWorldClient.kt deleted file mode 100644 index 2e096d22d..000000000 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/world/DummyShipWorldClient.kt +++ /dev/null @@ -1,53 +0,0 @@ -package org.valkyrienskies.mod.common.world - -import org.joml.primitives.AABBdc -import org.valkyrienskies.core.api.ships.ClientShip -import org.valkyrienskies.core.api.ships.QueryableShipData -import org.valkyrienskies.core.apigame.world.ClientShipWorldCore -import org.valkyrienskies.core.apigame.world.chunks.BlockType -import org.valkyrienskies.core.apigame.world.properties.DimensionId -import org.valkyrienskies.core.impl.game.ships.QueryableShipDataImpl -import java.net.SocketAddress - -object DummyShipWorldClient : ClientShipWorldCore { - override fun tickNetworking(server: SocketAddress) { - throw UnsupportedOperationException() - } - - override fun postTick() { - throw UnsupportedOperationException() - } - - override fun updateRenderTransforms(partialTicks: Double) { - throw UnsupportedOperationException() - } - - override fun destroyWorld() { - throw UnsupportedOperationException() - } - - override val isSyncedWithServer: Boolean - get() = throw UnsupportedOperationException() - - override fun onSetBlock( - posX: Int, posY: Int, posZ: Int, dimensionId: DimensionId, oldBlockType: BlockType, newBlockType: BlockType, - oldBlockMass: Double, newBlockMass: Double - ) { - } - - override val allShips: QueryableShipData get() = loadedShips - override val loadedShips: QueryableShipData = QueryableShipDataImpl() - - override fun isChunkInShipyard(chunkX: Int, chunkZ: Int, dimensionId: DimensionId): Boolean { - return false - } - - override fun isBlockInShipyard(blockX: Int, blockY: Int, blockZ: Int, dimensionId: DimensionId): Boolean { - return false - } - - @Deprecated("redundant", replaceWith = ReplaceWith("loadedShips.getIntersecting(aabb)")) - override fun getShipObjectsIntersecting(aabb: AABBdc): List { - return emptyList() - } -} diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/common/world/DummyShipWorldServer.kt b/common/src/main/kotlin/org/valkyrienskies/mod/common/world/DummyShipWorldServer.kt deleted file mode 100644 index c7c878e13..000000000 --- a/common/src/main/kotlin/org/valkyrienskies/mod/common/world/DummyShipWorldServer.kt +++ /dev/null @@ -1,129 +0,0 @@ -package org.valkyrienskies.mod.common.world - -import org.joml.Vector3ic -import org.joml.primitives.AABBdc -import org.valkyrienskies.core.api.ships.LoadedServerShip -import org.valkyrienskies.core.api.ships.QueryableShipData -import org.valkyrienskies.core.api.ships.ServerShip -import org.valkyrienskies.core.api.ships.properties.ShipId -import org.valkyrienskies.core.api.world.LevelYRange -import org.valkyrienskies.core.apigame.GameServer -import org.valkyrienskies.core.apigame.ShipTeleportData -import org.valkyrienskies.core.apigame.constraints.VSConstraint -import org.valkyrienskies.core.apigame.constraints.VSConstraintId -import org.valkyrienskies.core.apigame.physics.PhysicsEntityData -import org.valkyrienskies.core.apigame.physics.PhysicsEntityServer -import org.valkyrienskies.core.apigame.world.IPlayer -import org.valkyrienskies.core.apigame.world.ServerShipWorldCore -import org.valkyrienskies.core.apigame.world.chunks.BlockType -import org.valkyrienskies.core.apigame.world.chunks.ChunkUnwatchTask -import org.valkyrienskies.core.apigame.world.chunks.ChunkWatchTask -import org.valkyrienskies.core.apigame.world.chunks.ChunkWatchTasks -import org.valkyrienskies.core.apigame.world.chunks.TerrainUpdate -import org.valkyrienskies.core.apigame.world.properties.DimensionId -import org.valkyrienskies.core.impl.game.ships.QueryableShipDataImpl - -object DummyShipWorldServer : ServerShipWorldCore { - override var players: Set = emptySet() - override fun setGameServer(gameServer: GameServer?) { - TODO("Not yet implemented") - } - - override fun addTerrainUpdates(dimensionId: DimensionId, terrainUpdates: List) { - TODO("Not yet implemented") - } - - override fun getIPlayersWatchingShipChunk(chunkX: Int, chunkZ: Int, dimensionId: DimensionId): Iterator { - TODO("Not yet implemented") - } - - override fun getChunkWatchTasks(): ChunkWatchTasks { - TODO("Not yet implemented") - } - - override fun setExecutedChunkWatchTasks( - watchTasks: Iterable, unwatchTasks: Iterable - ) { - TODO("Not yet implemented") - } - - override fun createNewShipAtBlock( - blockPosInWorldCoordinates: Vector3ic, createShipObjectImmediately: Boolean, scaling: Double, - dimensionId: DimensionId - ): ServerShip { - TODO("Not yet implemented") - } - - override fun createPhysicsEntity(physicsEntityData: PhysicsEntityData, dimensionId: DimensionId): PhysicsEntityServer { - TODO("Not yet implemented") - } - - override fun deletePhysicsEntity(id: ShipId) { - // This is implemented because physics entities get deleted after the vs pipeline? - } - - override fun allocateShipId(dimensionId: DimensionId): ShipId { - TODO("Not yet implemented") - } - - override fun createNewConstraint(vsConstraint: VSConstraint): VSConstraintId? { - TODO("Not yet implemented") - } - - override fun updateConstraint(constraintId: VSConstraintId, updatedVSConstraint: VSConstraint): Boolean { - TODO("Not yet implemented") - } - - override fun removeConstraint(constraintId: VSConstraintId): Boolean { - TODO("Not yet implemented") - } - - override fun addDimension(dimensionId: DimensionId, yRange: LevelYRange) { - TODO("Not yet implemented") - } - - override fun removeDimension(dimensionId: DimensionId) { - TODO("Not yet implemented") - } - - override fun onDisconnect(player: IPlayer) { - } - - override fun deleteShip(ship: ServerShip) { - TODO("Not yet implemented") - } - - override fun teleportShip(ship: ServerShip, teleportData: ShipTeleportData) { - TODO("Not yet implemented") - } - - override fun teleportPhysicsEntity(physicsEntityServer: PhysicsEntityServer, teleportData: ShipTeleportData) { - TODO("Not yet implemented") - } - - override val dimensionToGroundBodyIdImmutable: Map - get() = TODO("Not yet implemented") - - override fun onSetBlock( - posX: Int, posY: Int, posZ: Int, dimensionId: DimensionId, oldBlockType: BlockType, newBlockType: BlockType, - oldBlockMass: Double, newBlockMass: Double - ) { - } - - override val allShips: QueryableShipData - get() = loadedShips - override val loadedShips: QueryableShipData = QueryableShipDataImpl() - - override fun isChunkInShipyard(chunkX: Int, chunkZ: Int, dimensionId: DimensionId): Boolean { - return false - } - - override fun isBlockInShipyard(blockX: Int, blockY: Int, blockZ: Int, dimensionId: DimensionId): Boolean { - return false - } - - @Deprecated("redundant", replaceWith = ReplaceWith("loadedShips.getIntersecting(aabb)")) - override fun getShipObjectsIntersecting(aabb: AABBdc): List { - return emptyList() - } -} diff --git a/common/src/main/kotlin/org/valkyrienskies/mod/compat/clothconfig/VSClothConfig.kt b/common/src/main/kotlin/org/valkyrienskies/mod/compat/clothconfig/VSClothConfig.kt index f87c9e86e..e5fed4518 100644 --- a/common/src/main/kotlin/org/valkyrienskies/mod/compat/clothconfig/VSClothConfig.kt +++ b/common/src/main/kotlin/org/valkyrienskies/mod/compat/clothconfig/VSClothConfig.kt @@ -15,10 +15,10 @@ import net.minecraft.ChatFormatting.ITALIC import net.minecraft.client.gui.screens.Screen import net.minecraft.network.chat.Component import net.minecraft.network.chat.TextComponent +import org.apache.commons.lang3.StringUtils import org.valkyrienskies.core.impl.config.SidedVSConfigClass import org.valkyrienskies.core.impl.config.VSConfigClass import org.valkyrienskies.core.impl.util.serialization.VSJacksonUtil -import org.valkyrienskies.core.impl.util.splitCamelCaseAndCapitalize import java.util.Optional object VSClothConfig { @@ -69,6 +69,10 @@ object VSClothConfig { } } + private fun String.splitCamelCaseAndCapitalize(): String { + return StringUtils.capitalize(StringUtils.join(StringUtils.splitByCharacterTypeCamelCase(this), " ")) + } + private fun getEntriesForProperty( key: String, currentValue: JsonNode, diff --git a/gradle.properties b/gradle.properties index 5c17857c9..e6a3aa07c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ fabric_loader_version=0.14.10 fabric_api_version=0.59.0+1.18.2 forge_version=1.18.2-40.1.69 create_fabric_version=0.5.0.i-934+1.18.2 -vs_core_version=1.1.0+22a5fcd037 +vs_core_version=1.1.0+4cc7d6e38d # Prevent kotlin from autoincluding stdlib as a dependency, which breaks # gradle's composite builds (includeBuild) for some reason. We'll add it manually kotlin.stdlib.default.dependency=false