From 725fa88466d21665f779c70ff3a720e118b7ac86 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 9 Oct 2024 14:01:12 -0600 Subject: [PATCH 01/17] Remap fabric --- .../com/dfsek/terra/mod/config/EntityTypeTemplate.java | 2 +- .../com/dfsek/terra/mod/config/VillagerTypeTemplate.java | 2 +- .../mod/generation/MinecraftChunkGeneratorWrapper.java | 8 ++++---- .../com/dfsek/terra/mod/handle/MinecraftItemHandle.java | 6 +++--- .../com/dfsek/terra/mod/handle/MinecraftWorldHandle.java | 2 +- .../terra/block/entity/MobSpawnerBlockEntityMixin.java | 2 +- .../implementations/terra/chunk/data/ProtoChunkMixin.java | 2 +- .../terra/inventory/item/ItemStackMixin.java | 4 ++-- .../implementations/terra/world/ChunkRegionMixin.java | 2 +- .../terra/mod/mixin/lifecycle/DataPackContentsMixin.java | 4 ++-- .../java/com/dfsek/terra/mod/util/MinecraftAdapter.java | 2 +- .../main/java/com/dfsek/terra/mod/util/MinecraftUtil.java | 6 +++--- .../src/main/java/com/dfsek/terra/mod/util/TagUtil.java | 2 +- .../java/com/dfsek/terra/lifecycle/LifecyclePlatform.java | 2 +- .../terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java | 2 +- 15 files changed, 24 insertions(+), 24 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java index 9530c2b21..8e4e4b8f7 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java @@ -15,6 +15,6 @@ public class EntityTypeTemplate implements ObjectTemplate> { @Override public EntityType get() { - return Registries.ENTITY_TYPE.get(id); + return Registries.ENTITY_TYPE.getEntry(id); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java index 68e7a518f..79eb55193 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java @@ -15,6 +15,6 @@ public class VillagerTypeTemplate implements ObjectTemplate { @Override public VillagerType get() { - return Registries.VILLAGER_TYPE.get(id); + return Registries.VILLAGER_TYPE.getEntry(id); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index 46f5601de..9ede6950a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -97,7 +97,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun public void populateEntities(ChunkRegion region) { if(!this.settings.value().mobGenerationDisabled()) { ChunkPos chunkPos = region.getCenterPos(); - RegistryEntry registryEntry = region.getBiome(chunkPos.getStartPos().withY(region.getTopY() - 1)); + RegistryEntry registryEntry = region.getBiome(chunkPos.getStartPos().withY(region.getTopYInclusive() - 1)); ChunkRandom chunkRandom = new ChunkRandom(new CheckedRandom(RandomSeed.getSeed())); chunkRandom.setPopulationSeed(region.getSeed(), chunkPos.getStartX(), chunkPos.getStartZ()); SpawnHelper.populateEntities(region, registryEntry, chunkPos, chunkRandom); @@ -179,7 +179,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler())); BiomeProvider biomeProvider = pack.getBiomeProvider(); int min = height.getBottomY(); - for(int y = height.getTopY() - 1; y >= min; y--) { + for(int y = height.getTopYInclusive() - 1; y >= min; y--) { if(heightmap .getBlockPredicate() .test((BlockState) delegate.getBlock(properties, x, y, z, biomeProvider))) return y + 1; @@ -192,14 +192,14 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun BlockState[] array = new BlockState[height.getHeight()]; WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler())); BiomeProvider biomeProvider = pack.getBiomeProvider(); - for(int y = height.getTopY() - 1; y >= height.getBottomY(); y--) { + for(int y = height.getTopYInclusive() - 1; y >= height.getBottomY(); y--) { array[y - height.getBottomY()] = (BlockState) delegate.getBlock(properties, x, y, z, biomeProvider); } return new VerticalBlockSample(height.getBottomY(), array); } @Override - public void getDebugHudText(List text, NoiseConfig noiseConfig, BlockPos pos) { + public void appendDebugHudText(List text, NoiseConfig noiseConfig, BlockPos pos) { } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java index c9ef02f37..4efce8105 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java @@ -49,8 +49,8 @@ public class MinecraftItemHandle implements ItemHandle { } @Override - public Optional> getOptionalWrapper(RegistryKey> registryRef) { - return Optional.of(CommonPlatform.get().getServer().getRegistryManager().getWrapperOrThrow(registryRef)); + public Optional> getOptional(RegistryKey> registryRef) { + return Optional.of(CommonPlatform.get().getServer().getRegistryManager().getOrThrow(registryRef)); } }).parse(new StringReader(data)).getItem(); } catch(CommandSyntaxException e) { @@ -60,7 +60,7 @@ public class MinecraftItemHandle implements ItemHandle { @Override public Enchantment getEnchantment(String id) { - return (Enchantment) (Object) (CommonPlatform.get().enchantmentRegistry().get(Identifier.tryParse(id))); + return (Enchantment) (Object) (CommonPlatform.get().enchantmentRegistry().getEntry(Identifier.tryParse(id))); } @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index c36744d18..40084e9d4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -76,6 +76,6 @@ public class MinecraftWorldHandle implements WorldHandle { if(!id.contains(":")) throw new IllegalArgumentException("Invalid entity identifier " + id); Identifier identifier = Identifier.tryParse(id); if(identifier == null) identifier = Identifier.tryParse(id); - return (EntityType) Registries.ENTITY_TYPE.get(identifier); + return (EntityType) Registries.ENTITY_TYPE.getEntry(identifier); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java index 15e8fab34..f90a7ba46 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java @@ -54,7 +54,7 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public abstract void setEntityType(net.minecraft.entity.EntityType entityType, Random random); public EntityType terra$getSpawnedType() { - return (EntityType) Registries.ENTITY_TYPE.get( + return (EntityType) Registries.ENTITY_TYPE.getEntry( Identifier.tryParse(((MobSpawnerLogicAccessor) getLogic()).getSpawnEntry().getNbt().getString("id"))); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java index b9a6dd14c..5e5403834 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java @@ -48,6 +48,6 @@ public abstract class ProtoChunkMixin { } public int terra$getMaxHeight() { - return getHeightLimitView().getTopY(); + return getHeightLimitView().getTopYInclusive(); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/item/ItemStackMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/item/ItemStackMixin.java index 76121f64b..7837c626a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/item/ItemStackMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/item/ItemStackMixin.java @@ -19,7 +19,7 @@ package com.dfsek.terra.mod.mixin.implementations.terra.inventory.item; import net.minecraft.component.ComponentChanges; import net.minecraft.component.ComponentMap; -import net.minecraft.component.ComponentMapImpl; +import net.minecraft.component.MergedComponentMap; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; @@ -37,7 +37,7 @@ import com.dfsek.terra.api.inventory.item.ItemMeta; public abstract class ItemStackMixin { @Shadow @Final - private ComponentMapImpl components; + private MergedComponentMap components; @Shadow public abstract int getCount(); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java index 70a62ae79..90378269f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java @@ -99,7 +99,7 @@ public abstract class ChunkRegionMixin { } public int terraWorld$getMaxHeight() { - return world.getTopY(); + return world.getTopYInclusive(); } @Intrinsic(displace = true) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java index 680c1833c..c08b238e6 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java @@ -29,9 +29,9 @@ public class DataPackContentsMixin { @Inject(method = "refresh()V", at = @At("RETURN")) private void injectReload(CallbackInfo ci) { DynamicRegistryManager.Immutable dynamicRegistryManager = this.reloadableRegistries.getRegistryManager(); - TagUtil.registerWorldPresetTags(dynamicRegistryManager.get(RegistryKeys.WORLD_PRESET)); + TagUtil.registerWorldPresetTags(dynamicRegistryManager.getOrThrow(RegistryKeys.WORLD_PRESET)); - Registry biomeRegistry = dynamicRegistryManager.get(RegistryKeys.BIOME); + Registry biomeRegistry = dynamicRegistryManager.getOrThrow(RegistryKeys.BIOME); TagUtil.registerBiomeTags(biomeRegistry); MinecraftUtil.registerFlora(biomeRegistry); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java index 25ca7e4c5..a5ad15a99 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java @@ -39,7 +39,7 @@ public final class MinecraftAdapter { @Override public int getMaxHeight() { - return height.getTopY(); + return height.getTopYInclusive(); } @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index 692d0da5a..bbe2a638b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -46,7 +46,7 @@ public final class MinecraftUtil { } public static Optional> getEntry(Registry registry, Identifier identifier) { - return registry.getOrEmpty(identifier) + return registry.getOptionalValue(identifier) .flatMap(registry::getKey) .flatMap(registry::getEntry); } @@ -67,9 +67,9 @@ public final class MinecraftUtil { logger.info("Injecting flora into Terra biomes..."); TERRA_BIOME_MAP .forEach((vb, terraBiomes) -> - biomes.getOrEmpty(vb) + biomes.getOptionalValue(vb) .ifPresentOrElse(vanilla -> terraBiomes - .forEach(tb -> biomes.getOrEmpty(tb) + .forEach(tb -> biomes.getOptionalValue(tb) .ifPresentOrElse( terra -> { List> flowerFeatures = List.copyOf( diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java index 36ed6afea..210be1b29 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java @@ -25,7 +25,7 @@ public final class TagUtil { private static Map, List>> tagsToMutableMap(Registry registry) { return registry - .streamTagsAndEntries() + .streamTags() .collect(HashMap::new, (map, pair) -> map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())), diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 391842311..7c7c49306 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -72,7 +72,7 @@ public abstract class LifecyclePlatform extends ModPlatform { if(server != null) { - BiomeUtil.registerBiomes(server.getRegistryManager().get(RegistryKeys.BIOME)); + BiomeUtil.registerBiomes(server.getRegistryManager().getOrThrow(RegistryKeys.BIOME)); server.reloadResources(server.getDataPackManager().getEnabledIds()).exceptionally(throwable -> { LOGGER.warn("Failed to execute reload", throwable); return null; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java index 89490ef41..bf26a1ec3 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java @@ -24,7 +24,7 @@ public class SaveLoadingMixin { index = 1 ) private static DynamicRegistryManager grabManager(DynamicRegistryManager registryManager) { - MinecraftUtil.registerFlora(registryManager.get(RegistryKeys.BIOME)); + MinecraftUtil.registerFlora(registryManager.getOrThrow(RegistryKeys.BIOME)); return registryManager; } } From b03d128913a9ee60f3c533e70be11b0c0bec891a Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 25 Sep 2024 15:47:19 -0600 Subject: [PATCH 02/17] Addon dependency updates --- buildSrc/src/main/kotlin/Versions.kt | 2 +- common/addons/config-number-predicate/build.gradle.kts | 7 +------ common/addons/manifest-addon-loader/build.gradle.kts | 4 ++-- common/addons/structure-sponge-loader/build.gradle.kts | 8 ++------ .../addons/structure-terrascript-loader/build.gradle.kts | 8 ++------ platforms/cli/build.gradle.kts | 2 +- 6 files changed, 9 insertions(+), 22 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 1e48e716a..e95d6f6be 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -25,6 +25,7 @@ object Versions { const val snakeYml = "2.3" const val jetBrainsAnnotations = "24.1.0" const val junit = "5.11.0" + const val nbt = "6.1" } } @@ -72,7 +73,6 @@ object Versions { // } // object CLI { - const val nbt = "6.1" const val logback = "1.5.8" } } \ No newline at end of file diff --git a/common/addons/config-number-predicate/build.gradle.kts b/common/addons/config-number-predicate/build.gradle.kts index 2ea535016..b76b64160 100644 --- a/common/addons/config-number-predicate/build.gradle.kts +++ b/common/addons/config-number-predicate/build.gradle.kts @@ -5,9 +5,4 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) api("com.dfsek", "paralithic", Versions.Libraries.paralithic) -} - - -tasks.named("shadowJar") { - relocate("com.dfsek.paralithic", "com.dfsek.terra.addons.numberpredicate.lib.paralithic") -} +} \ No newline at end of file diff --git a/common/addons/manifest-addon-loader/build.gradle.kts b/common/addons/manifest-addon-loader/build.gradle.kts index 6a5b6f54e..8a2c03003 100644 --- a/common/addons/manifest-addon-loader/build.gradle.kts +++ b/common/addons/manifest-addon-loader/build.gradle.kts @@ -1,8 +1,8 @@ version = version("1.0.0") dependencies { - api("commons-io:commons-io:2.7") - implementation("com.dfsek.tectonic:yaml:${Versions.Libraries.tectonic}") + api("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) + implementation("com.dfsek.tectonic", "yaml", Versions.Libraries.tectonic) } tasks.withType { diff --git a/common/addons/structure-sponge-loader/build.gradle.kts b/common/addons/structure-sponge-loader/build.gradle.kts index dba93405f..20c002866 100644 --- a/common/addons/structure-sponge-loader/build.gradle.kts +++ b/common/addons/structure-sponge-loader/build.gradle.kts @@ -3,11 +3,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar version = version("1.0.0") dependencies { - api("commons-io:commons-io:2.7") - api("com.github.Querz:NBT:6.1") + api("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) + api("com.github.Querz", "NBT", Versions.Libraries.Internal.nbt) compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} - -tasks.named("shadowJar") { - relocate("org.apache.commons", "com.dfsek.terra.addons.sponge.lib.commons") } \ No newline at end of file diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index a042ee13c..24e3a20e9 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -3,10 +3,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar version = version("1.2.0") dependencies { - api("commons-io:commons-io:2.7") + api("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} - -tasks.named("shadowJar") { - relocate("org.apache.commons", "com.dfsek.terra.addons.terrascript.lib.commons") -} +} \ No newline at end of file diff --git a/platforms/cli/build.gradle.kts b/platforms/cli/build.gradle.kts index 5070c047f..893649caf 100644 --- a/platforms/cli/build.gradle.kts +++ b/platforms/cli/build.gradle.kts @@ -8,7 +8,7 @@ dependencies { shadedApi(project(":common:implementation:base")) shadedApi("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) - shadedApi("com.github.Querz", "NBT", Versions.CLI.nbt) + shadedApi("com.github.Querz", "NBT", Versions.Libraries.Internal.nbt) shadedImplementation("com.google.guava", "guava", Versions.Libraries.Internal.guava) From adb43dcaa84e22a133bf69415a4d716aff1f83be Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 9 Oct 2024 15:17:09 -0600 Subject: [PATCH 03/17] Gradle update --- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 4 ++-- gradlew | 5 ++++- gradlew.bat | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136f3d4ba8a0da8d277868979cfbc8ad796..a4b76b9530d66f5e68d973ea569d8e19de379189 100644 GIT binary patch delta 12612 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 HJ4oML2Lo<@i8BwbL^1~GkG`E7C$SEa_ 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8e876e1c5..fb602ee2a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=1541fa36599e12857140465f3c91a97409b4512501c26f9631fb113e392c5bd1 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index b740cf133..f5feea6d6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/gradlew.bat b/gradlew.bat index 25da30dbd..9d21a2183 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## From 197cb12be273cce67a568b8895b76dcfcd285cf0 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 9 Oct 2024 15:28:52 -0600 Subject: [PATCH 04/17] Update fabric versions to 1.21.2-pre1 --- buildSrc/src/main/kotlin/Versions.kt | 10 ++++++---- platforms/bukkit/common/build.gradle.kts | 2 +- platforms/fabric/build.gradle.kts | 4 ++-- platforms/mixin-lifecycle/build.gradle.kts | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e95d6f6be..e0eb26691 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -9,8 +9,6 @@ object Versions { const val strata = "1.3.2" const val cloud = "2.0.0" - const val cloudPaper = "2.0.0-beta.10" - const val cloudFabric = "2.0.0-beta.9" const val caffeine = "3.1.8" @@ -30,7 +28,9 @@ object Versions { } object Fabric { - const val fabricAPI = "0.104.0+${Mod.minecraft}" +// const val fabricAPI = "0.104.0+${Mod.minecraft}" + const val fabricAPI = "0.105.3+1.21.2" + const val cloud = "2.0.0-beta.9" } // // object Quilt { @@ -41,12 +41,13 @@ object Versions { object Mod { const val mixin = "0.15.3+mixin.0.8.7" - const val minecraft = "1.21.1" + const val minecraft = "1.21.2-pre1" const val yarn = "$minecraft+build.3" const val fabricLoader = "0.16.5" const val architecuryLoom = "1.7.413" const val architecturyPlugin = "3.4.159" + } // // object Forge { @@ -63,6 +64,7 @@ object Versions { const val paperDevBundle = paperBuild const val runPaper = "2.3.1" const val paperWeight = "1.7.2" + const val cloud = "2.0.0-beta.10" } // diff --git a/platforms/bukkit/common/build.gradle.kts b/platforms/bukkit/common/build.gradle.kts index eaf1956cb..fb3b1cc8f 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("org.incendo", "cloud-paper", Versions.Libraries.cloudPaper) + shadedApi("org.incendo", "cloud-paper", Versions.Bukkit.cloud) } diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 631424699..ce627df4f 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -26,8 +26,8 @@ dependencies { modImplementation("net.fabricmc:fabric-loader:${Versions.Mod.fabricLoader}") - modImplementation("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) - include("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) + modImplementation("org.incendo", "cloud-fabric", Versions.Fabric.cloud) + include("org.incendo", "cloud-fabric", Versions.Fabric.cloud) 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 b7d209b7f..35461fc0a 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("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) { + modImplementation("org.incendo", "cloud-fabric", Versions.Fabric.cloud) { exclude("net.fabricmc") exclude("net.fabricmc.fabric-api") } From 2ccf8a8805e2cb055575ae2ad1df0f087d9da2e5 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 9 Oct 2024 16:18:47 -0600 Subject: [PATCH 05/17] 1.21.2-pre1 builds --- .../config/BiomeParticleConfigTemplate.java | 2 +- .../terra/mod/config/EntityTypeTemplate.java | 2 +- .../mod/config/VillagerTypeTemplate.java | 2 +- .../MinecraftChunkGeneratorWrapper.java | 8 +++---- .../terra/mod/handle/MinecraftItemHandle.java | 6 +++++ .../mod/handle/MinecraftWorldHandle.java | 4 ++-- .../entity/MobSpawnerBlockEntityMixin.java | 2 +- .../terra/world/ChunkRegionMixin.java | 3 ++- .../terra/world/ServerWorldMixin.java | 3 ++- .../lifecycle/DataPackContentsMixin.java | 23 ++++++++++++++++--- .../dfsek/terra/mod/util/MinecraftUtil.java | 3 +-- .../com/dfsek/terra/mod/util/PresetUtil.java | 21 ++++++++--------- .../com/dfsek/terra/mod/util/TagUtil.java | 14 +++++------ .../dfsek/terra/lifecycle/util/BiomeUtil.java | 2 +- 14 files changed, 57 insertions(+), 38 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java index 457566444..8962f585f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java @@ -29,7 +29,7 @@ public class BiomeParticleConfigTemplate implements ObjectTemplate> { @Override public EntityType get() { - return Registries.ENTITY_TYPE.getEntry(id); + return Registries.ENTITY_TYPE.getEntry(id).orElseThrow().value(); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java index 79eb55193..b4b95416e 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java @@ -15,6 +15,6 @@ public class VillagerTypeTemplate implements ObjectTemplate { @Override public VillagerType get() { - return Registries.VILLAGER_TYPE.getEntry(id); + return Registries.VILLAGER_TYPE.getEntry(id).orElseThrow().value(); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index 9ede6950a..59eac0c3a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -35,7 +35,6 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeAccess; import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.gen.GenerationStep.Carver; import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.StructureWeightSampler; import net.minecraft.world.gen.chunk.Blender; @@ -215,10 +214,11 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun logger.debug("Loading world with config pack {}", pack.getID()); } + @Override - public void carve(ChunkRegion chunkRegion, long seed, NoiseConfig noiseConfig, BiomeAccess world, StructureAccessor structureAccessor, - Chunk chunk, Carver carverStep) { - // no op + public void carve(ChunkRegion chunkRegion, long seed, NoiseConfig noiseConfig, BiomeAccess biomeAccess, + StructureAccessor structureAccessor, Chunk chunk) { + //no op } @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java index 4efce8105..5c34eb82c 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java @@ -24,6 +24,7 @@ import net.minecraft.command.argument.ItemStackArgumentType; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryWrapper.Impl; +import net.minecraft.resource.featuretoggle.FeatureSet; import net.minecraft.util.Identifier; import java.util.Optional; @@ -43,6 +44,11 @@ public class MinecraftItemHandle implements ItemHandle { public Item createItem(String data) { try { return (Item) new ItemStackArgumentType(new CommandRegistryAccess() { + @Override + public FeatureSet getEnabledFeatures() { + return FeatureSet.empty(); + } + @Override public Stream>> streamAllRegistryKeys() { return CommonPlatform.get().getServer().getRegistryManager().streamAllRegistryKeys(); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index 40084e9d4..9b7987cb5 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -48,7 +48,7 @@ public class MinecraftWorldHandle implements WorldHandle { ". You are advised to perform this rename in your config packs as this translation will be removed in the next major " + "version of Terra."); } - net.minecraft.block.BlockState state = BlockArgumentParser.block(Registries.BLOCK.getReadOnlyWrapper(), data, true) + net.minecraft.block.BlockState state = BlockArgumentParser.block(Registries.BLOCK, data, true) .blockState(); if(state == null) throw new IllegalArgumentException("Invalid data: " + data); return (BlockState) state; @@ -76,6 +76,6 @@ public class MinecraftWorldHandle implements WorldHandle { if(!id.contains(":")) throw new IllegalArgumentException("Invalid entity identifier " + id); Identifier identifier = Identifier.tryParse(id); if(identifier == null) identifier = Identifier.tryParse(id); - return (EntityType) Registries.ENTITY_TYPE.getEntry(identifier); + return (EntityType) Registries.ENTITY_TYPE.getEntry(identifier).orElseThrow(); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java index f90a7ba46..5900bbb8f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java @@ -55,7 +55,7 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public EntityType terra$getSpawnedType() { return (EntityType) Registries.ENTITY_TYPE.getEntry( - Identifier.tryParse(((MobSpawnerLogicAccessor) getLogic()).getSpawnEntry().getNbt().getString("id"))); + Identifier.tryParse(((MobSpawnerLogicAccessor) getLogic()).getSpawnEntry().getNbt().getString("id"))).orElseThrow(); } public void terra$setSpawnedType(@NotNull EntityType creatureType) { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java index 90378269f..b0ca554a3 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java @@ -18,6 +18,7 @@ package com.dfsek.terra.mod.mixin.implementations.terra.world; import net.minecraft.block.FluidBlock; +import net.minecraft.entity.SpawnReason; import net.minecraft.fluid.Fluid; import net.minecraft.util.collection.BoundedRegionArray; import net.minecraft.util.math.BlockPos; @@ -125,7 +126,7 @@ public abstract class ChunkRegionMixin { } public Entity terraWorld$spawnEntity(double x, double y, double z, EntityType entityType) { - net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(world); + net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(world, SpawnReason.CHUNK_GENERATION); entity.setPos(x, y, z); ((ChunkRegion) (Object) this).spawnEntity(entity); return (Entity) entity; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java index f9a5bd1ea..d618ee656 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java @@ -17,6 +17,7 @@ package com.dfsek.terra.mod.mixin.implementations.terra.world; +import net.minecraft.entity.SpawnReason; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldAccess; import org.spongepowered.asm.mixin.Implements; @@ -42,7 +43,7 @@ import com.dfsek.terra.mod.util.MinecraftUtil; @Implements(@Interface(iface = ServerWorld.class, prefix = "terra$")) public abstract class ServerWorldMixin { public Entity terra$spawnEntity(double x, double y, double z, EntityType entityType) { - net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(null); + net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(null, SpawnReason.CHUNK_GENERATION); entity.setPos(x, y, z); ((net.minecraft.server.world.ServerWorld) (Object) this).spawnEntity(entity); return (Entity) entity; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java index c08b238e6..0fa4006cc 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java @@ -1,10 +1,16 @@ package com.dfsek.terra.mod.mixin.lifecycle; +import net.minecraft.registry.CombinedDynamicRegistries; import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.Registry; +import net.minecraft.registry.Registry.PendingTagLoad; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.ReloadableRegistries; +import net.minecraft.registry.ServerDynamicRegistryType; +import net.minecraft.resource.ResourceManager; +import net.minecraft.resource.featuretoggle.FeatureSet; import net.minecraft.server.DataPackContents; +import net.minecraft.server.command.CommandManager; import net.minecraft.world.biome.Biome; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -16,6 +22,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.dfsek.terra.mod.util.MinecraftUtil; import com.dfsek.terra.mod.util.TagUtil; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; + @Mixin(DataPackContents.class) public class DataPackContentsMixin { @@ -26,9 +38,14 @@ public class DataPackContentsMixin { /* * #refresh populates all tags in the registries */ - @Inject(method = "refresh()V", at = @At("RETURN")) - private void injectReload(CallbackInfo ci) { - DynamicRegistryManager.Immutable dynamicRegistryManager = this.reloadableRegistries.getRegistryManager(); + @Inject(method = "reload(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/CombinedDynamicRegistries;Ljava/util/List;Lnet/minecraft/resource/featuretoggle/FeatureSet;Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;ILjava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;", at = @At("RETURN")) + private static void injectReload(ResourceManager resourceManager, + CombinedDynamicRegistries dynamicRegistries, + List> pendingTagLoads, FeatureSet enabledFeatures, + CommandManager.RegistrationEnvironment environment, int functionPermissionLevel, + Executor prepareExecutor, + Executor applyExecutor, CallbackInfoReturnable> cir) { + DynamicRegistryManager.Immutable dynamicRegistryManager = dynamicRegistries.getCombinedRegistryManager(); TagUtil.registerWorldPresetTags(dynamicRegistryManager.getOrThrow(RegistryKeys.WORLD_PRESET)); Registry biomeRegistry = dynamicRegistryManager.getOrThrow(RegistryKeys.BIOME); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index bbe2a638b..7351eea9b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -47,8 +47,7 @@ public final class MinecraftUtil { public static Optional> getEntry(Registry registry, Identifier identifier) { return registry.getOptionalValue(identifier) - .flatMap(registry::getKey) - .flatMap(registry::getEntry); + .flatMap(id -> Optional.ofNullable(registry.getEntry(id))); } public static BlockEntity createState(WorldAccess worldAccess, BlockPos pos) { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 32c19a405..2ca4be005 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -40,9 +40,8 @@ public class PresetUtil { platform.multiNoiseBiomeSourceParameterListRegistry(); - RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); - RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) - .orElseThrow(); + RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.OVERWORLD)); + RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(ChunkGeneratorSettings.OVERWORLD)); Identifier generatorID = Identifier.tryParse( @@ -51,15 +50,13 @@ public class PresetUtil { PRESETS.add(generatorID); - RegistryEntry registryEntry = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); - RegistryEntry.Reference reference = multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); - RegistryEntry registryEntry2 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER) - .orElseThrow(); + RegistryEntry registryEntry = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER)); + RegistryEntry reference = multiNoiseBiomeSourceParameterLists.getEntry( + multiNoiseBiomeSourceParameterLists.get(MultiNoiseBiomeSourceParameterLists.NETHER)); + RegistryEntry registryEntry2 = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(ChunkGeneratorSettings.NETHER)); - RegistryEntry registryEntry3 = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); - RegistryEntry registryEntry4 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END) - .orElseThrow(); + RegistryEntry registryEntry3 = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_END)); + RegistryEntry registryEntry4 = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(ChunkGeneratorSettings.END)); TerraBiomeSource biomeSource = new TerraBiomeSource(pack); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld); @@ -69,7 +66,7 @@ public class PresetUtil { new NoiseChunkGenerator(MultiNoiseBiomeSource.create(reference), registryEntry2)); DimensionOptions endDimensionOptions = new DimensionOptions(registryEntry3, new NoiseChunkGenerator( - TheEndBiomeSource.createVanilla(platform.biomeRegistry().getReadOnlyWrapper()), registryEntry4)); + TheEndBiomeSource.createVanilla(platform.biomeRegistry()), registryEntry4)); WorldPreset preset = createPreset(dimensionOptions, netherDimensionOptions, endDimensionOptions); LOGGER.info("Created world type \"{}\"", generatorID); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java index 210be1b29..123951f04 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java @@ -2,7 +2,9 @@ package com.dfsek.terra.mod.util; import com.google.common.collect.ImmutableMap; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.TagGroupLoader.RegistryTags; import net.minecraft.registry.tag.TagKey; import net.minecraft.registry.tag.WorldPresetTags; import net.minecraft.world.biome.Biome; @@ -25,10 +27,8 @@ public final class TagUtil { private static Map, List>> tagsToMutableMap(Registry registry) { return registry - .streamTags() - .collect(HashMap::new, - (map, pair) -> - map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())), + .streamTags().collect(HashMap::new, + (map, tag) -> map.put(tag.getTag(), new ArrayList<>()), HashMap::putAll); } @@ -46,8 +46,7 @@ public final class TagUtil { .add(preset), () -> logger.error("Preset {} does not exist!", id))); - registry.clearTags(); - registry.populateTags(ImmutableMap.copyOf(collect)); + registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply(); } public static void registerBiomeTags(Registry registry) { @@ -90,8 +89,7 @@ public final class TagUtil { tb))), () -> logger.error("No vanilla biome: {}", vb))); - registry.clearTags(); - registry.populateTags(ImmutableMap.copyOf(collect)); + registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply(); if(logger.isDebugEnabled()) { registry.streamEntries() diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java index b32e12935..0ff5ad76c 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java @@ -51,7 +51,7 @@ public final class BiomeUtil { if(pack.getContext().get(PreLoadCompatibilityOptions.class).useVanillaBiomes()) { - ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(registry.getEntry(vanilla).orElseThrow()); + ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(registry.getEntry(registry.get(vanilla))); } else { VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); From be7e10c30c5a9cf56caa618ed56d7fb87b54d3a1 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 9 Oct 2024 16:41:04 -0600 Subject: [PATCH 06/17] Fix runtime errors --- .../terra/mod/handle/MinecraftWorldHandle.java | 2 +- .../terra/block/state/PropertyMixin.java | 3 ++- .../terra/chunk/WorldChunkMixin.java | 3 --- .../lifecycle/mixin/lifecycle/SaveLoadingMixin.java | 13 ++++++------- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index 9b7987cb5..a44a022d3 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -76,6 +76,6 @@ public class MinecraftWorldHandle implements WorldHandle { if(!id.contains(":")) throw new IllegalArgumentException("Invalid entity identifier " + id); Identifier identifier = Identifier.tryParse(id); if(identifier == null) identifier = Identifier.tryParse(id); - return (EntityType) Registries.ENTITY_TYPE.getEntry(identifier).orElseThrow(); + return (EntityType) Registries.ENTITY_TYPE.getEntry(identifier).orElseThrow().value(); } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/PropertyMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/PropertyMixin.java index 4cb1b4858..33f75afe6 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/PropertyMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/PropertyMixin.java @@ -9,6 +9,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import java.util.Collection; +import java.util.List; import com.dfsek.terra.api.block.state.properties.Property; @@ -24,7 +25,7 @@ public abstract class PropertyMixin { private String name; @Shadow - public abstract Collection getValues(); + public abstract List getValues(); @Intrinsic public Collection terra$values() { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java index 005822f69..1fa3d19b3 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java @@ -49,9 +49,6 @@ public abstract class WorldChunkMixin { @Nullable public abstract net.minecraft.block.BlockState setBlockState(BlockPos pos, net.minecraft.block.BlockState state, boolean moved); - @Shadow - public abstract TickSchedulers getTickSchedulers(); - public void terra$setBlock(int x, int y, int z, BlockState data, boolean physics) { BlockPos blockPos = new BlockPos(x, y, z); setBlockState(blockPos, (net.minecraft.block.BlockState) data, false); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java index bf26a1ec3..98aa4d27f 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java @@ -1,7 +1,8 @@ package com.dfsek.terra.lifecycle.mixin.lifecycle; -import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.CombinedDynamicRegistries; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.ServerDynamicRegistryType; import net.minecraft.server.SaveLoading; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -18,13 +19,11 @@ public class SaveLoadingMixin { "Ljava/util/concurrent/CompletableFuture;", at = @At( value = "INVOKE", - target = "Lnet/minecraft/registry/RegistryLoader;loadFromResource(Lnet/minecraft/resource/ResourceManager;" + - "Lnet/minecraft/registry/DynamicRegistryManager;Ljava/util/List;)" + - "Lnet/minecraft/registry/DynamicRegistryManager$Immutable;"), + target = "Lnet/minecraft/server/DataPackContents;reload(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/CombinedDynamicRegistries;Ljava/util/List;Lnet/minecraft/resource/featuretoggle/FeatureSet;Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;ILjava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"), index = 1 ) - private static DynamicRegistryManager grabManager(DynamicRegistryManager registryManager) { - MinecraftUtil.registerFlora(registryManager.getOrThrow(RegistryKeys.BIOME)); - return registryManager; + private static CombinedDynamicRegistries grabManager(CombinedDynamicRegistries dynamicRegistries) { + MinecraftUtil.registerFlora(dynamicRegistries.getCombinedRegistryManager().getOrThrow(RegistryKeys.BIOME)); + return dynamicRegistries; } } From c78a984a1104e08b8ee80163860cf2776e2ed263 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Thu, 10 Oct 2024 14:02:53 -0600 Subject: [PATCH 07/17] Update to pre2 --- buildSrc/src/main/kotlin/Versions.kt | 6 +++--- platforms/fabric/src/main/resources/fabric.mod.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e0eb26691..9536b40f0 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -41,9 +41,9 @@ object Versions { object Mod { const val mixin = "0.15.3+mixin.0.8.7" - const val minecraft = "1.21.2-pre1" - const val yarn = "$minecraft+build.3" - const val fabricLoader = "0.16.5" + const val minecraft = "1.21.2-pre2" + const val yarn = "$minecraft+build.4" + const val fabricLoader = "0.16.7" const val architecuryLoom = "1.7.413" const val architecturyPlugin = "3.4.159" diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index 592d4021a..3eb944413 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -32,9 +32,9 @@ "terra.common.mixins.json" ], "depends": { - "fabricloader": ">=0.16.5", + "fabricloader": ">=0.16.7", "java": ">=21", - "minecraft": ">=1.21.1", + "minecraft": ">=1.21.2-beta.2", "fabric": "*" } } \ No newline at end of file From 3033fbbf29cd662c6719b2885a71546d39054230 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Thu, 10 Oct 2024 16:49:40 -0600 Subject: [PATCH 08/17] Fix a ton of fabric impl bugs --- .../com/dfsek/terra/mod/util/TagUtil.java | 17 +++++--- .../lifecycle/CreateWorldScreenMixin.java | 27 ++++++++++++ .../mixin/lifecycle/MinecraftServerMixin.java | 5 +++ .../mixin/lifecycle/RegistryLoaderMixin.java | 3 +- .../resources/terra.lifecycle.mixins.json | 43 ++++++++++--------- 5 files changed, 66 insertions(+), 29 deletions(-) create mode 100644 platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/CreateWorldScreenMixin.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java index 123951f04..db8385f44 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java @@ -1,8 +1,6 @@ package com.dfsek.terra.mod.util; -import com.google.common.collect.ImmutableMap; import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagGroupLoader.RegistryTags; import net.minecraft.registry.tag.TagKey; @@ -16,6 +14,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public final class TagUtil { @@ -26,10 +25,9 @@ public final class TagUtil { } private static Map, List>> tagsToMutableMap(Registry registry) { - return registry - .streamTags().collect(HashMap::new, - (map, tag) -> map.put(tag.getTag(), new ArrayList<>()), - HashMap::putAll); + return registry.streamTags().collect(HashMap::new, + (map, tag) -> map.put(tag.getTag(), tag.stream().collect(Collectors.toList())), + HashMap::putAll); } public static void registerWorldPresetTags(Registry registry) { @@ -47,6 +45,13 @@ public final class TagUtil { () -> logger.error("Preset {} does not exist!", id))); registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply(); + + if(logger.isDebugEnabled()) { + registry.streamEntries() + .map(e -> e.registryKey().getValue() + ": " + + e.streamTags().reduce("", (s, t) -> t.id() + ", " + s, String::concat)) + .forEach(logger::debug); + } } public static void registerBiomeTags(Registry registry) { diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/CreateWorldScreenMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/CreateWorldScreenMixin.java new file mode 100644 index 000000000..61f385939 --- /dev/null +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/CreateWorldScreenMixin.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.lifecycle.mixin.lifecycle; + + +import com.dfsek.terra.api.Platform; + +import com.dfsek.terra.mod.CommonPlatform; + +import com.dfsek.terra.mod.ModPlatform; + +import net.minecraft.client.gui.screen.world.CreateWorldScreen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static com.dfsek.terra.lifecycle.util.LifecycleUtil.initialized; + + +@Mixin(CreateWorldScreen.class) +public class CreateWorldScreenMixin { + @Inject(method = "onCloseScreen()V", at = @At("HEAD")) + public void onClose(CallbackInfo ci) { + ModPlatform platform = CommonPlatform.get(); + platform.getRawConfigRegistry().clear(); + initialized = false; + } +} diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java index 0f04c0963..2526079ed 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java @@ -1,5 +1,8 @@ package com.dfsek.terra.lifecycle.mixin.lifecycle; +import com.dfsek.terra.mod.CommonPlatform; +import com.dfsek.terra.mod.ModPlatform; + import com.mojang.datafixers.DataFixer; import net.minecraft.resource.ResourcePackManager; import net.minecraft.server.MinecraftServer; @@ -34,6 +37,8 @@ public class MinecraftServerMixin { @Inject(method = "shutdown()V", at = @At("RETURN")) private void injectShutdown(CallbackInfo ci) { + ModPlatform platform = CommonPlatform.get(); + platform.getRawConfigRegistry().clear(); initialized = false; } } diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java index 739c084f3..c04e0fad7 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java @@ -39,8 +39,7 @@ public class RegistryLoaderMixin { private static Logger LOGGER; @Redirect( - method = "load(Lnet/minecraft/registry/RegistryLoader$RegistryLoadable;Lnet/minecraft/registry/DynamicRegistryManager;" + - "Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", + method = "load(Lnet/minecraft/registry/RegistryLoader$RegistryLoadable;Ljava/util/List;Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", at = @At( value = "INVOKE", target = "Ljava/util/List;forEach(Ljava/util/function/Consumer;)V", diff --git a/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json b/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json index 2e4708bd4..0646899cf 100644 --- a/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json +++ b/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json @@ -1,23 +1,24 @@ { - "required": true, - "minVersion": "0.8", - "package": "com.dfsek.terra.lifecycle.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - "NoiseConfigMixin", - "RegistryEntryReferenceInvoker", - "RegistryMixin", - "SimpleRegistryMixin", - "lifecycle.MinecraftServerMixin", - "lifecycle.RegistryLoaderMixin", - "lifecycle.SaveLoadingMixin" - ], - "client": [ - ], - "server": [ - ], - "injectors": { - "defaultRequire": 1 - }, - "refmap": "terra.lifecycle.refmap.json" + "required": true, + "minVersion": "0.8", + "package": "com.dfsek.terra.lifecycle.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "NoiseConfigMixin", + "RegistryEntryReferenceInvoker", + "RegistryMixin", + "SimpleRegistryMixin", + "lifecycle.MinecraftServerMixin", + "lifecycle.RegistryLoaderMixin", + "lifecycle.SaveLoadingMixin" + ], + "client": [ + "lifecycle.CreateWorldScreenMixin" + ], + "server": [ + ], + "injectors": { + "defaultRequire": 1 + }, + "refmap": "terra.lifecycle.refmap.json" } \ No newline at end of file From 585967157d3cf615a7608e3e924b3cbc0a50869d Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 11 Oct 2024 18:40:59 -0600 Subject: [PATCH 09/17] 1.21.2-pre3 --- buildSrc/src/main/kotlin/Versions.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 9536b40f0..df18dc709 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -29,7 +29,7 @@ object Versions { object Fabric { // const val fabricAPI = "0.104.0+${Mod.minecraft}" - const val fabricAPI = "0.105.3+1.21.2" + const val fabricAPI = "0.105.4+1.21.2" const val cloud = "2.0.0-beta.9" } // @@ -41,8 +41,8 @@ object Versions { object Mod { const val mixin = "0.15.3+mixin.0.8.7" - const val minecraft = "1.21.2-pre2" - const val yarn = "$minecraft+build.4" + const val minecraft = "1.21.2-pre3" + const val yarn = "$minecraft+build.2" const val fabricLoader = "0.16.7" const val architecuryLoom = "1.7.413" From 12faae8fd52fd27a2991d410e02d22200f93aa68 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Sun, 13 Oct 2024 15:55:29 -0600 Subject: [PATCH 10/17] Use reflection remapper for worldGenContext on bukkit How this even worked before astounds me --- .../bukkit/nms/v1_21/NMSInjectListener.java | 19 +++++++------------ .../terra/bukkit/nms/v1_21/Reflection.java | 11 +++++++++++ 2 files changed, 18 insertions(+), 12 deletions(-) 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 927b019ed..a25638594 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 @@ -42,18 +42,13 @@ public class NMSInjectListener implements Listener { NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), craftWorld.getSeed()); ChunkMap chunkMap = serverWorld.getChunkSource().chunkMap; WorldGenContext worldGenContext = chunkMap.worldGenContext; - - try { - 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); - } + Reflection.CHUNKMAP.setWorldGenContext(chunkMap, new WorldGenContext( + worldGenContext.level(), + new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()), + worldGenContext.structureManager(), + worldGenContext.lightEngine(), + worldGenContext.mainThreadMailBox() + )); LOGGER.info("Successfully injected into world."); diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java index 57e1b8c9c..a6f4ea9ba 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java @@ -3,8 +3,10 @@ package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; import net.minecraft.core.MappedRegistry; +import net.minecraft.server.level.ChunkMap; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.StructureManager; +import net.minecraft.world.level.chunk.status.WorldGenContext; import xyz.jpenilla.reflectionremapper.ReflectionRemapper; import xyz.jpenilla.reflectionremapper.proxy.ReflectionProxyFactory; import xyz.jpenilla.reflectionremapper.proxy.annotation.FieldGetter; @@ -19,6 +21,8 @@ public class Reflection { public static final ReferenceProxy REFERENCE; + public static final ChunkMapProxy CHUNKMAP; + static { ReflectionRemapper reflectionRemapper = ReflectionRemapper.forReobfMappingsInPaperJar(); ReflectionProxyFactory reflectionProxyFactory = ReflectionProxyFactory.create(reflectionRemapper, @@ -27,6 +31,7 @@ public class Reflection { MAPPED_REGISTRY = reflectionProxyFactory.reflectionProxy(MappedRegistryProxy.class); STRUCTURE_MANAGER = reflectionProxyFactory.reflectionProxy(StructureManagerProxy.class); REFERENCE = reflectionProxyFactory.reflectionProxy(ReferenceProxy.class); + CHUNKMAP = reflectionProxyFactory.reflectionProxy(ChunkMapProxy.class); } @@ -49,4 +54,10 @@ public class Reflection { @MethodName("bindValue") void invokeBindValue(Reference instance, T value); } + + @Proxies(ChunkMap.class) + public interface ChunkMapProxy { + @FieldSetter("worldGenContext") + void setWorldGenContext(ChunkMap instance, WorldGenContext worldGenContext); + } } From 0a952cff4c3eea8bc0a49205643e0c225d12304c Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Sun, 13 Oct 2024 16:06:35 -0600 Subject: [PATCH 11/17] bump build number --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 67b22ccb5..968d1e3b7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ preRelease(true) -versionProjects(":common:api", version("6.5.0")) -versionProjects(":common:implementation", version("6.5.0")) -versionProjects(":platforms", version("6.5.0")) +versionProjects(":common:api", version("6.5.1")) +versionProjects(":common:implementation", version("6.5.1")) +versionProjects(":platforms", version("6.5.1")) allprojects { From e756953828fa49b36b3b2e3992cad70b3f359e59 Mon Sep 17 00:00:00 2001 From: Astrash Date: Fri, 18 Oct 2024 17:49:07 +1100 Subject: [PATCH 12/17] Use singleton impl for map based probability collections --- .../terra/config/loaders/ProbabilityCollectionLoader.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 6a9e10bd0..13b44b6bc 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -43,6 +43,10 @@ public class ProbabilityCollectionLoader implements TypeLoader map = (Map) o; + if (map.size() == 1) { + Object onlyKey = map.keySet().iterator().next(); + return new ProbabilityCollection.Singleton<>(configLoader.loadType(generic, onlyKey, depthTracker)); + } for(Map.Entry entry : map.entrySet()) { collection.add(configLoader.loadType(generic, entry.getKey(), depthTracker.entry((String) entry.getKey())), configLoader.loadType(Integer.class, entry.getValue(), depthTracker.entry((String) entry.getKey()))); @@ -50,7 +54,7 @@ public class ProbabilityCollectionLoader implements TypeLoader> map = (List>) o; if(map.size() == 1) { - Map entry = map.get(0); + Map entry = map.getFirst(); if(entry.size() == 1) { for(Object value : entry.keySet()) { return new ProbabilityCollection.Singleton<>(configLoader.loadType(generic, value, depthTracker)); From c190485dbe9cd45d2a9294b7885c76ebf52734e3 Mon Sep 17 00:00:00 2001 From: Astrash Date: Fri, 18 Oct 2024 17:50:41 +1100 Subject: [PATCH 13/17] Use more appropriate names in probability collection loader --- .../loaders/ProbabilityCollectionLoader.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 13b44b6bc..0c0406bf3 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -52,18 +52,18 @@ public class ProbabilityCollectionLoader implements TypeLoader> map = (List>) o; - if(map.size() == 1) { - Map entry = map.getFirst(); - if(entry.size() == 1) { - for(Object value : entry.keySet()) { + List> list = (List>) o; + if(list.size() == 1) { + Map map = list.getFirst(); + if(map.size() == 1) { + for(Object value : map.keySet()) { return new ProbabilityCollection.Singleton<>(configLoader.loadType(generic, value, depthTracker)); } } } - for(int i = 0; i < map.size(); i++) { - Map l = map.get(i); - for(Entry entry : l.entrySet()) { + for(int i = 0; i < list.size(); i++) { + Map map = list.get(i); + for(Entry entry : map.entrySet()) { if(entry.getValue() == null) throw new LoadException("No probability defined for entry \"" + entry.getKey() + "\"", depthTracker); Object val = configLoader.loadType(generic, entry.getKey(), depthTracker.index(i).entry((String) entry.getKey())); From b75e9c152eb07aaa0150184fe54743adbd5dac0e Mon Sep 17 00:00:00 2001 From: Astrash Date: Fri, 18 Oct 2024 19:29:48 +1100 Subject: [PATCH 14/17] Refactor palette addon --- .../terra/addons/palette/PaletteFactory.java | 7 +-- .../terra/addons/palette/PaletteTemplate.java | 6 +- .../addons/palette/palette/PaletteImpl.java | 62 +++++-------------- 3 files changed, 21 insertions(+), 54 deletions(-) diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index 4349ae661..1deb75c93 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -8,7 +8,6 @@ package com.dfsek.terra.addons.palette; import com.dfsek.terra.addons.palette.palette.PaletteImpl; -import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.chunk.generation.util.Palette; @@ -17,10 +16,6 @@ import com.dfsek.terra.api.world.chunk.generation.util.Palette; public class PaletteFactory implements ConfigFactory { @Override public Palette build(PaletteTemplate config, Platform platform) { - PaletteImpl palette = new PaletteImpl(config.getNoise()); - for(PaletteLayerHolder layer : config.getPalette()) { - palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); - } - return palette; + return new PaletteImpl(config.getPalette(), config.getDefaultSampler()); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java index eb5f219bc..d2c966320 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java @@ -23,7 +23,7 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class PaletteTemplate implements AbstractableTemplate { @Value("sampler") @Default - private @Meta NoiseSampler noise = NoiseSampler.zero(); + private @Meta NoiseSampler defaultSampler = NoiseSampler.zero(); @Value("id") @Final @@ -40,7 +40,7 @@ public class PaletteTemplate implements AbstractableTemplate { return palette; } - public NoiseSampler getNoise() { - return noise; + public NoiseSampler getDefaultSampler() { + return defaultSampler; } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java index 96186f3d4..1eeaff73d 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java @@ -15,73 +15,45 @@ import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.chunk.generation.util.Palette; - /** * A class representation of a "slice" of the world. * Used to get a section of blocks, based on the depth at which they are found. */ public class PaletteImpl implements Palette { - private final List pallet = new ArrayList<>(); - private final NoiseSampler sampler; + private final PaletteLayer[] layers; - public PaletteImpl(NoiseSampler sampler) { - this.sampler = sampler; - } + public PaletteImpl(List layers, NoiseSampler defaultSampler) { + List layerArray = new ArrayList<>(); - public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { - for(int i = 0; i < layers; i++) { - pallet.add(new PaletteLayer(m, sampler)); + for (PaletteLayerHolder holder : layers) { + PaletteLayer layer; + ProbabilityCollection materials = holder.getLayer(); + NoiseSampler sampler = holder.getSampler() == null ? defaultSampler : holder.getSampler(); + layer = new PaletteLayer(materials, sampler); + for (int i = 0; i < holder.getSize(); i++) + layerArray.add(layer); } - return this; + + this.layers = layerArray.toArray(new PaletteLayer[0]); } @Override public BlockState get(int layer, double x, double y, double z, long seed) { - PaletteLayer paletteLayer; - if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); - else { - List pl = getLayers(); - if(layer >= pl.size()) paletteLayer = pl.get(pl.size() - 1); - else paletteLayer = pl.get(layer); - } - NoiseSampler paletteSampler = paletteLayer.getSampler(); - return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, seed); + int idx = layer < layers.length ? layer : layers.length - 1; + return layers[idx].get(x, y, z, seed); } - - public int getSize() { - return pallet.size(); - } - - public List getLayers() { - return pallet; - } - - /** - * Class representation of a layer of a BlockPalette. - */ - public static class PaletteLayer { + static class PaletteLayer { private final NoiseSampler sampler; private final ProbabilityCollection collection; - /** - * Constructs a PaletteLayerHolder with a ProbabilityCollection of materials and a number of layers. - * - * @param type The collection of materials to choose from. - * @param sampler Noise sampler to use - */ public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { this.sampler = sampler; this.collection = type; } - public BlockState get(NoiseSampler random, double x, double y, double z, long seed) { - return this.collection.get(random, x, y, z, seed); + public BlockState get(double x, double y, double z, long seed) { + return this.collection.get(sampler, x, y, z, seed); } - - public NoiseSampler getSampler() { - return sampler; - } - } } From 62756d27843abbac7a87239513bc624ef51195b0 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Fri, 25 Oct 2024 19:36:18 +0100 Subject: [PATCH 15/17] Updated Bukkit to support 1.21.3 --- buildSrc/src/main/kotlin/Versions.kt | 4 ++-- .../terra/bukkit/nms/v1_21/AwfulBukkitHacks.java | 9 ++++----- .../terra/bukkit/nms/v1_21/NMSBiomeInjector.java | 2 +- .../terra/bukkit/nms/v1_21/NMSBiomeProvider.java | 4 ++-- .../nms/v1_21/NMSChunkGeneratorDelegate.java | 3 +-- .../terra/bukkit/nms/v1_21/NMSInjectListener.java | 5 +++-- .../terra/bukkit/nms/v1_21/NMSWorldProperties.java | 4 ++-- .../dfsek/terra/bukkit/nms/v1_21/Reflection.java | 14 ++++++++++++++ .../terra/bukkit/nms/v1_21/RegistryFetcher.java | 4 +++- 9 files changed, 32 insertions(+), 17 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e507febd5..25021e9c1 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -56,8 +56,8 @@ object Versions { // } object Bukkit { - const val minecraft = "1.21.1" - const val paperBuild = "$minecraft-R0.1-20240917.151311-80" + const val minecraft = "1.21.3" + const val paperBuild = "$minecraft-R0.1-20241025.163321-1" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java index 42d683394..2523e534e 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/AwfulBukkitHacks.java @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; @@ -43,7 +42,7 @@ public class AwfulBukkitHacks { NamespacedKey vanillaBukkitKey = platformBiome.getHandle().getKey(); ResourceLocation vanillaMinecraftKey = ResourceLocation.fromNamespaceAndPath(vanillaBukkitKey.getNamespace(), vanillaBukkitKey.getKey()); - Biome platform = NMSBiomeInjector.createBiome(biome, Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey))); + Biome platform = NMSBiomeInjector.createBiome(biome, biomeRegistry.get(vanillaMinecraftKey).orElseThrow().value()); ResourceKey delegateKey = ResourceKey.create( Registries.BIOME, @@ -70,7 +69,7 @@ public class AwfulBukkitHacks { .getTags() // streamKeysAndEntries .collect(HashMap::new, (map, pair) -> - map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())), + map.put(pair.key(), new ArrayList<>(Reflection.HOLDER_SET.invokeContents(pair).stream().toList())), HashMap::putAll); terraBiomeMap @@ -91,8 +90,8 @@ public class AwfulBukkitHacks { () -> LOGGER.error("No such biome: {}", tb))), () -> LOGGER.error("No vanilla biome: {}", vb))); - biomeRegistry.resetTags(); - biomeRegistry.bindTags(ImmutableMap.copyOf(collect)); + ((MappedRegistry) biomeRegistry).bindAllTagsToEmpty(); + ImmutableMap.copyOf(collect).forEach(biomeRegistry::bindTag); } catch(SecurityException | IllegalArgumentException exception) { throw new RuntimeException(exception); diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java index e6d1f7869..8dea43a32 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeInjector.java @@ -19,7 +19,7 @@ public class NMSBiomeInjector { public static Optional> getEntry(Registry registry, ResourceLocation identifier) { return registry.getOptional(identifier) .flatMap(registry::getResourceKey) - .flatMap(registry::getHolder); + .flatMap(registry::get); } public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla) diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java index 8abe26a51..ca2b0e8da 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSBiomeProvider.java @@ -29,7 +29,7 @@ public class NMSBiomeProvider extends BiomeSource { protected Stream> collectPossibleBiomes() { return delegate.stream() .map(biome -> RegistryFetcher.biomeRegistry() - .getHolderOrThrow(((BukkitPlatformBiome) biome.getPlatformBiome()).getContext() + .getOrThrow(((BukkitPlatformBiome) biome.getPlatformBiome()).getContext() .get(NMSBiomeInfo.class) .biomeKey())); } @@ -45,7 +45,7 @@ public class NMSBiomeProvider extends BiomeSource { @Override public @NotNull Holder getNoiseBiome(int x, int y, int z, @NotNull Sampler sampler) { - return biomeRegistry.getHolderOrThrow(((BukkitPlatformBiome) delegate.getBiome(x << 2, y << 2, z << 2, seed) + return biomeRegistry.getOrThrow(((BukkitPlatformBiome) delegate.getBiome(x << 2, y << 2, z << 2, seed) .getPlatformBiome()).getContext() .get(NMSBiomeInfo.class) .biomeKey()); diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java index 16097df27..fe4fa6a59 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSChunkGeneratorDelegate.java @@ -15,7 +15,6 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.Beardifier; import net.minecraft.world.level.levelgen.DensityFunction.SinglePointContext; -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; @@ -59,7 +58,7 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { @Override public void applyCarvers(@NotNull WorldGenRegion chunkRegion, long seed, @NotNull RandomState noiseConfig, @NotNull BiomeManager world, - @NotNull StructureManager structureAccessor, @NotNull ChunkAccess chunk, @NotNull Carving carverStep) { + @NotNull StructureManager structureAccessor, @NotNull ChunkAccess chunk) { // no-op } 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 a25638594..9d73a9e98 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 @@ -41,13 +41,14 @@ 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; + WorldGenContext worldGenContext = Reflection.CHUNKMAP.getWorldGenContext(chunkMap); Reflection.CHUNKMAP.setWorldGenContext(chunkMap, new WorldGenContext( worldGenContext.level(), new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()), worldGenContext.structureManager(), worldGenContext.lightEngine(), - worldGenContext.mainThreadMailBox() + worldGenContext.mainThreadExecutor(), + worldGenContext.unsavedListener() )); LOGGER.info("Successfully injected into world."); diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java index 7860cf530..f0651cc54 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/NMSWorldProperties.java @@ -26,11 +26,11 @@ public class NMSWorldProperties implements WorldProperties { @Override public int getMaxHeight() { - return height.getMaxBuildHeight(); + return height.getMaxY(); } @Override public int getMinHeight() { - return height.getMinBuildHeight(); + return height.getMinY(); } } diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java index a6f4ea9ba..13078e94d 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/Reflection.java @@ -2,6 +2,7 @@ package com.dfsek.terra.bukkit.nms.v1_21; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; +import net.minecraft.core.HolderSet; import net.minecraft.core.MappedRegistry; import net.minecraft.server.level.ChunkMap; import net.minecraft.world.level.LevelAccessor; @@ -14,6 +15,8 @@ import xyz.jpenilla.reflectionremapper.proxy.annotation.FieldSetter; import xyz.jpenilla.reflectionremapper.proxy.annotation.MethodName; import xyz.jpenilla.reflectionremapper.proxy.annotation.Proxies; +import java.util.List; + public class Reflection { public static final MappedRegistryProxy MAPPED_REGISTRY; @@ -22,6 +25,7 @@ public class Reflection { public static final ReferenceProxy REFERENCE; public static final ChunkMapProxy CHUNKMAP; + public static final HolderSetProxy HOLDER_SET; static { ReflectionRemapper reflectionRemapper = ReflectionRemapper.forReobfMappingsInPaperJar(); @@ -32,6 +36,7 @@ public class Reflection { STRUCTURE_MANAGER = reflectionProxyFactory.reflectionProxy(StructureManagerProxy.class); REFERENCE = reflectionProxyFactory.reflectionProxy(ReferenceProxy.class); CHUNKMAP = reflectionProxyFactory.reflectionProxy(ChunkMapProxy.class); + HOLDER_SET = reflectionProxyFactory.reflectionProxy(HolderSetProxy.class); } @@ -57,7 +62,16 @@ public class Reflection { @Proxies(ChunkMap.class) public interface ChunkMapProxy { + @FieldGetter("worldGenContext") + WorldGenContext getWorldGenContext(ChunkMap instance); + @FieldSetter("worldGenContext") void setWorldGenContext(ChunkMap instance, WorldGenContext worldGenContext); } + + @Proxies(HolderSet.class) + public interface HolderSetProxy { + @MethodName("contents") + List> invokeContents(HolderSet instance); + } } diff --git a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java index 0377eea0f..eecc28047 100644 --- a/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_21/src/main/java/com/dfsek/terra/bukkit/nms/v1_21/RegistryFetcher.java @@ -15,7 +15,9 @@ public class RegistryFetcher { DedicatedServer dedicatedserver = craftserver.getServer(); return dedicatedserver .registryAccess() - .registryOrThrow(key); + .get(key) + .orElseThrow() + .value(); } public static Registry biomeRegistry() { From a70738eda5e0686733cf9b790452717c6280d07c Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 25 Oct 2024 13:58:33 -0600 Subject: [PATCH 16/17] Version updates --- buildSrc/src/main/kotlin/Versions.kt | 17 ++++++++--------- .../fabric/src/main/resources/fabric.mod.json | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 25021e9c1..3abbd6368 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -15,21 +15,20 @@ object Versions { const val slf4j = "2.0.16" object Internal { - const val shadow = "8.3.1" + const val shadow = "8.3.3" const val apacheText = "1.12.0" - const val apacheIO = "2.16.1" - const val guava = "33.3.0-jre" - const val asm = "9.7" + const val apacheIO = "2.17.0" + const val guava = "33.3.1-jre" + const val asm = "9.7.1" const val snakeYml = "2.3" - const val jetBrainsAnnotations = "24.1.0" - const val junit = "5.11.0" + const val jetBrainsAnnotations = "26.0.1" + const val junit = "5.11.3" const val nbt = "6.1" } } object Fabric { -// const val fabricAPI = "0.104.0+${Mod.minecraft}" - const val fabricAPI = "0.105.4+1.21.2" + const val fabricAPI = "0.106.1+${Mod.minecraft}" const val cloud = "2.0.0-beta.9" } // @@ -41,7 +40,7 @@ object Versions { object Mod { const val mixin = "0.15.3+mixin.0.8.7" - const val minecraft = "1.21.2-pre3" + const val minecraft = "1.21.3-pre3" const val yarn = "$minecraft+build.2" const val fabricLoader = "0.16.7" diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index 3eb944413..4a70bb873 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "depends": { "fabricloader": ">=0.16.7", "java": ">=21", - "minecraft": ">=1.21.2-beta.2", + "minecraft": ">=1.21.3", "fabric": "*" } } \ No newline at end of file From 640645b96b6f816e7cc30bb81cd49700276b2294 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 25 Oct 2024 14:03:27 -0600 Subject: [PATCH 17/17] fix version --- 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 3abbd6368..a876d93e4 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -40,7 +40,7 @@ object Versions { object Mod { const val mixin = "0.15.3+mixin.0.8.7" - const val minecraft = "1.21.3-pre3" + const val minecraft = "1.21.3" const val yarn = "$minecraft+build.2" const val fabricLoader = "0.16.7"