Feature fixes

This commit is contained in:
paulevsGitch 2020-10-19 01:25:06 +03:00
parent 3583164e10
commit eaeabf4577
5 changed files with 49 additions and 66 deletions

View file

@ -51,8 +51,7 @@ public class BetterEnd implements ModInitializer {
SmithingRecipes.register(); SmithingRecipes.register();
StructureRegistry.register(); StructureRegistry.register();
FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class) FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class).forEach(BetterEndPlugin::register);
.forEach(BetterEndPlugin::register);
} }
public static Identifier makeID(String path) { public static Identifier makeID(String path) {

View file

@ -13,7 +13,7 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
import net.minecraft.world.gen.chunk.NoiseChunkGenerator; import net.minecraft.world.gen.chunk.NoiseChunkGenerator;
import ru.betterend.world.generator.BetterEndBiomeSource; import ru.betterend.world.generator.BetterEndBiomeSource;
@Mixin(DimensionType.class) @Mixin(value = DimensionType.class, priority = 1)
public class DimensionTypeMixin public class DimensionTypeMixin
{ {
@Inject(method = "createEndGenerator", at = @At("HEAD"), cancellable = true) @Inject(method = "createEndGenerator", at = @At("HEAD"), cancellable = true)

View file

@ -1,47 +1,28 @@
package ru.betterend.mixin.common; package ru.betterend.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry;
import net.minecraft.world.ChunkRegion;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.GenerationSettings;
import net.minecraft.world.gen.ChunkRandom;
import net.minecraft.world.gen.StructureAccessor;
import net.minecraft.world.gen.chunk.ChunkGenerator;
import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.ConfiguredStructureFeature; import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
import ru.betterend.mixin.common.GenerationSettingsAccessor;
import ru.betterend.registry.FeatureRegistry; import ru.betterend.registry.FeatureRegistry;
import ru.betterend.registry.StructureRegistry; import ru.betterend.registry.StructureRegistry;
@Mixin(Biome.class) public class FeaturesHelper {
public abstract class BiomeMixin {
private static final Set<Biome> INJECTED = Sets.newHashSet(); private static final Set<Biome> INJECTED = Sets.newHashSet();
@Shadow public static void addFeatures(Registry<Biome> biomeRegistry) {
private Biome.Category category; biomeRegistry.forEach((biome) -> {
if (biome.getCategory() == Biome.Category.THEEND && !INJECTED.contains(biome)) {
@Shadow GenerationSettingsAccessor accessor = (GenerationSettingsAccessor) biome.getGenerationSettings();
private GenerationSettings generationSettings;
@Inject(method = "generateFeatureStep", at = @At("HEAD"))
public void generateFeatureStep(StructureAccessor structureAccessor, ChunkGenerator chunkGenerator, ChunkRegion region, long populationSeed, ChunkRandom random, BlockPos pos, CallbackInfo cinfo) {
Biome biome = (Biome) (Object) this;
if (!INJECTED.contains(biome)) {
if (category.equals(Biome.Category.THEEND)) {
GenerationSettingsAccessor accessor = (GenerationSettingsAccessor) generationSettings;
List<Supplier<ConfiguredStructureFeature<?, ?>>> structures = Lists.newArrayList(accessor.getStructures()); List<Supplier<ConfiguredStructureFeature<?, ?>>> structures = Lists.newArrayList(accessor.getStructures());
List<List<Supplier<ConfiguredFeature<?, ?>>>> preFeatures = accessor.getFeatures(); List<List<Supplier<ConfiguredFeature<?, ?>>>> preFeatures = accessor.getFeatures();
List<List<Supplier<ConfiguredFeature<?, ?>>>> features = new ArrayList<List<Supplier<ConfiguredFeature<?, ?>>>>(preFeatures.size()); List<List<Supplier<ConfiguredFeature<?, ?>>>> features = new ArrayList<List<Supplier<ConfiguredFeature<?, ?>>>>(preFeatures.size());
@ -54,8 +35,8 @@ public abstract class BiomeMixin {
accessor.setFeatures(features); accessor.setFeatures(features);
accessor.setStructures(structures); accessor.setStructures(structures);
INJECTED.add(biome);
} }
INJECTED.add(biome); });
}
} }
} }

View file

@ -17,6 +17,8 @@ import net.minecraft.world.biome.source.TheEndBiomeSource;
import net.minecraft.world.gen.ChunkRandom; import net.minecraft.world.gen.ChunkRandom;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.registry.BiomeRegistry; import ru.betterend.registry.BiomeRegistry;
import ru.betterend.registry.BlockTagRegistry;
import ru.betterend.util.FeaturesHelper;
import ru.betterend.world.biome.EndBiome; import ru.betterend.world.biome.EndBiome;
public class BetterEndBiomeSource extends BiomeSource { public class BetterEndBiomeSource extends BiomeSource {
@ -48,6 +50,8 @@ public class BetterEndBiomeSource extends BiomeSource {
this.noise = new SimplexNoiseSampler(chunkRandom); this.noise = new SimplexNoiseSampler(chunkRandom);
BiomeRegistry.mutateRegistry(biomeRegistry); BiomeRegistry.mutateRegistry(biomeRegistry);
BlockTagRegistry.addTerrainTags(biomeRegistry);
FeaturesHelper.addFeatures(biomeRegistry);
} }
private static List<Biome> getBiomes(Registry<Biome> biomeRegistry) { private static List<Biome> getBiomes(Registry<Biome> biomeRegistry) {

View file

@ -24,8 +24,7 @@
"LivingEntityMixin", "LivingEntityMixin",
"BoneMealItemMixin", "BoneMealItemMixin",
"SlimeEntityMixin", "SlimeEntityMixin",
"BrewingAccessor", "BrewingAccessor"
"BiomeMixin"
], ],
"injectors": { "injectors": {
"defaultRequire": 1 "defaultRequire": 1