From 717c0d7fb85f60d312e72bbbeb9312619ce07441 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 23 Dec 2021 05:10:10 +0300 Subject: [PATCH] Fixed duplicate feature registration X2 --- .../ru/bclib/world/features/BCLFeature.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/bclib/world/features/BCLFeature.java b/src/main/java/ru/bclib/world/features/BCLFeature.java index 68243840..60ca0a49 100644 --- a/src/main/java/ru/bclib/world/features/BCLFeature.java +++ b/src/main/java/ru/bclib/world/features/BCLFeature.java @@ -2,6 +2,7 @@ package ru.bclib.world.features; import net.minecraft.core.Registry; import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.GenerationStep.Decoration; @@ -14,6 +15,9 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacementModifier; import ru.bclib.api.features.BCLCommonFeatures; +import java.util.Map.Entry; +import java.util.Optional; + public class BCLFeature { private PlacedFeature placedFeature; private Decoration featureStep; @@ -21,17 +25,26 @@ public class BCLFeature { public BCLFeature(ResourceLocation id, Feature feature, Decoration featureStep, PlacedFeature placedFeature) { this.placedFeature = placedFeature; - this.feature = feature; this.featureStep = featureStep; + this.feature = feature; if (!BuiltinRegistries.PLACED_FEATURE.containsKey(id)) { Registry.register(BuiltinRegistries.PLACED_FEATURE, id, placedFeature); } - if (!Registry.FEATURE.containsKey(id)) { + if (!Registry.FEATURE.containsKey(id) && !containsObj(Registry.FEATURE, feature)) { Registry.register(Registry.FEATURE, id, feature); } } + private static boolean containsObj(Registry registry, E obj) { + Optional, E>> optional = registry + .entrySet() + .stream() + .filter(entry -> entry.getValue() == obj) + .findAny(); + return optional.isPresent(); + } + /** * Get raw feature. * @return {@link Feature}.