Oresim update
This commit is contained in:
@@ -1,16 +1,36 @@
|
||||
package anticope.rejects.utils;
|
||||
|
||||
import anticope.rejects.mixin.CountPlacementModifierAccessor;
|
||||
import anticope.rejects.mixin.HeightRangePlacementModifierAccessor;
|
||||
import anticope.rejects.mixin.RarityFilterPlacementModifierAccessor;
|
||||
import meteordevelopment.meteorclient.settings.BoolSetting;
|
||||
import meteordevelopment.meteorclient.settings.Setting;
|
||||
import meteordevelopment.meteorclient.utils.render.color.Color;
|
||||
import com.seedfinding.mccore.version.MCVersion;
|
||||
import net.minecraft.util.Identifier;
|
||||
import meteordevelopment.meteorclient.utils.world.Dimension;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.registry.*;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
|
||||
import net.minecraft.registry.entry.RegistryEntryList;
|
||||
import net.minecraft.util.math.intprovider.ConstantIntProvider;
|
||||
import net.minecraft.util.math.intprovider.IntProvider;
|
||||
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
||||
import net.minecraft.world.dimension.DimensionTypes;
|
||||
|
||||
import net.minecraft.world.HeightLimitView;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.dimension.DimensionOptions;
|
||||
import net.minecraft.world.gen.HeightContext;
|
||||
import net.minecraft.world.gen.WorldPresets;
|
||||
import net.minecraft.world.gen.feature.*;
|
||||
import net.minecraft.world.gen.feature.util.PlacedFeatureIndexer;
|
||||
import net.minecraft.world.gen.heightprovider.HeightProvider;
|
||||
import net.minecraft.world.gen.placementmodifier.CountPlacementModifier;
|
||||
import net.minecraft.world.gen.placementmodifier.HeightRangePlacementModifier;
|
||||
import net.minecraft.world.gen.placementmodifier.PlacementModifier;
|
||||
import net.minecraft.world.gen.placementmodifier.RarityFilterPlacementModifier;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class Ore {
|
||||
|
||||
private static final Setting<Boolean> coal = new BoolSetting.Builder().name("Coal").build();
|
||||
@@ -24,210 +44,132 @@ public class Ore {
|
||||
private static final Setting<Boolean> quartz = new BoolSetting.Builder().name("Quartz").build();
|
||||
private static final Setting<Boolean> debris = new BoolSetting.Builder().name("Ancient Debris").build();
|
||||
public static final List<Setting<Boolean>> oreSettings = new ArrayList<>(Arrays.asList(coal, iron, gold, redstone, diamond, lapis, copper, emerald, quartz, debris));
|
||||
public final Type type;
|
||||
public final Identifier dimension;
|
||||
public final Map<String, Integer> index;
|
||||
public final boolean depthAverage;
|
||||
public final Generator generator;
|
||||
public final int size;
|
||||
public final Setting<Boolean> enabled;
|
||||
public final Color color;
|
||||
public int step;
|
||||
public IntProvider count;
|
||||
public int minY;
|
||||
public int maxY;
|
||||
public float discardOnAir;
|
||||
public float chance;
|
||||
|
||||
Ore(Type type, Identifier dimension, Map<String, Integer> index, int step, IntProvider count, float chance, boolean depthAverage, int minY, int maxY, Generator generator, int size, float discardOnAir, Setting<Boolean> enabled, Color color) {
|
||||
this.type = type;
|
||||
this.dimension = dimension;
|
||||
this.index = index;
|
||||
public static Map<RegistryKey<Biome>, List<Ore>> getRegistry(Dimension dimension) {
|
||||
|
||||
RegistryWrapper.WrapperLookup registry = BuiltinRegistries.createWrapperLookup();
|
||||
RegistryWrapper.Impl<PlacedFeature> features = registry.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE);
|
||||
var reg = registry.getWrapperOrThrow(RegistryKeys.WORLD_PRESET).getOrThrow(WorldPresets.DEFAULT).value().createDimensionsRegistryHolder().dimensions();
|
||||
|
||||
var dim = switch (dimension) {
|
||||
case Overworld -> reg.get(DimensionOptions.OVERWORLD);
|
||||
case Nether -> reg.get(DimensionOptions.NETHER);
|
||||
case End -> reg.get(DimensionOptions.END);
|
||||
};
|
||||
|
||||
var biomes = dim.chunkGenerator().getBiomeSource().getBiomes();
|
||||
var biomes1 = biomes.stream().toList();
|
||||
|
||||
List<PlacedFeatureIndexer.IndexedFeatures> indexer = PlacedFeatureIndexer.collectIndexedFeatures(
|
||||
biomes1, biomeEntry -> biomeEntry.value().getGenerationSettings().getFeatures(), true
|
||||
);
|
||||
|
||||
|
||||
Map<PlacedFeature, Ore> featureToOre = new HashMap<>();
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_COAL_LOWER, 6, coal, new Color(47, 44, 54));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_COAL_UPPER, 6, coal, new Color(47, 44, 54));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_IRON_MIDDLE, 6, iron, new Color(236, 173, 119));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_IRON_SMALL, 6, iron, new Color(236, 173, 119));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_IRON_UPPER, 6, iron, new Color(236, 173, 119));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_GOLD, 6, gold, new Color(247, 229, 30));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_GOLD_LOWER, 6, gold, new Color(247, 229, 30));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_GOLD_EXTRA, 6, gold, new Color(247, 229, 30));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_GOLD_NETHER, 7, gold, new Color(247, 229, 30));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_GOLD_DELTAS, 7, gold, new Color(247, 229, 30));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_REDSTONE, 6, redstone, new Color(245, 7, 23));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_REDSTONE_LOWER, 6, redstone, new Color(245, 7, 23));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_DIAMOND, 6, diamond, new Color(33, 244, 255));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_DIAMOND_BURIED, 6, diamond, new Color(33, 244, 255));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_DIAMOND_LARGE, 6, diamond, new Color(33, 244, 255));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_DIAMOND_MEDIUM, 6, diamond, new Color(33, 244, 255));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_LAPIS, 6, lapis, new Color(8, 26, 189));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_LAPIS_BURIED, 6, lapis, new Color(8, 26, 189));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_COPPER, 6, copper, new Color(239, 151, 0));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_COPPER_LARGE, 6, copper, new Color(239, 151, 0));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_EMERALD, 6, emerald, new Color(27, 209, 45));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_QUARTZ_NETHER, 7, quartz, new Color(205, 205, 205));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_QUARTZ_DELTAS, 7, quartz, new Color(205, 205, 205));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_DEBRIS_SMALL, 7, debris, new Color(209, 27, 245));
|
||||
registerOre(featureToOre, indexer, features, OrePlacedFeatures.ORE_ANCIENT_DEBRIS_LARGE, 7, debris, new Color(209, 27, 245));
|
||||
|
||||
|
||||
Map<RegistryKey<Biome>, List<Ore>> biomeOreMap = new HashMap<>();
|
||||
|
||||
biomes1.forEach(biome -> {
|
||||
biomeOreMap.put(biome.getKey().get(), new ArrayList<>());
|
||||
biome.value().getGenerationSettings().getFeatures().stream()
|
||||
.flatMap(RegistryEntryList::stream)
|
||||
.map(RegistryEntry::value)
|
||||
.filter(featureToOre::containsKey)
|
||||
.forEach(feature -> {
|
||||
biomeOreMap.get(biome.getKey().get()).add(featureToOre.get(feature));
|
||||
});
|
||||
});
|
||||
return biomeOreMap;
|
||||
}
|
||||
|
||||
private static void registerOre(
|
||||
Map<PlacedFeature, Ore> map,
|
||||
List<PlacedFeatureIndexer.IndexedFeatures> indexer,
|
||||
RegistryWrapper.Impl<PlacedFeature> oreRegistry,
|
||||
RegistryKey<PlacedFeature> oreKey,
|
||||
int genStep,
|
||||
Setting<Boolean> active,
|
||||
Color color
|
||||
) {
|
||||
var orePlacement = oreRegistry.getOrThrow(oreKey).value();
|
||||
|
||||
int index = indexer.get(genStep).indexMapping().applyAsInt(orePlacement);
|
||||
|
||||
Ore ore = new Ore(orePlacement, genStep, index, active, color);
|
||||
|
||||
map.put(orePlacement, ore);
|
||||
}
|
||||
|
||||
public int step;
|
||||
public int index;
|
||||
public Setting<Boolean> active;
|
||||
public IntProvider count = ConstantIntProvider.create(1);
|
||||
public HeightProvider heightProvider;
|
||||
public HeightContext heightContext;
|
||||
public float rarity = 1;
|
||||
public float discardOnAirChance;
|
||||
public int size;
|
||||
public Color color;
|
||||
public boolean scattered;
|
||||
|
||||
private Ore(PlacedFeature feature, int step, int index, Setting<Boolean> active, Color color) {
|
||||
this.step = step;
|
||||
this.count = count;
|
||||
this.depthAverage = depthAverage;
|
||||
this.minY = minY;
|
||||
this.maxY = maxY;
|
||||
this.generator = generator;
|
||||
this.size = size;
|
||||
this.enabled = enabled;
|
||||
this.index = index;
|
||||
this.active = active;
|
||||
this.color = color;
|
||||
this.discardOnAir = discardOnAir;
|
||||
this.chance = chance;
|
||||
}
|
||||
int bottom = MinecraftClient.getInstance().world.getBottomY();
|
||||
int height = MinecraftClient.getInstance().world.getDimension().logicalHeight();
|
||||
this.heightContext = new HeightContext(null, HeightLimitView.create(bottom, height));
|
||||
|
||||
Ore(Type type, Identifier dimension, int index, int step, IntProvider count, float chance, boolean depthAverage, int minY, int maxY, Generator generator, int size, float discardOnAir, Setting<Boolean> enabled, Color color) {
|
||||
this(type, dimension, indexToMap(index), step, count, chance, depthAverage, minY, maxY, generator, size, discardOnAir, enabled, color);
|
||||
}
|
||||
for (PlacementModifier modifier : feature.placementModifiers()) {
|
||||
if (modifier instanceof CountPlacementModifier) {
|
||||
this.count = ((CountPlacementModifierAccessor) modifier).getCount();
|
||||
|
||||
Ore(Type type, Identifier dimension, int index, int step, IntProvider count, boolean depthAverage, int minY, int maxY,
|
||||
@SuppressWarnings("SameParameterValue") Generator generator, int size, Setting<Boolean> enabled, Color color) {
|
||||
this(type, dimension, indexToMap(index), step, count, 1F, depthAverage, minY, maxY, generator, size, 0F, enabled, color);
|
||||
}
|
||||
} else if (modifier instanceof HeightRangePlacementModifier) {
|
||||
this.heightProvider = ((HeightRangePlacementModifierAccessor) modifier).getHeight();
|
||||
|
||||
Ore(Type type, Identifier dimension, Map<String, Integer> index, int step, IntProvider count, boolean depthAverage, int minY, int maxY,
|
||||
@SuppressWarnings("SameParameterValue") Generator generator, int size, Setting<Boolean> enabled, Color color) {
|
||||
this(type, dimension, index, step, count, 1F, depthAverage, minY, maxY, generator, size, 0F, enabled, color);
|
||||
}
|
||||
|
||||
private static HashMap<String, Integer> indexToMap(int index) {
|
||||
HashMap<String, Integer> map = new HashMap<>();
|
||||
map.put("default", index);
|
||||
return map;
|
||||
}
|
||||
|
||||
private static List<Ore> V1_19() {
|
||||
return V1_18();
|
||||
}
|
||||
|
||||
private static List<Ore> V1_18() {
|
||||
List<Ore> ores = new ArrayList<>();
|
||||
|
||||
HashMap<String, Integer> extraGoldIndex = new HashMap<>();
|
||||
extraGoldIndex.put("default", -1);
|
||||
String[] extraGoldBiomes = new String[]{"badlands", "eroded_badlands", "wooded_badlands"};
|
||||
for (String extraGoldBiome : extraGoldBiomes) {
|
||||
extraGoldIndex.put(extraGoldBiome, 27);
|
||||
}
|
||||
|
||||
HashMap<String, Integer> emeraldIndex = new HashMap<>();
|
||||
emeraldIndex.put("default", -1);
|
||||
String[] emeraldBiomes = new String[]{"windswept_hills", "meadow", "grove", "jagged_peaks", "snowy_slopes", "frozen_peaks", "stony_peaks"};
|
||||
for (String emeraldBiome : emeraldBiomes) {
|
||||
emeraldIndex.put(emeraldBiome, 27);
|
||||
}
|
||||
|
||||
ores.add(new Ore(Type.COAL, DimensionTypes.OVERWORLD_ID, 9, 6, ConstantIntProvider.create(30), false, 136, 320, Generator.DEFAULT, 17, coal, new Color(47, 44, 54)));
|
||||
ores.add(new Ore(Type.COAL, DimensionTypes.OVERWORLD_ID, 10, 6, ConstantIntProvider.create(20), 1F, true, 97, 97, Generator.DEFAULT, 17, 0.5F, coal, new Color(47, 44, 54)));
|
||||
ores.add(new Ore(Type.IRON, DimensionTypes.OVERWORLD_ID, 11, 6, ConstantIntProvider.create(90), true, 233, 153, Generator.DEFAULT, 9, iron, new Color(236, 173, 119)));
|
||||
ores.add(new Ore(Type.IRON, DimensionTypes.OVERWORLD_ID, 12, 6, ConstantIntProvider.create(10), true, 17, 41, Generator.DEFAULT, 9, iron, new Color(236, 173, 119)));
|
||||
ores.add(new Ore(Type.IRON, DimensionTypes.OVERWORLD_ID, 13, 6, ConstantIntProvider.create(10), false, -64, 73, Generator.DEFAULT, 4, iron, new Color(236, 173, 119)));
|
||||
ores.add(new Ore(Type.GOLD_EXTRA, DimensionTypes.OVERWORLD_ID, extraGoldIndex, 6, ConstantIntProvider.create(50), false, 32, 257, Generator.DEFAULT, 9, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.GOLD, DimensionTypes.OVERWORLD_ID, 14, 6, ConstantIntProvider.create(4), 1F, true, -15, 49, Generator.DEFAULT, 9, 0.5F, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.GOLD, DimensionTypes.OVERWORLD_ID, 15, 6, UniformIntProvider.create(0, 1), 1F, false, -64, -47, Generator.DEFAULT, 9, 0.5F, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.REDSTONE, DimensionTypes.OVERWORLD_ID, 16, 6, ConstantIntProvider.create(4), false, -64, 16, Generator.DEFAULT, 8, redstone, new Color(245, 7, 23)));
|
||||
ores.add(new Ore(Type.REDSTONE, DimensionTypes.OVERWORLD_ID, 17, 6, ConstantIntProvider.create(8), true, -63, 33, Generator.DEFAULT, 8, redstone, new Color(245, 7, 23)));
|
||||
ores.add(new Ore(Type.DIAMOND, DimensionTypes.OVERWORLD_ID, 18, 6, ConstantIntProvider.create(7), 1F, true, -63, 81, Generator.DEFAULT, 4, 0.5F, diamond, new Color(33, 244, 255)));
|
||||
ores.add(new Ore(Type.DIAMOND, DimensionTypes.OVERWORLD_ID, 19, 6, ConstantIntProvider.create(1), (1F / 9F), true, -63, 81, Generator.DEFAULT, 12, 0.7F, diamond, new Color(33, 244, 255)));
|
||||
ores.add(new Ore(Type.DIAMOND, DimensionTypes.OVERWORLD_ID, 20, 6, ConstantIntProvider.create(4), 1F, true, -63, 81, Generator.DEFAULT, 8, 1F, diamond, new Color(33, 244, 255)));
|
||||
ores.add(new Ore(Type.LAPIS, DimensionTypes.OVERWORLD_ID, 21, 6, ConstantIntProvider.create(2), true, 1, 33, Generator.DEFAULT, 7, lapis, new Color(8, 26, 189)));
|
||||
ores.add(new Ore(Type.LAPIS, DimensionTypes.OVERWORLD_ID, 22, 6, ConstantIntProvider.create(4), 1F, false, -64, 65, Generator.DEFAULT, 7, 1F, lapis, new Color(8, 26, 189)));
|
||||
ores.add(new Ore(Type.EMERALD, DimensionTypes.OVERWORLD_ID, emeraldIndex, 6, ConstantIntProvider.create(100), true, 233, 249, Generator.DEFAULT, 3, emerald, new Color(27, 209, 45)));
|
||||
//This only generates near dripstone caves. I'll need propper biome detection to get this right
|
||||
//ores.add(new Ore(Type.COPPER, "overworld", 23, 6, ConstantIntProvider.create(16), true, 49, 65, Generator.DEFAULT, 20, copper, new Color(239, 151, 0)));
|
||||
ores.add(new Ore(Type.COPPER, DimensionTypes.OVERWORLD_ID, 24, 6, ConstantIntProvider.create(16), true, 49, 65, Generator.DEFAULT, 10, copper, new Color(239, 151, 0)));
|
||||
ores.add(new Ore(Type.GOLD_NETHER, DimensionTypes.THE_NETHER_ID, Map.of("default", 19, "basalt_deltas", -1), 7, ConstantIntProvider.create(10), false, 10, 118, Generator.DEFAULT, 10, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.QUARTZ, DimensionTypes.THE_NETHER_ID, Map.of("default", 20, "basalt_deltas", -1), 7, ConstantIntProvider.create(16), false, 10, 118, Generator.DEFAULT, 14, quartz, new Color(205, 205, 205)));
|
||||
ores.add(new Ore(Type.GOLD_NETHER, DimensionTypes.THE_NETHER_ID, Map.of("default", -1, "basalt_deltas", 13), 7, ConstantIntProvider.create(20), false, 10, 118, Generator.DEFAULT, 10, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.QUARTZ, DimensionTypes.THE_NETHER_ID, Map.of("default", -1, "basalt_deltas", 14), 7, ConstantIntProvider.create(32), false, 10, 118, Generator.DEFAULT, 14, quartz, new Color(205, 205, 205)));
|
||||
ores.add(new Ore(Type.LDEBRIS, DimensionTypes.THE_NETHER_ID, 21, 7, ConstantIntProvider.create(1), true, 17, 9, Generator.NO_SURFACE, 3, debris, new Color(209, 27, 245)));
|
||||
ores.add(new Ore(Type.SDEBRIS, DimensionTypes.THE_NETHER_ID, 22, 7, ConstantIntProvider.create(1), false, 8, 120, Generator.NO_SURFACE, 2, debris, new Color(209, 27, 245)));
|
||||
return ores;
|
||||
}
|
||||
|
||||
private static List<Ore> baseConfig() {
|
||||
List<Ore> ores = new ArrayList<>();
|
||||
HashMap<String, Integer> emeraldIndexes = new HashMap<>();
|
||||
emeraldIndexes.put("default", -1);
|
||||
String[] emeraldBiomes = new String[]{"mountains", "mountain_edge", "wooded_mountains", "gravelly_mountains", "modified_gravelly_mountains", "paper"};
|
||||
for (String emeraldBiome : emeraldBiomes) {
|
||||
emeraldIndexes.put(emeraldBiome, 17);
|
||||
}
|
||||
HashMap<String, Integer> LDebrisIndexes = new HashMap<>();
|
||||
LDebrisIndexes.put("default", 15);
|
||||
LDebrisIndexes.put("crimson_forest", 12);
|
||||
LDebrisIndexes.put("warped_forest", 13);
|
||||
HashMap<String, Integer> SDebrisIndexes = new HashMap<>();
|
||||
LDebrisIndexes.forEach((biome, index) -> SDebrisIndexes.put(biome, index + 1));
|
||||
HashMap<String, Integer> extraGoldIndexes = new HashMap<>();
|
||||
extraGoldIndexes.put("default", -1);
|
||||
String[] extraGoldBiomes = new String[]{"badlands", "badlands_plateau", "modified_badlands_plateau", "wooded_badlands_plateau", "modified_wooded_badlands_plateau", "eroded_badlands", "paper"};
|
||||
for (String extraGoldBiome : extraGoldBiomes) {
|
||||
extraGoldIndexes.put(extraGoldBiome, 14);
|
||||
}
|
||||
ores.add(new Ore(Type.COAL, DimensionTypes.OVERWORLD_ID, 7, 6, ConstantIntProvider.create(20), false, 0, 128, Generator.DEFAULT, 20, coal, new Color(47, 44, 54)));
|
||||
ores.add(new Ore(Type.IRON,DimensionTypes.OVERWORLD_ID, 8, 6, ConstantIntProvider.create(20), false, 0, 64, Generator.DEFAULT, 9, iron, new Color(236, 173, 119)));
|
||||
ores.add(new Ore(Type.GOLD, DimensionTypes.OVERWORLD_ID, 9, 6, ConstantIntProvider.create(2), false, 0, 32, Generator.DEFAULT, 9, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.REDSTONE, DimensionTypes.OVERWORLD_ID, 10, 6, ConstantIntProvider.create(8), false, 0, 16, Generator.DEFAULT, 8, redstone, new Color(245, 7, 23)));
|
||||
ores.add(new Ore(Type.DIAMOND, DimensionTypes.OVERWORLD_ID, 11, 6, ConstantIntProvider.create(1), false, 0, 16, Generator.DEFAULT, 8, diamond, new Color(33, 244, 255)));
|
||||
ores.add(new Ore(Type.LAPIS, DimensionTypes.OVERWORLD_ID, 12, 6, ConstantIntProvider.create(1), true, 16, 16, Generator.DEFAULT, 7, lapis, new Color(8, 26, 189)));
|
||||
ores.add(new Ore(Type.COPPER, DimensionTypes.OVERWORLD_ID, 13, 6, ConstantIntProvider.create(6), true, 49, 49, Generator.DEFAULT, 10, copper, new Color(239, 151, 0)));
|
||||
ores.add(new Ore(Type.GOLD_EXTRA, DimensionTypes.OVERWORLD_ID, extraGoldIndexes, 6, ConstantIntProvider.create(20), false, 32, 80, Generator.DEFAULT, 9, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.EMERALD, DimensionTypes.OVERWORLD_ID, emeraldIndexes, 6, UniformIntProvider.create(6, 8), false, 4, 32, Generator.EMERALD, 1, emerald, new Color(27, 209, 45)));
|
||||
ores.add(new Ore(Type.GOLD_NETHER, DimensionTypes.THE_NETHER_ID, Map.of("default", 13, "basalt_deltas", -1), 7, ConstantIntProvider.create(10), false, 10, 118, Generator.DEFAULT, 10, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.QUARTZ, DimensionTypes.THE_NETHER_ID, Map.of("default", 14, "basalt_deltas", -1), 7, ConstantIntProvider.create(16), false, 10, 118, Generator.DEFAULT, 14, quartz, new Color(205, 205, 205)));
|
||||
ores.add(new Ore(Type.GOLD_NETHER, DimensionTypes.THE_NETHER_ID, Map.of("default", -1, "basalt_deltas", 13), 7, ConstantIntProvider.create(20), false, 10, 118, Generator.DEFAULT, 10, gold, new Color(247, 229, 30)));
|
||||
ores.add(new Ore(Type.QUARTZ, DimensionTypes.THE_NETHER_ID, Map.of("default", -1, "basalt_deltas", 14), 7, ConstantIntProvider.create(32), false, 10, 118, Generator.DEFAULT, 14, quartz, new Color(205, 205, 205)));
|
||||
ores.add(new Ore(Type.LDEBRIS, DimensionTypes.THE_NETHER_ID, LDebrisIndexes, 7, ConstantIntProvider.create(1), true, 17, 9, Generator.NO_SURFACE, 3, debris, new Color(209, 27, 245)));
|
||||
ores.add(new Ore(Type.SDEBRIS, DimensionTypes.THE_NETHER_ID, SDebrisIndexes, 7, ConstantIntProvider.create(1), false, 8, 120, Generator.NO_SURFACE, 2, debris, new Color(209, 27, 245)));
|
||||
return ores;
|
||||
}
|
||||
|
||||
private static List<Ore> V1_17_1() {
|
||||
return baseConfig();
|
||||
}
|
||||
|
||||
private static List<Ore> V1_17() {
|
||||
List<Ore> ores = baseConfig();
|
||||
for (Ore ore : ores) {
|
||||
if (ore.type.equals(Type.DIAMOND)) {
|
||||
ore.maxY = 17;
|
||||
}
|
||||
if (ore.type.equals(Type.EMERALD)) {
|
||||
ore.count = UniformIntProvider.create(6, 24);
|
||||
} else if (modifier instanceof RarityFilterPlacementModifier) {
|
||||
this.rarity = ((RarityFilterPlacementModifierAccessor) modifier).getChance();
|
||||
}
|
||||
}
|
||||
return ores;
|
||||
}
|
||||
|
||||
private static List<Ore> V1_16() {
|
||||
List<Ore> ores = baseConfig();
|
||||
ores.removeIf(ore -> ore.type.equals(Type.COPPER));
|
||||
for (Ore ore : ores) {
|
||||
if (ore.type == Type.EMERALD || ore.type == Type.GOLD_EXTRA) {
|
||||
ore.index.keySet().forEach(key -> ore.index.put(key, ore.index.get(key) - 3));
|
||||
} else if (ore.dimension == DimensionTypes.OVERWORLD_ID) {
|
||||
ore.index.keySet().forEach(key -> ore.index.put(key, ore.index.get(key) - 2));
|
||||
} else if (ore.type == Type.LDEBRIS) {
|
||||
ore.minY = 16;
|
||||
ore.maxY = 8;
|
||||
}
|
||||
}
|
||||
return ores;
|
||||
}
|
||||
FeatureConfig featureConfig = feature.feature().value().config();
|
||||
|
||||
private static List<Ore> V1_15() {
|
||||
List<Ore> ores = V1_16();
|
||||
ores.removeIf(ore -> ore.type == Type.SDEBRIS || ore.type == Type.LDEBRIS || ore.type == Type.GOLD_NETHER);
|
||||
for (Ore ore : ores) {
|
||||
ore.step -= 2;
|
||||
}
|
||||
return ores;
|
||||
}
|
||||
|
||||
public static List<Ore> getConfig(MCVersion version) {
|
||||
if (version.isNewerOrEqualTo(MCVersion.v1_19)) {
|
||||
return V1_19();
|
||||
} else if (version.isNewerOrEqualTo(MCVersion.v1_18)) {
|
||||
return V1_18();
|
||||
} else if (version.isNewerOrEqualTo(MCVersion.v1_17_1)) {
|
||||
return V1_17_1();
|
||||
} else if (version.isNewerOrEqualTo(MCVersion.v1_17)) {
|
||||
return V1_17();
|
||||
} else if (version.isNewerOrEqualTo(MCVersion.v1_16)) {
|
||||
return V1_16();
|
||||
} else if (version.isNewerOrEqualTo(MCVersion.v1_14)) {
|
||||
return V1_15();
|
||||
if (featureConfig instanceof OreFeatureConfig oreFeatureConfig) {
|
||||
this.discardOnAirChance = oreFeatureConfig.discardOnAirChance;
|
||||
this.size = oreFeatureConfig.size;
|
||||
} else {
|
||||
return null;
|
||||
throw new IllegalStateException("config for " + feature + "is not OreFeatureConfig.class");
|
||||
}
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
DIAMOND, REDSTONE, GOLD, IRON, COAL, EMERALD, SDEBRIS, LDEBRIS, LAPIS, COPPER, QUARTZ, GOLD_NETHER, GOLD_EXTRA
|
||||
}
|
||||
|
||||
public enum Generator {
|
||||
DEFAULT, EMERALD, NO_SURFACE
|
||||
if (feature.feature().value().feature() instanceof ScatteredOreFeature) {
|
||||
this.scattered = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user