From 6c60f422c82e5cd86790f6f0a7e88a45f731f546 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 11 Jul 2022 00:09:51 +0200 Subject: [PATCH] [Change] Restored BYG Integration Biomes --- .../integration/byg/BYGIntegration.java | 5 +- .../integration/byg/biomes/BYGBiomes.java | 3 + .../byg/biomes/NightshadeRedwoods.java | 33 ++++++++-- .../byg/biomes/OldBulbisGardens.java | 66 ++++++++++++++----- .../integration/byg/features/BYGFeatures.java | 16 ++++- 5 files changed, 98 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/betterx/betterend/integration/byg/BYGIntegration.java b/src/main/java/org/betterx/betterend/integration/byg/BYGIntegration.java index 18f74b8a..859da05b 100644 --- a/src/main/java/org/betterx/betterend/integration/byg/BYGIntegration.java +++ b/src/main/java/org/betterx/betterend/integration/byg/BYGIntegration.java @@ -3,6 +3,7 @@ package org.betterx.betterend.integration.byg; import org.betterx.bclib.integration.ModIntegration; import org.betterx.betterend.integration.EndBiomeIntegration; import org.betterx.betterend.integration.Integrations; +import org.betterx.betterend.integration.byg.biomes.BYGBiomes; import org.betterx.betterend.integration.byg.features.BYGFeatures; import org.betterx.worlds.together.tag.v3.CommonBlockTags; import org.betterx.worlds.together.tag.v3.TagManager; @@ -22,11 +23,11 @@ public class BYGIntegration extends ModIntegration implements EndBiomeIntegratio } BYGBlocks.register(); BYGFeatures.register(); - //BYGBiomes.register(); + BYGBiomes.register(); } @Override public void addBiomes() { - //BYGBiomes.addBiomes(); + BYGBiomes.addBiomes(); } } diff --git a/src/main/java/org/betterx/betterend/integration/byg/biomes/BYGBiomes.java b/src/main/java/org/betterx/betterend/integration/byg/biomes/BYGBiomes.java index 25a6922d..8c661bdd 100644 --- a/src/main/java/org/betterx/betterend/integration/byg/biomes/BYGBiomes.java +++ b/src/main/java/org/betterx/betterend/integration/byg/biomes/BYGBiomes.java @@ -5,7 +5,10 @@ import org.betterx.betterend.integration.Integrations; import org.betterx.betterend.registry.EndBiomes; import org.betterx.betterend.world.biome.EndBiome; +import net.minecraft.world.level.levelgen.SurfaceRules; + public class BYGBiomes { + public static final SurfaceRules.ConditionSource BYG_WATER_CHECK = SurfaceRules.waterBlockCheck(-1, 0); // New Biomes public static final EndBiome OLD_BULBIS_GARDENS = EndBiomes.registerSubBiomeIntegration(new OldBulbisGardens()); public static final EndBiome NIGHTSHADE_REDWOODS = EndBiomes.registerSubBiomeIntegration(new NightshadeRedwoods()); diff --git a/src/main/java/org/betterx/betterend/integration/byg/biomes/NightshadeRedwoods.java b/src/main/java/org/betterx/betterend/integration/byg/biomes/NightshadeRedwoods.java index 9b9abc55..b645a43d 100644 --- a/src/main/java/org/betterx/betterend/integration/byg/biomes/NightshadeRedwoods.java +++ b/src/main/java/org/betterx/betterend/integration/byg/biomes/NightshadeRedwoods.java @@ -2,6 +2,8 @@ package org.betterx.betterend.integration.byg.biomes; import org.betterx.bclib.BCLib; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder; +import org.betterx.bclib.api.v2.levelgen.surface.SurfaceRuleBuilder; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.betterend.integration.Integrations; import org.betterx.betterend.integration.byg.features.BYGFeatures; import org.betterx.betterend.registry.EndFeatures; @@ -16,7 +18,9 @@ import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.GenerationStep.Decoration; +import net.minecraft.world.level.levelgen.SurfaceRules; import java.util.List; @@ -38,10 +42,6 @@ public class NightshadeRedwoods extends EndBiome.Config { ParticleTypes.REVERSE_PORTAL, 0.002F ) - //TODO: 1.18 surface rules -// .setSurface(biome.getGenerationSettings() -// .getSurfaceBuilder() -// .get()) .grassColor(48, 13, 89) .plantsColor(200, 125, 9) .feature(EndFeatures.END_LAKE_RARE) @@ -84,4 +84,29 @@ public class NightshadeRedwoods extends EndBiome.Config { }); } } + + @Override + protected SurfaceMaterialProvider surfaceMaterial() { + return new EndBiome.DefaultSurfaceMaterialProvider() { + @Override + public BlockState getTopMaterial() { + return Integrations.BYG.getBlock("nightshade_phylium").defaultBlockState(); + } + + @Override + public SurfaceRuleBuilder surface() { + return SurfaceRuleBuilder + .start() + .rule(4, SurfaceRules.sequence(SurfaceRules.ifTrue( + BYGBiomes.BYG_WATER_CHECK, + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.state(getTopMaterial()) + ) + ) + ) + ); + } + }; + } } diff --git a/src/main/java/org/betterx/betterend/integration/byg/biomes/OldBulbisGardens.java b/src/main/java/org/betterx/betterend/integration/byg/biomes/OldBulbisGardens.java index 5ea4ceb5..aaa8ae76 100644 --- a/src/main/java/org/betterx/betterend/integration/byg/biomes/OldBulbisGardens.java +++ b/src/main/java/org/betterx/betterend/integration/byg/biomes/OldBulbisGardens.java @@ -2,6 +2,9 @@ package org.betterx.betterend.integration.byg.biomes; import org.betterx.bclib.BCLib; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder; +import org.betterx.bclib.api.v2.levelgen.surface.SurfaceRuleBuilder; +import org.betterx.bclib.api.v2.levelgen.surface.rules.RoughNoiseCondition; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.betterend.integration.Integrations; import org.betterx.betterend.integration.byg.features.BYGFeatures; import org.betterx.betterend.registry.EndFeatures; @@ -17,12 +20,13 @@ import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; -import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.GenerationStep.Decoration; +import net.minecraft.world.level.levelgen.Noises; +import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import java.util.List; -import java.util.function.Supplier; public class OldBulbisGardens extends EndBiome.Config { @@ -35,12 +39,6 @@ public class OldBulbisGardens extends EndBiome.Config { Holder biome = Integrations.BYG.getBiome("bulbis_gardens"); BiomeSpecialEffects effects = biome.value().getSpecialEffects(); - Block ivis = Integrations.BYG.getBlock("ivis_phylium"); -// Block origin = biome.value() -// .getGenerationSettings() -// .getSurfaceBuilderConfig() -// .getTopMaterial() -// .getBlock(); builder.fogColor(215, 132, 207) .fogDensity(1.8F) .waterAndFogColor(40, 0, 56) @@ -49,8 +47,6 @@ public class OldBulbisGardens extends EndBiome.Config { ParticleTypes.REVERSE_PORTAL, 0.002F ) - //TODO: 1.18 surface rules - //.surface(ivis, origin) .feature(EndFeatures.END_LAKE_RARE) .feature(BYGFeatures.OLD_BULBIS_TREE); @@ -85,12 +81,11 @@ public class OldBulbisGardens extends EndBiome.Config { List> features = biome.value().getGenerationSettings() .features(); HolderSet vegetal = features.get(Decoration.VEGETAL_DECORATION.ordinal()); - if (vegetal.size() > 2) { - Supplier getter; - //TODO: 1.18.2 BRING BACK FEATURE COPY CODE - for (var placed : vegetal) { - System.out.print(placed); - } +// if (vegetal.size() > 2) { +// Supplier getter; + for (var feature : vegetal) { + builder.feature(Decoration.VEGETAL_DECORATION, feature); + } // // Trees (first two features) // // I couldn't process them with conditions, so that's why they are hardcoded (paulevs) // for (int i = 0; i < 2; i++) { @@ -110,7 +105,7 @@ public class OldBulbisGardens extends EndBiome.Config { // Holder feature = getter.get(); // builder.feature(Decoration.VEGETAL_DECORATION, feature); // } - } +// } builder.feature(EndFeatures.PURPLE_POLYPORE) .feature(BYGFeatures.IVIS_MOSS_WOOD) @@ -118,4 +113,41 @@ public class OldBulbisGardens extends EndBiome.Config { .feature(BYGFeatures.IVIS_VINE) .feature(BYGFeatures.IVIS_SPROUT); } + + @Override + protected SurfaceMaterialProvider surfaceMaterial() { + return new EndBiome.DefaultSurfaceMaterialProvider() { + @Override + public BlockState getTopMaterial() { + return Integrations.BYG.getBlock("ivis_phylium").defaultBlockState(); + } + + @Override + public BlockState getAltTopMaterial() { + return Integrations.BYG.getBlock("bulbis_phycelium").defaultBlockState(); + } + + @Override + public SurfaceRuleBuilder surface() { + return SurfaceRuleBuilder + .start() + .rule(4, SurfaceRules.sequence(SurfaceRules.ifTrue( + BYGBiomes.BYG_WATER_CHECK, + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + new RoughNoiseCondition(Noises.NETHERRACK, 0.19), + SurfaceRules.state(getTopMaterial()) + ), + SurfaceRules.state(getAltTopMaterial()) + ) + ) + ) + ) + ); + } + }; + } + } diff --git a/src/main/java/org/betterx/betterend/integration/byg/features/BYGFeatures.java b/src/main/java/org/betterx/betterend/integration/byg/features/BYGFeatures.java index e2f230bd..e887a47b 100644 --- a/src/main/java/org/betterx/betterend/integration/byg/features/BYGFeatures.java +++ b/src/main/java/org/betterx/betterend/integration/byg/features/BYGFeatures.java @@ -56,14 +56,26 @@ public class BYGFeatures { 8 ); + public static final NightshadeRedwoodTreeFeature NIGHTSHADE_REDWOOD_TREE_FEATURE = + EndFeatures.inlineBuild( + "nightshade_redwood_tree", + new NightshadeRedwoodTreeFeature() + ); + public static final BCLFeature NIGHTSHADE_REDWOOD_TREE = redisterVegetation( "nightshade_redwood_tree", - new NightshadeRedwoodTreeFeature(), + NIGHTSHADE_REDWOOD_TREE_FEATURE, 1 ); + public static final BigEtherTreeFeature BIG_ETHER_TREE_FEATURE = + EndFeatures.inlineBuild( + "big_ether_tree", + new BigEtherTreeFeature() + ); + public static final BCLFeature BIG_ETHER_TREE = redisterVegetation( "big_ether_tree", - new BigEtherTreeFeature(), + BIG_ETHER_TREE_FEATURE, 1 );