Fixed duplicate feature registration X2

This commit is contained in:
paulevsGitch 2021-12-23 05:10:10 +03:00
parent 544af449ee
commit 717c0d7fb8

View file

@ -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 <E> boolean containsObj(Registry<E> registry, E obj) {
Optional<Entry<ResourceKey<E>, E>> optional = registry
.entrySet()
.stream()
.filter(entry -> entry.getValue() == obj)
.findAny();
return optional.isPresent();
}
/**
* Get raw feature.
* @return {@link Feature}.