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();
StructureRegistry.register();
FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class)
.forEach(BetterEndPlugin::register);
FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class).forEach(BetterEndPlugin::register);
}
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 ru.betterend.world.generator.BetterEndBiomeSource;
@Mixin(DimensionType.class)
@Mixin(value = DimensionType.class, priority = 1)
public class DimensionTypeMixin
{
@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.List;
import java.util.Set;
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.Sets;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ChunkRegion;
import net.minecraft.util.registry.Registry;
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.ConfiguredStructureFeature;
import ru.betterend.mixin.common.GenerationSettingsAccessor;
import ru.betterend.registry.FeatureRegistry;
import ru.betterend.registry.StructureRegistry;
@Mixin(Biome.class)
public abstract class BiomeMixin {
public class FeaturesHelper {
private static final Set<Biome> INJECTED = Sets.newHashSet();
@Shadow
private Biome.Category category;
@Shadow
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;
public static void addFeatures(Registry<Biome> biomeRegistry) {
biomeRegistry.forEach((biome) -> {
if (biome.getCategory() == Biome.Category.THEEND && !INJECTED.contains(biome)) {
GenerationSettingsAccessor accessor = (GenerationSettingsAccessor) biome.getGenerationSettings();
List<Supplier<ConfiguredStructureFeature<?, ?>>> structures = Lists.newArrayList(accessor.getStructures());
List<List<Supplier<ConfiguredFeature<?, ?>>>> preFeatures = accessor.getFeatures();
List<List<Supplier<ConfiguredFeature<?, ?>>>> features = new ArrayList<List<Supplier<ConfiguredFeature<?, ?>>>>(preFeatures.size());
@ -54,8 +35,8 @@ public abstract class BiomeMixin {
accessor.setFeatures(features);
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 ru.betterend.BetterEnd;
import ru.betterend.registry.BiomeRegistry;
import ru.betterend.registry.BlockTagRegistry;
import ru.betterend.util.FeaturesHelper;
import ru.betterend.world.biome.EndBiome;
public class BetterEndBiomeSource extends BiomeSource {
@ -48,6 +50,8 @@ public class BetterEndBiomeSource extends BiomeSource {
this.noise = new SimplexNoiseSampler(chunkRandom);
BiomeRegistry.mutateRegistry(biomeRegistry);
BlockTagRegistry.addTerrainTags(biomeRegistry);
FeaturesHelper.addFeatures(biomeRegistry);
}
private static List<Biome> getBiomes(Registry<Biome> biomeRegistry) {

View file

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