From dc3f90aeec468e5f03e5f63b26d3d1e7c5b02654 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sat, 21 May 2022 11:21:49 +0300 Subject: [PATCH 1/4] Recipe sorting enhancement (#144) --- src/main/java/ru/bclib/recipes/BCLRecipeManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/bclib/recipes/BCLRecipeManager.java b/src/main/java/ru/bclib/recipes/BCLRecipeManager.java index 8a124041..23ca9a85 100644 --- a/src/main/java/ru/bclib/recipes/BCLRecipeManager.java +++ b/src/main/java/ru/bclib/recipes/BCLRecipeManager.java @@ -33,7 +33,7 @@ public class BCLRecipeManager { list.sort((v1, v2) -> { boolean b1 = v1.getId().getNamespace().equals(MINECRAFT); boolean b2 = v2.getId().getNamespace().equals(MINECRAFT); - return b1 ^ b2 ? (b1 ? 1 : -1) : 0; + return b1 ^ b2 ? (b1 ? 1 : -1) : v1.getId().compareTo(v2.getId()); }); return ImmutableList.copyOf(list); }); From e0890d6e25e14087365b38bdc0cddbf6b98a5a73 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 26 May 2022 17:06:27 +0300 Subject: [PATCH 2/4] Skip biomes that are missing in registry (#145) --- gradle.properties | 2 +- src/main/java/ru/bclib/api/biomes/BiomeAPI.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0bd3a726..db799acc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ loader_version= 0.13.3 fabric_version = 0.48.0+1.18.2 # Mod Properties -mod_version = 1.4.6 +mod_version = 1.5.0 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index 0a8e584c..46eaaaee 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -430,19 +430,28 @@ public class BiomeAPI { public static void loadFabricAPIBiomes() { FabricBiomesData.NETHER_BIOMES.forEach((key) -> { if (!hasBiome(key.location())) { - registerNetherBiome(BuiltinRegistries.BIOME.get(key)); + Optional> optional = BuiltinRegistries.BIOME.getHolder(key); + if (optional.isPresent()) { + registerNetherBiome(optional.get().value()); + } } }); FabricBiomesData.END_LAND_BIOMES.forEach((key, weight) -> { if (!hasBiome(key.location())) { - registerEndLandBiome(BuiltinRegistries.BIOME.getHolder(key).orElseThrow(), weight); + Optional> optional = BuiltinRegistries.BIOME.getHolder(key); + if (optional.isPresent()) { + registerEndLandBiome(optional.get(), weight); + } } }); FabricBiomesData.END_VOID_BIOMES.forEach((key, weight) -> { if (!hasBiome(key.location())) { - registerEndVoidBiome(BuiltinRegistries.BIOME.getOrCreateHolder(key), weight); + Optional> optional = BuiltinRegistries.BIOME.getHolder(key); + if (optional.isPresent()) { + registerEndVoidBiome(optional.get(), weight); + } } }); } From 3ebde1991d5ebc315b7d35e9065495eacf328193 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 26 May 2022 17:36:28 +0300 Subject: [PATCH 3/4] FrozableRegistry interface, ability to froze/unfroze MappedRegistry --- .../ru/bclib/interfaces/FrozableRegistry.java | 6 +++++ .../mixin/common/MappedRegistryMixin.java | 22 +++++++++++++++++++ src/main/resources/bclib.mixins.common.json | 1 + 3 files changed, 29 insertions(+) create mode 100644 src/main/java/ru/bclib/interfaces/FrozableRegistry.java create mode 100644 src/main/java/ru/bclib/mixin/common/MappedRegistryMixin.java diff --git a/src/main/java/ru/bclib/interfaces/FrozableRegistry.java b/src/main/java/ru/bclib/interfaces/FrozableRegistry.java new file mode 100644 index 00000000..a7cc7720 --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/FrozableRegistry.java @@ -0,0 +1,6 @@ +package ru.bclib.interfaces; + +public interface FrozableRegistry { + void setFrozeState(boolean frozen); + boolean getFrozeState(); +} diff --git a/src/main/java/ru/bclib/mixin/common/MappedRegistryMixin.java b/src/main/java/ru/bclib/mixin/common/MappedRegistryMixin.java new file mode 100644 index 00000000..a0e1056e --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/MappedRegistryMixin.java @@ -0,0 +1,22 @@ +package ru.bclib.mixin.common; + +import net.minecraft.core.MappedRegistry; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import ru.bclib.interfaces.FrozableRegistry; + +@Mixin(MappedRegistry.class) +public class MappedRegistryMixin implements FrozableRegistry { + @Shadow + private boolean frozen; + + @Override + public void setFrozeState(boolean frozen) { + this.frozen = frozen; + } + + @Override + public boolean getFrozeState() { + return this.frozen; + } +} diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index 72906205..b7c12c55 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -30,6 +30,7 @@ "BlockBehaviourMixin", "BlockStateBaseMixin", "ChunkGeneratorMixin", + "MappedRegistryMixin", "WorldGenRegionMixin", "DiggerItemAccessor", "DimensionTypeMixin", From c03849706e88d74ece6cb23c7af6618a055c522e Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 26 May 2022 22:37:55 +0300 Subject: [PATCH 4/4] Small post-init change/fix --- src/main/java/ru/bclib/api/PostInitAPI.java | 12 +++--- .../bclib/world/biomes/BCLBiomeSettings.java | 38 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/main/java/ru/bclib/api/PostInitAPI.java b/src/main/java/ru/bclib/api/PostInitAPI.java index 4e8c4644..9edd34d2 100644 --- a/src/main/java/ru/bclib/api/PostInitAPI.java +++ b/src/main/java/ru/bclib/api/PostInitAPI.java @@ -55,10 +55,6 @@ public class PostInitAPI { * @param isClient {@code boolean}, {@code true} for client, {@code false} for server. */ public static void postInit(boolean isClient) { - if (postInitFunctions == null) { - return; - } - postInitFunctions.forEach(function -> function.accept(isClient)); Registry.BLOCK.forEach(block -> { processBlockCommon(block); if (isClient) { @@ -66,11 +62,15 @@ public class PostInitAPI { } }); - Registry.ITEM.forEach(item -> { processItemCommon(item); }); - postInitFunctions = null; + + if (postInitFunctions != null) { + postInitFunctions.forEach(function -> function.accept(isClient)); + postInitFunctions = null; + } + blockTags = null; itemTags = null; BiomeAPI.loadFabricAPIBiomes(); diff --git a/src/main/java/ru/bclib/world/biomes/BCLBiomeSettings.java b/src/main/java/ru/bclib/world/biomes/BCLBiomeSettings.java index 0b0ae7a8..4fd650ec 100644 --- a/src/main/java/ru/bclib/world/biomes/BCLBiomeSettings.java +++ b/src/main/java/ru/bclib/world/biomes/BCLBiomeSettings.java @@ -4,7 +4,23 @@ import net.minecraft.world.level.biome.Biome; import ru.bclib.config.Configs; public class BCLBiomeSettings { - public static Builder createBCL(){ + float terrainHeight; + float fogDensity; + float genChance; + int edgeSize; + boolean vertical; + BCLBiome edge; + + protected BCLBiomeSettings() { + this.terrainHeight = 0.1F; + this.fogDensity = 1.0F; + this.genChance = 1.0F; + this.edgeSize = 0; + this.vertical = false; + this.edge = null; + } + + public static Builder createBCL() { return new Builder(); } @@ -13,9 +29,10 @@ public class BCLBiomeSettings { super(new BCLBiomeSettings()); } } + public static class CommonBuilder{ private final T storage; - CommonBuilder(T storage){ + CommonBuilder(T storage) { this.storage = storage; } @@ -92,23 +109,6 @@ public class BCLBiomeSettings { } } - protected BCLBiomeSettings(){ - this.terrainHeight = 0.1F; - this.fogDensity = 1.0F; - this.genChance = 1.0F; - this.edgeSize = 0; - this.vertical = false; - this.edge = null; - } - - float terrainHeight; - float fogDensity; - float genChance; - int edgeSize; - boolean vertical; - BCLBiome edge; - - /** * Getter for biome generation chance, used in {@link ru.bclib.world.generator.BiomePicker} and in custom generators. * @return biome generation chance as float.