Cave biome populators
This commit is contained in:
parent
3dcafa522c
commit
945a322b53
44 changed files with 182 additions and 43 deletions
|
@ -2,12 +2,9 @@ package ru.betterend;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback;
|
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.block.SlabBlock;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.Registry;
|
|
||||||
import ru.betterend.api.BetterEndPlugin;
|
import ru.betterend.api.BetterEndPlugin;
|
||||||
import ru.betterend.config.Configs;
|
import ru.betterend.config.Configs;
|
||||||
import ru.betterend.effects.EndEnchantments;
|
import ru.betterend.effects.EndEnchantments;
|
||||||
|
@ -83,13 +80,6 @@ public class BetterEnd implements ModInitializer {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
RegistryEntryAddedCallback.event(Registry.BLOCK).register((i, id, block) -> {
|
|
||||||
if (block instanceof SlabBlock) {
|
|
||||||
// Do Some Stuff
|
|
||||||
System.out.println(id);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasGuideBook() {
|
public static boolean hasGuideBook() {
|
||||||
|
|
|
@ -62,13 +62,10 @@ public class StalactiteBlock extends BlockBaseNotFull implements Waterloggable,
|
||||||
boolean water = world.getFluidState(pos).getFluid() == Fluids.WATER;
|
boolean water = world.getFluidState(pos).getFluid() == Fluids.WATER;
|
||||||
|
|
||||||
if (dir == Direction.DOWN) {
|
if (dir == Direction.DOWN) {
|
||||||
System.out.println("Check up!");
|
|
||||||
if (isThis(world, pos.up()) || sideCoversSmallSquare(world, pos.up(), Direction.DOWN)) {
|
if (isThis(world, pos.up()) || sideCoversSmallSquare(world, pos.up(), Direction.DOWN)) {
|
||||||
System.out.println("Up true!");
|
|
||||||
return getDefaultState().with(IS_FLOOR, false).with(WATERLOGGED, water);
|
return getDefaultState().with(IS_FLOOR, false).with(WATERLOGGED, water);
|
||||||
}
|
}
|
||||||
else if (isThis(world, pos.down()) || sideCoversSmallSquare(world, pos.down(), Direction.UP)) {
|
else if (isThis(world, pos.down()) || sideCoversSmallSquare(world, pos.down(), Direction.UP)) {
|
||||||
System.out.println("Up false!");
|
|
||||||
return getDefaultState().with(IS_FLOOR, true).with(WATERLOGGED, water);
|
return getDefaultState().with(IS_FLOOR, true).with(WATERLOGGED, water);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -76,13 +73,10 @@ public class StalactiteBlock extends BlockBaseNotFull implements Waterloggable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
System.out.println("Check down!");
|
|
||||||
if (isThis(world, pos.down()) || sideCoversSmallSquare(world, pos.down(), Direction.UP)) {
|
if (isThis(world, pos.down()) || sideCoversSmallSquare(world, pos.down(), Direction.UP)) {
|
||||||
System.out.println("Down true!");
|
|
||||||
return getDefaultState().with(IS_FLOOR, true).with(WATERLOGGED, water);
|
return getDefaultState().with(IS_FLOOR, true).with(WATERLOGGED, water);
|
||||||
}
|
}
|
||||||
else if (isThis(world, pos.up()) || sideCoversSmallSquare(world, pos.up(), Direction.DOWN)) {
|
else if (isThis(world, pos.up()) || sideCoversSmallSquare(world, pos.up(), Direction.DOWN)) {
|
||||||
System.out.println("Down false!");
|
|
||||||
return getDefaultState().with(IS_FLOOR, false).with(WATERLOGGED, water);
|
return getDefaultState().with(IS_FLOOR, false).with(WATERLOGGED, water);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -42,7 +42,7 @@ import ru.betterend.interfaces.ISlime;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class EndSlimeEntity extends SlimeEntity {
|
public class EndSlimeEntity extends SlimeEntity {
|
||||||
private static final TrackedData<Byte> VARIANT = DataTracker.registerData(EndSlimeEntity.class, TrackedDataHandlerRegistry.BYTE);
|
private static final TrackedData<Byte> VARIANT = DataTracker.registerData(EndSlimeEntity.class, TrackedDataHandlerRegistry.BYTE);
|
||||||
|
|
|
@ -14,7 +14,7 @@ import ru.betterend.integration.byg.features.BYGFeatures;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.TagHelper;
|
import ru.betterend.util.TagHelper;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BYGIntegration extends ModIntegration {
|
public class BYGIntegration extends ModIntegration {
|
||||||
public BYGIntegration() {
|
public BYGIntegration() {
|
||||||
|
|
|
@ -2,7 +2,7 @@ package ru.betterend.integration.byg.biomes;
|
||||||
|
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BYGBiomes {
|
public class BYGBiomes {
|
||||||
// New Biomes
|
// New Biomes
|
||||||
|
|
|
@ -10,8 +10,8 @@ import net.minecraft.world.biome.SpawnSettings.SpawnEntry;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.integration.byg.features.BYGFeatures;
|
import ru.betterend.integration.byg.features.BYGFeatures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.land.BiomeDefinition;
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
|
|
||||||
public class EterialGrove extends EndBiome {
|
public class EterialGrove extends EndBiome {
|
||||||
public EterialGrove() {
|
public EterialGrove() {
|
||||||
|
|
|
@ -13,8 +13,8 @@ import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.integration.byg.features.BYGFeatures;
|
import ru.betterend.integration.byg.features.BYGFeatures;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.land.BiomeDefinition;
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
|
|
||||||
public class NightshadeRedwoods extends EndBiome {
|
public class NightshadeRedwoods extends EndBiome {
|
||||||
public NightshadeRedwoods() {
|
public NightshadeRedwoods() {
|
||||||
|
|
|
@ -20,8 +20,8 @@ import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.integration.byg.features.BYGFeatures;
|
import ru.betterend.integration.byg.features.BYGFeatures;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.land.BiomeDefinition;
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
|
|
||||||
public class OldBulbisGardens extends EndBiome {
|
public class OldBulbisGardens extends EndBiome {
|
||||||
public OldBulbisGardens() {
|
public OldBulbisGardens() {
|
||||||
|
|
|
@ -25,7 +25,7 @@ import net.minecraft.world.biome.Biome.Category;
|
||||||
import ru.betterend.client.ClientOptions;
|
import ru.betterend.client.ClientOptions;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.util.BackgroundInfo;
|
import ru.betterend.util.BackgroundInfo;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
@Mixin(BackgroundRenderer.class)
|
@Mixin(BackgroundRenderer.class)
|
||||||
public class BackgroundRendererMixin {
|
public class BackgroundRendererMixin {
|
||||||
|
|
|
@ -23,7 +23,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
import ru.betterend.util.BonemealUtil;
|
import ru.betterend.util.BonemealUtil;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
@Mixin(BoneMealItem.class)
|
@Mixin(BoneMealItem.class)
|
||||||
public class BoneMealItemMixin {
|
public class BoneMealItemMixin {
|
||||||
|
|
|
@ -103,8 +103,6 @@ public class PlayerManagerMixin {
|
||||||
var23 = World.END;
|
var23 = World.END;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("World " + this.server.getWorld(World.END));
|
|
||||||
|
|
||||||
RegistryKey<World> registryKey = var23;
|
RegistryKey<World> registryKey = var23;
|
||||||
ServerWorld serverWorld = this.server.getWorld(registryKey);
|
ServerWorld serverWorld = this.server.getWorld(registryKey);
|
||||||
ServerWorld serverWorld3;
|
ServerWorld serverWorld3;
|
||||||
|
|
|
@ -32,6 +32,7 @@ import ru.betterend.config.Configs;
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.interfaces.IBiomeList;
|
import ru.betterend.interfaces.IBiomeList;
|
||||||
import ru.betterend.util.JsonFactory;
|
import ru.betterend.util.JsonFactory;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.air.BiomeIceStarfield;
|
import ru.betterend.world.biome.air.BiomeIceStarfield;
|
||||||
import ru.betterend.world.biome.cave.EmptyAuroraCaveBiome;
|
import ru.betterend.world.biome.cave.EmptyAuroraCaveBiome;
|
||||||
import ru.betterend.world.biome.cave.EmptyEndCaveBiome;
|
import ru.betterend.world.biome.cave.EmptyEndCaveBiome;
|
||||||
|
@ -46,7 +47,6 @@ import ru.betterend.world.biome.land.CrystalMountainsBiome;
|
||||||
import ru.betterend.world.biome.land.DragonGraveyardsBiome;
|
import ru.betterend.world.biome.land.DragonGraveyardsBiome;
|
||||||
import ru.betterend.world.biome.land.DryShrublandBiome;
|
import ru.betterend.world.biome.land.DryShrublandBiome;
|
||||||
import ru.betterend.world.biome.land.DustWastelandsBiome;
|
import ru.betterend.world.biome.land.DustWastelandsBiome;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
import ru.betterend.world.biome.land.FoggyMushroomlandBiome;
|
import ru.betterend.world.biome.land.FoggyMushroomlandBiome;
|
||||||
import ru.betterend.world.biome.land.GlowingGrasslandsBiome;
|
import ru.betterend.world.biome.land.GlowingGrasslandsBiome;
|
||||||
import ru.betterend.world.biome.land.LanternWoodsBiome;
|
import ru.betterend.world.biome.land.LanternWoodsBiome;
|
||||||
|
|
|
@ -11,8 +11,8 @@ import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.gen.GenerationStep;
|
import net.minecraft.world.gen.GenerationStep;
|
||||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.land.BiomeDefinition;
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
import ru.betterend.world.features.BlueVineFeature;
|
import ru.betterend.world.features.BlueVineFeature;
|
||||||
import ru.betterend.world.features.CharniaFeature;
|
import ru.betterend.world.features.CharniaFeature;
|
||||||
import ru.betterend.world.features.CrashedShipFeature;
|
import ru.betterend.world.features.CrashedShipFeature;
|
||||||
|
|
|
@ -25,9 +25,5 @@ public class CreativeTabs {
|
||||||
stacks.add(new ItemStack(i));
|
stacks.add(new ItemStack(i));
|
||||||
}
|
}
|
||||||
}).build();
|
}).build();
|
||||||
if (BetterEnd.isDevEnvironment()) {
|
|
||||||
System.out.println("CREATIVE_TAB_ITEMS: " + TAB_ITEMS.getName());
|
|
||||||
System.out.println("CREATIVE_TAB_BLOCKS: " + TAB_BLOCKS.getName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import net.minecraft.block.Block;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BonemealUtil {
|
public class BonemealUtil {
|
||||||
private static final Map<Identifier, Map<Block, GrassList>> GRASS_BIOMES = Maps.newHashMap();
|
private static final Map<Identifier, Map<Block, GrassList>> GRASS_BIOMES = Maps.newHashMap();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.betterend.world.biome.land;
|
package ru.betterend.world.biome;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -14,6 +14,7 @@ import net.minecraft.world.biome.Biome;
|
||||||
import ru.betterend.config.Configs;
|
import ru.betterend.config.Configs;
|
||||||
import ru.betterend.util.JsonFactory;
|
import ru.betterend.util.JsonFactory;
|
||||||
import ru.betterend.util.StructureHelper;
|
import ru.betterend.util.StructureHelper;
|
||||||
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.features.EndFeature;
|
import ru.betterend.world.features.EndFeature;
|
||||||
import ru.betterend.world.features.ListFeature;
|
import ru.betterend.world.features.ListFeature;
|
||||||
import ru.betterend.world.features.ListFeature.StructureInfo;
|
import ru.betterend.world.features.ListFeature.StructureInfo;
|
|
@ -4,8 +4,8 @@ import net.minecraft.entity.EntityType;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.land.BiomeDefinition;
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
|
|
||||||
public class BiomeIceStarfield extends EndBiome {
|
public class BiomeIceStarfield extends EndBiome {
|
||||||
public BiomeIceStarfield() {
|
public BiomeIceStarfield() {
|
||||||
|
|
|
@ -6,15 +6,27 @@ import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.util.collection.WeightedList;
|
import net.minecraft.util.collection.WeightedList;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.gen.feature.Feature;
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import ru.betterend.registry.EndBiomes;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.land.BiomeDefinition;
|
import ru.betterend.world.biome.land.BiomeDefinition;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.features.EndFeature;
|
||||||
|
import ru.betterend.world.features.terrain.caves.CaveChunkPopulatorFeature;
|
||||||
|
|
||||||
public class EndCaveBiome extends EndBiome {
|
public class EndCaveBiome extends EndBiome {
|
||||||
private WeightedList<Feature<?>> floorFeatures = new WeightedList<Feature<?>>();
|
private WeightedList<Feature<?>> floorFeatures = new WeightedList<Feature<?>>();
|
||||||
private WeightedList<Feature<?>> ceilFeatures = new WeightedList<Feature<?>>();
|
private WeightedList<Feature<?>> ceilFeatures = new WeightedList<Feature<?>>();
|
||||||
|
|
||||||
public EndCaveBiome(BiomeDefinition definition) {
|
public EndCaveBiome(BiomeDefinition definition) {
|
||||||
super(definition.setCaveBiome());
|
super(makeDef(definition));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static BiomeDefinition makeDef(BiomeDefinition definition) {
|
||||||
|
EndFeature feature = EndFeature.makeChunkFeature(
|
||||||
|
definition.getID().getPath() + "_cave_populator",
|
||||||
|
new CaveChunkPopulatorFeature(() -> (EndCaveBiome) EndBiomes.getBiome(definition.getID()))
|
||||||
|
);
|
||||||
|
definition.addFeature(feature).setCaveBiome();
|
||||||
|
return definition;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addFloorFeature(Feature<?> feature, int weight) {
|
public void addFloorFeature(Feature<?> feature, int weight) {
|
||||||
|
|
|
@ -7,6 +7,7 @@ import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class AmberLandBiome extends EndBiome {
|
public class AmberLandBiome extends EndBiome {
|
||||||
public AmberLandBiome() {
|
public AmberLandBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BlossomingSpiresBiome extends EndBiome {
|
public class BlossomingSpiresBiome extends EndBiome {
|
||||||
public BlossomingSpiresBiome() {
|
public BlossomingSpiresBiome() {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class ChorusForestBiome extends EndBiome {
|
public class ChorusForestBiome extends EndBiome {
|
||||||
public ChorusForestBiome() {
|
public ChorusForestBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class CrystalMountainsBiome extends EndBiome {
|
public class CrystalMountainsBiome extends EndBiome {
|
||||||
public CrystalMountainsBiome() {
|
public CrystalMountainsBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class DragonGraveyardsBiome extends EndBiome {
|
public class DragonGraveyardsBiome extends EndBiome {
|
||||||
public DragonGraveyardsBiome() {
|
public DragonGraveyardsBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.minecraft.world.gen.feature.ConfiguredStructureFeatures;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class DryShrublandBiome extends EndBiome {
|
public class DryShrublandBiome extends EndBiome {
|
||||||
public DryShrublandBiome() {
|
public DryShrublandBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.minecraft.particle.ParticleTypes;
|
||||||
import net.minecraft.world.gen.feature.ConfiguredStructureFeatures;
|
import net.minecraft.world.gen.feature.ConfiguredStructureFeatures;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class DustWastelandsBiome extends EndBiome {
|
public class DustWastelandsBiome extends EndBiome {
|
||||||
public DustWastelandsBiome() {
|
public DustWastelandsBiome() {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class FoggyMushroomlandBiome extends EndBiome {
|
public class FoggyMushroomlandBiome extends EndBiome {
|
||||||
public FoggyMushroomlandBiome() {
|
public FoggyMushroomlandBiome() {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class GlowingGrasslandsBiome extends EndBiome {
|
public class GlowingGrasslandsBiome extends EndBiome {
|
||||||
public GlowingGrasslandsBiome() {
|
public GlowingGrasslandsBiome() {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class LanternWoodsBiome extends EndBiome {
|
public class LanternWoodsBiome extends EndBiome {
|
||||||
public LanternWoodsBiome() {
|
public LanternWoodsBiome() {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class MegalakeBiome extends EndBiome {
|
public class MegalakeBiome extends EndBiome {
|
||||||
public MegalakeBiome() {
|
public MegalakeBiome() {
|
||||||
|
|
|
@ -7,6 +7,7 @@ import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class MegalakeGroveBiome extends EndBiome {
|
public class MegalakeGroveBiome extends EndBiome {
|
||||||
public MegalakeGroveBiome() {
|
public MegalakeGroveBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.minecraft.particle.ParticleTypes;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class PaintedMountainsBiome extends EndBiome {
|
public class PaintedMountainsBiome extends EndBiome {
|
||||||
public PaintedMountainsBiome() {
|
public PaintedMountainsBiome() {
|
||||||
|
|
|
@ -7,6 +7,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class ShadowForestBiome extends EndBiome {
|
public class ShadowForestBiome extends EndBiome {
|
||||||
public ShadowForestBiome() {
|
public ShadowForestBiome() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.surface.SurfaceBuilders;
|
import ru.betterend.world.surface.SurfaceBuilders;
|
||||||
|
|
||||||
public class SulphurSpringsBiome extends EndBiome {
|
public class SulphurSpringsBiome extends EndBiome {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class UmbrellaJungleBiome extends EndBiome {
|
public class UmbrellaJungleBiome extends EndBiome {
|
||||||
public UmbrellaJungleBiome() {
|
public UmbrellaJungleBiome() {
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
package ru.betterend.world.features.terrain.caves;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.BlockPos.Mutable;
|
||||||
|
import net.minecraft.world.StructureWorldAccess;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||||
|
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import ru.betterend.registry.EndTags;
|
||||||
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
import ru.betterend.world.biome.cave.EndCaveBiome;
|
||||||
|
import ru.betterend.world.features.DefaultFeature;
|
||||||
|
|
||||||
|
public class CaveChunkPopulatorFeature extends DefaultFeature {
|
||||||
|
private Supplier<EndCaveBiome> supplier;
|
||||||
|
|
||||||
|
public CaveChunkPopulatorFeature(Supplier<EndCaveBiome> biome) {
|
||||||
|
this.supplier = biome;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) {
|
||||||
|
Set<BlockPos> floorPositions = Sets.newHashSet();
|
||||||
|
Set<BlockPos> ceilPositions = Sets.newHashSet();
|
||||||
|
int sx = (pos.getX() >> 4) << 4;
|
||||||
|
int sz = (pos.getZ() >> 4) << 4;
|
||||||
|
Mutable min = new Mutable().set(pos);
|
||||||
|
Mutable max = new Mutable().set(pos);
|
||||||
|
fillSets(sx, sz, world.getChunk(pos), floorPositions, ceilPositions, min, max);
|
||||||
|
EndCaveBiome biome = supplier.get();
|
||||||
|
BlockState surfaceBlock = biome.getBiome().getGenerationSettings().getSurfaceConfig().getTopMaterial();
|
||||||
|
placeFloor(world, biome, floorPositions, random, surfaceBlock);
|
||||||
|
placeCeil(world, biome, ceilPositions, random);
|
||||||
|
BlocksHelper.fixBlocks(world, min, max);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void fillSets(int sx, int sz, Chunk chunk, Set<BlockPos> floorPositions, Set<BlockPos> ceilPositions, Mutable min, Mutable max) {
|
||||||
|
Mutable mut = new Mutable();
|
||||||
|
Mutable mut2 = new Mutable();
|
||||||
|
Mutable mut3 = new Mutable();
|
||||||
|
for (int x = 0; x < 16; x++) {
|
||||||
|
mut.setX(x);
|
||||||
|
mut2.setX(x);
|
||||||
|
for (int z = 0; z < 16; z++) {
|
||||||
|
mut.setZ(z);
|
||||||
|
mut2.setZ(z);
|
||||||
|
mut2.setY(0);
|
||||||
|
for (int y = 1; y < chunk.getHeight(); y++) {
|
||||||
|
mut.setY(y);
|
||||||
|
BlockState top = chunk.getBlockState(mut);
|
||||||
|
BlockState bottom = chunk.getBlockState(mut2);
|
||||||
|
if (top.isAir() && (bottom.isIn(EndTags.GEN_TERRAIN) || bottom.isOf(Blocks.STONE))) {
|
||||||
|
mut3.set(mut2).move(sx, 0, sz);
|
||||||
|
floorPositions.add(mut3.toImmutable());
|
||||||
|
updateMin(mut3, min);
|
||||||
|
updateMax(mut3, max);
|
||||||
|
}
|
||||||
|
else if (bottom.isAir() && (top.isIn(EndTags.GEN_TERRAIN)|| top.isOf(Blocks.STONE))) {
|
||||||
|
mut3.set(mut).move(sx, 0, sz);
|
||||||
|
ceilPositions.add(mut3.toImmutable());
|
||||||
|
updateMin(mut3, min);
|
||||||
|
updateMax(mut3, max);
|
||||||
|
}
|
||||||
|
mut2.setY(y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateMin(BlockPos pos, Mutable min) {
|
||||||
|
if (pos.getX() < min.getX()) {
|
||||||
|
min.setX(pos.getX());
|
||||||
|
}
|
||||||
|
if (pos.getY() < min.getY()) {
|
||||||
|
min.setY(pos.getY());
|
||||||
|
}
|
||||||
|
if (pos.getZ() < min.getZ()) {
|
||||||
|
min.setZ(pos.getZ());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateMax(BlockPos pos, Mutable max) {
|
||||||
|
if (pos.getX() > max.getX()) {
|
||||||
|
max.setX(pos.getX());
|
||||||
|
}
|
||||||
|
if (pos.getY() > max.getY()) {
|
||||||
|
max.setY(pos.getY());
|
||||||
|
}
|
||||||
|
if (pos.getZ() > max.getZ()) {
|
||||||
|
max.setZ(pos.getZ());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void placeFloor(StructureWorldAccess world, EndCaveBiome biome, Set<BlockPos> floorPositions, Random random, BlockState surfaceBlock) {
|
||||||
|
float density = biome.getFloorDensity();
|
||||||
|
floorPositions.forEach((pos) -> {
|
||||||
|
BlocksHelper.setWithoutUpdate(world, pos, surfaceBlock);
|
||||||
|
if (density > 0 && random.nextFloat() <= density) {
|
||||||
|
Feature<?> feature = biome.getFloorFeature(random);
|
||||||
|
if (feature != null) {
|
||||||
|
feature.generate(world, null, random, pos.up(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void placeCeil(StructureWorldAccess world, EndCaveBiome biome, Set<BlockPos> ceilPositions, Random random) {
|
||||||
|
float density = biome.getCeilDensity();
|
||||||
|
ceilPositions.forEach((pos) -> {
|
||||||
|
BlockState ceilBlock = biome.getCeil(pos);
|
||||||
|
if (ceilBlock != null) {
|
||||||
|
BlocksHelper.setWithoutUpdate(world, pos, ceilBlock);
|
||||||
|
}
|
||||||
|
if (density > 0 && random.nextFloat() <= density) {
|
||||||
|
Feature<?> feature = biome.getCeilFeature(random);
|
||||||
|
if (feature != null) {
|
||||||
|
feature.generate(world, null, random, pos.down(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,8 +21,8 @@ import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.biome.cave.EndCaveBiome;
|
import ru.betterend.world.biome.cave.EndCaveBiome;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
|
||||||
import ru.betterend.world.features.DefaultFeature;
|
import ru.betterend.world.features.DefaultFeature;
|
||||||
import ru.betterend.world.generator.GeneratorOptions;
|
import ru.betterend.world.generator.GeneratorOptions;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.FeaturesHelper;
|
import ru.betterend.util.FeaturesHelper;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BetterEndBiomeSource extends BiomeSource {
|
public class BetterEndBiomeSource extends BiomeSource {
|
||||||
public static final Codec<BetterEndBiomeSource> CODEC = RecordCodecBuilder.create((instance) -> {
|
public static final Codec<BetterEndBiomeSource> CODEC = RecordCodecBuilder.create((instance) -> {
|
||||||
|
|
|
@ -2,7 +2,7 @@ package ru.betterend.world.generator;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BiomeChunk
|
public class BiomeChunk
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,7 @@ import net.minecraft.util.math.ChunkPos;
|
||||||
import net.minecraft.world.gen.ChunkRandom;
|
import net.minecraft.world.gen.ChunkRandom;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BiomeMap {
|
public class BiomeMap {
|
||||||
private static final ChunkRandom RANDOM = new ChunkRandom();
|
private static final ChunkRandom RANDOM = new ChunkRandom();
|
||||||
|
|
|
@ -8,7 +8,7 @@ import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BiomePicker {
|
public class BiomePicker {
|
||||||
private final Set<Identifier> immutableIDs = Sets.newHashSet();
|
private final Set<Identifier> immutableIDs = Sets.newHashSet();
|
||||||
|
|
|
@ -2,7 +2,7 @@ package ru.betterend.world.generator;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ru.betterend.world.biome.land.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class WeighTree {
|
public class WeighTree {
|
||||||
private final Node root;
|
private final Node root;
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 234 B |
Binary file not shown.
Before Width: | Height: | Size: 236 B After Width: | Height: | Size: 223 B |
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 240 B |
Loading…
Add table
Add a link
Reference in a new issue