Changed Structure handling (Untested yet)
This commit is contained in:
parent
74533e2e66
commit
40851c38cd
3 changed files with 60 additions and 2 deletions
12
src/main/java/ru/bclib/mixin/client/IStructureFeatures.java
Normal file
12
src/main/java/ru/bclib/mixin/client/IStructureFeatures.java
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
package ru.bclib.mixin.client;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceKey;
|
||||||
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
|
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public interface IStructureFeatures {
|
||||||
|
public void bclib_registerStructure(Consumer<BiConsumer<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>> callback);
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package ru.bclib.mixin.client;
|
||||||
|
|
||||||
|
import net.minecraft.data.worldgen.StructureFeatures;
|
||||||
|
import net.minecraft.resources.ResourceKey;
|
||||||
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
@Mixin(StructureFeatures.class)
|
||||||
|
public abstract class StructureFeaturesMixin implements IStructureFeatures{
|
||||||
|
@Inject(method="registerStructures", at=@At("TAIL"))
|
||||||
|
static void bclib_registerStructures(BiConsumer<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>> biConsumer, CallbackInfo ci){
|
||||||
|
bclib_callbacks.forEach(consumer -> consumer.accept(biConsumer));
|
||||||
|
bclib_callbacks.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Consumer<BiConsumer<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>> > bclib_callbacks = new LinkedList<>();
|
||||||
|
public void bclib_registerStructure(Consumer<BiConsumer<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>> callback){
|
||||||
|
bclib_callbacks.add(callback);
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,8 +2,11 @@ package ru.bclib.world.biomes;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.core.particles.ParticleOptions;
|
import net.minecraft.core.particles.ParticleOptions;
|
||||||
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
|
import net.minecraft.data.worldgen.StructureFeatures;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.Music;
|
import net.minecraft.sounds.Music;
|
||||||
import net.minecraft.sounds.Musics;
|
import net.minecraft.sounds.Musics;
|
||||||
|
@ -31,7 +34,9 @@ import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
import net.minecraft.world.level.levelgen.surfacebuilders.ConfiguredSurfaceBuilder;
|
import net.minecraft.world.level.levelgen.surfacebuilders.ConfiguredSurfaceBuilder;
|
||||||
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder;
|
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder;
|
||||||
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration;
|
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration;
|
||||||
|
import net.minecraft.resources.ResourceKey;
|
||||||
import ru.bclib.config.IdConfig;
|
import ru.bclib.config.IdConfig;
|
||||||
|
import ru.bclib.mixin.client.IStructureFeatures;
|
||||||
import ru.bclib.util.ColorUtil;
|
import ru.bclib.util.ColorUtil;
|
||||||
import ru.bclib.world.features.BCLFeature;
|
import ru.bclib.world.features.BCLFeature;
|
||||||
import ru.bclib.world.structures.BCLStructureFeature;
|
import ru.bclib.world.structures.BCLStructureFeature;
|
||||||
|
@ -44,7 +49,8 @@ public class BCLBiomeDef {
|
||||||
public static final int DEF_FOLIAGE_OVERWORLD = ColorUtil.color(110, 143, 64);
|
public static final int DEF_FOLIAGE_OVERWORLD = ColorUtil.color(110, 143, 64);
|
||||||
public static final int DEF_FOLIAGE_NETHER = ColorUtil.color(117, 10, 10);
|
public static final int DEF_FOLIAGE_NETHER = ColorUtil.color(117, 10, 10);
|
||||||
public static final int DEF_FOLIAGE_END = ColorUtil.color(197, 210, 112);
|
public static final int DEF_FOLIAGE_END = ColorUtil.color(197, 210, 112);
|
||||||
|
|
||||||
|
private final IStructureFeatures structureFeatures = (IStructureFeatures)new StructureFeatures();
|
||||||
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
|
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
|
||||||
private final List<FeatureInfo> features = Lists.newArrayList();
|
private final List<FeatureInfo> features = Lists.newArrayList();
|
||||||
private final List<CarverInfo> carvers = Lists.newArrayList();
|
private final List<CarverInfo> carvers = Lists.newArrayList();
|
||||||
|
@ -340,7 +346,7 @@ public class BCLBiomeDef {
|
||||||
if (particleConfig != null) effects.ambientParticle(particleConfig);
|
if (particleConfig != null) effects.ambientParticle(particleConfig);
|
||||||
effects.backgroundMusic(music != null ? new Music(music, 600, 2400, true) : Musics.END);
|
effects.backgroundMusic(music != null ? new Music(music, 600, 2400, true) : Musics.END);
|
||||||
|
|
||||||
return new Biome.BiomeBuilder().precipitation(precipitation)
|
Biome biome = new Biome.BiomeBuilder().precipitation(precipitation)
|
||||||
.biomeCategory(category)
|
.biomeCategory(category)
|
||||||
//.depth(depth) //TODO: No longer available in 1.18
|
//.depth(depth) //TODO: No longer available in 1.18
|
||||||
//.scale(0.2F)
|
//.scale(0.2F)
|
||||||
|
@ -350,6 +356,17 @@ public class BCLBiomeDef {
|
||||||
.mobSpawnSettings(spawnSettings.build())
|
.mobSpawnSettings(spawnSettings.build())
|
||||||
.generationSettings(generationSettings.build())
|
.generationSettings(generationSettings.build())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
structureFeatures.bclib_registerStructure(biConsumer -> {
|
||||||
|
ResourceKey<Biome> biomeKey = ResourceKey.create(Registry.BIOME_REGISTRY, BuiltinRegistries.BIOME.getKey(biome));
|
||||||
|
System.out.println("Biome:" + biomeKey);
|
||||||
|
structures.forEach((structure) -> {
|
||||||
|
biConsumer.accept(structure, biomeKey);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return biome;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class SpawnInfo {
|
private static final class SpawnInfo {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue