From 17acde09a31d81063a29b877d0bfdd9381e09b68 Mon Sep 17 00:00:00 2001 From: Oak Date: Fri, 31 May 2024 12:11:07 +0100 Subject: [PATCH 01/13] Updated Bukkit to 1.20.6 --- .github/workflows/gradle-build.yml | 4 ++-- buildSrc/build.gradle.kts | 2 +- buildSrc/src/main/kotlin/Versions.kt | 4 ++-- platforms/bukkit/build.gradle.kts | 2 +- platforms/bukkit/nms/{v1_20_R3 => v1_20_R6}/build.gradle.kts | 0 .../dfsek/terra/bukkit/nms/v1_20_R6}/AwfulBukkitHacks.java | 2 +- .../com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSBiomeInfo.java | 2 +- .../dfsek/terra/bukkit/nms/v1_20_R6}/NMSBiomeInjector.java | 2 +- .../dfsek/terra/bukkit/nms/v1_20_R6}/NMSBiomeProvider.java | 2 +- .../bukkit/nms/v1_20_R6}/NMSChunkGeneratorDelegate.java | 4 ++-- .../com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSInitializer.java | 2 +- .../dfsek/terra/bukkit/nms/v1_20_R6}/NMSInjectListener.java | 4 ++-- .../dfsek/terra/bukkit/nms/v1_20_R6}/NMSWorldProperties.java | 2 +- .../com/dfsek/terra/bukkit/nms/v1_20_R6}/Reflection.java | 2 +- .../dfsek/terra/bukkit/nms/v1_20_R6}/RegistryFetcher.java | 5 ++--- 15 files changed, 19 insertions(+), 20 deletions(-) rename platforms/bukkit/nms/{v1_20_R3 => v1_20_R6}/build.gradle.kts (100%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/AwfulBukkitHacks.java (99%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSBiomeInfo.java (83%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSBiomeInjector.java (98%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSBiomeProvider.java (97%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSChunkGeneratorDelegate.java (98%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSInitializer.java (90%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSInjectListener.java (95%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/NMSWorldProperties.java (94%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/Reflection.java (97%) rename platforms/bukkit/nms/{v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3 => v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6}/RegistryFetcher.java (84%) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 3e40fe7be..2117c7eee 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -18,10 +18,10 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 with: - java-version: '17' + java-version: '21' distribution: 'temurin' server-id: github # Value of the distributionManagement/repository/id field of the pom.xml settings-path: ${{ github.workspace }} # location for the settings.xml file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 6b56f288f..2bf3aa5a7 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -17,7 +17,7 @@ repositories { dependencies { //TODO Allow pulling from Versions.kt implementation("com.github.johnrengelman", "shadow", "8.1.1") - implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "1.7.0") + implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "1.7.1") implementation("org.ow2.asm", "asm", "9.7") implementation("org.ow2.asm", "asm-tree", "9.7") diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index ba9195cc7..5169834f0 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -53,13 +53,13 @@ object Versions { object Bukkit { const val minecraft = "1.20.6" - const val paperBuild = "$minecraft-R0.1-20240501.172135-12" + const val paperBuild = "$minecraft-R0.1-20240530.204353-104" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" const val paperDevBundle = paperBuild const val runPaper = "2.3.0" - const val paperWeight = "1.7.0" + const val paperWeight = "1.7.1" } // diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 6f75b0133..a63703c55 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -10,7 +10,7 @@ repositories { dependencies { shaded(project(":platforms:bukkit:common")) - shaded(project(":platforms:bukkit:nms:v1_20_R3", configuration = "reobf")) + shaded(project(":platforms:bukkit:nms:v1_20_R6", configuration = "reobf")) shaded("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper) } diff --git a/platforms/bukkit/nms/v1_20_R3/build.gradle.kts b/platforms/bukkit/nms/v1_20_R6/build.gradle.kts similarity index 100% rename from platforms/bukkit/nms/v1_20_R3/build.gradle.kts rename to platforms/bukkit/nms/v1_20_R6/build.gradle.kts diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/AwfulBukkitHacks.java similarity index 99% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/AwfulBukkitHacks.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/AwfulBukkitHacks.java index fa2cc9907..d6352afb8 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/AwfulBukkitHacks.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import com.google.common.collect.ImmutableMap; import com.mojang.serialization.Lifecycle; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeInfo.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInfo.java similarity index 83% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeInfo.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInfo.java index f47d21c56..fe3cbcf77 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeInfo.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInfo.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInjector.java similarity index 98% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeInjector.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInjector.java index e75b6fc0a..77b3c2701 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInjector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import net.minecraft.core.Holder; import net.minecraft.core.Registry; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeProvider.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeProvider.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeProvider.java index 875a77fb5..e72819aba 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import com.mojang.serialization.Codec; import net.minecraft.core.Holder; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSChunkGeneratorDelegate.java similarity index 98% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSChunkGeneratorDelegate.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSChunkGeneratorDelegate.java index 4338dc140..49c956eda 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSChunkGeneratorDelegate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; @@ -19,7 +19,7 @@ import net.minecraft.world.level.levelgen.GenerationStep.Carving; import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.RandomState; import net.minecraft.world.level.levelgen.blending.Blender; -import org.bukkit.craftbukkit.v1_20_R3.block.data.CraftBlockData; +import org.bukkit.craftbukkit.block.data.CraftBlockData; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSInitializer.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInitializer.java similarity index 90% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSInitializer.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInitializer.java index 084c5c30a..625275cf0 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSInitializer.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInitializer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import org.bukkit.Bukkit; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSInjectListener.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInjectListener.java similarity index 95% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSInjectListener.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInjectListener.java index a81e93a3f..fddc03f9c 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInjectListener.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.chunk.ChunkGenerator; import org.bukkit.World; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; +import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldInitEvent; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSWorldProperties.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSWorldProperties.java similarity index 94% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSWorldProperties.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSWorldProperties.java index 60f6cee46..d322a2bff 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/NMSWorldProperties.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSWorldProperties.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import net.minecraft.world.level.LevelHeightAccessor; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/Reflection.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/Reflection.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/Reflection.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/Reflection.java index 32243da54..0b229acd2 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/Reflection.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/Reflection.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; diff --git a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/RegistryFetcher.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/RegistryFetcher.java similarity index 84% rename from platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/RegistryFetcher.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/RegistryFetcher.java index 6dbbecbc7..de2258d09 100644 --- a/platforms/bukkit/nms/v1_20_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R3/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/RegistryFetcher.java @@ -1,12 +1,11 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R3; +package com.dfsek.terra.bukkit.nms.v1_20_R6; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.world.level.biome.Biome; -import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; +import org.bukkit.craftbukkit.CraftServer; public class RegistryFetcher { From 3fa4b21247c15de31208d24ef921cb9908793188 Mon Sep 17 00:00:00 2001 From: Oak Date: Sun, 2 Jun 2024 21:27:07 +0100 Subject: [PATCH 02/13] Attempted to fix paper versions --- buildSrc/src/main/kotlin/Versions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 5169834f0..ada0b6147 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -53,11 +53,11 @@ object Versions { object Bukkit { const val minecraft = "1.20.6" - const val paperBuild = "$minecraft-R0.1-20240530.204353-104" + const val paperBuild = "$minecraft-R0.1-20240601.143523-106" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" - const val paperDevBundle = paperBuild + const val paperDevBundle = "$minecraft-R0.1-20240601.143523-105" const val runPaper = "2.3.0" const val paperWeight = "1.7.1" } From 4536767794d36174e1fe46cb1dfa0f3f36833aed Mon Sep 17 00:00:00 2001 From: Oak Date: Mon, 3 Jun 2024 11:36:50 +0100 Subject: [PATCH 03/13] Updated to 1.20.6 --- buildSrc/build.gradle.kts | 2 +- buildSrc/src/main/kotlin/CompilationConfig.kt | 4 ++-- buildSrc/src/main/kotlin/DependencyConfig.kt | 2 +- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../terra/bukkit/handles/BukkitWorldHandle.java | 2 +- .../java/com/dfsek/terra/bukkit/nms/Initializer.java | 2 +- .../nms/{v1_20_R6 => v1_20_6}/AwfulBukkitHacks.java | 6 +++--- .../nms/{v1_20_R6 => v1_20_6}/NMSBiomeInfo.java | 2 +- .../nms/{v1_20_R6 => v1_20_6}/NMSBiomeInjector.java | 2 +- .../nms/{v1_20_R6 => v1_20_6}/NMSBiomeProvider.java | 12 ++++++++---- .../NMSChunkGeneratorDelegate.java | 8 ++++---- .../nms/{v1_20_R6 => v1_20_6}/NMSInitializer.java | 2 +- .../nms/{v1_20_R6 => v1_20_6}/NMSInjectListener.java | 2 +- .../{v1_20_R6 => v1_20_6}/NMSWorldProperties.java | 2 +- .../bukkit/nms/{v1_20_R6 => v1_20_6}/Reflection.java | 2 +- .../nms/{v1_20_R6 => v1_20_6}/RegistryFetcher.java | 3 ++- 16 files changed, 30 insertions(+), 25 deletions(-) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/AwfulBukkitHacks.java (97%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSBiomeInfo.java (83%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSBiomeInjector.java (98%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSBiomeProvider.java (75%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSChunkGeneratorDelegate.java (97%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSInitializer.java (90%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSInjectListener.java (97%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/NMSWorldProperties.java (94%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/Reflection.java (97%) rename platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/{v1_20_R6 => v1_20_6}/RegistryFetcher.java (91%) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 2bf3aa5a7..3d319e8c7 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,7 +9,7 @@ repositories { maven("https://repo.codemc.org/repository/maven-public") { name = "CodeMC" } - maven("https://papermc.io/repo/repository/maven-public/") { + maven("https://repo.papermc.io/repository/maven-public/") { name = "PaperMC" } } diff --git a/buildSrc/src/main/kotlin/CompilationConfig.kt b/buildSrc/src/main/kotlin/CompilationConfig.kt index 952b91091..f0d1e7829 100644 --- a/buildSrc/src/main/kotlin/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/CompilationConfig.kt @@ -22,8 +22,8 @@ fun Project.configureCompilation() { apply() configure { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } tasks.withType { diff --git a/buildSrc/src/main/kotlin/DependencyConfig.kt b/buildSrc/src/main/kotlin/DependencyConfig.kt index 58bde514c..0778808d8 100644 --- a/buildSrc/src/main/kotlin/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/DependencyConfig.kt @@ -36,7 +36,7 @@ fun Project.configureDependencies() { maven("https://repo.codemc.org/repository/maven-public") { name = "CodeMC" } - maven("https://papermc.io/repo/repository/maven-public/") { + maven("https://repo.papermc.io/repository/maven-public/") { name = "PaperMC" } maven("https://files.minecraftforge.net/maven/") { diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index ada0b6147..748399512 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -53,7 +53,7 @@ object Versions { object Bukkit { const val minecraft = "1.20.6" - const val paperBuild = "$minecraft-R0.1-20240601.143523-106" + const val paperBuild = "$minecraft-R0.1-20240602.222958-107" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index e3b92b069..c6113bbd7 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -72,7 +72,7 @@ public class BukkitWorldHandle implements WorldHandle { String entityID = id.toUpperCase(Locale.ROOT).substring(10); return new BukkitEntityType(switch(entityID) { - case "END_CRYSTAL" -> org.bukkit.entity.EntityType.ENDER_CRYSTAL; + case "END_CRYSTAL" -> org.bukkit.entity.EntityType.END_CRYSTAL; case "ENDER_CRYSTAL" -> throw new IllegalArgumentException( "Invalid entity identifier " + id); // make sure this issue can't happen the other way around. default -> org.bukkit.entity.EntityType.valueOf(entityID); diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index 413250d57..2b9217847 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -8,7 +8,7 @@ import com.dfsek.terra.bukkit.PlatformImpl; public interface Initializer { - String NMS = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; + String NMS = "v" + Bukkit.getServer().getMinecraftVersion().replace(".", "_"); String TERRA_PACKAGE = Initializer.class.getPackageName(); static boolean init(PlatformImpl platform) { diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/AwfulBukkitHacks.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/AwfulBukkitHacks.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/AwfulBukkitHacks.java index d6352afb8..d052b8109 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/AwfulBukkitHacks.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import com.google.common.collect.ImmutableMap; -import com.mojang.serialization.Lifecycle; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; import net.minecraft.core.MappedRegistry; +import net.minecraft.core.RegistrationInfo; import net.minecraft.core.WritableRegistry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -49,7 +49,7 @@ public class AwfulBukkitHacks { new ResourceLocation("terra", NMSBiomeInjector.createBiomeID(pack, key)) ); - Reference holder = biomeRegistry.register(delegateKey, platform, Lifecycle.stable()); + Reference holder = biomeRegistry.register(delegateKey, platform, RegistrationInfo.BUILT_IN); Reflection.REFERENCE.invokeBindValue(holder, platform); // IMPORTANT: bind holder. platformBiome.getContext().put(new NMSBiomeInfo(delegateKey)); diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInfo.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInfo.java similarity index 83% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInfo.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInfo.java index fe3cbcf77..a62604447 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInfo.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInfo.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInjector.java similarity index 98% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInjector.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInjector.java index 77b3c2701..deba15dec 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInjector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import net.minecraft.core.Holder; import net.minecraft.core.Registry; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeProvider.java similarity index 75% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeProvider.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeProvider.java index e72819aba..79861c7e4 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeProvider.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; -import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.world.level.biome.Biome; @@ -35,8 +35,12 @@ public class NMSBiomeProvider extends BiomeSource { } @Override - protected @NotNull Codec codec() { - return BiomeSource.CODEC; + protected @NotNull MapCodec codec() { + return MapCodec.assumeMapUnsafe(BiomeSource.CODEC); +// return MapCodec.unit(null); +// BuiltInRegistries.BIOME_SOURCE.byNameCodec().dispatchMap(this::codec, Function.identity()); +// BuiltInRegistries.BIOME_SOURCE.byNameCodec().dispatchStable(BiomeSource::codec, Function.identity()); +// return BiomeSource.CODEC; } @Override diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSChunkGeneratorDelegate.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSChunkGeneratorDelegate.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSChunkGeneratorDelegate.java index 49c956eda..0aadfcb9e 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSChunkGeneratorDelegate.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; -import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.server.level.WorldGenRegion; import net.minecraft.world.level.LevelAccessor; @@ -54,8 +54,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } @Override - protected @NotNull Codec codec() { - return ChunkGenerator.CODEC; + protected @NotNull MapCodec codec() { + return MapCodec.assumeMapUnsafe(ChunkGenerator.CODEC); } @Override diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInitializer.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInitializer.java similarity index 90% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInitializer.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInitializer.java index 625275cf0..8ac1b46c9 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInitializer.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInitializer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import org.bukkit.Bukkit; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInjectListener.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInjectListener.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInjectListener.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInjectListener.java index fddc03f9c..22e153139 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInjectListener.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.chunk.ChunkGenerator; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSWorldProperties.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSWorldProperties.java similarity index 94% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSWorldProperties.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSWorldProperties.java index d322a2bff..386192103 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/NMSWorldProperties.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSWorldProperties.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import net.minecraft.world.level.LevelHeightAccessor; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/Reflection.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/Reflection.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/Reflection.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/Reflection.java index 0b229acd2..77652cd6e 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/Reflection.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/Reflection.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/RegistryFetcher.java b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/RegistryFetcher.java similarity index 91% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/RegistryFetcher.java rename to platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/RegistryFetcher.java index de2258d09..ca511dffa 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R6/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/RegistryFetcher.java @@ -1,10 +1,11 @@ -package com.dfsek.terra.bukkit.nms.v1_20_R6; +package com.dfsek.terra.bukkit.nms.v1_20_6; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.world.level.biome.Biome; +import org.bukkit.Bukkit; import org.bukkit.craftbukkit.CraftServer; From 9e60db4b0da03f59c7991a93659b9c4ea40f8362 Mon Sep 17 00:00:00 2001 From: Oak Date: Mon, 10 Jun 2024 11:07:24 +0100 Subject: [PATCH 04/13] Updated MinecraftVersionInfo --- .../main/java/com/dfsek/terra/bukkit/util/VersionUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java index 6bc06a437..848befc60 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java @@ -77,13 +77,13 @@ public final class VersionUtil { public static final class MinecraftVersionInfo { private static final Logger logger = LoggerFactory.getLogger(MinecraftVersionInfo.class); - private static final Pattern VERSION_PATTERN = Pattern.compile("v?(\\d+)_(\\d+)_R(\\d+)"); + private static final Pattern VERSION_PATTERN = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)"); private final int major; private final int minor; private final int patch; private MinecraftVersionInfo() { - this(Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]); + this(Bukkit.getServer().getMinecraftVersion()); } private MinecraftVersionInfo(int major, int minor, int patch) { From 4e7de501c038be60df2f18004de6d7323e5a4282 Mon Sep 17 00:00:00 2001 From: Oak Date: Sun, 16 Jun 2024 19:21:34 +0100 Subject: [PATCH 05/13] Updated bukkit platform to 1.21 --- buildSrc/src/main/kotlin/Versions.kt | 6 ++--- platforms/bukkit/build.gradle.kts | 2 +- .../nms/{v1_20_R6 => v1_21}/build.gradle.kts | 0 .../bukkit/nms/v1_21}/AwfulBukkitHacks.java | 6 ++--- .../terra/bukkit/nms/v1_21}/NMSBiomeInfo.java | 2 +- .../bukkit/nms/v1_21}/NMSBiomeInjector.java | 2 +- .../bukkit/nms/v1_21}/NMSBiomeProvider.java | 2 +- .../nms/v1_21}/NMSChunkGeneratorDelegate.java | 11 ++++----- .../bukkit/nms/v1_21}/NMSInitializer.java | 2 +- .../bukkit/nms/v1_21}/NMSInjectListener.java | 23 +++++++++++++++++-- .../bukkit/nms/v1_21}/NMSWorldProperties.java | 2 +- .../terra/bukkit/nms/v1_21}/Reflection.java | 2 +- .../bukkit/nms/v1_21}/RegistryFetcher.java | 2 +- 13 files changed, 40 insertions(+), 22 deletions(-) rename platforms/bukkit/nms/{v1_20_R6 => v1_21}/build.gradle.kts (100%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/AwfulBukkitHacks.java (93%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSBiomeInfo.java (83%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSBiomeInjector.java (98%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSBiomeProvider.java (97%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSChunkGeneratorDelegate.java (93%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSInitializer.java (90%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSInjectListener.java (61%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/NMSWorldProperties.java (94%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/Reflection.java (97%) rename platforms/bukkit/nms/{v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6 => v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21}/RegistryFetcher.java (94%) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 748399512..512af9721 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -52,12 +52,12 @@ object Versions { // } object Bukkit { - const val minecraft = "1.20.6" - const val paperBuild = "$minecraft-R0.1-20240602.222958-107" + const val minecraft = "1.21" + const val paperBuild = "$minecraft-R0.1-20240615.005026-1" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" - const val paperDevBundle = "$minecraft-R0.1-20240601.143523-105" + const val paperDevBundle = paperBuild const val runPaper = "2.3.0" const val paperWeight = "1.7.1" } diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index a63703c55..95924dadd 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -10,7 +10,7 @@ repositories { dependencies { shaded(project(":platforms:bukkit:common")) - shaded(project(":platforms:bukkit:nms:v1_20_R6", configuration = "reobf")) + shaded(project(":platforms:bukkit:nms:v1_21", configuration = "reobf")) shaded("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper) } diff --git a/platforms/bukkit/nms/v1_20_R6/build.gradle.kts b/platforms/bukkit/nms/v1_21/build.gradle.kts similarity index 100% rename from platforms/bukkit/nms/v1_20_R6/build.gradle.kts rename to platforms/bukkit/nms/v1_21/build.gradle.kts diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java similarity index 93% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/AwfulBukkitHacks.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java index d052b8109..d16bbbf30 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import com.google.common.collect.ImmutableMap; import net.minecraft.core.Holder; @@ -41,12 +41,12 @@ public class AwfulBukkitHacks { try { BukkitPlatformBiome platformBiome = (BukkitPlatformBiome) biome.getPlatformBiome(); NamespacedKey vanillaBukkitKey = platformBiome.getHandle().getKey(); - ResourceLocation vanillaMinecraftKey = new ResourceLocation(vanillaBukkitKey.getNamespace(), vanillaBukkitKey.getKey()); + ResourceLocation vanillaMinecraftKey = ResourceLocation.fromNamespaceAndPath(vanillaBukkitKey.getNamespace(), vanillaBukkitKey.getKey()); Biome platform = NMSBiomeInjector.createBiome(biome, Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey))); ResourceKey delegateKey = ResourceKey.create( Registries.BIOME, - new ResourceLocation("terra", NMSBiomeInjector.createBiomeID(pack, key)) + ResourceLocation.fromNamespaceAndPath("terra", NMSBiomeInjector.createBiomeID(pack, key)) ); Reference holder = biomeRegistry.register(delegateKey, platform, RegistrationInfo.BUILT_IN); diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInfo.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInfo.java similarity index 83% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInfo.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInfo.java index a62604447..5bf85aa6d 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInfo.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInfo.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java similarity index 98% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInjector.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java index deba15dec..e6d1f7869 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.core.Holder; import net.minecraft.core.Registry; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeProvider.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java index 79861c7e4..18184144f 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import com.mojang.serialization.MapCodec; import net.minecraft.core.Holder; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java similarity index 93% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSChunkGeneratorDelegate.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java index 0aadfcb9e..16097df27 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; @@ -26,7 +26,6 @@ import org.slf4j.LoggerFactory; import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -87,10 +86,10 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } @Override - public @NotNull CompletableFuture fillFromNoise(@NotNull Executor executor, @NotNull Blender blender, - @NotNull RandomState noiseConfig, - @NotNull StructureManager structureAccessor, @NotNull ChunkAccess chunk) { - return vanilla.fillFromNoise(executor, blender, noiseConfig, structureAccessor, chunk) + public CompletableFuture fillFromNoise(@NotNull Blender blender, + @NotNull RandomState noiseConfig, + @NotNull StructureManager structureAccessor, @NotNull ChunkAccess chunk) { + return vanilla.fillFromNoise(blender, noiseConfig, structureAccessor, chunk) .thenApply(c -> { LevelAccessor level = Reflection.STRUCTURE_MANAGER.getLevel(structureAccessor); BiomeProvider biomeProvider = pack.getBiomeProvider(); diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInitializer.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInitializer.java similarity index 90% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInitializer.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInitializer.java index 8ac1b46c9..18f1a058f 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInitializer.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInitializer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import org.bukkit.Bukkit; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInjectListener.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java similarity index 61% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInjectListener.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java index 22e153139..98510ff88 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java @@ -1,7 +1,9 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; +import net.minecraft.server.level.ChunkMap; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.chunk.status.WorldGenContext; import org.bukkit.World; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.event.EventHandler; @@ -10,6 +12,7 @@ import org.bukkit.event.world.WorldInitEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; import java.util.concurrent.locks.ReentrantLock; @@ -37,8 +40,24 @@ public class NMSInjectListener implements Listener { ChunkGenerator vanilla = serverWorld.getChunkSource().getGenerator(); NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), craftWorld.getSeed()); + ChunkMap chunkMap = serverWorld.getChunkSource().chunkMap; - serverWorld.getChunkSource().chunkMap.generator = new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()); + try { + Field worldGenContextField = chunkMap.getClass().getDeclaredField("worldGenContext"); + worldGenContextField.setAccessible(true); + + WorldGenContext worldGenContext = (WorldGenContext) worldGenContextField.get(chunkMap); + worldGenContextField.set(chunkMap, + new WorldGenContext( + worldGenContext.level(), + new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()), + worldGenContext.structureManager(), + worldGenContext.lightEngine(), + worldGenContext.mainThreadMailBox() + )); + } catch(NoSuchFieldException | IllegalAccessException e) { + throw new RuntimeException(e); + } LOGGER.info("Successfully injected into world."); diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSWorldProperties.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java similarity index 94% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSWorldProperties.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java index 386192103..7860cf530 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/NMSWorldProperties.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.world.level.LevelHeightAccessor; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/Reflection.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java similarity index 97% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/Reflection.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java index 77652cd6e..57e1b8c9c 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/Reflection.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; diff --git a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/RegistryFetcher.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java similarity index 94% rename from platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/RegistryFetcher.java rename to platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java index ca511dffa..0377eea0f 100644 --- a/platforms/bukkit/nms/v1_20_R6/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_6/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_20_6; +package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; From d810cad8d05b77a9a344751800ed3cf79c791611 Mon Sep 17 00:00:00 2001 From: Oak Date: Mon, 17 Jun 2024 15:50:06 +0100 Subject: [PATCH 06/13] Adjusted code for Spigot compatibility --- .../main/java/com/dfsek/terra/bukkit/nms/Initializer.java | 5 +++-- .../main/java/com/dfsek/terra/bukkit/util/VersionUtil.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index 2b9217847..db50be325 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -1,6 +1,7 @@ package com.dfsek.terra.bukkit.nms; -import org.bukkit.Bukkit; +import com.dfsek.terra.bukkit.util.VersionUtil; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,7 +9,7 @@ import com.dfsek.terra.bukkit.PlatformImpl; public interface Initializer { - String NMS = "v" + Bukkit.getServer().getMinecraftVersion().replace(".", "_"); + String NMS = "v" + VersionUtil.getMinecraftVersionInfo().toString().replace(".", "_"); String TERRA_PACKAGE = Initializer.class.getPackageName(); static boolean init(PlatformImpl platform) { diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java index 848befc60..97f4b713f 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java @@ -83,7 +83,7 @@ public final class VersionUtil { private final int patch; private MinecraftVersionInfo() { - this(Bukkit.getServer().getMinecraftVersion()); + this(Bukkit.getServer().getBukkitVersion().split("-")[0]); } private MinecraftVersionInfo(int major, int minor, int patch) { From 0758e13bc76fd1276ee6f81a3a57dca8b03c7e35 Mon Sep 17 00:00:00 2001 From: Oak Date: Wed, 19 Jun 2024 13:33:55 +0100 Subject: [PATCH 07/13] Made patch version optional as not all Minecraft versions have a patch number --- .../java/com/dfsek/terra/bukkit/nms/Initializer.java | 2 +- .../java/com/dfsek/terra/bukkit/util/VersionUtil.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index db50be325..1ca6f8c3f 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -9,7 +9,7 @@ import com.dfsek.terra.bukkit.PlatformImpl; public interface Initializer { - String NMS = "v" + VersionUtil.getMinecraftVersionInfo().toString().replace(".", "_"); + String NMS = VersionUtil.getMinecraftVersionInfo().toString().replace(".", "_"); String TERRA_PACKAGE = Initializer.class.getPackageName(); static boolean init(PlatformImpl platform) { diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java index 97f4b713f..6a8c662e0 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/VersionUtil.java @@ -77,7 +77,7 @@ public final class VersionUtil { public static final class MinecraftVersionInfo { private static final Logger logger = LoggerFactory.getLogger(MinecraftVersionInfo.class); - private static final Pattern VERSION_PATTERN = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)"); + private static final Pattern VERSION_PATTERN = Pattern.compile("(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); private final int major; private final int minor; private final int patch; @@ -97,7 +97,7 @@ public final class VersionUtil { if(versionMatcher.find()) { major = Integer.parseInt(versionMatcher.group(1)); minor = Integer.parseInt(versionMatcher.group(2)); - patch = Integer.parseInt(versionMatcher.group(3)); + patch = versionMatcher.group(3) != null ? Integer.parseInt(versionMatcher.group(3)) : -1; } else { logger.warn("Error while parsing minecraft version info. Continuing launch, but setting all versions to -1."); @@ -112,7 +112,11 @@ public final class VersionUtil { if(major == -1 && minor == -1 && patch == -1) return "Unknown"; - return String.format("v%d.%d.%d", major, minor, patch); + if (patch >= 0) { + return String.format("v%d.%d.%d", major, minor, patch); + } else { + return String.format("v%d.%d", major, minor); + } } public int getMajor() { From fddc9a52b94eb326c95513adc63cb2cf0e560ec8 Mon Sep 17 00:00:00 2001 From: Oak Date: Wed, 19 Jun 2024 13:34:35 +0100 Subject: [PATCH 08/13] Temporarily disabled commands whilst awaiting Cloud Framework update --- .../com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 555d073c7..b6c9a6e1d 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -96,13 +96,14 @@ public class TerraBukkitPlugin extends JavaPlugin { CommandExecutionCoordinator.simpleCoordinator(), BukkitAdapter::adapt, BukkitAdapter::adapt); - if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { - commandManager.registerBrigadier(); - final CloudBrigadierManager brigManager = commandManager.brigadierManager(); - if(brigManager != null) { - brigManager.setNativeNumberSuggestions(false); - } - } + // TODO: Uncomment once Cloud has updated for 1.21 +// if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { +// commandManager.registerBrigadier(); +// final CloudBrigadierManager brigManager = commandManager.brigadierManager(); +// if(brigManager != null) { +// brigManager.setNativeNumberSuggestions(false); +// } +// } if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { commandManager.registerAsynchronousCompletions(); From e7cc2753401d7ca67739a036b26665492fd3d185 Mon Sep 17 00:00:00 2001 From: Oak Date: Sun, 23 Jun 2024 14:16:50 +0100 Subject: [PATCH 09/13] Corrected issues with worldGenContext not correctly being set (Ref: https://stackoverflow.com/questions/56039341/get-declared-fields-of-java-lang-reflect-fields-in-jdk12/56043252#56043252) --- .../api/util/reflection/ReflectionUtil.java | 21 +++++++++++++++ .../bukkit/nms/v1_21/NMSInjectListener.java | 26 +++++++++---------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java index 8e35c3f9f..6b0c8fd28 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java @@ -8,6 +8,7 @@ package com.dfsek.terra.api.util.reflection; import org.jetbrains.annotations.NotNull; +import sun.misc.Unsafe; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; @@ -26,6 +27,18 @@ import java.util.stream.Stream; public final class ReflectionUtil { + private static final Unsafe UNSAFE; + + static { + try{ + final Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + UNSAFE = (Unsafe) unsafeField.get(null); + } catch(NoSuchFieldException | IllegalAccessException e){ + throw new RuntimeException(e); + } + } + public static Field[] getFields(@NotNull Class type) { Field[] result = type.getDeclaredFields(); Class parentClass = type.getSuperclass(); @@ -35,6 +48,14 @@ public final class ReflectionUtil { return result; } + public static void setFinalField(Object obj, String fieldName, Object value) throws NoSuchFieldException { + Field field = obj.getClass().getDeclaredField(fieldName); + field.setAccessible(true); + long fieldOffset = UNSAFE.objectFieldOffset(field); + + UNSAFE.putObject(obj, fieldOffset, value); + } + public static Method[] getMethods(@NotNull Class type) { Method[] result = type.getDeclaredMethods(); Class parentClass = type.getSuperclass(); diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java index 98510ff88..b471faa88 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSInjectListener.java @@ -1,9 +1,12 @@ package com.dfsek.terra.bukkit.nms.v1_21; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; + import net.minecraft.server.level.ChunkMap; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.status.WorldGenContext; +import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.event.EventHandler; @@ -12,7 +15,6 @@ import org.bukkit.event.world.WorldInitEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; import java.util.concurrent.locks.ReentrantLock; @@ -41,21 +43,17 @@ public class NMSInjectListener implements Listener { ChunkGenerator vanilla = serverWorld.getChunkSource().getGenerator(); NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), craftWorld.getSeed()); ChunkMap chunkMap = serverWorld.getChunkSource().chunkMap; + WorldGenContext worldGenContext = chunkMap.worldGenContext; try { - Field worldGenContextField = chunkMap.getClass().getDeclaredField("worldGenContext"); - worldGenContextField.setAccessible(true); - - WorldGenContext worldGenContext = (WorldGenContext) worldGenContextField.get(chunkMap); - worldGenContextField.set(chunkMap, - new WorldGenContext( - worldGenContext.level(), - new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()), - worldGenContext.structureManager(), - worldGenContext.lightEngine(), - worldGenContext.mainThreadMailBox() - )); - } catch(NoSuchFieldException | IllegalAccessException e) { + ReflectionUtil.setFinalField(chunkMap, "worldGenContext", new WorldGenContext( + worldGenContext.level(), + new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()), + worldGenContext.structureManager(), + worldGenContext.lightEngine(), + worldGenContext.mainThreadMailBox() + )); + } catch(NoSuchFieldException e) { throw new RuntimeException(e); } From 44d23573b3c2c4f19f8b56492ac9c8218a83cfac Mon Sep 17 00:00:00 2001 From: Oak Date: Sat, 20 Jul 2024 20:17:25 +0100 Subject: [PATCH 10/13] Updated dependencies to Paper 1.21 snapshot --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 512af9721..933986d54 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -53,7 +53,7 @@ object Versions { object Bukkit { const val minecraft = "1.21" - const val paperBuild = "$minecraft-R0.1-20240615.005026-1" + const val paperBuild = "$minecraft-R0.1-SNAPSHOT" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" From 922cd35e84f2968e559051542f7b652bf612ebf8 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Fri, 16 Aug 2024 11:07:03 +0100 Subject: [PATCH 11/13] Updated Cloud dependency to v2 --- buildSrc/src/main/kotlin/Versions.kt | 4 +- .../commands/addons/AddonsCommandAddon.java | 12 +- .../commands/packs/PacksCommandAddon.java | 20 +-- .../profiler/ProfilerCommandAddon.java | 28 ++--- .../structure/StructureCommandAddon.java | 25 ++-- common/api/build.gradle.kts | 2 +- .../command/arguments/RegistryArgument.java | 117 ++++++++---------- .../platform/CommandRegistrationEvent.java | 4 +- platforms/bukkit/common/build.gradle.kts | 2 +- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 42 ++++--- platforms/fabric/build.gradle.kts | 10 +- platforms/mixin-lifecycle/build.gradle.kts | 2 +- .../terra/lifecycle/LifecycleEntryPoint.java | 3 +- 13 files changed, 133 insertions(+), 138 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 933986d54..f6e2606e0 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -8,7 +8,9 @@ object Versions { const val paralithic = "0.7.1" const val strata = "1.3.2" - const val cloud = "1.8.4" + const val cloud = "2.0.0-rc.2" + const val cloudPaper = "2.0.0-beta.9" + const val cloudFabric = "2.0.0-beta.7" const val caffeine = "3.1.8" diff --git a/common/addons/command-addons/src/main/java/com/dfsek/terra/addons/commands/addons/AddonsCommandAddon.java b/common/addons/command-addons/src/main/java/com/dfsek/terra/addons/commands/addons/AddonsCommandAddon.java index 58a22ef7a..3277c0089 100644 --- a/common/addons/command-addons/src/main/java/com/dfsek/terra/addons/commands/addons/AddonsCommandAddon.java +++ b/common/addons/command-addons/src/main/java/com/dfsek/terra/addons/commands/addons/AddonsCommandAddon.java @@ -1,8 +1,5 @@ package com.dfsek.terra.addons.commands.addons; -import cloud.commandframework.ArgumentDescription; -import cloud.commandframework.CommandManager; - import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -12,6 +9,9 @@ import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; +import org.incendo.cloud.CommandManager; +import org.incendo.cloud.description.Description; + public class AddonsCommandAddon implements AddonInitializer { @Inject @@ -30,7 +30,7 @@ public class AddonsCommandAddon implements AddonInitializer { CommandManager manager = event.getCommandManager(); manager.command( - manager.commandBuilder("addons", ArgumentDescription.of("List installed Terra addons")) + manager.commandBuilder("addons", Description.of("List installed Terra addons")) .permission("terra.addons") .handler(context -> { StringBuilder addons = new StringBuilder("Installed addons:\n"); @@ -41,7 +41,7 @@ public class AddonsCommandAddon implements AddonInitializer { .append('@') .append(addon.getVersion().getFormatted()) .append('\n')); - context.getSender().sendMessage(addons.toString()); + context.sender().sendMessage(addons.toString()); }) ) .command( @@ -61,7 +61,7 @@ public class AddonsCommandAddon implements AddonInitializer { .append('@') .append(versions.getFormatted()) .append('\n')); - context.getSender().sendMessage(addonInfo.toString()); + context.sender().sendMessage(addonInfo.toString()); }) ); }); diff --git a/common/addons/command-packs/src/main/java/com/dfsek/terra/addons/commands/packs/PacksCommandAddon.java b/common/addons/command-packs/src/main/java/com/dfsek/terra/addons/commands/packs/PacksCommandAddon.java index 1d99af328..6b840ef1f 100644 --- a/common/addons/command-packs/src/main/java/com/dfsek/terra/addons/commands/packs/PacksCommandAddon.java +++ b/common/addons/command-packs/src/main/java/com/dfsek/terra/addons/commands/packs/PacksCommandAddon.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.commands.packs; -import cloud.commandframework.ArgumentDescription; -import cloud.commandframework.CommandManager; +import org.incendo.cloud.CommandManager; +import org.incendo.cloud.description.Description; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,7 +35,7 @@ public class PacksCommandAddon implements AddonInitializer { CommandManager manager = event.getCommandManager(); manager.command( - manager.commandBuilder("packs", ArgumentDescription.of("List installed config packs")) + manager.commandBuilder("packs", Description.of("List installed config packs")) .permission("terra.packs") .handler(context -> { StringBuilder packs = new StringBuilder("Installed packs:\n"); @@ -43,12 +43,12 @@ public class PacksCommandAddon implements AddonInitializer { .append(pack.getID()) .append('@') .append(pack.getVersion().getFormatted())); - context.getSender().sendMessage(packs.toString()); + context.sender().sendMessage(packs.toString()); }) ) .command( manager.commandBuilder("packs") - .literal("info", ArgumentDescription.of("Get information about a pack")) + .literal("info", Description.of("Get information about a pack")) .permission("terra.packs.info") .argument(RegistryArgument.of("pack", platform.getConfigRegistry())) .handler(context -> { @@ -65,21 +65,21 @@ public class PacksCommandAddon implements AddonInitializer { .append('@') .append(versions.getFormatted()) .append('\n')); - context.getSender().sendMessage(packInfo.toString()); + context.sender().sendMessage(packInfo.toString()); })) .command( manager.commandBuilder("packs") - .literal("reload", ArgumentDescription.of("Reload config packs")) + .literal("reload", Description.of("Reload config packs")) .permission("terra.packs.reload") .handler(context -> { - context.getSender().sendMessage("Reloading Terra..."); + context.sender().sendMessage("Reloading Terra..."); logger.info("Reloading Terra..."); if(platform.reload()) { logger.info("Terra reloaded successfully."); - context.getSender().sendMessage("Terra reloaded successfully."); + context.sender().sendMessage("Terra reloaded successfully."); } else { logger.error("Terra failed to reload."); - context.getSender().sendMessage( + context.sender().sendMessage( "Terra failed to reload. See logs for more information."); } })); diff --git a/common/addons/command-profiler/src/main/java/com/dfsek/terra/addons/commands/profiler/ProfilerCommandAddon.java b/common/addons/command-profiler/src/main/java/com/dfsek/terra/addons/commands/profiler/ProfilerCommandAddon.java index 2376c919b..a1559c8c5 100644 --- a/common/addons/command-profiler/src/main/java/com/dfsek/terra/addons/commands/profiler/ProfilerCommandAddon.java +++ b/common/addons/command-profiler/src/main/java/com/dfsek/terra/addons/commands/profiler/ProfilerCommandAddon.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.commands.profiler; -import cloud.commandframework.ArgumentDescription; -import cloud.commandframework.CommandManager; +import org.incendo.cloud.CommandManager; +import org.incendo.cloud.description.Description; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,24 +33,24 @@ public class ProfilerCommandAddon implements AddonInitializer { CommandManager manager = event.getCommandManager(); manager .command( - manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) - .literal("start", ArgumentDescription.of("Start profiling"), "st") + manager.commandBuilder("profiler", Description.of("Access the profiler")) + .literal("start", Description.of("Start profiling"), "st") .permission("terra.profiler.start") .handler(context -> { platform.getProfiler().start(); - context.getSender().sendMessage("Profiling started."); + context.sender().sendMessage("Profiling started."); })) .command( - manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) - .literal("stop", ArgumentDescription.of("Stop profiling"), "s") + manager.commandBuilder("profiler", Description.of("Access the profiler")) + .literal("stop", Description.of("Stop profiling"), "s") .permission("terra.profiler.stop") .handler(context -> { platform.getProfiler().stop(); - context.getSender().sendMessage("Profiling stopped."); + context.sender().sendMessage("Profiling stopped."); })) .command( - manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) - .literal("query", ArgumentDescription.of("Query profiler results"), "q") + manager.commandBuilder("profiler", Description.of("Access the profiler")) + .literal("query", Description.of("Query profiler results"), "q") .permission("terra.profiler.query") .handler(context -> { StringBuilder data = new StringBuilder("Terra Profiler data: \n"); @@ -59,15 +59,15 @@ public class ProfilerCommandAddon implements AddonInitializer { .append(timings.toString()) .append('\n')); logger.info(data.toString()); - context.getSender().sendMessage("Profiling data dumped to console."); + context.sender().sendMessage("Profiling data dumped to console."); })) .command( - manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) - .literal("reset", ArgumentDescription.of("Reset the profiler"), "r") + manager.commandBuilder("profiler", Description.of("Access the profiler")) + .literal("reset", Description.of("Reset the profiler"), "r") .permission("terra.profiler.reset") .handler(context -> { platform.getProfiler().reset(); - context.getSender().sendMessage("Profiler reset."); + context.sender().sendMessage("Profiler reset."); })); }); } diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 438546137..67e910661 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -1,11 +1,5 @@ package com.dfsek.terra.addons.commands.structure; -import cloud.commandframework.ArgumentDescription; -import cloud.commandframework.CommandManager; -import cloud.commandframework.arguments.standard.EnumArgument; -import cloud.commandframework.arguments.standard.LongArgument; -import cloud.commandframework.context.CommandContext; - import java.util.Random; import com.dfsek.terra.addons.manifest.api.AddonInitializer; @@ -22,6 +16,13 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.reflection.TypeKey; +import org.incendo.cloud.CommandManager; +import org.incendo.cloud.component.DefaultValue; +import org.incendo.cloud.context.CommandContext; +import org.incendo.cloud.description.Description; +import org.incendo.cloud.parser.standard.EnumParser; +import org.incendo.cloud.parser.standard.LongParser; + public class StructureCommandAddon implements AddonInitializer { @Inject @@ -31,7 +32,7 @@ public class StructureCommandAddon implements AddonInitializer { private BaseAddon addon; private static Registry getStructureRegistry(CommandContext sender) { - return sender.getSender().getEntity().orElseThrow().world().getPack().getRegistry(Structure.class); + return sender.sender().getEntity().orElseThrow().world().getPack().getRegistry(Structure.class); } @Override @@ -43,16 +44,16 @@ public class StructureCommandAddon implements AddonInitializer { CommandManager manager = event.getCommandManager(); manager.command( - manager.commandBuilder("structures", ArgumentDescription.of("Manage or generate structures")) + manager.commandBuilder("structures", Description.of("Manage or generate structures")) .literal("generate") - .argument(RegistryArgument.builder("structure", + .optional(RegistryArgument.builder("structure", StructureCommandAddon::getStructureRegistry, TypeKey.of(Structure.class))) - .argument(LongArgument.optional("seed", 0)) - .argument(EnumArgument.optional(Rotation.class, "rotation", Rotation.NONE)) + .optional("seed", LongParser.longParser(), DefaultValue.constant(0L)) + .optional("rotation", EnumParser.enumParser(Rotation.class), DefaultValue.constant(Rotation.NONE)) .handler(context -> { Structure structure = context.get("structure"); - Entity sender = context.getSender().getEntity().orElseThrow(); + Entity sender = context.sender().getEntity().orElseThrow(); structure.generate( sender.position().toInt(), sender.world(), diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 4f88c83e3..898f8bdcd 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -2,7 +2,7 @@ dependencies { api("ca.solo-studios", "strata", Versions.Libraries.strata) compileOnlyApi("org.slf4j", "slf4j-api", Versions.Libraries.slf4j) testImplementation("org.slf4j", "slf4j-api", Versions.Libraries.slf4j) - api("cloud.commandframework", "cloud-core", Versions.Libraries.cloud) + api("org.incendo", "cloud-core", Versions.Libraries.cloud) api("com.dfsek.tectonic", "common", Versions.Libraries.tectonic) diff --git a/common/api/src/main/java/com/dfsek/terra/api/command/arguments/RegistryArgument.java b/common/api/src/main/java/com/dfsek/terra/api/command/arguments/RegistryArgument.java index e89298751..91d6b56b9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/command/arguments/RegistryArgument.java +++ b/common/api/src/main/java/com/dfsek/terra/api/command/arguments/RegistryArgument.java @@ -1,18 +1,10 @@ package com.dfsek.terra.api.command.arguments; -import cloud.commandframework.ArgumentDescription; -import cloud.commandframework.arguments.CommandArgument; -import cloud.commandframework.arguments.parser.ArgumentParseResult; -import cloud.commandframework.arguments.parser.ArgumentParser; -import cloud.commandframework.context.CommandContext; import io.leangen.geantyref.TypeToken; import org.checkerframework.checker.nullness.qual.NonNull; -import org.checkerframework.checker.nullness.qual.Nullable; -import java.util.List; import java.util.Optional; -import java.util.Queue; -import java.util.function.BiFunction; +import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Collectors; @@ -21,40 +13,33 @@ import com.dfsek.terra.api.registry.exception.NoSuchEntryException; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.util.reflection.TypeKey; +import org.incendo.cloud.component.CommandComponent; +import org.incendo.cloud.component.DefaultValue; +import org.incendo.cloud.context.CommandContext; +import org.incendo.cloud.context.CommandInput; +import org.incendo.cloud.parser.ArgumentParseResult; +import org.incendo.cloud.parser.ArgumentParser; +import org.incendo.cloud.parser.ParserDescriptor; +import org.incendo.cloud.suggestion.Suggestion; +import org.incendo.cloud.suggestion.SuggestionProvider; -public class RegistryArgument extends CommandArgument { - private RegistryArgument( - boolean required, - @NonNull String name, - Function, Registry> registryFunction, - TypeToken typeToken, - @NonNull String defaultValue, - @Nullable BiFunction, String, List> suggestionsProvider, - @NonNull ArgumentDescription description - ) { - super(required, - name, - new RegistryArgumentParser<>(registryFunction), - defaultValue, - typeToken, - suggestionsProvider, - description); - } + +public class RegistryArgument { public static Builder builder(String name, Registry registry) { return new Builder<>(name, registry); } - public static CommandArgument of(String name, Registry registry) { + public static CommandComponent of(String name, Registry registry) { return RegistryArgument.builder(name, registry).build(); } - public static CommandArgument optional(String name, Registry registry) { - return RegistryArgument.builder(name, registry).asOptional().build(); + public static CommandComponent optional(String name, Registry registry) { + return RegistryArgument.builder(name, registry).optional().build(); } - public static CommandArgument optional(String name, Registry registry, String defaultKey) { - return RegistryArgument.builder(name, registry).asOptionalWithDefault(defaultKey).build(); + public static CommandComponent optional(String name, Registry registry, DefaultValue defaultKey) { + return RegistryArgument.builder(name, registry).optional(defaultKey).build(); } @SuppressWarnings("unchecked") @@ -63,49 +48,36 @@ public class RegistryArgument extends CommandArgument { return new Builder<>(name, registryFunction, (TypeToken) TypeToken.get(registryType.getType())); } - public static CommandArgument of(String name, Function, Registry> registryFunction, + public static CommandComponent of(String name, Function, Registry> registryFunction, TypeKey registryType) { return RegistryArgument.builder(name, registryFunction, registryType).build(); } - public static CommandArgument optional(String name, Function, Registry> registryFunction, + public static CommandComponent optional(String name, Function, Registry> registryFunction, TypeKey registryType) { - return RegistryArgument.builder(name, registryFunction, registryType).asOptional().build(); + return RegistryArgument.builder(name, registryFunction, registryType).optional().build(); } - public static CommandArgument optional(String name, Function, Registry> registryFunction, - TypeKey registryType, String defaultKey) { - return RegistryArgument.builder(name, registryFunction, registryType).asOptionalWithDefault(defaultKey).build(); + public static CommandComponent optional(String name, Function, Registry> registryFunction, + TypeKey registryType, DefaultValue defaultKey) { + return RegistryArgument.builder(name, registryFunction, registryType).optional(defaultKey).build(); } - public static final class Builder extends CommandArgument.Builder { - private final Function, Registry> registryFunction; - private final TypeToken typeToken; + public static final class Builder extends CommandComponent.Builder { @SuppressWarnings("unchecked") private Builder(@NonNull String name, Registry registry) { - super((TypeToken) TypeToken.get(registry.getType().getType()), name); - this.registryFunction = commandContext -> registry; - this.typeToken = (TypeToken) TypeToken.get(registry.getType().getType()); + super(); + this.name(name); + this.parser(ParserDescriptor.of( + new RegistryArgumentParser<>(commandContext -> registry), + (TypeToken) TypeToken.get(registry.getType().getType()))); } private Builder(@NonNull String name, Function, Registry> registryFunction, TypeToken typeToken) { - super(typeToken, name); - this.typeToken = typeToken; - this.registryFunction = registryFunction; - } - - @Override - public @NonNull RegistryArgument build() { - return new RegistryArgument<>( - isRequired(), - getName(), - registryFunction, - typeToken, - getDefaultValue(), - getSuggestionsProvider(), - getDefaultDescription() - ); + super(); + this.name(name); + this.parser(ParserDescriptor.of(new RegistryArgumentParser<>(registryFunction), typeToken)); } } @@ -119,12 +91,12 @@ public class RegistryArgument extends CommandArgument { @Override public @NonNull ArgumentParseResult<@NonNull R> parse(@NonNull CommandContext<@NonNull T> commandContext, - @NonNull Queue<@NonNull String> inputQueue) { - String input = inputQueue.remove(); - String next = inputQueue.peek(); - if(next != null && next.equals(":")) { - input += inputQueue.remove(); - input += inputQueue.remove(); + @NonNull CommandInput commandInput) { + String input = commandInput.readString(); + String next = commandInput.peekString(); + if(next.equals(":")) { + input += commandInput.readString(); + input += commandInput.readString(); } Registry registry = registryFunction.apply(commandContext); @@ -146,8 +118,17 @@ public class RegistryArgument extends CommandArgument { } @Override - public @NonNull List<@NonNull String> suggestions(@NonNull CommandContext commandContext, @NonNull String input) { - return registryFunction.apply(commandContext).keys().stream().map(RegistryKey::toString).sorted().collect(Collectors.toList()); + public @NonNull SuggestionProvider suggestionProvider() { + return new SuggestionProvider<>() { + @Override + public @NonNull CompletableFuture> suggestionsFuture( + @NonNull CommandContext context, @NonNull CommandInput input) { + + // TODO: Verify whether this is correct + return CompletableFuture.completedFuture(registryFunction.apply(context).keys().stream().map( + registryKey -> Suggestion.suggestion(registryKey.toString())).sorted().collect(Collectors.toList())); + } + }; } } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java index de13f061a..3ad041c9b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.event.events.platform; -import cloud.commandframework.CommandManager; - import com.dfsek.terra.api.command.CommandSender; import com.dfsek.terra.api.event.events.Event; +import org.incendo.cloud.CommandManager; + public class CommandRegistrationEvent implements Event { private final CommandManager commandManager; diff --git a/platforms/bukkit/common/build.gradle.kts b/platforms/bukkit/common/build.gradle.kts index f47415da4..eaf1956cb 100644 --- a/platforms/bukkit/common/build.gradle.kts +++ b/platforms/bukkit/common/build.gradle.kts @@ -11,5 +11,5 @@ dependencies { shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava) - shadedApi("cloud.commandframework", "cloud-paper", Versions.Libraries.cloud) + shadedApi("org.incendo", "cloud-paper", Versions.Libraries.cloudPaper) } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index b6c9a6e1d..6ae24afc3 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -17,15 +17,16 @@ package com.dfsek.terra.bukkit; -import cloud.commandframework.brigadier.CloudBrigadierManager; -import cloud.commandframework.bukkit.CloudBukkitCapabilities; -import cloud.commandframework.execution.CommandExecutionCoordinator; -import cloud.commandframework.paper.PaperCommandManager; import io.papermc.paper.threadedregions.scheduler.AsyncScheduler; import io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler; import org.bukkit.Bukkit; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.java.JavaPlugin; +import org.incendo.cloud.SenderMapper; +import org.incendo.cloud.brigadier.CloudBrigadierManager; +import org.incendo.cloud.bukkit.CloudBukkitCapabilities; +import org.incendo.cloud.execution.ExecutionCoordinator; +import org.incendo.cloud.paper.LegacyPaperCommandManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -71,7 +72,7 @@ public class TerraBukkitPlugin extends JavaPlugin { } try { - PaperCommandManager commandManager = getCommandSenderPaperCommandManager(); + LegacyPaperCommandManager commandManager = getCommandSenderPaperCommandManager(); platform.getEventManager().callEvent(new CommandRegistrationEvent(commandManager)); @@ -91,23 +92,28 @@ public class TerraBukkitPlugin extends JavaPlugin { } @NotNull - private PaperCommandManager getCommandSenderPaperCommandManager() throws Exception { - PaperCommandManager commandManager = new PaperCommandManager<>(this, - CommandExecutionCoordinator.simpleCoordinator(), - BukkitAdapter::adapt, - BukkitAdapter::adapt); - // TODO: Uncomment once Cloud has updated for 1.21 -// if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { -// commandManager.registerBrigadier(); -// final CloudBrigadierManager brigManager = commandManager.brigadierManager(); -// if(brigManager != null) { -// brigManager.setNativeNumberSuggestions(false); -// } -// } + private LegacyPaperCommandManager getCommandSenderPaperCommandManager() throws Exception { + // TODO: Update to PaperCommandManager + LegacyPaperCommandManager commandManager = new LegacyPaperCommandManager<>( + this, + ExecutionCoordinator.simpleCoordinator(), + SenderMapper.create( + BukkitAdapter::adapt, + BukkitAdapter::adapt + )); + + if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { + commandManager.registerBrigadier(); + final CloudBrigadierManager brigManager = commandManager.brigadierManager(); + if(brigManager != null) { + brigManager.setNativeNumberSuggestions(false); + } + } if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { commandManager.registerAsynchronousCompletions(); } + return commandManager; } diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index dba268728..58e892e99 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -10,6 +10,12 @@ architectury { loader("fabric") } +repositories { + maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") { + name = "Sonatype Snapshots" + } +} + dependencies { shadedApi(project(":common:implementation:base")) @@ -26,8 +32,8 @@ dependencies { modImplementation("net.fabricmc:fabric-loader:${Versions.Mod.fabricLoader}") - modImplementation("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) - include("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) + modImplementation("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) + include("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) modRuntimeOnly("net.fabricmc.fabric-api", "fabric-api", Versions.Fabric.fabricAPI) } diff --git a/platforms/mixin-lifecycle/build.gradle.kts b/platforms/mixin-lifecycle/build.gradle.kts index a4e700412..824d3cb46 100644 --- a/platforms/mixin-lifecycle/build.gradle.kts +++ b/platforms/mixin-lifecycle/build.gradle.kts @@ -15,7 +15,7 @@ dependencies { minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}") mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2") - modImplementation("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) { + modImplementation("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) { exclude("net.fabricmc") exclude("net.fabricmc.fabric-api") } diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java index f20038e5e..781536773 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java @@ -1,8 +1,7 @@ package com.dfsek.terra.lifecycle; -import cloud.commandframework.execution.CommandExecutionCoordinator; -import cloud.commandframework.fabric.FabricServerCommandManager; import net.minecraft.server.command.ServerCommandSource; +import org.incendo.cloud.fabric.FabricServerCommandManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; From 08df5fc2789c71d5134339a6286fcf38fac0e334 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Mon, 26 Aug 2024 11:24:04 +0100 Subject: [PATCH 12/13] Added 1.21.1 support --- .../main/java/com/dfsek/terra/bukkit/nms/Initializer.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index 1ca6f8c3f..3f7375bc4 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -15,7 +15,12 @@ public interface Initializer { static boolean init(PlatformImpl platform) { Logger logger = LoggerFactory.getLogger(Initializer.class); try { - Class initializerClass = Class.forName(TERRA_PACKAGE + "." + NMS + ".NMSInitializer"); + String packageVersion = NMS; + if (NMS.equals("v1_21_1")) { + packageVersion = "v1_21"; + } + + Class initializerClass = Class.forName(TERRA_PACKAGE + "." + packageVersion + ".NMSInitializer"); try { Initializer initializer = (Initializer) initializerClass.getConstructor().newInstance(); initializer.initialize(platform); From 3bef7d8572558066c2db8e8b3088d4811db167f5 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Mon, 26 Aug 2024 12:34:08 +0100 Subject: [PATCH 13/13] Resolved errors when tab completing --- .../main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 6ae24afc3..8c392dba1 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -102,15 +102,13 @@ public class TerraBukkitPlugin extends JavaPlugin { BukkitAdapter::adapt )); - if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { + if (commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { commandManager.registerBrigadier(); final CloudBrigadierManager brigManager = commandManager.brigadierManager(); if(brigManager != null) { brigManager.setNativeNumberSuggestions(false); } - } - - if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { + } else if (commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { commandManager.registerAsynchronousCompletions(); }