From 3efdfcb575f7ce25aed27c3b9772ad6bad8b7038 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 5 Nov 2020 13:37:34 +0300 Subject: [PATCH] Registry init fix --- .../ru/betterend/mixin/common/DimensionTypeMixin.java | 3 +-- .../betterend/mixin/common/MinecraftServerMixin.java | 2 ++ src/main/java/ru/betterend/registry/EndBiomes.java | 11 +++++++++++ .../world/structures/piece/MountainPiece.java | 4 ++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java b/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java index e8d69efe..0c462a2c 100644 --- a/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java +++ b/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java @@ -14,8 +14,7 @@ import net.minecraft.world.gen.chunk.NoiseChunkGenerator; import ru.betterend.world.generator.BetterEndBiomeSource; @Mixin(value = DimensionType.class, priority = 100) -public class DimensionTypeMixin -{ +public class DimensionTypeMixin { @Inject(method = "createEndGenerator", at = @At("HEAD"), cancellable = true) private static void replaceGenerator(Registry biomeRegistry, Registry chunkGeneratorSettingsRegistry, long seed, CallbackInfoReturnable info) { info.setReturnValue(new NoiseChunkGenerator(new BetterEndBiomeSource(biomeRegistry, seed), seed, () -> { diff --git a/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java b/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java index b85a12ab..14b87a78 100644 --- a/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java +++ b/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java @@ -14,6 +14,7 @@ import net.fabricmc.loader.api.FabricLoader; import net.minecraft.resource.ServerResourceManager; import net.minecraft.server.MinecraftServer; import ru.betterend.recipe.EndRecipeManager; +import ru.betterend.registry.EndBiomes; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -28,6 +29,7 @@ public class MinecraftServerMixin { @Inject(method = "loadWorld", at = @At(value = "RETURN"), cancellable = true) private void beOnLoadWorld(CallbackInfo info) { beInjectRecipes(); + EndBiomes.initRegistry((MinecraftServer) (Object) this); } private void beInjectRecipes() { diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index 08dbe403..ceacfb58 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -11,6 +11,7 @@ import com.google.common.collect.Maps; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -87,6 +88,16 @@ public class EndBiomes { CLIENT.clear(); } + /** + * Initialize registry if it was not initialized in world generation (when using mods/datapacks, that overrides the End generation) + * @param server + */ + public static void initRegistry(MinecraftServer server) { + if (biomeRegistry == null) { + biomeRegistry = server.getRegistryManager().get(Registry.BIOME_KEY); + } + } + /** * Registers new {@link EndBiome} and adds it to picker, can be used to add existing mod biomes into the End. * @param biome - {@link Biome} instance diff --git a/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java b/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java index c3785ea7..d3c29507 100644 --- a/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java @@ -108,7 +108,7 @@ public class MountainPiece extends BasePiece { pos.setZ(z); dist = 1 - (float) Math.pow(dist / r2, 0.3); int minY = map.get(x, z); - if (minY < 56) { + if (minY < 10) { continue; } pos.setY(minY); @@ -116,7 +116,7 @@ public class MountainPiece extends BasePiece { pos.setY(pos.getY() - 1); } minY = pos.getY(); - if (minY > 56) { + if (minY > 10) { float maxY = dist * height * getHeightClamp(world, 8, px, pz); if (maxY > 0) { maxY *= (float) noise1.eval(px * 0.05, pz * 0.05) * 0.3F + 0.7F;