Fixed compiler errors
This commit is contained in:
parent
6c015a9a53
commit
824e78abf7
10 changed files with 165 additions and 112 deletions
|
@ -2,11 +2,13 @@ package ru.bclib.world.biomes;
|
|||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.Registry;
|
||||
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.levelgen.GenerationStep.Decoration;
|
||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||
|
@ -18,15 +20,14 @@ import ru.bclib.BCLib;
|
|||
import ru.bclib.api.biomes.BiomeAPI;
|
||||
import ru.bclib.util.WeightedList;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class BCLBiome extends BCLBiomeSettings {
|
||||
private final List<ConfiguredStructureFeature> structures = Lists.newArrayList();
|
||||
private final Set<TagKey<Biome>> structureTags = Sets.newHashSet();
|
||||
private final WeightedList<BCLBiome> subbiomes = new WeightedList<>();
|
||||
private final Map<String, Object> customData = Maps.newHashMap();
|
||||
private final ResourceLocation biomeID;
|
||||
|
@ -207,15 +208,17 @@ public class BCLBiome extends BCLBiomeSettings {
|
|||
BCLib.LOGGER.error("Unable to find actual Biome for " + biomeID);
|
||||
}
|
||||
|
||||
if (!this.structures.isEmpty()) {
|
||||
if (!this.structureTags.isEmpty()) {
|
||||
//TODO: 1.18.2 This need to be done by BiomeTags now
|
||||
structures.forEach(s -> BiomeAPI.addBiomeStructure(BiomeAPI.getBiomeKey(actualBiome), s));
|
||||
structureTags.forEach(tagKey -> {System.out.println("Code to add Tags to Biomes should go here. " + tagKey);});
|
||||
}
|
||||
|
||||
if (this.surfaceInit != null) {
|
||||
surfaceInit.accept(actualBiome);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Getter for custom data. Will get custom data object or null if object doesn't exists.
|
||||
|
@ -283,8 +286,8 @@ public class BCLBiome extends BCLBiomeSettings {
|
|||
* Adds structures to this biome. For internal use only.
|
||||
* Used inside {@link ru.bclib.api.biomes.BCLBiomeBuilder}.
|
||||
*/
|
||||
public void attachStructures(List<ConfiguredStructureFeature> structures) {
|
||||
this.structures.addAll(structures);
|
||||
public void attachStructures(List<TagKey<Biome>> structures) {
|
||||
this.structureTags.addAll(structures);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -303,13 +306,13 @@ public class BCLBiome extends BCLBiomeSettings {
|
|||
};
|
||||
}
|
||||
|
||||
private Map<Decoration, List<Supplier<PlacedFeature>>> features = new HashMap<>(0);
|
||||
private Map<Decoration, List<Holder<PlacedFeature>>> features = Maps.newHashMap();
|
||||
|
||||
/**
|
||||
* Sets the biome features.
|
||||
* @param features the feature list.
|
||||
*/
|
||||
public void setFeatures(Map<Decoration, List<Supplier<PlacedFeature>>> features) {
|
||||
public void setFeatures(Map<Decoration, List<Holder<PlacedFeature>>> features) {
|
||||
this.features = features;
|
||||
}
|
||||
|
||||
|
@ -317,7 +320,7 @@ public class BCLBiome extends BCLBiomeSettings {
|
|||
* Returns the built-in set of Features for this biome (as they were set with {@link #setFeatures(Map)})
|
||||
* @return List of all features
|
||||
*/
|
||||
public Map<Decoration, List<Supplier<PlacedFeature>>> getFeatures(){
|
||||
public Map<Decoration, List<Holder<PlacedFeature>>> getFeatures(){
|
||||
return features;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,25 +3,35 @@ package ru.bclib.world.features;
|
|||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.data.BuiltinRegistries;
|
||||
import net.minecraft.data.worldgen.features.FeatureUtils;
|
||||
import net.minecraft.data.worldgen.placement.PlacementUtils;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.level.levelgen.feature.Feature;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacementModifier;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Optional;
|
||||
|
||||
public class BCLFeature {
|
||||
private Holder<PlacedFeature> placedFeature;
|
||||
private Decoration featureStep;
|
||||
private Feature<?> feature;
|
||||
|
||||
private final Holder<PlacedFeature> placedFeature;
|
||||
private final Decoration featureStep;
|
||||
private final Feature<?> feature;
|
||||
|
||||
|
||||
public<FC extends FeatureConfiguration, F extends Feature<FC>> BCLFeature(ResourceLocation id, F feature, Decoration featureStep, FC configuration, PlacementModifier[] modifiers) {
|
||||
this(id, feature, featureStep, buildPlacedFeature(id, feature, configuration, modifiers));
|
||||
}
|
||||
|
||||
public BCLFeature(ResourceLocation id, Feature<?> feature, Decoration featureStep, Holder<PlacedFeature> placedFeature) {
|
||||
this.placedFeature = placedFeature;
|
||||
this.featureStep = featureStep;
|
||||
this.feature = feature;
|
||||
|
||||
|
||||
if (!BuiltinRegistries.PLACED_FEATURE.containsKey(id)) {
|
||||
Registry.register(BuiltinRegistries.PLACED_FEATURE, id, placedFeature.value());
|
||||
}
|
||||
|
@ -29,6 +39,22 @@ public class BCLFeature {
|
|||
Registry.register(Registry.FEATURE, id, feature);
|
||||
}
|
||||
}
|
||||
|
||||
private static <FC extends FeatureConfiguration, F extends Feature<FC>> Holder<PlacedFeature> buildPlacedFeature(ResourceLocation id, F feature, FC configuration, PlacementModifier[] modifiers) {
|
||||
Holder<ConfiguredFeature<?, ?>> configuredFeature;
|
||||
//TODO: 1.18.2 Check if this cast is working
|
||||
if (!BuiltinRegistries.CONFIGURED_FEATURE.containsKey(id)) {
|
||||
configuredFeature = (Holder<ConfiguredFeature<?, ?>>)(Object)FeatureUtils.register(id.toString(), feature, configuration);
|
||||
} else {
|
||||
configuredFeature = BuiltinRegistries.CONFIGURED_FEATURE.getHolder(ResourceKey.create(BuiltinRegistries.CONFIGURED_FEATURE.key(), id)).orElseThrow();
|
||||
}
|
||||
|
||||
if (!BuiltinRegistries.PLACED_FEATURE.containsKey(id)) {
|
||||
return PlacementUtils.register(id.toString(), configuredFeature, modifiers);
|
||||
} else {
|
||||
return BuiltinRegistries.PLACED_FEATURE.getHolder(ResourceKey.create(BuiltinRegistries.PLACED_FEATURE.key(), id)).orElseThrow();
|
||||
}
|
||||
}
|
||||
|
||||
private static <E> boolean containsObj(Registry<E> registry, E obj) {
|
||||
Optional<Entry<ResourceKey<E>, E>> optional = registry
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue