From b3a8f375bcfd21ebeac5575dc75a738a3967984b Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 6 Jul 2022 19:28:07 -0700 Subject: [PATCH] reformat all code --- .github/PULL_REQUEST_TEMPLATE.md | 12 +- CONTRIBUTING.md | 7 +- buildSrc/src/main/kotlin/AddonConfig.kt | 44 +++---- buildSrc/src/main/kotlin/DependencyConfig.kt | 4 +- .../src/main/kotlin/DistributionConfig.kt | 2 +- buildSrc/src/main/kotlin/Versions.kt | 4 +- .../extrusion/BiomeExtrusionProvider.java | 6 +- .../biome/extrusion/api/ReplaceableBiome.java | 16 +-- .../biome/pipeline/BiomePipelineProvider.java | 8 +- .../config/BiomeProviderTemplate.java | 2 +- .../biome/query/BiomeQueryAPIAddon.java | 4 +- .../addons/biome/query/api/BiomeQueries.java | 2 +- .../biome/query/impl/SingleTagQuery.java | 2 +- .../NoiseChunkGenerator3DAddon.java | 12 +- .../config/noise/ThreadLocalNoiseHolder.java | 2 +- .../config/palette/BiomePaletteTemplate.java | 3 +- .../math/interpolation/ChunkInterpolator.java | 4 +- .../LazilyEvaluatedInterpolator.java | 1 + .../math/samplers/SamplerProvider.java | 2 +- .../locator/locators/SamplerLocator.java | 26 ++--- .../defined/UserDefinedFunction.java | 11 +- .../addons/terrascript/parser/Parser.java | 4 +- .../addons/terrascript/parser/lang/Scope.java | 8 +- .../lang/constants/BooleanConstant.java | 1 + .../lang/constants/NumericConstant.java | 1 + .../parser/lang/functions/Function.java | 34 +++--- .../lang/operations/BooleanOrOperation.java | 1 + .../operations/ConcatenationOperation.java | 20 ++-- .../lang/operations/ModuloOperation.java | 1 + .../operations/MultiplicationOperation.java | 1 + .../operations/NumberAdditionOperation.java | 1 + .../lang/operations/SubtractionOperation.java | 1 + .../statements/EqualsStatement.java | 2 +- .../statements/LessThanOrEqualsStatement.java | 1 + .../statements/LessThanStatement.java | 1 + .../assign/VariableAssignmentNode.java | 3 +- .../reference/VariableReferenceNode.java | 2 +- .../src/test/java/structure/ParserTest.java | 3 +- .../dfsek/terra/api/properties/Context.java | 14 +-- .../dfsek/terra/api/util/GeometryUtil.java | 2 +- .../terra/api/util/generic/pair/Pair.java | 109 +++++++++--------- .../world/biome/generation/BiomeProvider.java | 2 +- .../generation/CachingBiomeProvider.java | 6 +- .../world/chunk/generation/util/Column.java | 2 +- .../terra/api/world/util/Interceptors.java | 4 +- common/api/src/test/java/util/ColumnTest.java | 6 +- .../terra/config/pack/ConfigPackImpl.java | 3 +- .../src/test/java/registry/RegistryTest.java | 6 +- .../terra/addon/BootstrapAddonLoader.java | 3 +- gradle.properties | 1 - .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../BukkitChunkGeneratorWrapper.java | 39 ++++--- .../dfsek/terra/bukkit/nms/Initializer.java | 4 +- .../inventory/meta/BukkitDamageable.java | 2 - .../bukkit/nms/v1_18_R2/AwfulBukkitHacks.java | 63 +++++----- .../bukkit/nms/v1_18_R2/NMSBiomeInjector.java | 45 +++----- .../v1_18_R2/NMSChunkGeneratorDelegate.java | 18 ++- .../nms/v1_18_R2/NMSInjectListener.java | 7 +- .../terra/bukkit/nms/v1_18_R2/Reflection.java | 5 +- .../bukkit/nms/v1_19_R1/AwfulBukkitHacks.java | 76 +++++++----- .../bukkit/nms/v1_19_R1/NMSBiomeInjector.java | 16 --- .../bukkit/nms/v1_19_R1/NMSBiomeProvider.java | 11 +- .../v1_19_R1/NMSChunkGeneratorDelegate.java | 22 ++-- .../nms/v1_19_R1/NMSInjectListener.java | 7 +- .../terra/bukkit/nms/v1_19_R1/Reflection.java | 4 +- .../terra/bukkit/nms/v1_19_R1/Registries.java | 4 +- .../dfsek/terra/cli/block/CLIBlockState.java | 4 +- platforms/fabric/build.gradle.kts | 8 +- .../com/dfsek/terra/fabric/FabricAddon.java | 5 +- .../dfsek/terra/fabric/FabricEntryPoint.java | 2 +- .../dfsek/terra/fabric/FabricPlatform.java | 9 +- platforms/forge/build.gradle.kts | 2 +- .../dfsek/terra/forge/AwfulForgeHacks.java | 75 ++++++------ .../com/dfsek/terra/forge/ForgeAddon.java | 5 +- .../dfsek/terra/forge/ForgeEntryPoint.java | 26 ++--- .../com/dfsek/terra/forge/ForgePlatform.java | 37 +++--- .../mixin/lifecycle/NoiseConfigMixin.java | 10 +- .../com/dfsek/terra/forge/util/BiomeUtil.java | 33 ++++-- .../src/main/resources/META-INF/mods.toml | 2 +- .../forge/src/main/resources/pack.mcmeta | 8 +- .../main/resources/terra.forge.mixins.json | 2 +- .../com/dfsek/terra/mod/MinecraftAddon.java | 8 +- .../java/com/dfsek/terra/mod/ModPlatform.java | 38 +++--- .../config/BiomeAdditionsSoundTemplate.java | 2 +- .../mod/config/BiomeMoodSoundTemplate.java | 2 +- .../config/BiomeParticleConfigTemplate.java | 4 +- .../terra/mod/config/MusicSoundTemplate.java | 2 +- .../terra/mod/config/SoundEventTemplate.java | 4 +- .../mod/config/SpawnSettingsTemplate.java | 6 +- .../mod/config/VanillaBiomeProperties.java | 2 +- .../mod/config/VillagerTypeTemplate.java | 1 - .../java/com/dfsek/terra/mod/data/Codecs.java | 4 +- .../mixin/access/VillagerTypeAccessor.java | 1 + ...oveGoalsUnsynchronizedRandomAccessFix.java | 3 +- .../mixin/fix/NetherFossilOptimization.java | 5 +- .../dfsek/terra/mod/util/MinecraftUtil.java | 83 ++++++------- .../com/dfsek/terra/mod/util/PresetUtil.java | 14 +-- .../main/resources/terra.common.mixins.json | 92 +++++++-------- .../terra/lifecycle/LifecyclePlatform.java | 8 +- .../lifecycle/mixin/NoiseConfigMixin.java | 6 +- .../terra/lifecycle/mixin/RegistryMixin.java | 4 +- .../dfsek/terra/lifecycle/util/BiomeUtil.java | 24 ++-- .../terra/lifecycle/util/LifecycleUtil.java | 6 +- .../terra/lifecycle/util/RegistryUtil.java | 6 +- .../resources/terra.lifecycle.mixins.json | 2 +- platforms/quilt/build.gradle.kts | 2 +- .../dfsek/terra/quilt/AwfulQuiltHacks.java | 53 ++++----- .../com/dfsek/terra/quilt/QuiltAddon.java | 1 + .../dfsek/terra/quilt/QuiltEntryPoint.java | 1 + .../com/dfsek/terra/quilt/QuiltPlatform.java | 3 +- .../terra/quilt/QuiltPreLaunchEntryPoint.java | 2 +- 111 files changed, 706 insertions(+), 653 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 35418fc93..62b32c8d9 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -72,15 +72,19 @@ - [ ] Bug Fix - [ ] Build system -- [ ] Documentation +- [ ] + Documentation - [ ] New Feature - [ ] Performance -- [ ] Refactoring -- [ ] Repository +- [ ] + Refactoring +- [ ] + Repository - [ ] Revert - [ ] Style - [ ] Tests -- [ ] Translation +- [ ] + Translation #### Compatiblity diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bbb72ecad..b876ff487 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,7 +63,8 @@ to [Terra global moderation team](CODE_OF_CONDUCT.md#Reporting). ## I don't want to read this whole thing I just have a question!!! -> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. +> **Note:** Please don't file an issue to ask a question. You'll get faster +> results by using the resources below. We have an official discord server where you can request help from various users @@ -103,7 +104,9 @@ you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report) . -> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. +> **Note:** If you find a **Closed** issue that seems like it is the same thing +> that you're experiencing, open a new issue and include a link to the original +> issue in the body of your new one. #### Before Submitting A Bug Report diff --git a/buildSrc/src/main/kotlin/AddonConfig.kt b/buildSrc/src/main/kotlin/AddonConfig.kt index ec585ba8e..b4dda3bca 100644 --- a/buildSrc/src/main/kotlin/AddonConfig.kt +++ b/buildSrc/src/main/kotlin/AddonConfig.kt @@ -12,30 +12,30 @@ import kotlin.streams.asStream */ fun Project.addonDir(dir: File, task: Task) { val moveAddons = tasks.register("moveAddons" + task.name) { - dependsOn("compileAddons") - doLast { - dir.parentFile.mkdirs() - matchingAddons(dir) { - it.name.startsWith("Terra-") // Assume everything that starts with Terra- is a core addon. - }.forEach { - println("Deleting old addon: " + it.absolutePath) - it.delete() - } - forSubProjects(":common:addons") { - val jar = tasks.named("shadowJar").get() as ShadowJar - - val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else "" - val target = File(dir, boot + jar.archiveFileName.get()) - - val base = "${jar.archiveBaseName.get()}-${version}" - - println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base") - - jar.archiveFile.orNull?.asFile?.copyTo(target) - } + dependsOn("compileAddons") + doLast { + dir.parentFile.mkdirs() + matchingAddons(dir) { + it.name.startsWith("Terra-") // Assume everything that starts with Terra- is a core addon. + }.forEach { + println("Deleting old addon: " + it.absolutePath) + it.delete() + } + forSubProjects(":common:addons") { + val jar = tasks.named("shadowJar").get() as ShadowJar + + val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else "" + val target = File(dir, boot + jar.archiveFileName.get()) + + val base = "${jar.archiveBaseName.get()}-${version}" + + println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base") + + jar.archiveFile.orNull?.asFile?.copyTo(target) } - } + + } task.dependsOn(moveAddons) } diff --git a/buildSrc/src/main/kotlin/DependencyConfig.kt b/buildSrc/src/main/kotlin/DependencyConfig.kt index d31736022..b0e7d32c4 100644 --- a/buildSrc/src/main/kotlin/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/DependencyConfig.kt @@ -39,10 +39,10 @@ fun Project.configureDependencies() { maven("https://papermc.io/repo/repository/maven-public/") { name = "PaperMC" } - maven ( "https://files.minecraftforge.net/maven/" ) { + maven("https://files.minecraftforge.net/maven/") { name = "Forge" } - maven ("https://maven.quiltmc.org/repository/release/") { + maven("https://maven.quiltmc.org/repository/release/") { name = "Quilt" } maven("https://jitpack.io") { diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index 60e79867a..56fe68ad7 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -53,7 +53,7 @@ fun Project.configureDistribution() { val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else "" val addonPath = fs.getPath("/addons/$boot${jar.archiveFileName.get()}") - + if (!Files.exists(addonPath)) { Files.createDirectories(addonPath.parent) Files.createFile(addonPath) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index ef3ce2946..28ca98ca0 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -33,10 +33,10 @@ object Versions { const val minecraft = "1.19" const val yarn = "$minecraft+build.1" const val fabricLoader = "0.14.2" - + const val architecuryLoom = "0.12.0-SNAPSHOT" const val architecturyPlugin = "3.4-SNAPSHOT" - + const val loomQuiltflower = "1.7.1" const val lazyDfu = "0.1.2" diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java index a7331fc8a..c9f1f8129 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java @@ -28,7 +28,7 @@ public class BiomeExtrusionProvider implements BiomeProvider { @Override public Biome getBiome(int x, int y, int z, long seed) { Biome delegated = delegate.getBiome(x, y, z, seed); - + return extrude(delegated, x, y, z, seed); } @@ -42,8 +42,8 @@ public class BiomeExtrusionProvider implements BiomeProvider { @Override public Column getColumn(int x, int z, long seed, int min, int max) { return delegate.getBaseBiome(x, z, seed) - .map(base -> (Column) new BaseBiomeColumn(this, base, min, max, x, z, seed)) - .orElseGet(() -> BiomeProvider.super.getColumn(x, z, seed, min, max)); + .map(base -> (Column) new BaseBiomeColumn(this, base, min, max, x, z, seed)) + .orElseGet(() -> BiomeProvider.super.getColumn(x, z, seed, min, max)); } @Override diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java index e76eec1f3..d79ec409a 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java @@ -10,6 +10,14 @@ import com.dfsek.terra.api.world.biome.Biome; * Basically just a specialised implementation of {@link Optional} for biomes where a biome may be a "self" reference. */ public sealed interface ReplaceableBiome permits PresentBiome, SelfBiome { + static ReplaceableBiome of(Biome biome) { + return new PresentBiome(biome); + } + + static ReplaceableBiome self() { + return SelfBiome.INSTANCE; + } + Biome get(Biome existing); default Biome get() { @@ -20,12 +28,4 @@ public sealed interface ReplaceableBiome permits PresentBiome, SelfBiome { } boolean isSelf(); - - static ReplaceableBiome of(Biome biome) { - return new PresentBiome(biome); - } - - static ReplaceableBiome self() { - return SelfBiome.INSTANCE; - } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java index 063395ae4..f3f4c3aa9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -81,11 +81,11 @@ public class BiomePipelineProvider implements BiomeProvider { public Biome getBiome(int x, int z, long seed) { x += mutator.noise(seed + 1, x, z) * noiseAmp; z += mutator.noise(seed + 2, x, z) * noiseAmp; - - + + x /= resolution; z /= resolution; - + int fdX = FastMath.floorDiv(x, pipeline.getSize()); int fdZ = FastMath.floorDiv(z, pipeline.getSize()); return holderCache.get(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), @@ -120,7 +120,7 @@ public class BiomePipelineProvider implements BiomeProvider { } return false; } - + @Override public int hashCode() { int code = x; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java index a6df1f200..1412485fe 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java @@ -22,7 +22,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate BIOME_TAG_KEY = Context.create(BiomeTagHolder.class); @Inject private Platform platform; - @Inject private BaseAddon addon; - public static PropertyKey BIOME_TAG_KEY = Context.create(BiomeTagHolder.class); - @Override public void initialize() { diff --git a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java index 6e36b7a45..dbee2752b 100644 --- a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java +++ b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.biome.Biome; public final class BiomeQueries { private BiomeQueries() { - + } public static Predicate has(String tag) { diff --git a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java index af2bfa8c7..eef1a0a56 100644 --- a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java +++ b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java @@ -7,8 +7,8 @@ import com.dfsek.terra.api.world.biome.Biome; public class SingleTagQuery implements Predicate { - private int tagIndex = -1; private final String tag; + private int tagIndex = -1; public SingleTagQuery(String tag) { this.tag = tag; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index cd81f9555..06450b613 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -49,9 +49,9 @@ public class NoiseChunkGenerator3DAddon implements AddonInitializer { .getOrCreateRegistry(ChunkGeneratorProvider.class) .register(addon.key("NOISE_3D"), pack -> new NoiseChunkGenerator3D(pack, platform, config.getElevationBlend(), - config.getHorizontalRes(), - config.getVerticalRes(), noisePropertiesPropertyKey, - paletteInfoPropertyKey)); + config.getHorizontalRes(), + config.getVerticalRes(), noisePropertiesPropertyKey, + paletteInfoPropertyKey)); event.getPack() .applyLoader(SlantLayer.class, SlantLayer::new); }) @@ -62,8 +62,10 @@ public class NoiseChunkGenerator3DAddon implements AddonInitializer { .register(addon, ConfigurationLoadEvent.class) .then(event -> { if(event.is(Biome.class)) { - event.getLoadedObject(Biome.class).getContext().put(paletteInfoPropertyKey, event.load(new BiomePaletteTemplate(platform)).get()); - event.getLoadedObject(Biome.class).getContext().put(noisePropertiesPropertyKey, event.load(new BiomeNoiseConfigTemplate()).get()); + event.getLoadedObject(Biome.class).getContext().put(paletteInfoPropertyKey, + event.load(new BiomePaletteTemplate(platform)).get()); + event.getLoadedObject(Biome.class).getContext().put(noisePropertiesPropertyKey, + event.load(new BiomeNoiseConfigTemplate()).get()); } }) .failThrough(); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java index c8fc0c7ac..454f9492f 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java @@ -12,7 +12,7 @@ public class ThreadLocalNoiseHolder { if(holder.init && holder.y == y && holder.z == z && holder.x == x && holder.seed == seed) { return holder.noise; } - + double noise = sampler.noise(seed, x, y, z); holder.noise = noise; holder.x = x; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java index f95d9dffa..f1f0f804a 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java @@ -83,6 +83,7 @@ public class BiomePaletteTemplate implements ObjectTemplate { slantLayers.put(threshold, layer.getPalette()); } - return new PaletteInfo(builder.build(), SlantHolder.of(slantLayers, minThreshold), oceanPalette, seaLevel, slantDepth, updatePalette); + return new PaletteInfo(builder.build(), SlantHolder.of(slantLayers, minThreshold), oceanPalette, seaLevel, slantDepth, + updatePalette); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java index 4ef7072c7..d712bfc60 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java @@ -87,10 +87,10 @@ public class ChunkInterpolator { for(int zi = -blend; zi <= blend; zi++) { int blendX = (xi * step); int blendZ = (zi * step); - + int localIndex = (scaledX + maxBlend + blendX) + maxBlendAndChunk * (scaledZ + maxBlend + blendZ); Column column = columns[localIndex]; - + if(column == null) { column = provider.getColumn(absoluteX + blendX, absoluteZ + blendZ, seed, min, max); columns[localIndex] = column; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java index 6e46ba774..f2a48c50a 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java @@ -25,6 +25,7 @@ public class LazilyEvaluatedInterpolator { private final int min, max; private final int zMul, yMul; + public LazilyEvaluatedInterpolator(BiomeProvider biomeProvider, int cx, int cz, int max, PropertyKey noisePropertiesKey, int min, int horizontalRes, int verticalRes, long seed) { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java index 11ce0167f..ab20614b5 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java @@ -53,7 +53,7 @@ public class SamplerProvider { public Sampler3D getChunk(int cx, int cz, WorldProperties world, BiomeProvider provider) { WorldContext context = new WorldContext(cx, cz, world.getSeed(), world.getMinHeight(), world.getMaxHeight()); return cache.get(context, c -> new Sampler3D(c.cx, c.cz, c.seed, c.minHeight, c.maxHeight, provider, - elevationSmooth, noisePropertiesKey, maxBlend)); + elevationSmooth, noisePropertiesKey, maxBlend)); } private record WorldContext(int cx, int cz, long seed, int minHeight, int maxHeight) { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java index 3a2ff8330..e5c43a122 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java @@ -23,6 +23,19 @@ public class SamplerLocator implements Locator { this.samplers = samplers; } + private static int floorToInt(double value) { + int valueInt = (int) value; + if(value < 0.0) { + if(value == (double) valueInt) { + return valueInt; + } else { + return valueInt == Integer.MIN_VALUE ? valueInt : valueInt - 1; + } + } else { + return valueInt; + } + } + @Override public BinaryColumn getSuitableCoordinates(Column column) { BinaryColumnBuilder results = column.newBinaryColumn(); @@ -36,17 +49,4 @@ public class SamplerLocator implements Locator { return results.build(); } - - private static int floorToInt(double value) { - int valueInt = (int)value; - if (value < 0.0) { - if (value == (double)valueInt) { - return valueInt; - } else { - return valueInt == Integer.MIN_VALUE ? valueInt : valueInt - 1; - } - } else { - return valueInt; - } - } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java index fe72ed070..a087012ca 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java @@ -23,11 +23,10 @@ import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; public class UserDefinedFunction implements DynamicFunction { + private static final Map CACHE = new HashMap<>(); private final Expression expression; private final int args; - private static final Map CACHE = new HashMap<>(); - protected UserDefinedFunction(Expression expression, int args) { this.expression = expression; this.args = args; @@ -38,17 +37,17 @@ public class UserDefinedFunction implements DynamicFunction { if(function == null) { Parser parser = new Parser(); Scope parent = new Scope(); - + Scope functionScope = new Scope().withParent(parent); - + template.getArgs().forEach(functionScope::addInvocationVariable); - + for(Entry entry : template.getFunctions().entrySet()) { String id = entry.getKey(); FunctionTemplate nest = entry.getValue(); parser.registerFunction(id, newInstance(nest)); } - + function = new UserDefinedFunction(parser.parse(template.getFunction(), functionScope), template.getArgs().size()); CACHE.put(template, function); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index fae348713..2b344343a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -338,9 +338,9 @@ public class Parser { Returnable value = parseExpression(tokens, true, scopeBuilder); ParserUtil.checkReturnType(value, returnType); - + String id = identifier.getContent(); - + return switch(value.returnType()) { case NUMBER -> new NumAssignmentNode((Returnable) value, identifier.getPosition(), scopeBuilder.num(id)); case STRING -> new StrAssignmentNode((Returnable) value, identifier.getPosition(), scopeBuilder.str(id)); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java index f9532c8cf..511c486bd 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java @@ -46,9 +46,8 @@ public class Scope { } public static final class ScopeBuilder { - private int numSize, boolSize, strSize = 0; private final Map> indices; - + private int numSize, boolSize, strSize = 0; private ScopeBuilder parent; public ScopeBuilder() { @@ -77,6 +76,7 @@ public class Scope { } return id; } + public int num(String id) { int num = numSize; indices.put(check(id), Pair.of(num, ReturnType.NUMBER)); @@ -107,14 +107,14 @@ public class Scope { parent.updateBoolSize(size); } } - + private void updateNumSize(int size) { this.numSize = FastMath.max(numSize, size); if(parent != null) { parent.updateNumSize(size); } } - + private void updateStrSize(int size) { this.strSize = FastMath.max(strSize, size); if(parent != null) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java index 25cf9cdc2..3782344d1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java @@ -14,6 +14,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class BooleanConstant extends ConstantExpression { private final boolean constant; + public BooleanConstant(Boolean constant, Position position) { super(constant, position); this.constant = constant; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java index 78164fdc8..296b0c3e4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java @@ -15,6 +15,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class NumericConstant extends ConstantExpression { private final double constant; + public NumericConstant(Number constant, Position position) { super(constant, position); this.constant = constant.doubleValue(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java index 86780eb55..9c1da1155 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java @@ -14,6 +14,23 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public interface Function extends Returnable { + Function NULL = new Function<>() { + @Override + public ReturnType returnType() { + return null; + } + + @Override + public Object apply(ImplementationArguments implementationArguments, Scope scope) { + return null; + } + + @Override + public Position getPosition() { + return null; + } + }; + @Override default double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return ((Number) apply(implementationArguments, scope)).doubleValue(); @@ -23,21 +40,4 @@ public interface Function extends Returnable { default boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return (Boolean) apply(implementationArguments, scope); } - - Function NULL = new Function<>() { - @Override - public ReturnType returnType() { - return null; - } - - @Override - public Object apply(ImplementationArguments implementationArguments, Scope scope) { - return null; - } - - @Override - public Position getPosition() { - return null; - } - }; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java index e5ca10337..4722e175c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java @@ -27,6 +27,7 @@ public class BooleanOrOperation extends BinaryOperation { public boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return left.applyBoolean(implementationArguments, scope) || right.applyBoolean(implementationArguments, scope); } + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java index 17e233b84..1ff9d11b1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java @@ -18,16 +18,6 @@ public class ConcatenationOperation extends BinaryOperation { super(left, right, position); } - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.STRING; - } - - @Override - public Object apply(ImplementationArguments implementationArguments, Scope scope) { - return toString(left.apply(implementationArguments, scope)) + toString(right.apply(implementationArguments, scope)); - } - private static String toString(Object object) { String s = object.toString(); if(object instanceof Double) { @@ -38,4 +28,14 @@ public class ConcatenationOperation extends BinaryOperation { } return s; } + + @Override + public Returnable.ReturnType returnType() { + return Returnable.ReturnType.STRING; + } + + @Override + public Object apply(ImplementationArguments implementationArguments, Scope scope) { + return toString(left.apply(implementationArguments, scope)) + toString(right.apply(implementationArguments, scope)); + } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java index 3731d0807..b305f4c90 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java @@ -27,6 +27,7 @@ public class ModuloOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) % right.applyDouble(implementationArguments, scope); } + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java index 62e58a92c..2a2cdbfe6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java @@ -27,6 +27,7 @@ public class MultiplicationOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) * right.applyDouble(implementationArguments, scope); } + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java index 33439b742..075a27619 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java @@ -27,6 +27,7 @@ public class NumberAdditionOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) + right.applyDouble(implementationArguments, scope); } + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java index dca6c66c5..9a11c430f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java @@ -27,6 +27,7 @@ public class SubtractionOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) - right.applyDouble(implementationArguments, scope); } + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java index 97648aa1f..f402e4862 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java @@ -42,7 +42,7 @@ public class EqualsStatement extends BinaryOperation { if(leftValue instanceof Number l && rightValue instanceof Number r) { return FastMath.abs(l.doubleValue() - r.doubleValue()) <= EPSILON; } - + return leftValue.equals(rightValue); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java index 207d09632..891210395 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java @@ -29,6 +29,7 @@ public class LessThanOrEqualsStatement extends BinaryOperation public boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) <= right.applyDouble(implementationArguments, scope); } + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java index aed7189f6..969f0e27e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java @@ -29,6 +29,7 @@ public class LessThanStatement extends BinaryOperation { public boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) < right.applyDouble(implementationArguments, scope); } + @Override public Returnable.ReturnType returnType() { return Returnable.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java index edfb15ef7..ebca757b5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java @@ -14,9 +14,8 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public abstract class VariableAssignmentNode implements Item { protected final Returnable value; - private final Position position; protected final int index; - + private final Position position; public VariableAssignmentNode(Returnable value, Position position, int index) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java index a115f8b94..ecfebedca 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java @@ -12,9 +12,9 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public abstract class VariableReferenceNode implements Returnable { + protected final int index; private final Position position; private final ReturnType type; - protected final int index; public VariableReferenceNode(Position position, ReturnType type, int index) { this.position = position; diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java index 2f07954d2..fc0fcf532 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java @@ -30,7 +30,8 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class ParserTest { @Test public void parse() throws IOException, ParseException { - Parser parser = new Parser(IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("/test.tesf")), Charset.defaultCharset())); + Parser parser = new Parser( + IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("/test.tesf")), Charset.defaultCharset())); parser.registerFunction("test", new FunctionBuilder() { @Override diff --git a/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java b/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java index b5a1f408f..175ec60af 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java +++ b/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java @@ -14,10 +14,15 @@ import java.util.concurrent.atomic.AtomicReference; public class Context { - private final Map, Properties> map = new HashMap<>(); - private final AtomicReference list = new AtomicReference<>(new Properties[size.get()]); private static final AtomicInteger size = new AtomicInteger(0); private static final Map, PropertyKey> properties = new HashMap<>(); + private final Map, Properties> map = new HashMap<>(); + private final AtomicReference list = new AtomicReference<>(new Properties[size.get()]); + + @SuppressWarnings("unchecked") + public static PropertyKey create(Class clazz) { + return (PropertyKey) properties.computeIfAbsent(clazz, c -> new PropertyKey<>(size.getAndIncrement(), clazz)); + } @SuppressWarnings("unchecked") public T get(Class clazz) { @@ -33,11 +38,6 @@ public class Context { return this; } - @SuppressWarnings("unchecked") - public static PropertyKey create(Class clazz) { - return (PropertyKey) properties.computeIfAbsent(clazz, c -> new PropertyKey<>(size.getAndIncrement(), clazz)); - } - public Context put(PropertyKey key, T properties) { list.updateAndGet(p -> { if(p.length == size.get()) return p; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java index 6bb21b3df..25984257f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.util.vector.Vector3Int; public final class GeometryUtil { private GeometryUtil() { - + } public static void sphere(Vector3Int origin, int radius, Consumer action) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java index d47cfdc05..c1ddf92d6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java @@ -22,6 +22,11 @@ public final class Pair { private final L left; private final R right; + private Pair(L left, R right) { + this.left = left; + this.right = right; + } + public static Function, Pair> mapLeft(Function function) { return pair -> of(function.apply(pair.left), pair.right); } @@ -54,11 +59,6 @@ public final class Pair { return pair -> pair.left; } - private Pair(L left, R right) { - this.left = left; - this.right = right; - } - @Contract("_, _ -> new") public static Pair of(L1 left, R1 right) { return new Pair<>(left, right); @@ -96,55 +96,6 @@ public final class Pair { return Objects.equals(this.left, that.left) && Objects.equals(this.right, that.right); } - public static class Mutable { - private L left; - private R right; - - private Mutable(L left, R right) { - this.left = left; - this.right = right; - } - - @NotNull - @Contract("_, _ -> new") - public static Pair.Mutable of(L1 left, R1 right) { - return new Mutable<>(left, right); - } - - @Contract("-> new") - public Pair immutable() { - return Pair.of(left, right); - } - - public L getLeft() { - return left; - } - - public void setLeft(L left) { - this.left = left; - } - - public R getRight() { - return right; - } - - public void setRight(R right) { - this.right = right; - } - - @Override - public int hashCode() { - return Objects.hash(left, right); - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof Mutable that)) return false; - - return Objects.equals(this.left, that.left) && Objects.equals(this.right, that.right); - } - } - public Pair apply(BiConsumer consumer) { consumer.accept(this.left, this.right); return this; @@ -154,4 +105,54 @@ public final class Pair { public String toString() { return String.format("{%s,%s}", left, right); } + + + public static class Mutable { + private L left; + private R right; + + private Mutable(L left, R right) { + this.left = left; + this.right = right; + } + + @NotNull + @Contract("_, _ -> new") + public static Pair.Mutable of(L1 left, R1 right) { + return new Mutable<>(left, right); + } + + @Contract("-> new") + public Pair immutable() { + return Pair.of(left, right); + } + + public L getLeft() { + return left; + } + + public void setLeft(L left) { + this.left = left; + } + + public R getRight() { + return right; + } + + public void setRight(R right) { + this.right = right; + } + + @Override + public int hashCode() { + return Objects.hash(left, right); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof Mutable that)) return false; + + return Objects.equals(this.left, that.left) && Objects.equals(this.right, that.right); + } + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index cfa5a78c0..01ffbda70 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -97,7 +97,7 @@ public interface BiomeProvider { } return new CachingBiomeProvider(this); } - + default int resolution() { return 1; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java index fa3847a23..fff67f75a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java @@ -30,12 +30,12 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { .initialCapacity(98304) .maximumSize(98304) // 1 full chunk (high res) .build(vec -> delegate.getBiome(vec.x * res, vec.y * res, vec.z * res, vec.seed)); - + this.baseCache = Caffeine .newBuilder() .maximumSize(256) // 1 full chunk (high res) .build(vec -> delegate.getBaseBiome(vec.x * res, vec.z * res, vec.seed)); - + } @Override @@ -80,6 +80,8 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { return 31 * code + ((int) (seed ^ (seed >>> 32))); } } + + private record SeededVector2(int x, int z, long seed) { @Override public boolean equals(Object obj) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/util/Column.java b/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/util/Column.java index 2f5cf9d19..c92ca2311 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/util/Column.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/util/Column.java @@ -38,7 +38,7 @@ public class Column { this.max = max; this.min = min; } - + public int getX() { return x; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/util/Interceptors.java b/common/api/src/main/java/com/dfsek/terra/api/world/util/Interceptors.java index c608ea4d9..4b98c8b34 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/util/Interceptors.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/util/Interceptors.java @@ -4,9 +4,9 @@ public final class Interceptors { private static final ReadInterceptor READ_THROUGH = ((x, y, z, world) -> world.getBlockState(x, y, z)); private static final WriteInterceptor WRITE_THROUGH = ((x, y, z, block, world, physics) -> world.setBlockState(x, y, z, block, physics)); - + private Interceptors() { - + } public static ReadInterceptor readThrough() { diff --git a/common/api/src/test/java/util/ColumnTest.java b/common/api/src/test/java/util/ColumnTest.java index 7ba140683..06f4a03e4 100644 --- a/common/api/src/test/java/util/ColumnTest.java +++ b/common/api/src/test/java/util/ColumnTest.java @@ -86,17 +86,17 @@ public class ColumnTest { public int getMaxY() { return max; } - + @Override public int getX() { return 0; } - + @Override public int getZ() { return 0; } - + @Override public T get(int y) { return p.apply(y); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 9061b8d0c..84f2fb382 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -231,7 +231,8 @@ public class ConfigPackImpl implements ConfigPack { ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, packManifest); - seededBiomeProvider = template.getBiomeCache() ? packPostTemplate.getProviderBuilder().caching() : packPostTemplate.getProviderBuilder(); + seededBiomeProvider = + template.getBiomeCache() ? packPostTemplate.getProviderBuilder().caching() : packPostTemplate.getProviderBuilder(); checkDeadEntries(); } diff --git a/common/implementation/base/src/test/java/registry/RegistryTest.java b/common/implementation/base/src/test/java/registry/RegistryTest.java index b11e123b6..3f17a1776 100644 --- a/common/implementation/base/src/test/java/registry/RegistryTest.java +++ b/common/implementation/base/src/test/java/registry/RegistryTest.java @@ -50,7 +50,7 @@ public class RegistryTest { test.registerChecked(RegistryKey.parse("test:test"), "bazinga2"); fail("Shouldn't be able to re-register with #registerChecked!"); } catch(DuplicateEntryException ignore) { - + } } @@ -66,7 +66,7 @@ public class RegistryTest { test.register(RegistryKey.parse("test:test"), "bazinga2"); fail("Shouldn't be able to re-register in CheckedRegistry!"); } catch(DuplicateEntryException ignore) { - + } } @@ -90,7 +90,7 @@ public class RegistryTest { test.getByID("test"); fail("Shouldn't be able to get with ambiguous ID!"); } catch(IllegalArgumentException ignore) { - + } } } diff --git a/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 244bef568..301f276fa 100644 --- a/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -84,7 +84,7 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon bootstrapAddons = Files.walk(bootstrapFolder, 1, FileVisitOption.FOLLOW_LINKS)) { return bootstrapAddons.filter(path -> path.toFile().isFile()) .filter(path -> path.toFile().canRead()) @@ -96,6 +96,7 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon delegateKey = ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation("terra", NMSBiomeInjector.createBiomeID(pack, key))); + ResourceKey delegateKey = ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation("terra", + NMSBiomeInjector.createBiomeID( + pack, key))); BuiltinRegistries.register(BuiltinRegistries.BIOME, delegateKey, platform); biomeRegistry.register(delegateKey, platform, Lifecycle.stable()); @@ -73,28 +75,35 @@ public class AwfulBukkitHacks { terraBiomeMap .forEach((vb, terraBiomes) -> NMSBiomeInjector.getEntry(biomeRegistry, vb) - .ifPresentOrElse( - vanilla -> terraBiomes - .forEach(tb -> NMSBiomeInjector.getEntry(biomeRegistry, tb) - .ifPresentOrElse( - terra -> { - LOGGER.debug(vanilla.unwrapKey().orElseThrow().location() + - " (vanilla for " + - terra.unwrapKey().orElseThrow().location() + - ": " + - vanilla.tags().toList()); - - vanilla.tags() - .forEach( - tag -> collect - .computeIfAbsent(tag, - t -> new ArrayList<>()) - .add(terra)); - }, - () -> LOGGER.error( - "No such biome: {}", - tb))), - () -> LOGGER.error("No vanilla biome: {}", vb))); + .ifPresentOrElse( + vanilla -> terraBiomes + .forEach(tb -> NMSBiomeInjector.getEntry(biomeRegistry, tb) + .ifPresentOrElse( + terra -> { + LOGGER.debug( + vanilla.unwrapKey() + .orElseThrow() + .location() + + " (vanilla for " + + terra.unwrapKey() + .orElseThrow() + .location() + + ": " + + vanilla.tags() + .toList()); + + vanilla.tags() + .forEach( + tag -> collect + .computeIfAbsent( + tag, + t -> new ArrayList<>()) + .add(terra)); + }, + () -> LOGGER.error( + "No such biome: {}", + tb))), + () -> LOGGER.error("No vanilla biome: {}", vb))); biomeRegistry.resetTags(); // clearTags biomeRegistry.bindTags(ImmutableMap.copyOf(collect)); // populateTags diff --git a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSBiomeInjector.java index bf42448b2..6271e4632 100644 --- a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSBiomeInjector.java @@ -1,33 +1,17 @@ package com.dfsek.terra.bukkit.nms.v1_18_R2; -import com.google.common.collect.ImmutableMap; -import com.mojang.serialization.Lifecycle; import net.minecraft.core.Holder; -import net.minecraft.core.MappedRegistry; import net.minecraft.core.Registry; -import net.minecraft.core.WritableRegistry; -import net.minecraft.data.BuiltinRegistries; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; -import org.bukkit.NamespacedKey; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Locale; -import java.util.Map; import java.util.Objects; import java.util.Optional; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.config.VanillaBiomeProperties; -import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; -import com.dfsek.terra.registry.master.ConfigRegistry; public class NMSBiomeInjector { @@ -45,33 +29,32 @@ public class NMSBiomeInjector { builder.biomeCategory(Reflection.BIOME.getBiomeCategory(vanilla)) .precipitation(vanilla.getPrecipitation()) // getPrecipitation - .mobSpawnSettings(vanilla.getMobSettings()) - .generationSettings(vanilla.getGenerationSettings()) - .temperature(vanilla.getBaseTemperature()) - .downfall(vanilla.getDownfall()); - - + .mobSpawnSettings(vanilla.getMobSettings()) + .generationSettings(vanilla.getGenerationSettings()) + .temperature(vanilla.getBaseTemperature()) + .downfall(vanilla.getDownfall()); + BiomeSpecialEffects.Builder effects = new BiomeSpecialEffects.Builder(); - + effects.grassColorModifier(vanilla.getSpecialEffects().getGrassColorModifier()); - + VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); - + effects.fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) - + .waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) - + .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) - + .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())); - + if(vanillaBiomeProperties.getFoliageColor() == null) { vanilla.getSpecialEffects().getFoliageColorOverride().ifPresent(effects::foliageColorOverride); } else { effects.foliageColorOverride(vanillaBiomeProperties.getFoliageColor()); } - + if(vanillaBiomeProperties.getGrassColor() == null) { vanilla.getSpecialEffects().getGrassColorOverride().ifPresent(effects::grassColorOverride); } else { @@ -83,7 +66,7 @@ public class NMSBiomeInjector { vanilla.getAmbientMood().ifPresent(effects::ambientMoodSound); vanilla.getBackgroundMusic().ifPresent(effects::backgroundMusic); vanilla.getAmbientParticle().ifPresent(effects::ambientParticle); - + builder.specialEffects(effects.build()); return builder.build(); // build() diff --git a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java index 2b292142f..395ea949c 100644 --- a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java @@ -49,17 +49,14 @@ import com.dfsek.terra.api.world.info.WorldProperties; public class NMSChunkGeneratorDelegate extends ChunkGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(NMSChunkGeneratorDelegate.class); + private static final Lazy> EMPTY = Lazy.lazy(List::of); private final NMSBiomeProvider biomeSource; private final com.dfsek.terra.api.world.chunk.generation.ChunkGenerator delegate; - private final ChunkGenerator vanilla; private final ConfigPack pack; - private final long seed; - private final Map>> ringPositions = new Object2ObjectArrayMap<>(); - private static final Lazy> EMPTY = Lazy.lazy(List::of); - + private volatile boolean rings = false; public NMSChunkGeneratorDelegate(ChunkGenerator vanilla, ConfigPack pack, NMSBiomeProvider biomeProvider, long seed) { super(Registries.structureSet(), Optional.empty(), biomeProvider, biomeProvider, seed); @@ -71,13 +68,15 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } @Override - public void applyCarvers(@NotNull WorldGenRegion chunkRegion, long seed, @NotNull BiomeManager biomeAccess, @NotNull StructureFeatureManager structureAccessor, + public void applyCarvers(@NotNull WorldGenRegion chunkRegion, long seed, @NotNull BiomeManager biomeAccess, + @NotNull StructureFeatureManager structureAccessor, @NotNull ChunkAccess chunk, GenerationStep.@NotNull Carving generationStep) { // no-op } @Override - public void applyBiomeDecoration(@NotNull WorldGenLevel world, @NotNull ChunkAccess chunk, @NotNull StructureFeatureManager structureAccessor) { + public void applyBiomeDecoration(@NotNull WorldGenLevel world, @NotNull ChunkAccess chunk, + @NotNull StructureFeatureManager structureAccessor) { vanilla.applyBiomeDecoration(world, chunk, structureAccessor); } @@ -87,7 +86,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } @Override - public @NotNull CompletableFuture fillFromNoise(@NotNull Executor executor, @NotNull Blender blender, @NotNull StructureFeatureManager structureAccessor, + public @NotNull CompletableFuture fillFromNoise(@NotNull Executor executor, @NotNull Blender blender, + @NotNull StructureFeatureManager structureAccessor, @NotNull ChunkAccess chunk) { return vanilla.fillFromNoise(executor, blender, structureAccessor, chunk); } @@ -161,8 +161,6 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { return ringPositions.getOrDefault(concentricringsstructureplacement, EMPTY).value(); } - private volatile boolean rings = false; - @Override public synchronized void ensureStructuresGenerated() { if(!this.rings) { diff --git a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSInjectListener.java b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSInjectListener.java index 46f4a64c0..55408a136 100644 --- a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSInjectListener.java @@ -25,15 +25,16 @@ public class NMSInjectListener implements Listener { @EventHandler public void onWorldInit(WorldInitEvent event) { - if (!INJECTED.contains(event.getWorld()) && event.getWorld().getGenerator() instanceof BukkitChunkGeneratorWrapper bukkitChunkGeneratorWrapper) { + if(!INJECTED.contains(event.getWorld()) && + event.getWorld().getGenerator() instanceof BukkitChunkGeneratorWrapper bukkitChunkGeneratorWrapper) { INJECT_LOCK.lock(); INJECTED.add(event.getWorld()); LOGGER.info("Preparing to take over the world: {}", event.getWorld().getName()); CraftWorld craftWorld = (CraftWorld) event.getWorld(); ServerLevel serverWorld = craftWorld.getHandle(); - + ConfigPack pack = bukkitChunkGeneratorWrapper.getPack(); - + ChunkGenerator vanilla = serverWorld.getChunkSource().getGenerator(); NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), vanilla.getBiomeSource(), craftWorld.getSeed()); NMSChunkGeneratorDelegate custom = new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()); diff --git a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/Reflection.java b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/Reflection.java index 53e9e80f9..9e226cb8d 100644 --- a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/Reflection.java +++ b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/Reflection.java @@ -15,18 +15,21 @@ public class Reflection { static { ReflectionRemapper reflectionRemapper = ReflectionRemapper.forReobfMappingsInPaperJar(); - ReflectionProxyFactory reflectionProxyFactory = ReflectionProxyFactory.create(reflectionRemapper, Reflection.class.getClassLoader()); + ReflectionProxyFactory reflectionProxyFactory = ReflectionProxyFactory.create(reflectionRemapper, + Reflection.class.getClassLoader()); MAPPED_REGISTRY = reflectionProxyFactory.reflectionProxy(MappedRegistryProxy.class); BIOME = reflectionProxyFactory.reflectionProxy(BiomeProxy.class); } + @Proxies(MappedRegistry.class) public interface MappedRegistryProxy { @FieldSetter("frozen") void setFrozen(MappedRegistry instance, boolean frozen); } + @Proxies(Biome.class) public interface BiomeProxy { @FieldGetter("biomeCategory") diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/AwfulBukkitHacks.java index bfda736e2..3bce51cdd 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/AwfulBukkitHacks.java @@ -1,7 +1,5 @@ package com.dfsek.terra.bukkit.nms.v1_19_R1; -import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; -import com.dfsek.terra.registry.master.ConfigRegistry; import com.google.common.collect.ImmutableMap; import com.mojang.serialization.Lifecycle; import net.minecraft.core.Holder; @@ -17,7 +15,15 @@ import org.bukkit.NamespacedKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +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; + public class AwfulBukkitHacks { private static final Logger LOGGER = LoggerFactory.getLogger(AwfulBukkitHacks.class); @@ -39,10 +45,11 @@ public class AwfulBukkitHacks { Biome platform = NMSBiomeInjector.createBiome( biome, Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey)) // get - ); + ); ResourceKey delegateKey = ResourceKey.create(Registry.BIOME_REGISTRY, - new ResourceLocation("terra", NMSBiomeInjector.createBiomeID(pack, key))); + new ResourceLocation("terra", + NMSBiomeInjector.createBiomeID(pack, key))); BuiltinRegistries.register(BuiltinRegistries.BIOME, delegateKey, platform); biomeRegistry.register(delegateKey, platform, Lifecycle.stable()); @@ -62,35 +69,42 @@ public class AwfulBukkitHacks { Map, List>> collect = biomeRegistry .getTags() // streamKeysAndEntries .collect(HashMap::new, - (map, pair) -> - map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())), - HashMap::putAll); + (map, pair) -> + map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())), + HashMap::putAll); terraBiomeMap .forEach((vb, terraBiomes) -> - NMSBiomeInjector.getEntry(biomeRegistry, vb) - .ifPresentOrElse( - vanilla -> terraBiomes - .forEach(tb -> NMSBiomeInjector.getEntry(biomeRegistry, tb) - .ifPresentOrElse( - terra -> { - LOGGER.debug(vanilla.unwrapKey().orElseThrow().location() + - " (vanilla for " + - terra.unwrapKey().orElseThrow().location() + - ": " + - vanilla.tags().toList()); - - vanilla.tags() - .forEach( - tag -> collect - .computeIfAbsent(tag, - t -> new ArrayList<>()) - .add(terra)); - }, - () -> LOGGER.error( - "No such biome: {}", - tb))), - () -> LOGGER.error("No vanilla biome: {}", vb))); + NMSBiomeInjector.getEntry(biomeRegistry, vb) + .ifPresentOrElse( + vanilla -> terraBiomes + .forEach(tb -> NMSBiomeInjector.getEntry(biomeRegistry, tb) + .ifPresentOrElse( + terra -> { + LOGGER.debug( + vanilla.unwrapKey() + .orElseThrow() + .location() + + " (vanilla for " + + terra.unwrapKey() + .orElseThrow() + .location() + + ": " + + vanilla.tags() + .toList()); + + vanilla.tags() + .forEach( + tag -> collect + .computeIfAbsent( + tag, + t -> new ArrayList<>()) + .add(terra)); + }, + () -> LOGGER.error( + "No such biome: {}", + tb))), + () -> LOGGER.error("No vanilla biome: {}", vb))); biomeRegistry.resetTags(); biomeRegistry.bindTags(ImmutableMap.copyOf(collect)); diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeInjector.java index 88f224f4b..8a5d56c35 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeInjector.java @@ -1,33 +1,17 @@ package com.dfsek.terra.bukkit.nms.v1_19_R1; -import com.google.common.collect.ImmutableMap; -import com.mojang.serialization.Lifecycle; import net.minecraft.core.Holder; -import net.minecraft.core.MappedRegistry; import net.minecraft.core.Registry; -import net.minecraft.core.WritableRegistry; -import net.minecraft.data.BuiltinRegistries; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; -import org.bukkit.NamespacedKey; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Locale; -import java.util.Map; import java.util.Objects; import java.util.Optional; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.config.VanillaBiomeProperties; -import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; -import com.dfsek.terra.registry.master.ConfigRegistry; public class NMSBiomeInjector { diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeProvider.java index 36433165b..0c5a8ef06 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSBiomeProvider.java @@ -18,7 +18,11 @@ public class NMSBiomeProvider extends BiomeSource { private final Registry biomeRegistry = Registries.biomeRegistry(); public NMSBiomeProvider(BiomeProvider delegate, long seed) { - super(delegate.stream().map(biome -> Registries.biomeRegistry().getHolderOrThrow(((BukkitPlatformBiome) biome.getPlatformBiome()).getContext().get(NMSBiomeInfo.class).biomeKey()))); + super(delegate.stream() + .map(biome -> Registries.biomeRegistry() + .getHolderOrThrow(((BukkitPlatformBiome) biome.getPlatformBiome()).getContext() + .get(NMSBiomeInfo.class) + .biomeKey()))); this.delegate = delegate; this.seed = seed; } @@ -30,6 +34,9 @@ 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).getPlatformBiome()).getContext().get(NMSBiomeInfo.class).biomeKey()); + return biomeRegistry.getHolderOrThrow(((BukkitPlatformBiome) delegate.getBiome(x << 2, y << 2, z << 2, seed) + .getPlatformBiome()).getContext() + .get(NMSBiomeInfo.class) + .biomeKey()); } } diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java index e20a5da0b..81933be0f 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java @@ -55,6 +55,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { private final ConfigPack pack; private final long seed; + private final Map>> ringPositions = new Object2ObjectArrayMap<>(); + private volatile boolean rings = false; public NMSChunkGeneratorDelegate(ChunkGenerator vanilla, ConfigPack pack, NMSBiomeProvider biomeProvider, long seed) { super(Registries.structureSet(), Optional.empty(), biomeProvider); @@ -137,19 +139,16 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { .getHandle()).getState(); } return new NoiseColumn(getMinY(), array); - + */ return vanilla.getBaseColumn(x, z, world, noiseConfig); } - + @Override public void addDebugScreenInfo(@NotNull List text, @NotNull RandomState noiseConfig, @NotNull BlockPos pos) { - + } - private volatile boolean rings = false; - private final Map>> ringPositions = new Object2ObjectArrayMap<>(); - @Override public void ensureStructuresGenerated(@NotNull RandomState noiseConfig) { if(!this.rings) { @@ -161,7 +160,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } @Override - public List getRingPositionsFor(@NotNull ConcentricRingsStructurePlacement structurePlacement, @NotNull RandomState noiseConfig) { + public List getRingPositionsFor(@NotNull ConcentricRingsStructurePlacement structurePlacement, + @NotNull RandomState noiseConfig) { ensureStructuresGenerated(noiseConfig); return ringPositions.get(structurePlacement).value(); } @@ -179,13 +179,15 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } } - if (match) { - if (holder.placement() instanceof ConcentricRingsStructurePlacement concentricringsstructureplacement) { - this.ringPositions.put(concentricringsstructureplacement, Lazy.lazy(() -> this.generateRingPositions(holder, noiseConfig, concentricringsstructureplacement))); + if(match) { + if(holder.placement() instanceof ConcentricRingsStructurePlacement concentricringsstructureplacement) { + this.ringPositions.put(concentricringsstructureplacement, Lazy.lazy( + () -> this.generateRingPositions(holder, noiseConfig, concentricringsstructureplacement))); } } }); } + private List generateRingPositions(StructureSet holder, RandomState randomstate, ConcentricRingsStructurePlacement concentricringsstructureplacement) { // Spigot if(concentricringsstructureplacement.count() == 0) { diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSInjectListener.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSInjectListener.java index c647afbd5..d57689a9b 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSInjectListener.java @@ -25,15 +25,16 @@ public class NMSInjectListener implements Listener { @EventHandler public void onWorldInit(WorldInitEvent event) { - if (!INJECTED.contains(event.getWorld()) && event.getWorld().getGenerator() instanceof BukkitChunkGeneratorWrapper bukkitChunkGeneratorWrapper) { + if(!INJECTED.contains(event.getWorld()) && + event.getWorld().getGenerator() instanceof BukkitChunkGeneratorWrapper bukkitChunkGeneratorWrapper) { INJECT_LOCK.lock(); INJECTED.add(event.getWorld()); LOGGER.info("Preparing to take over the world: {}", event.getWorld().getName()); CraftWorld craftWorld = (CraftWorld) event.getWorld(); ServerLevel serverWorld = craftWorld.getHandle(); - + ConfigPack pack = bukkitChunkGeneratorWrapper.getPack(); - + ChunkGenerator vanilla = serverWorld.getChunkSource().getGenerator(); NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), craftWorld.getSeed()); NMSChunkGeneratorDelegate custom = new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()); diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Reflection.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Reflection.java index 157157005..8fa9a0b01 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Reflection.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Reflection.java @@ -12,11 +12,13 @@ public class Reflection { static { ReflectionRemapper reflectionRemapper = ReflectionRemapper.forReobfMappingsInPaperJar(); - ReflectionProxyFactory reflectionProxyFactory = ReflectionProxyFactory.create(reflectionRemapper, Reflection.class.getClassLoader()); + ReflectionProxyFactory reflectionProxyFactory = ReflectionProxyFactory.create(reflectionRemapper, + Reflection.class.getClassLoader()); MAPPED_REGISTRY = reflectionProxyFactory.reflectionProxy(MappedRegistryProxy.class); } + @Proxies(MappedRegistry.class) public interface MappedRegistryProxy { @FieldSetter("frozen") diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Registries.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Registries.java index 622589a77..f1cdc645e 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Registries.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/Registries.java @@ -16,8 +16,8 @@ public class Registries { return dedicatedserver .registryAccess() .registryOrThrow( // getRegistry - key - ); + key + ); } public static Registry biomeRegistry() { diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/block/CLIBlockState.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/block/CLIBlockState.java index 53cbc5e90..026f3dfc5 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/block/CLIBlockState.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/block/CLIBlockState.java @@ -16,9 +16,9 @@ public class CLIBlockState implements BlockState { public CLIBlockState(String value) { this.value = value; if(value.contains("[")) { - + } else { - + } this.isAir = value.startsWith("minecraft:air"); this.nbt = new CompoundTag(); diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 85a829444..e07a43a58 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -25,7 +25,13 @@ dependencies { modImplementation("net.fabricmc:fabric-loader:${Versions.Fabric.fabricLoader}") - setOf("fabric-lifecycle-events-v1", "fabric-resource-loader-v0", "fabric-api-base", "fabric-command-api-v2", "fabric-networking-api-v1").forEach { apiModule -> + setOf( + "fabric-lifecycle-events-v1", + "fabric-resource-loader-v0", + "fabric-api-base", + "fabric-command-api-v2", + "fabric-networking-api-v1" + ).forEach { apiModule -> val module = fabricApi.module(apiModule, Versions.Fabric.fabricAPI) modImplementation(module) include(module) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java index 21ed9870c..db98b73df 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -3,12 +3,13 @@ package com.dfsek.terra.fabric; import com.dfsek.terra.mod.MinecraftAddon; import com.dfsek.terra.mod.ModPlatform; -public class FabricAddon extends MinecraftAddon { +public class FabricAddon extends MinecraftAddon { + public FabricAddon(ModPlatform modPlatform) { super(modPlatform); } - + @Override public String getID() { return "terra-fabric"; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index 403f8df56..54d03961e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -32,7 +32,7 @@ public class FabricEntryPoint implements ModInitializer { private static final Logger logger = LoggerFactory.getLogger(FabricEntryPoint.class); private static final FabricPlatform TERRA_PLUGIN = new FabricPlatform(); - + @Override public void onInitialize() { logger.info("Initializing Terra Fabric mod..."); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricPlatform.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricPlatform.java index 6477407b4..2c85b86ee 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricPlatform.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricPlatform.java @@ -20,9 +20,6 @@ package com.dfsek.terra.fabric; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; - -import com.dfsek.terra.lifecycle.LifecyclePlatform; - import net.fabricmc.loader.api.FabricLoader; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; @@ -35,8 +32,7 @@ import java.util.stream.Stream; import com.dfsek.terra.addon.EphemeralAddon; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.util.generic.Lazy; -import com.dfsek.terra.mod.CommonPlatform; +import com.dfsek.terra.lifecycle.LifecyclePlatform; public class FabricPlatform extends LifecyclePlatform { @@ -59,6 +55,7 @@ public class FabricPlatform extends LifecyclePlatform { return Stream.empty(); }).collect(Collectors.toList()); } + @Override public @NotNull String platformName() { return "Fabric"; @@ -68,7 +65,7 @@ public class FabricPlatform extends LifecyclePlatform { public @NotNull File getDataFolder() { return new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra"); } - + @Override public BaseAddon getPlatformAddon() { return new FabricAddon(this); diff --git a/platforms/forge/build.gradle.kts b/platforms/forge/build.gradle.kts index 5a8c1c837..1eee6098a 100644 --- a/platforms/forge/build.gradle.kts +++ b/platforms/forge/build.gradle.kts @@ -70,7 +70,7 @@ tasks { ) } } - + remapJar { inputFile.set(shadowJar.get().archiveFile) archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar") diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java index 1d0f44bc2..07f4dafc9 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java @@ -1,32 +1,22 @@ package com.dfsek.terra.forge; -import com.dfsek.terra.AbstractPlatform; - -import cpw.mods.cl.ModuleClassLoader; import net.minecraftforge.fml.loading.FMLLoader; import org.burningwave.core.classes.Classes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.lang.reflect.Field; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.FileVisitOption; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; import java.util.concurrent.atomic.AtomicReference; -import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.stream.Stream; +import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.addon.bootstrap.BootstrapAddonClassLoader; @@ -73,7 +63,7 @@ public final class AwfulForgeHacks { } public static void loadAllTerraClasses() { - if (FMLLoader.isProduction()) { + if(FMLLoader.isProduction()) { try(JarFile jar = getTerraJar()) { jar.stream() .forEach(jarEntry -> { @@ -96,45 +86,52 @@ public final class AwfulForgeHacks { } } else { // Forgive me for what I'm about to do... - LOGGER.warn("I felt a great disturbance in the JVM, as if millions of class not found exceptions suddenly cried out in terror and were suddenly silenced."); + LOGGER.warn( + "I felt a great disturbance in the JVM, as if millions of class not found exceptions suddenly cried out in terror and" + + " were suddenly silenced."); ArrayList pathsToLoad = new ArrayList<>(); Path terraRoot = Path.of(System.getProperty("user.dir")).getParent().getParent().getParent(); Path commonRoot = terraRoot.resolve("common"); Path implementationRoot = commonRoot.resolve("implementation"); - + pathsToLoad.add(commonRoot.resolve("api")); pathsToLoad.add(implementationRoot.resolve("base")); pathsToLoad.add(implementationRoot.resolve("bootstrap-addon-loader")); - for (Path path : pathsToLoad) { + for(Path path : pathsToLoad) { try { Path target = path.resolve("build").resolve("classes").resolve("java").resolve("main"); - BootstrapAddonClassLoader cl = new BootstrapAddonClassLoader(new URL[] { path.toUri().toURL()}); - - Classes.Loaders omegaCL = Classes.Loaders.create(); + BootstrapAddonClassLoader cl = new BootstrapAddonClassLoader(new URL[]{ path.toUri().toURL() }); + + Classes.Loaders omegaCL = Classes.Loaders.create(); Files.walk(target, Integer.MAX_VALUE, FileVisitOption.FOLLOW_LINKS) - .filter(it -> it.getFileName().toString().endsWith(".class")) - .map(Path::toFile) - .forEach(it -> { - String name = it.getAbsolutePath().replace(target + "/", "").replace('\\', '.').replace('/', '.'); - name = name.substring(0, name.length() - 6); - LOGGER.info("Loading class {}", name); - try { - Class.forName(name); - } catch(ClassNotFoundException e) { - try { - String pathToJar = cl.loadClass(name).getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); - - cl.addURL(new URL("jar:file:" + pathToJar + "!/")); - Class newClassLoad = Class.forName(name, true, cl); - omegaCL.loadOrDefine(newClassLoad, AbstractPlatform.class.getClassLoader()); - } catch(ClassNotFoundException | URISyntaxException | IOException ex) { - throw new RuntimeException(ex); - } - - } - }); + .filter(it -> it.getFileName().toString().endsWith(".class")) + .map(Path::toFile) + .forEach(it -> { + String name = it.getAbsolutePath().replace(target + "/", "").replace('\\', '.').replace('/', '.'); + name = name.substring(0, name.length() - 6); + LOGGER.info("Loading class {}", name); + try { + Class.forName(name); + } catch(ClassNotFoundException e) { + try { + String pathToJar = cl.loadClass(name) + .getProtectionDomain() + .getCodeSource() + .getLocation() + .toURI() + .getPath(); + + cl.addURL(new URL("jar:file:" + pathToJar + "!/")); + Class newClassLoad = Class.forName(name, true, cl); + omegaCL.loadOrDefine(newClassLoad, AbstractPlatform.class.getClassLoader()); + } catch(ClassNotFoundException | URISyntaxException | IOException ex) { + throw new RuntimeException(ex); + } + + } + }); } catch(IOException e) { throw new IllegalStateException("Could not load all Terra classes", e); } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java index 5b6e82ec1..e742610cf 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java @@ -3,12 +3,13 @@ package com.dfsek.terra.forge; import com.dfsek.terra.mod.MinecraftAddon; import com.dfsek.terra.mod.ModPlatform; -public class ForgeAddon extends MinecraftAddon { +public class ForgeAddon extends MinecraftAddon { + public ForgeAddon(ModPlatform modPlatform) { super(modPlatform); } - + @Override public String getID() { return "terra-forge"; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java index d9ad54d81..b342e5a11 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java @@ -43,28 +43,24 @@ import com.dfsek.terra.mod.data.Codecs; @Mod("terra") @EventBusSubscriber(bus = Bus.MOD) public class ForgeEntryPoint { - private final RegistrySanityCheck sanityCheck = new RegistrySanityCheck(); - + public static final String MODID = "terra"; + private static final Logger logger = LoggerFactory.getLogger(ForgeEntryPoint.class); + private static final ForgePlatform TERRA_PLUGIN; static { AwfulForgeHacks.loadAllTerraClasses(); TERRA_PLUGIN = new ForgePlatform(); } - - public static final String MODID = "terra"; - - private static final Logger logger = LoggerFactory.getLogger(ForgeEntryPoint.class); - - private static final ForgePlatform TERRA_PLUGIN; - - public static ForgePlatform getPlatform() { - return TERRA_PLUGIN; - } + private final RegistrySanityCheck sanityCheck = new RegistrySanityCheck(); public ForgeEntryPoint() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.register(this); } + public static ForgePlatform getPlatform() { + return TERRA_PLUGIN; + } + public static void initialize(RegisterHelper helper) { getPlatform().getEventManager().callEvent( new PlatformInitializationEvent()); @@ -75,10 +71,12 @@ public class ForgeEntryPoint { public void registerBiomes(RegisterEvent event) { event.register(Keys.BLOCKS, helper -> sanityCheck.progress(RegistryStep.BLOCK, () -> logger.debug("Block registration detected."))); event.register(Keys.BIOMES, helper -> sanityCheck.progress(RegistryStep.BIOME, () -> initialize(helper))); - event.register(Registry.WORLD_PRESET_KEY, helper -> sanityCheck.progress(RegistryStep.WORLD_TYPE, () -> TERRA_PLUGIN.registerWorldTypes(helper::register))); + event.register(Registry.WORLD_PRESET_KEY, + helper -> sanityCheck.progress(RegistryStep.WORLD_TYPE, () -> TERRA_PLUGIN.registerWorldTypes(helper::register))); - event.register(Registry.CHUNK_GENERATOR_KEY, helper -> helper.register(new Identifier("terra:terra"), Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER)); + event.register(Registry.CHUNK_GENERATOR_KEY, + helper -> helper.register(new Identifier("terra:terra"), Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER)); event.register(Registry.BIOME_SOURCE_KEY, helper -> helper.register(new Identifier("terra:terra"), Codecs.TERRA_BIOME_SOURCE)); } } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java index 60cd727f4..2d8b51c9a 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java @@ -43,33 +43,33 @@ import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; public class ForgePlatform extends ModPlatform { private static final Logger LOGGER = LoggerFactory.getLogger(ForgePlatform.class); private final Lazy dataFolder = Lazy.lazy(() -> new File("./config/Terra")); - + public ForgePlatform() { CommonPlatform.initialize(this); load(); } - + @Override public MinecraftServer getServer() { return ServerLifecycleHooks.getCurrentServer(); } - + @Override public boolean reload() { getTerraConfig().load(this); getRawConfigRegistry().clear(); boolean succeed = getRawConfigRegistry().loadAll(this); - + MinecraftServer server = getServer(); - - if (server != null) { + + if(server != null) { server.reloadResources(server.getDataPackManager().getNames()).exceptionally(throwable -> { LOGGER.warn("Failed to execute reload", throwable); return null; }).join(); //BiomeUtil.registerBiomes(); server.getWorlds().forEach(world -> { - if (world.getChunkManager().getChunkGenerator() instanceof MinecraftChunkGeneratorWrapper chunkGeneratorWrapper) { + if(world.getChunkManager().getChunkGenerator() instanceof MinecraftChunkGeneratorWrapper chunkGeneratorWrapper) { getConfigRegistry().get(chunkGeneratorWrapper.getPack().getRegistryKey()).ifPresent(pack -> { chunkGeneratorWrapper.setPack(pack); LOGGER.info("Replaced pack in chunk generator for world {}", world); @@ -79,34 +79,35 @@ public class ForgePlatform extends ModPlatform { } return succeed; } - + @Override protected Iterable platformAddon() { List addons = new ArrayList<>(); - + super.platformAddon().forEach(addons::add); - + String mcVersion = MinecraftVersion.CURRENT.getReleaseTarget(); try { addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion), "minecraft")); - } catch (ParseException e) { + } catch(ParseException e) { try { addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion + ".0"), "minecraft")); - } catch (ParseException ex) { + } catch(ParseException ex) { LOGGER.warn("Failed to parse Minecraft version", e); } } - + FMLLoader.getLoadingModList().getMods().forEach(mod -> { String id = mod.getModId(); - if (id.equals("terra") || id.equals("minecraft") || id.equals("java")) return; - Version version = Versions.getVersion(mod.getVersion().getMajorVersion(), mod.getVersion().getMinorVersion(), mod.getVersion().getIncrementalVersion()); + if(id.equals("terra") || id.equals("minecraft") || id.equals("java")) return; + Version version = Versions.getVersion(mod.getVersion().getMajorVersion(), mod.getVersion().getMinorVersion(), + mod.getVersion().getIncrementalVersion()); addons.add(new EphemeralAddon(version, "forge:" + id)); }); - + return addons; } - + @Override public @NotNull String platformName() { return "Forge"; @@ -116,7 +117,7 @@ public class ForgePlatform extends ModPlatform { public @NotNull File getDataFolder() { return dataFolder.value(); } - + @Override public BaseAddon getPlatformAddon() { return new ForgeAddon(this); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java index 41a113f9e..1bdffca2e 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java @@ -24,7 +24,15 @@ public class NoiseConfigMixin { @Final private long legacyWorldSeed; - @Redirect(method = "(Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/util/registry/Registry;J)V", at = @At(value = "NEW", target = "(Lnet/minecraft/world/gen/densityfunction/DensityFunction;Lnet/minecraft/world/gen/densityfunction/DensityFunction;Lnet/minecraft/world/gen/densityfunction/DensityFunction;Lnet/minecraft/world/gen/densityfunction/DensityFunction;Lnet/minecraft/world/gen/densityfunction/DensityFunction;Lnet/minecraft/world/gen/densityfunction/DensityFunction;Ljava/util/List;)Lnet/minecraft/world/biome/source/util/MultiNoiseUtil$MultiNoiseSampler;")) + @Redirect(method = "(Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/util/registry/Registry;J)V", + at = @At(value = "NEW", + target = "(Lnet/minecraft/world/gen/densityfunction/DensityFunction;" + + "Lnet/minecraft/world/gen/densityfunction/DensityFunction;" + + "Lnet/minecraft/world/gen/densityfunction/DensityFunction;" + + "Lnet/minecraft/world/gen/densityfunction/DensityFunction;" + + "Lnet/minecraft/world/gen/densityfunction/DensityFunction;" + + "Lnet/minecraft/world/gen/densityfunction/DensityFunction;Ljava/util/List;)" + + "Lnet/minecraft/world/biome/source/util/MultiNoiseUtil$MultiNoiseSampler;")) private MultiNoiseSampler t(DensityFunction densityFunction, DensityFunction densityFunction2, DensityFunction densityFunction3, DensityFunction densityFunction4, DensityFunction densityFunction5, DensityFunction densityFunction6, List list) { diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/util/BiomeUtil.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/util/BiomeUtil.java index 1678fd4a8..177a63f8e 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/util/BiomeUtil.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/util/BiomeUtil.java @@ -1,8 +1,5 @@ package com.dfsek.terra.forge.util; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; -import com.dfsek.terra.mod.mixin.access.VillagerTypeAccessor; - import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -22,6 +19,8 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.forge.ForgeEntryPoint; import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.ProtoPlatformBiome; +import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.mixin.access.VillagerTypeAccessor; import com.dfsek.terra.mod.util.MinecraftUtil; @@ -32,7 +31,7 @@ public final class BiomeUtil { private BiomeUtil() { } - + public static void registerBiomes(RegisterHelper helper) { logger.info("Registering biomes..."); @@ -51,29 +50,41 @@ public final class BiomeUtil { * @param pack The ConfigPack this biome belongs to. */ private static void registerBiome(Biome biome, ConfigPack pack, - com.dfsek.terra.api.registry.key.RegistryKey id, RegisterHelper helper) { - RegistryKey vanilla = ((ProtoPlatformBiome) biome.getPlatformBiome()) .get(BuiltinRegistries.BIOME); + com.dfsek.terra.api.registry.key.RegistryKey id, + RegisterHelper helper) { + RegistryKey vanilla = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(BuiltinRegistries.BIOME); if(pack.getContext().get(PreLoadCompatibilityOptions.class).useVanillaBiomes()) { ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(vanilla); } else { VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); - - net.minecraft.world.biome.Biome minecraftBiome = MinecraftUtil.createBiome(biome, ForgeRegistries.BIOMES.getDelegateOrThrow(vanilla).value(), vanillaBiomeProperties); + + net.minecraft.world.biome.Biome minecraftBiome = MinecraftUtil.createBiome(biome, + ForgeRegistries.BIOMES.getDelegateOrThrow(vanilla) + .value(), + vanillaBiomeProperties); Identifier identifier = new Identifier("terra", MinecraftUtil.createBiomeID(pack, id)); if(ForgeRegistries.BIOMES.containsKey(identifier)) { - ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(ForgeRegistries.BIOMES.getHolder(identifier).orElseThrow().getKey().orElseThrow()); + ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(ForgeRegistries.BIOMES.getHolder(identifier) + .orElseThrow() + .getKey() + .orElseThrow()); } else { helper.register(MinecraftUtil.registerKey(identifier).getValue(), minecraftBiome); - ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(ForgeRegistries.BIOMES.getHolder(identifier).orElseThrow().getKey().orElseThrow()); + ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(ForgeRegistries.BIOMES.getHolder(identifier) + .orElseThrow() + .getKey() + .orElseThrow()); } Map villagerMap = VillagerTypeAccessor.getBiomeTypeToIdMap(); - villagerMap.put(RegistryKey.of(Registry.BIOME_KEY, identifier), Objects.requireNonNullElse(vanillaBiomeProperties.getVillagerType(), villagerMap.getOrDefault(vanilla, VillagerType.PLAINS))); + villagerMap.put(RegistryKey.of(Registry.BIOME_KEY, identifier), + Objects.requireNonNullElse(vanillaBiomeProperties.getVillagerType(), + villagerMap.getOrDefault(vanilla, VillagerType.PLAINS))); MinecraftUtil.TERRA_BIOME_MAP.computeIfAbsent(vanilla.getValue(), i -> new ArrayList<>()).add(identifier); } diff --git a/platforms/forge/src/main/resources/META-INF/mods.toml b/platforms/forge/src/main/resources/META-INF/mods.toml index ae314f8d3..ff9e92ada 100644 --- a/platforms/forge/src/main/resources/META-INF/mods.toml +++ b/platforms/forge/src/main/resources/META-INF/mods.toml @@ -1,7 +1,7 @@ modLoader = "javafml" loaderVersion = "[41,)" license = "GNU General Public License, v3.0" -issueTrackerURL="https://github.com/PolyhedralDev/Terra/issues" +issueTrackerURL = "https://github.com/PolyhedralDev/Terra/issues" [[mods]] modId = "terra" diff --git a/platforms/forge/src/main/resources/pack.mcmeta b/platforms/forge/src/main/resources/pack.mcmeta index 3dc15cc76..5e44f2fa1 100644 --- a/platforms/forge/src/main/resources/pack.mcmeta +++ b/platforms/forge/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { - "pack": { - "description": "Terra Resources", - "pack_format": 9 - } + "pack": { + "description": "Terra Resources", + "pack_format": 9 + } } diff --git a/platforms/forge/src/main/resources/terra.forge.mixins.json b/platforms/forge/src/main/resources/terra.forge.mixins.json index 9bc9426db..25c1c470e 100644 --- a/platforms/forge/src/main/resources/terra.forge.mixins.json +++ b/platforms/forge/src/main/resources/terra.forge.mixins.json @@ -4,7 +4,7 @@ "package": "com.dfsek.terra.forge.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ - "lifecycle.NoiseConfigMixin" + "lifecycle.NoiseConfigMixin" ], "client": [ ], diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java index 50fd7a428..fa1214389 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java @@ -61,10 +61,10 @@ public abstract class MinecraftAddon implements BaseAddon { .getHandler(FunctionalEventHandler.class) .register(this, ConfigurationLoadEvent.class) .then(event -> { - if(event.is(Biome.class)) { - event.getLoadedObject(Biome.class).getContext().put(event.load(new VanillaBiomeProperties())); - } - }) + if(event.is(Biome.class)) { + event.getLoadedObject(Biome.class).getContext().put(event.load(new VanillaBiomeProperties())); + } + }) .global(); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index e6a7d9054..4a6efa188 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -3,17 +3,6 @@ package com.dfsek.terra.mod; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; - -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.mod.config.SpawnSettingsTemplate; - -import com.dfsek.terra.mod.handle.MinecraftItemHandle; - -import com.dfsek.terra.mod.handle.MinecraftWorldHandle; - -import com.dfsek.terra.mod.config.VillagerTypeTemplate; - import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; import net.minecraft.server.MinecraftServer; @@ -31,6 +20,7 @@ import net.minecraft.world.biome.BiomeParticleConfig; import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import net.minecraft.world.gen.WorldPreset; +import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.Locale; @@ -38,6 +28,8 @@ import java.util.function.BiConsumer; import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.biome.PlatformBiome; import com.dfsek.terra.mod.config.BiomeAdditionsSoundTemplate; import com.dfsek.terra.mod.config.BiomeMoodSoundTemplate; @@ -49,17 +41,19 @@ import com.dfsek.terra.mod.config.SoundEventTemplate; import com.dfsek.terra.mod.config.SpawnCostConfig; import com.dfsek.terra.mod.config.SpawnEntryTemplate; import com.dfsek.terra.mod.config.SpawnGroupTemplate; +import com.dfsek.terra.mod.config.SpawnSettingsTemplate; import com.dfsek.terra.mod.config.SpawnTypeConfig; +import com.dfsek.terra.mod.config.VillagerTypeTemplate; +import com.dfsek.terra.mod.handle.MinecraftItemHandle; +import com.dfsek.terra.mod.handle.MinecraftWorldHandle; import com.dfsek.terra.mod.util.PresetUtil; -import org.jetbrains.annotations.NotNull; - public abstract class ModPlatform extends AbstractPlatform { - public abstract MinecraftServer getServer(); - private final ItemHandle itemHandle = new MinecraftItemHandle(); private final WorldHandle worldHandle = new MinecraftWorldHandle(); + + public abstract MinecraftServer getServer(); public void registerWorldTypes(BiConsumer registerFunction) { getRawConfigRegistry() @@ -78,10 +72,12 @@ public abstract class ModPlatform extends AbstractPlatform { }) .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase( Locale.ROOT))) - .registerLoader(GrassColorModifier.class, (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase( - Locale.ROOT))) - .registerLoader(GrassColorModifier.class, (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase( - Locale.ROOT))) + .registerLoader(GrassColorModifier.class, + (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase( + Locale.ROOT))) + .registerLoader(GrassColorModifier.class, + (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase( + Locale.ROOT))) .registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new) .registerLoader(SoundEvent.class, SoundEventTemplate::new) .registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new) @@ -101,12 +97,12 @@ public abstract class ModPlatform extends AbstractPlatform { if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier, tracker); // failure. return new ProtoPlatformBiome(identifier); } - + @Override protected Iterable platformAddon() { return List.of(getPlatformAddon()); } - + protected abstract BaseAddon getPlatformAddon(); @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java index 92e6dc7a7..e9d4a2038 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java @@ -18,7 +18,7 @@ public class BiomeAdditionsSoundTemplate implements ObjectTemplate { @Override public BiomeMoodSound get() { - if (sound == null || soundCultivationTicks == null || soundSpawnRange == null || soundExtraDistance == null) { + if(sound == null || soundCultivationTicks == null || soundSpawnRange == null || soundExtraDistance == null) { return null; } else { return new BiomeMoodSound(sound, soundCultivationTicks, soundSpawnRange, soundExtraDistance); 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 5e2558412..538a80870 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 @@ -17,10 +17,10 @@ public class BiomeParticleConfigTemplate implements ObjectTemplate { @Override public MusicSound get() { - if (sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) { + if(sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) { return null; } else { return new MusicSound(sound, minDelay, maxDelay, replaceCurrentMusic); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java index f2ae58993..5e87dc21a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java @@ -18,9 +18,9 @@ public class SoundEventTemplate implements ObjectTemplate { @Override public SoundEvent get() { - if (id == null) { + if(id == null) { return null; - } else if (distanceToTravel == null) { + } else if(distanceToTravel == null) { return new SoundEvent(id); } else { return new SoundEvent(id, distanceToTravel); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java index 25fae1481..9b72e579c 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java @@ -24,13 +24,13 @@ public class SpawnSettingsTemplate implements ObjectTemplate { @Override public SpawnSettings get() { SpawnSettings.Builder builder = new SpawnSettings.Builder(); - for (SpawnTypeConfig spawn : spawns) { + for(SpawnTypeConfig spawn : spawns) { builder.spawn(spawn.getGroup(), spawn.getEntry()); } - for (SpawnCostConfig cost: costs) { + for(SpawnCostConfig cost : costs) { builder.spawnCost(cost.getType(), cost.getMass(), cost.getGravity()); } - if (probability != null) { + if(probability != null) { builder.creatureSpawnProbability(probability); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java index 429829267..b5b88a6b9 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java @@ -93,7 +93,7 @@ public class VanillaBiomeProperties implements ConfigTemplate, Properties { public Integer getGrassColor() { return grassColor; } - + public Integer getFogColor() { return fogColor; } 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 235102dac..f8cce4832 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 @@ -3,7 +3,6 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import net.minecraft.entity.EntityType; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.village.VillagerType; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java index 36f774297..5f5dd615a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java @@ -31,8 +31,8 @@ public final class Codecs { .getConfigRegistry() .get(id) .orElseThrow(() -> new IllegalArgumentException( - "No such config pack " + - id))))); + "No such config pack " + + id))))); public static final Codec TERRA_BIOME_SOURCE = RecordCodecBuilder .create(instance -> instance.group(RegistryOps.createRegistryCodec(Registry.BIOME_KEY) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/VillagerTypeAccessor.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/VillagerTypeAccessor.java index acf269a11..477c0647b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/VillagerTypeAccessor.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/VillagerTypeAccessor.java @@ -8,6 +8,7 @@ import org.spongepowered.asm.mixin.gen.Accessor; import java.util.Map; + @Mixin(VillagerType.class) public interface VillagerTypeAccessor { @Accessor("BIOME_TO_TYPE") diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/BeeMoveGoalsUnsynchronizedRandomAccessFix.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/BeeMoveGoalsUnsynchronizedRandomAccessFix.java index ba73ff960..f29e6d259 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/BeeMoveGoalsUnsynchronizedRandomAccessFix.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/BeeMoveGoalsUnsynchronizedRandomAccessFix.java @@ -20,7 +20,8 @@ import com.dfsek.terra.mod.CommonPlatform; MoveToFlowerGoal.class }) public class BeeMoveGoalsUnsynchronizedRandomAccessFix { - @Redirect(method = "", at = @At(value = "FIELD", target = "Lnet/minecraft/world/World;random:Lnet/minecraft/util/math/random/Random;")) + @Redirect(method = "", + at = @At(value = "FIELD", target = "Lnet/minecraft/world/World;random:Lnet/minecraft/util/math/random/Random;")) public Random redirectRandomAccess(World instance) { return new CheckedRandom(CommonPlatform.get().getServer().getTicks()); // replace with new random seeded by tick time. } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java index 12d6a0732..f2ab4956a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java @@ -15,8 +15,9 @@ import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; /** * Disable fossil generation in Terra worlds, as they are very expensive due to consistently triggering cache misses. - * - * Currently, on Fabric, Terra cannot be specified as a Nether generator. TODO: logic to turn fossils back on if chunk generator is in nether. + *

+ * Currently, on Fabric, Terra cannot be specified as a Nether generator. TODO: logic to turn fossils back on if chunk generator is in + * nether. */ @Mixin(NetherFossilStructure.class) public class NetherFossilOptimization { 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 152e743da..69f91e6f6 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 @@ -1,7 +1,5 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.mod.mixin.access.VillagerTypeAccessor; - import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -10,7 +8,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryEntry; import net.minecraft.util.registry.RegistryKey; -import net.minecraft.village.VillagerType; import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; @@ -69,18 +66,23 @@ public final class MinecraftUtil { TERRA_BIOME_MAP .forEach((vb, terraBiomes) -> biomes.getOrEmpty(vb) - .ifPresentOrElse(vanilla -> terraBiomes - .forEach(tb -> biomes.getOrEmpty(tb) - .ifPresentOrElse( - terra -> { - List> flowerFeatures = List.copyOf(vanilla.getGenerationSettings().getFlowerFeatures()); - logger.debug("Injecting flora into biome {} : {}", tb, flowerFeatures); - ((FloraFeatureHolder) terra.getGenerationSettings()).setFloraFeatures(flowerFeatures); - }, - () -> logger.error( - "No such biome: {}", - tb))), - () -> logger.error("No vanilla biome: {}", vb))); + .ifPresentOrElse(vanilla -> terraBiomes + .forEach(tb -> biomes.getOrEmpty(tb) + .ifPresentOrElse( + terra -> { + List> flowerFeatures = List.copyOf( + vanilla.getGenerationSettings() + .getFlowerFeatures()); + logger.debug("Injecting flora into biome" + + " {} : {}", tb, + flowerFeatures); + ((FloraFeatureHolder) terra.getGenerationSettings()).setFloraFeatures( + flowerFeatures); + }, + () -> logger.error( + "No such biome: {}", + tb))), + () -> logger.error("No vanilla biome: {}", vb))); } @@ -92,70 +94,73 @@ public final class MinecraftUtil { return RegistryKey.of(Registry.BIOME_KEY, identifier); } - public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla, VanillaBiomeProperties vanillaBiomeProperties) { + public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla, + VanillaBiomeProperties vanillaBiomeProperties) { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); - + BiomeEffects.Builder effects = new BiomeEffects.Builder(); - + net.minecraft.world.biome.Biome.Builder builder = new Builder(); - + effects.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) .fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())) .grassColorModifier( - Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), vanilla.getEffects().getGrassColorModifier())); - - if (vanillaBiomeProperties.getFoliageColor() == null) { + Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), + vanilla.getEffects().getGrassColorModifier())); + + if(vanillaBiomeProperties.getFoliageColor() == null) { vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor); } else { effects.foliageColor(vanillaBiomeProperties.getFoliageColor()); } - - if (vanillaBiomeProperties.getGrassColor() == null) { + + if(vanillaBiomeProperties.getGrassColor() == null) { vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor); } else { effects.grassColor(vanillaBiomeProperties.getGrassColor()); } - - if (vanillaBiomeProperties.getParticleConfig() == null) { + + if(vanillaBiomeProperties.getParticleConfig() == null) { vanilla.getEffects().getParticleConfig().ifPresent(effects::particleConfig); } else { effects.particleConfig(vanillaBiomeProperties.getParticleConfig()); } - - if (vanillaBiomeProperties.getLoopSound() == null) { + + if(vanillaBiomeProperties.getLoopSound() == null) { vanilla.getEffects().getLoopSound().ifPresent(effects::loopSound); } else { effects.loopSound(vanillaBiomeProperties.getLoopSound()); } - - if (vanillaBiomeProperties.getMoodSound() == null) { + + if(vanillaBiomeProperties.getMoodSound() == null) { vanilla.getEffects().getMoodSound().ifPresent(effects::moodSound); } else { effects.moodSound(vanillaBiomeProperties.getMoodSound()); } - - if (vanillaBiomeProperties.getAdditionsSound() == null) { + + if(vanillaBiomeProperties.getAdditionsSound() == null) { vanilla.getEffects().getAdditionsSound().ifPresent(effects::additionsSound); } else { effects.additionsSound(vanillaBiomeProperties.getAdditionsSound()); } - - if (vanillaBiomeProperties.getMusic() == null) { + + if(vanillaBiomeProperties.getMusic() == null) { vanilla.getEffects().getMusic().ifPresent(effects::music); } else { effects.music(vanillaBiomeProperties.getMusic()); } - + builder.precipitation(Objects.requireNonNullElse(vanillaBiomeProperties.getPrecipitation(), vanilla.getPrecipitation())); - + builder.temperature(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperature(), vanilla.getTemperature())); - + builder.downfall(Objects.requireNonNullElse(vanillaBiomeProperties.getDownfall(), vanilla.getDownfall())); - builder.temperatureModifier(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperatureModifier(), ((BiomeAccessor)((Object)vanilla)).getWeather().temperatureModifier())); - + builder.temperatureModifier(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperatureModifier(), + ((BiomeAccessor) ((Object) vanilla)).getWeather().temperatureModifier())); + builder.spawnSettings(Objects.requireNonNullElse(vanillaBiomeProperties.getSpawnSettings(), vanilla.getSpawnSettings())); return builder 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 df1641f39..f4fd942c8 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,7 +40,7 @@ public class PresetUtil { Registry structureSetRegistry = BuiltinRegistries.STRUCTURE_SET; Registry noiseParametersRegistry = BuiltinRegistries.NOISE_PARAMETERS; Registry biomeRegistry = BuiltinRegistries.BIOME; - + RegistryEntry theNetherDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.THE_NETHER); RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getOrCreateEntry(ChunkGeneratorSettings.NETHER); @@ -57,19 +57,19 @@ public class PresetUtil { new NoiseChunkGenerator(structureSetRegistry, noiseParametersRegistry, new TheEndBiomeSource(biomeRegistry), endChunkGeneratorSettings)); - + RegistryEntry overworldDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.OVERWORLD); - + RegistryEntry overworld = chunkGeneratorSettingsRegistry.getOrCreateEntry(ChunkGeneratorSettings.OVERWORLD); - + Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( Locale.ROOT)); - + PRESETS.add(generatorID); - + TerraBiomeSource biomeSource = new TerraBiomeSource(biomeRegistry, pack); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(structureSetRegistry, biomeSource, pack, overworld); - + DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator); WorldPreset preset = new WorldPreset( Map.of( diff --git a/platforms/mixin-common/src/main/resources/terra.common.mixins.json b/platforms/mixin-common/src/main/resources/terra.common.mixins.json index d36a29a4e..d4402241c 100644 --- a/platforms/mixin-common/src/main/resources/terra.common.mixins.json +++ b/platforms/mixin-common/src/main/resources/terra.common.mixins.json @@ -1,49 +1,49 @@ { - "required": true, - "minVersion": "0.8", - "package": "com.dfsek.terra.mod.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [ - "access.BiomeAccessor", - "access.MobSpawnerLogicAccessor", - "access.StateAccessor", - "access.StructureAccessorAccessor", - "access.VillagerTypeAccessor", - "fix.BeeMoveGoalsUnsynchronizedRandomAccessFix", - "fix.NetherFossilOptimization", - "implementations.compat.GenerationSettingsFloraFeaturesMixin", - "implementations.terra.BiomeMixin", - "implementations.terra.HandleImplementationMixin", - "implementations.terra.block.BlockMixin", - "implementations.terra.block.entity.BlockEntityMixin", - "implementations.terra.block.entity.LootableContainerBlockEntityMixin", - "implementations.terra.block.entity.MobSpawnerBlockEntityMixin", - "implementations.terra.block.entity.SignBlockEntityMixin", - "implementations.terra.block.state.BlockStateMixin", - "implementations.terra.block.state.PropertyMixin", - "implementations.terra.chunk.ChunkRegionMixin", - "implementations.terra.chunk.WorldChunkMixin", - "implementations.terra.chunk.data.ProtoChunkMixin", - "implementations.terra.entity.EntityMixin", - "implementations.terra.entity.EntityTypeMixin", - "implementations.terra.entity.PlayerEntityMixin", - "implementations.terra.entity.ServerCommandSourceMixin", - "implementations.terra.inventory.LockableContainerBlockEntityMixin", - "implementations.terra.inventory.item.ItemMixin", - "implementations.terra.inventory.item.ItemStackMixin", - "implementations.terra.inventory.meta.EnchantmentMixin", - "implementations.terra.inventory.meta.ItemStackDamageableMixin", - "implementations.terra.inventory.meta.ItemStackMetaMixin", - "implementations.terra.world.ChunkRegionMixin", - "implementations.terra.world.ServerWorldMixin", - "lifecycle.DataPackContentsMixin" - ], - "client": [ - ], - "server": [ - ], - "injectors": { - "defaultRequire": 1 - }, + "required": true, + "minVersion": "0.8", + "package": "com.dfsek.terra.mod.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "access.BiomeAccessor", + "access.MobSpawnerLogicAccessor", + "access.StateAccessor", + "access.StructureAccessorAccessor", + "access.VillagerTypeAccessor", + "fix.BeeMoveGoalsUnsynchronizedRandomAccessFix", + "fix.NetherFossilOptimization", + "implementations.compat.GenerationSettingsFloraFeaturesMixin", + "implementations.terra.BiomeMixin", + "implementations.terra.HandleImplementationMixin", + "implementations.terra.block.BlockMixin", + "implementations.terra.block.entity.BlockEntityMixin", + "implementations.terra.block.entity.LootableContainerBlockEntityMixin", + "implementations.terra.block.entity.MobSpawnerBlockEntityMixin", + "implementations.terra.block.entity.SignBlockEntityMixin", + "implementations.terra.block.state.BlockStateMixin", + "implementations.terra.block.state.PropertyMixin", + "implementations.terra.chunk.ChunkRegionMixin", + "implementations.terra.chunk.WorldChunkMixin", + "implementations.terra.chunk.data.ProtoChunkMixin", + "implementations.terra.entity.EntityMixin", + "implementations.terra.entity.EntityTypeMixin", + "implementations.terra.entity.PlayerEntityMixin", + "implementations.terra.entity.ServerCommandSourceMixin", + "implementations.terra.inventory.LockableContainerBlockEntityMixin", + "implementations.terra.inventory.item.ItemMixin", + "implementations.terra.inventory.item.ItemStackMixin", + "implementations.terra.inventory.meta.EnchantmentMixin", + "implementations.terra.inventory.meta.ItemStackDamageableMixin", + "implementations.terra.inventory.meta.ItemStackMetaMixin", + "implementations.terra.world.ChunkRegionMixin", + "implementations.terra.world.ServerWorldMixin", + "lifecycle.DataPackContentsMixin" + ], + "client": [ + ], + "server": [ + ], + "injectors": { + "defaultRequire": 1 + }, "refmap": "terra.common.refmap.json" } \ No newline at end of file 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 13ae3f692..f218380d7 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 @@ -28,15 +28,15 @@ public abstract class LifecyclePlatform extends ModPlatform { load(); } - public static void setServer(MinecraftServer server) { - LifecyclePlatform.server = server; - } - @Override public MinecraftServer getServer() { return server; } + public static void setServer(MinecraftServer server) { + LifecyclePlatform.server = server; + } + @Override public boolean reload() { getTerraConfig().load(this); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java index 015a22260..2793aa500 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java @@ -24,8 +24,10 @@ public class NoiseConfigMixin { @Final private MultiNoiseSampler multiNoiseSampler; - @Inject(method = "(Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/util/registry/Registry;J)V", at = @At("TAIL")) - private void mapMultiNoise(ChunkGeneratorSettings chunkGeneratorSettings, Registry noiseRegistry, long seed, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/util/registry/Registry;J)V", + at = @At("TAIL")) + private void mapMultiNoise(ChunkGeneratorSettings chunkGeneratorSettings, + Registry noiseRegistry, long seed, CallbackInfo ci) { SeedHack.register(multiNoiseSampler, seed); } } diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java index 42b73c1ce..8e2c12c70 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java @@ -1,13 +1,13 @@ package com.dfsek.terra.lifecycle.mixin; -import com.dfsek.terra.lifecycle.util.RegistryUtil; - import net.minecraft.util.registry.Registry; 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 com.dfsek.terra.lifecycle.util.RegistryUtil; + @Mixin(Registry.class) public class RegistryMixin { 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 8e6732a58..f0d3e06e6 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 @@ -1,9 +1,5 @@ package com.dfsek.terra.lifecycle.util; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; - -import com.dfsek.terra.mod.mixin.access.VillagerTypeAccessor; - import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -21,6 +17,8 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.mod.CommonPlatform; import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.ProtoPlatformBiome; +import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.mixin.access.VillagerTypeAccessor; import com.dfsek.terra.mod.util.MinecraftUtil; @@ -48,7 +46,7 @@ public final class BiomeUtil { * @param pack The ConfigPack this biome belongs to. */ private static void registerBiome(Biome biome, ConfigPack pack, - com.dfsek.terra.api.registry.key.RegistryKey id) { + com.dfsek.terra.api.registry.key.RegistryKey id) { Registry registry = BuiltinRegistries.BIOME; RegistryKey vanilla = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(registry); @@ -58,7 +56,8 @@ public final class BiomeUtil { } else { VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); - net.minecraft.world.biome.Biome minecraftBiome = MinecraftUtil.createBiome(biome, registry.get(vanilla), vanillaBiomeProperties); + net.minecraft.world.biome.Biome minecraftBiome = MinecraftUtil.createBiome(biome, registry.get(vanilla), + vanillaBiomeProperties); Identifier identifier = new Identifier("terra", MinecraftUtil.createBiomeID(pack, id)); @@ -69,14 +68,17 @@ public final class BiomeUtil { .orElseThrow()); } else { ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(BuiltinRegistries.add(registry, - MinecraftUtil.registerKey(identifier).getValue(), + MinecraftUtil.registerKey(identifier) + .getValue(), minecraftBiome).getKey().orElseThrow()); } - + Map villagerMap = VillagerTypeAccessor.getBiomeTypeToIdMap(); - - villagerMap.put(RegistryKey.of(Registry.BIOME_KEY, identifier), Objects.requireNonNullElse(vanillaBiomeProperties.getVillagerType(), villagerMap.getOrDefault(vanilla, VillagerType.PLAINS))); - + + villagerMap.put(RegistryKey.of(Registry.BIOME_KEY, identifier), + Objects.requireNonNullElse(vanillaBiomeProperties.getVillagerType(), + villagerMap.getOrDefault(vanilla, VillagerType.PLAINS))); + MinecraftUtil.TERRA_BIOME_MAP.computeIfAbsent(vanilla.getValue(), i -> new ArrayList<>()).add(identifier); } } diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java index 7961a9c9a..498de58aa 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java @@ -1,14 +1,14 @@ package com.dfsek.terra.lifecycle.util; +import net.minecraft.util.registry.BuiltinRegistries; + import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.mod.CommonPlatform; -import net.minecraft.util.registry.BuiltinRegistries; - public final class LifecycleUtil { private LifecycleUtil() { - + } public static void initialize() { diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java index 000f7c472..9f17b89e3 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java @@ -1,14 +1,14 @@ package com.dfsek.terra.lifecycle.util; -import com.dfsek.terra.mod.data.Codecs; - import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; +import com.dfsek.terra.mod.data.Codecs; + public final class RegistryUtil { private RegistryUtil() { - + } public static void register() { 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 4df69c7fb..7ec5e4d95 100644 --- a/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json +++ b/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json @@ -16,6 +16,6 @@ ], "injectors": { "defaultRequire": 1 - }, + }, "refmap": "terra.lifecycle.refmap.json" } \ No newline at end of file diff --git a/platforms/quilt/build.gradle.kts b/platforms/quilt/build.gradle.kts index 8fc889b2f..c1f443dd1 100644 --- a/platforms/quilt/build.gradle.kts +++ b/platforms/quilt/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { modImplementation("org.quiltmc:quilt-loader:${Versions.Quilt.quiltLoader}") modImplementation("org.quiltmc.quilted-fabric-api:quilted-fabric-api:${Versions.Quilt.fabricApi}") - + modImplementation("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) { exclude("net.fabricmc") exclude("net.fabricmc.fabric-api") diff --git a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/AwfulQuiltHacks.java b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/AwfulQuiltHacks.java index 7e3b7afcc..6dbcbaff4 100644 --- a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/AwfulQuiltHacks.java +++ b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/AwfulQuiltHacks.java @@ -4,40 +4,41 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; + /** * So you want to Mixin into Authlib/Brigadier/DataFixerUpper, on Fabric you'll need this guy. * *

YOU SHOULD ONLY USE THIS CLASS DURING "preLaunch" and ONLY TARGET A CLASS WHICH IS NOT ANY CLASS YOU MIXIN TO. - * + *

* This will likely not work on Gson because FabricLoader has some special logic related to Gson. */ public final class AwfulQuiltHacks { - private AwfulQuiltHacks() {} + private static final ClassLoader KNOT_CLASSLOADER = Thread.currentThread().getContextClassLoader(); + private static final Method ADD_URL_METHOD; + static { + Method tempAddUrlMethod = null; + try { + tempAddUrlMethod = KNOT_CLASSLOADER.getClass().getMethod("addURL", URL.class); + tempAddUrlMethod.setAccessible(true); + } catch(ReflectiveOperationException e) { + throw new RuntimeException("Failed to load Classloader fields", e); + } - private static final ClassLoader KNOT_CLASSLOADER = Thread.currentThread().getContextClassLoader(); - private static final Method ADD_URL_METHOD; + ADD_URL_METHOD = tempAddUrlMethod; + } - static { - Method tempAddUrlMethod = null; - try { - tempAddUrlMethod = KNOT_CLASSLOADER.getClass().getMethod("addURL", URL.class); - tempAddUrlMethod.setAccessible(true); - } catch (ReflectiveOperationException e) { - throw new RuntimeException("Failed to load Classloader fields", e); - } + private AwfulQuiltHacks() { } - ADD_URL_METHOD = tempAddUrlMethod; - } - - /** - * Hackily load the package which a mixin may exist within. - * - * YOU SHOULD NOT TARGET A CLASS WHICH YOU MIXIN TO. - * - * @param pathOfAClass The path of any class within the package. - */ - public static void hackilyLoadForMixin(String pathOfAClass) throws ClassNotFoundException, InvocationTargetException, IllegalAccessException { - URL url = Class.forName(pathOfAClass).getProtectionDomain().getCodeSource().getLocation(); - ADD_URL_METHOD.invoke(KNOT_CLASSLOADER, url); - } + /** + * Hackily load the package which a mixin may exist within. + *

+ * YOU SHOULD NOT TARGET A CLASS WHICH YOU MIXIN TO. + * + * @param pathOfAClass The path of any class within the package. + */ + public static void hackilyLoadForMixin(String pathOfAClass) + throws ClassNotFoundException, InvocationTargetException, IllegalAccessException { + URL url = Class.forName(pathOfAClass).getProtectionDomain().getCodeSource().getLocation(); + ADD_URL_METHOD.invoke(KNOT_CLASSLOADER, url); + } } diff --git a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltAddon.java b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltAddon.java index 6a34eab74..f0767fdcf 100644 --- a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltAddon.java +++ b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltAddon.java @@ -3,6 +3,7 @@ package com.dfsek.terra.quilt; import com.dfsek.terra.mod.MinecraftAddon; import com.dfsek.terra.mod.ModPlatform; + public class QuiltAddon extends MinecraftAddon { public QuiltAddon(ModPlatform modPlatform) { diff --git a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltEntryPoint.java b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltEntryPoint.java index f7c939fed..88f676daf 100644 --- a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltEntryPoint.java +++ b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltEntryPoint.java @@ -33,6 +33,7 @@ public class QuiltEntryPoint implements ModInitializer { private static final Logger logger = LoggerFactory.getLogger(QuiltEntryPoint.class); private static final QuiltPlatform TERRA_PLUGIN = new QuiltPlatform(); + @Override public void onInitialize(ModContainer container) { logger.info("Initializing Terra Quilt mod..."); diff --git a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPlatform.java b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPlatform.java index 406e2ffcf..dfc1a7a18 100644 --- a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPlatform.java +++ b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPlatform.java @@ -32,7 +32,6 @@ import java.util.stream.Stream; import com.dfsek.terra.addon.EphemeralAddon; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.lifecycle.LifecyclePlatform; @@ -41,7 +40,7 @@ public class QuiltPlatform extends LifecyclePlatform { @Override protected Collection getPlatformMods() { - return QuiltLoader.getAllMods().stream().flatMap(mod -> { + return QuiltLoader.getAllMods().stream().flatMap(mod -> { String id = mod.metadata().id(); if(id.equals("terra") || id.equals("minecraft") || id.equals("java")) return Stream.empty(); try { diff --git a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPreLaunchEntryPoint.java b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPreLaunchEntryPoint.java index 1e4fb70a9..e4d8cc0aa 100644 --- a/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPreLaunchEntryPoint.java +++ b/platforms/quilt/src/main/java/com/dfsek/terra/quilt/QuiltPreLaunchEntryPoint.java @@ -11,7 +11,7 @@ import java.lang.reflect.InvocationTargetException; public class QuiltPreLaunchEntryPoint implements PreLaunchEntrypoint { @Override public void onPreLaunch(ModContainer mod) { - if (QuiltLoader.isDevelopmentEnvironment()) { + if(QuiltLoader.isDevelopmentEnvironment()) { try { AwfulQuiltHacks.hackilyLoadForMixin(BrigadierMappingBuilder.class.getName()); } catch(ClassNotFoundException | InvocationTargetException | IllegalAccessException e) {