From f259496ba02144b17c1dcbb61e219568f5c68c26 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 13 Jun 2023 17:01:36 +0200 Subject: [PATCH] Made plant creation consistent with BehaviourBuilders --- .../java/org/betterx/betterend/BetterEnd.java | 2 +- .../betterend/blocks/BlueVineSeedBlock.java | 13 ++-- .../betterend/blocks/BoluxMushroomBlock.java | 17 ++--- .../betterend/blocks/BubbleCoralBlock.java | 10 ++- .../betterend/blocks/BulbVineSeedBlock.java | 14 ++-- .../blocks/CavePumpkinVineBlock.java | 10 +-- .../betterend/blocks/CharniaBlock.java | 15 +++- .../betterend/blocks/ChorusGrassBlock.java | 15 ++-- .../blocks/CrystalMossCoverBlock.java | 4 +- .../blocks/DragonTreeSaplingBlock.java | 14 +--- .../betterend/blocks/EndLilyBlock.java | 11 ++- .../betterend/blocks/EndLilySeedBlock.java | 3 +- .../betterend/blocks/EndLotusFlowerBlock.java | 4 +- .../betterend/blocks/EndLotusLeafBlock.java | 2 +- .../betterend/blocks/EndLotusSeedBlock.java | 3 +- .../betterend/blocks/FilaluxWingsBlock.java | 3 +- .../betterend/blocks/FlamaeaBlock.java | 17 ++--- .../betterend/blocks/FlammalixBlock.java | 12 +--- .../betterend/blocks/GlowingMossBlock.java | 18 ++--- .../blocks/GlowingPillarSeedBlock.java | 14 ++-- .../blocks/HelixTreeSaplingBlock.java | 13 +--- .../betterend/blocks/HydraluxBlock.java | 10 +-- .../betterend/blocks/HydraluxPetalBlock.java | 2 +- .../blocks/HydraluxSaplingBlock.java | 3 +- .../blocks/LacugroveSaplingBlock.java | 19 +---- .../betterend/blocks/LanceleafBlock.java | 11 +-- .../betterend/blocks/LanceleafSeedBlock.java | 12 ++-- .../betterend/blocks/LargeAmaranitaBlock.java | 13 ++-- .../blocks/LucerniaSaplingBlock.java | 18 +---- .../betterend/blocks/LumecornSeedBlock.java | 13 ++-- .../blocks/MossyGlowshroomSaplingBlock.java | 19 +---- .../betterend/blocks/MurkweedBlock.java | 17 +++-- .../betterend/blocks/NeedlegrassBlock.java | 19 +++-- .../blocks/NeonCactusPlantBlock.java | 1 + .../betterend/blocks/PondAnemoneBlock.java | 14 ++-- .../blocks/PythadendronSaplingBlock.java | 18 +---- .../betterend/blocks/SmallAmaranitaBlock.java | 17 +++-- .../blocks/SmallJellyshroomBlock.java | 6 +- .../betterend/blocks/TenaneaSaplingBlock.java | 18 +---- .../betterend/blocks/TerrainPlantBlock.java | 27 +++---- .../blocks/TwistedUmbrellaMossBlock.java | 13 ++-- .../blocks/TwistedUmbrellaMossTallBlock.java | 7 +- .../betterend/blocks/UmbrellaMossBlock.java | 13 ++-- .../blocks/UmbrellaMossTallBlock.java | 7 +- .../blocks/UmbrellaTreeSaplingBlock.java | 18 +---- .../betterend/blocks/basis/EndPlantBlock.java | 17 +---- .../blocks/basis/EndPlantWithAgeBlock.java | 8 +-- .../blocks/basis/EndUnderwaterPlantBlock.java | 4 -- .../basis/EndUnderwaterWallPlantBlock.java | 14 ++-- .../blocks/basis/EndWallPlantBlock.java | 17 +++-- .../betterend/blocks/basis/FurBlock.java | 35 +++++---- .../blocks/basis/PottableCropBlock.java | 29 ++++---- .../blocks/basis/PottableFeatureSapling.java | 9 ++- .../blocks/basis/PottableLeavesBlock.java | 18 ++++- .../betterend/integration/byg/BYGBlocks.java | 8 ++- .../betterx/betterend/registry/EndBlocks.java | 71 +++++++++++++------ 56 files changed, 363 insertions(+), 396 deletions(-) diff --git a/src/main/java/org/betterx/betterend/BetterEnd.java b/src/main/java/org/betterx/betterend/BetterEnd.java index 5d5aad6c..0abbc88f 100644 --- a/src/main/java/org/betterx/betterend/BetterEnd.java +++ b/src/main/java/org/betterx/betterend/BetterEnd.java @@ -45,7 +45,7 @@ public class BetterEnd implements ModInitializer { EndBiomes.register(); EndTags.register(); EndBlocks.ensureStaticallyLoaded(); - EndItems.ensureStaticallyLoaded(); + EndItems.register(); EndTemplates.ensureStaticallyLoaded(); EndEnchantments.register(); EndPotions.register(); diff --git a/src/main/java/org/betterx/betterend/blocks/BlueVineSeedBlock.java b/src/main/java/org/betterx/betterend/blocks/BlueVineSeedBlock.java index 7962f7a9..486393c8 100644 --- a/src/main/java/org/betterx/betterend/blocks/BlueVineSeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/BlueVineSeedBlock.java @@ -1,22 +1,24 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourSeed; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.MHelper; import org.betterx.betterend.blocks.basis.EndPlantWithAgeBlock; import org.betterx.betterend.blocks.basis.FurBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnMossOrMycelium; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class BlueVineSeedBlock extends EndPlantWithAgeBlock { +public class BlueVineSeedBlock extends EndPlantWithAgeBlock implements SurvivesOnMossOrMycelium, BehaviourSeed { public BlueVineSeedBlock() { - super(BehaviourBuilders.createPlant()); + super(BehaviourBuilders.createSeed(MapColor.COLOR_BLUE).ignitedByLava()); } @Override @@ -73,9 +75,4 @@ public class BlueVineSeedBlock extends EndPlantWithAgeBlock { ); } } - - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.END_MOSS) || state.is(EndBlocks.END_MYCELIUM); - } } diff --git a/src/main/java/org/betterx/betterend/blocks/BoluxMushroomBlock.java b/src/main/java/org/betterx/betterend/blocks/BoluxMushroomBlock.java index cc3a39c5..093ec84d 100644 --- a/src/main/java/org/betterx/betterend/blocks/BoluxMushroomBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/BoluxMushroomBlock.java @@ -1,8 +1,9 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnRutiscus; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; @@ -11,8 +12,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -21,17 +22,17 @@ import com.google.common.collect.Lists; import java.util.List; -public class BoluxMushroomBlock extends EndPlantBlock { +public class BoluxMushroomBlock extends EndPlantBlock implements SurvivesOnRutiscus, BehaviourPlant { private static final VoxelShape SHAPE = Block.box(1, 0, 1, 15, 9, 15); public BoluxMushroomBlock() { - super(BehaviourBuilders.createPlant().lightLevel((bs)->10)); + super(BehaviourBuilders + .createPlant(MapColor.COLOR_ORANGE) + .ignitedByLava() + .lightLevel((bs) -> 10) + ); } - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.RUTISCUS); - } @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { diff --git a/src/main/java/org/betterx/betterend/blocks/BubbleCoralBlock.java b/src/main/java/org/betterx/betterend/blocks/BubbleCoralBlock.java index d5c1b1f7..0361a77d 100644 --- a/src/main/java/org/betterx/betterend/blocks/BubbleCoralBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/BubbleCoralBlock.java @@ -26,12 +26,10 @@ public class BubbleCoralBlock extends EndUnderwaterPlantBlock implements Behavio private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 14, 16); public BubbleCoralBlock() { - super(baseUnderwaterPlantSettings( - BehaviourBuilders.createWaterPlant(), - 0 - ) - .sound(SoundType.CORAL_BLOCK) - .offsetType(BlockBehaviour.OffsetType.NONE) + super(BehaviourBuilders + .createWaterPlant() + .sound(SoundType.CORAL_BLOCK) + .offsetType(BlockBehaviour.OffsetType.NONE) ); } diff --git a/src/main/java/org/betterx/betterend/blocks/BulbVineSeedBlock.java b/src/main/java/org/betterx/betterend/blocks/BulbVineSeedBlock.java index 3278d930..bcfd6e92 100644 --- a/src/main/java/org/betterx/betterend/blocks/BulbVineSeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/BulbVineSeedBlock.java @@ -1,25 +1,29 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourSeed; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.blocks.BlockProperties.TripleShape; import org.betterx.bclib.util.BlocksHelper; import org.betterx.betterend.blocks.basis.EndPlantWithAgeBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndStoneOrTrees; import org.betterx.betterend.registry.EndBlocks; -import org.betterx.worlds.together.tag.v3.CommonBlockTags; import net.minecraft.core.BlockPos; -import net.minecraft.tags.BlockTags; import net.minecraft.util.RandomSource; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class BulbVineSeedBlock extends EndPlantWithAgeBlock { +public class BulbVineSeedBlock extends EndPlantWithAgeBlock implements BehaviourSeed, SurvivesOnEndStoneOrTrees { + public BulbVineSeedBlock() { + super(BehaviourBuilders.createSeed(MapColor.COLOR_PURPLE)); + } @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - BlockState up = world.getBlockState(pos.above()); - return up.is(CommonBlockTags.GEN_END_STONES) || up.is(BlockTags.LOGS) || up.is(BlockTags.LEAVES); + return canSurviveOnBottom(world, pos); } @Override diff --git a/src/main/java/org/betterx/betterend/blocks/CavePumpkinVineBlock.java b/src/main/java/org/betterx/betterend/blocks/CavePumpkinVineBlock.java index f6fbc7f1..e17ede7b 100644 --- a/src/main/java/org/betterx/betterend/blocks/CavePumpkinVineBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/CavePumpkinVineBlock.java @@ -1,8 +1,10 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.betterend.blocks.basis.EndPlantWithAgeBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndStone; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -15,20 +17,20 @@ import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class CavePumpkinVineBlock extends EndPlantWithAgeBlock { +public class CavePumpkinVineBlock extends EndPlantWithAgeBlock implements SurvivesOnEndStone, BehaviourPlant { public CavePumpkinVineBlock() { - super(BehaviourBuilders.createPlant()); + super(BehaviourBuilders.createPlant(MapColor.TERRACOTTA_ORANGE)); } private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - BlockState down = world.getBlockState(pos.above()); - return isTerrain(down); + return canSurviveOnBottom(world, pos); } @Override diff --git a/src/main/java/org/betterx/betterend/blocks/CharniaBlock.java b/src/main/java/org/betterx/betterend/blocks/CharniaBlock.java index 86744d20..35c1a9ef 100644 --- a/src/main/java/org/betterx/betterend/blocks/CharniaBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/CharniaBlock.java @@ -1,5 +1,8 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlant; +import org.betterx.bclib.interfaces.SurvivesOnWater; import org.betterx.betterend.blocks.basis.EndUnderwaterPlantBlock; import net.minecraft.core.BlockPos; @@ -8,10 +11,20 @@ import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; -public class CharniaBlock extends EndUnderwaterPlantBlock { +public class CharniaBlock extends EndUnderwaterPlantBlock implements BehaviourWaterPlant, SurvivesOnWater { + public CharniaBlock() { + super( + BehaviourBuilders.createWaterPlant() + ); + } @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { return canSupportCenter(world, pos.below(), Direction.UP) && world.getFluidState(pos).getType() == Fluids.WATER; } + + @Override + public boolean isTerrain(BlockState state) { + return SurvivesOnWater.super.isTerrain(state); + } } diff --git a/src/main/java/org/betterx/betterend/blocks/ChorusGrassBlock.java b/src/main/java/org/betterx/betterend/blocks/ChorusGrassBlock.java index f4b6feb7..eb7bd9a4 100644 --- a/src/main/java/org/betterx/betterend/blocks/ChorusGrassBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/ChorusGrassBlock.java @@ -1,17 +1,14 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnChorusNylium; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class ChorusGrassBlock extends EndPlantBlock { +public class ChorusGrassBlock extends EndPlantBlock implements SurvivesOnChorusNylium, BehaviourPlant { public ChorusGrassBlock() { - super(true); - } - - @Override - protected boolean isTerrain(BlockState state) { - return state.getBlock() == EndBlocks.CHORUS_NYLIUM; + super(BehaviourBuilders.createGrass(MapColor.COLOR_PURPLE).replaceable()); } } diff --git a/src/main/java/org/betterx/betterend/blocks/CrystalMossCoverBlock.java b/src/main/java/org/betterx/betterend/blocks/CrystalMossCoverBlock.java index 2321a78a..113eedc9 100644 --- a/src/main/java/org/betterx/betterend/blocks/CrystalMossCoverBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/CrystalMossCoverBlock.java @@ -29,9 +29,7 @@ public class CrystalMossCoverBlock extends MultifaceBlock implements Bonemealabl private final MultifaceSpreader spreader = new MultifaceSpreader(this); public CrystalMossCoverBlock(MapColor color) { - super(BehaviourBuilders.createReplaceablePlant(color) - .strength(0.2f) - .sound(SoundType.GLOW_LICHEN) + super(BehaviourBuilders.createPlantCover(color) .lightLevel(GlowLichenBlock.emission(7))); this.registerDefaultState(this.defaultBlockState().setValue(WATERLOGGED, false)); } diff --git a/src/main/java/org/betterx/betterend/blocks/DragonTreeSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/DragonTreeSaplingBlock.java index c722f64a..c8f12857 100644 --- a/src/main/java/org/betterx/betterend/blocks/DragonTreeSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/DragonTreeSaplingBlock.java @@ -1,28 +1,20 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnShadowGrass; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.DragonTreeFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class DragonTreeSaplingBlock extends PottableFeatureSapling { +public class DragonTreeSaplingBlock extends PottableFeatureSapling implements SurvivesOnShadowGrass { public DragonTreeSaplingBlock() { super((state) -> EndFeatures.DRAGON_TREE.configuredFeature); } - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.SHADOW_GRASS); - } - @Override public boolean canPlantOn(Block block) { - return block == EndBlocks.SHADOW_GRASS; + return isSurvivable(block.defaultBlockState()); } } diff --git a/src/main/java/org/betterx/betterend/blocks/EndLilyBlock.java b/src/main/java/org/betterx/betterend/blocks/EndLilyBlock.java index 5164ab9b..67778c65 100644 --- a/src/main/java/org/betterx/betterend/blocks/EndLilyBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/EndLilyBlock.java @@ -1,6 +1,7 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlant; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.blocks.BlockProperties.TripleShape; import org.betterx.bclib.interfaces.tools.AddMineableShears; @@ -37,17 +38,15 @@ import com.google.common.collect.Lists; import java.util.Collections; import java.util.List; -public class EndLilyBlock extends EndUnderwaterPlantBlock implements AddMineableShears { +public class EndLilyBlock extends EndUnderwaterPlantBlock implements BehaviourWaterPlant, AddMineableShears { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; private static final VoxelShape SHAPE_BOTTOM = Block.box(4, 0, 4, 12, 16, 12); private static final VoxelShape SHAPE_TOP = Block.box(2, 0, 2, 14, 6, 14); public EndLilyBlock() { - super(baseUnderwaterPlantSettings( - BehaviourBuilders.createWaterPlant(), - 0 - ) - .lightLevel((state) -> state.getValue(SHAPE) == TripleShape.TOP ? 13 : 0) + super(BehaviourBuilders + .createWaterPlant() + .lightLevel((state) -> state.getValue(SHAPE) == TripleShape.TOP ? 13 : 0) ); } diff --git a/src/main/java/org/betterx/betterend/blocks/EndLilySeedBlock.java b/src/main/java/org/betterx/betterend/blocks/EndLilySeedBlock.java index 3c038d5b..61f594bf 100644 --- a/src/main/java/org/betterx/betterend/blocks/EndLilySeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/EndLilySeedBlock.java @@ -1,5 +1,6 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlantSeed; import org.betterx.bclib.blocks.BlockProperties.TripleShape; import org.betterx.bclib.blocks.UnderwaterPlantWithAgeBlock; import org.betterx.bclib.util.BlocksHelper; @@ -12,7 +13,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; -public class EndLilySeedBlock extends UnderwaterPlantWithAgeBlock { +public class EndLilySeedBlock extends UnderwaterPlantWithAgeBlock implements BehaviourWaterPlantSeed { @Override public void grow(WorldGenLevel world, RandomSource random, BlockPos pos) { if (canGrow(world, pos)) { diff --git a/src/main/java/org/betterx/betterend/blocks/EndLotusFlowerBlock.java b/src/main/java/org/betterx/betterend/blocks/EndLotusFlowerBlock.java index 723487d8..64530bf2 100644 --- a/src/main/java/org/betterx/betterend/blocks/EndLotusFlowerBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/EndLotusFlowerBlock.java @@ -28,11 +28,11 @@ public class EndLotusFlowerBlock extends EndPlantBlock implements BehaviourPlant private static final VoxelShape SHAPE_COLLISION = Block.box(0, 0, 0, 16, 2, 16); public EndLotusFlowerBlock() { - super(BehaviourBuilders.createPlant(MapColor.COLOR_PINK, true).lightLevel((bs) -> 15)); + super(BehaviourBuilders.createPlant(MapColor.COLOR_PINK).lightLevel((bs) -> 15)); } @Override - protected boolean isTerrain(BlockState state) { + public boolean isTerrain(BlockState state) { return state.is(EndBlocks.END_LOTUS_STEM); } diff --git a/src/main/java/org/betterx/betterend/blocks/EndLotusLeafBlock.java b/src/main/java/org/betterx/betterend/blocks/EndLotusLeafBlock.java index accad1ce..4ba40314 100644 --- a/src/main/java/org/betterx/betterend/blocks/EndLotusLeafBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/EndLotusLeafBlock.java @@ -37,7 +37,7 @@ public class EndLotusLeafBlock extends BaseBlockNotFull implements RenderLayerPr private static final VoxelShape VSHAPE = Block.box(0, 0, 0, 16, 1, 16); public EndLotusLeafBlock() { - super(BehaviourBuilders.createPlant(MapColor.PLANT, true).noOcclusion().sound(SoundType.WET_GRASS)); + super(BehaviourBuilders.createWalkablePlant(MapColor.COLOR_PINK).sound(SoundType.WET_GRASS)); } @Override diff --git a/src/main/java/org/betterx/betterend/blocks/EndLotusSeedBlock.java b/src/main/java/org/betterx/betterend/blocks/EndLotusSeedBlock.java index dcc37a0d..08c25aec 100644 --- a/src/main/java/org/betterx/betterend/blocks/EndLotusSeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/EndLotusSeedBlock.java @@ -1,5 +1,6 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlantSeed; import org.betterx.bclib.blocks.BlockProperties.TripleShape; import org.betterx.bclib.blocks.UnderwaterPlantWithAgeBlock; import org.betterx.bclib.util.BlocksHelper; @@ -14,7 +15,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; -public class EndLotusSeedBlock extends UnderwaterPlantWithAgeBlock { +public class EndLotusSeedBlock extends UnderwaterPlantWithAgeBlock implements BehaviourWaterPlantSeed { @Override public void grow(WorldGenLevel world, RandomSource random, BlockPos pos) { if (canGrow(world, pos)) { diff --git a/src/main/java/org/betterx/betterend/blocks/FilaluxWingsBlock.java b/src/main/java/org/betterx/betterend/blocks/FilaluxWingsBlock.java index f74de28f..191387a2 100644 --- a/src/main/java/org/betterx/betterend/blocks/FilaluxWingsBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/FilaluxWingsBlock.java @@ -11,6 +11,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -24,7 +25,7 @@ public class FilaluxWingsBlock extends BaseAttachedBlock implements RenderLayerP public FilaluxWingsBlock() { super(BehaviourBuilders - .createPlant() + .createPlant(MapColor.COLOR_RED) .sound(SoundType.WET_GRASS) ); } diff --git a/src/main/java/org/betterx/betterend/blocks/FlamaeaBlock.java b/src/main/java/org/betterx/betterend/blocks/FlamaeaBlock.java index 669b0ecb..87120769 100644 --- a/src/main/java/org/betterx/betterend/blocks/FlamaeaBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/FlamaeaBlock.java @@ -1,9 +1,9 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; -import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; +import org.betterx.bclib.behaviours.interfaces.BehaviourShearablePlant; import org.betterx.bclib.interfaces.CustomItemProvider; -import org.betterx.bclib.interfaces.tools.AddMineableShears; +import org.betterx.bclib.interfaces.SurvivesOnWater; import org.betterx.betterend.blocks.basis.EndPlantBlock; import net.minecraft.core.BlockPos; @@ -14,10 +14,9 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.PlaceOnWaterBlockItem; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -26,22 +25,16 @@ import com.google.common.collect.Lists; import java.util.List; -public class FlamaeaBlock extends EndPlantBlock implements CustomItemProvider, BehaviourPlant, AddMineableShears { +public class FlamaeaBlock extends EndPlantBlock implements CustomItemProvider, BehaviourShearablePlant, SurvivesOnWater { private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 1, 16); public FlamaeaBlock() { super(BehaviourBuilders - .createPlant() + .createPlant(MapColor.COLOR_ORANGE) .sound(SoundType.WET_GRASS) - .offsetType(BlockBehaviour.OffsetType.NONE) ); } - @Override - protected boolean isTerrain(BlockState state) { - return state.is(Blocks.WATER); - } - @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { return SHAPE; diff --git a/src/main/java/org/betterx/betterend/blocks/FlammalixBlock.java b/src/main/java/org/betterx/betterend/blocks/FlammalixBlock.java index 38d52d2a..acf159ea 100644 --- a/src/main/java/org/betterx/betterend/blocks/FlammalixBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/FlammalixBlock.java @@ -4,7 +4,7 @@ import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.client.models.ModelsHelper; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvicesOnPallidium; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.core.BlockPos; @@ -19,21 +19,13 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class FlammalixBlock extends EndPlantBlock implements BehaviourPlant { +public class FlammalixBlock extends EndPlantBlock implements BehaviourPlant, SurvicesOnPallidium { private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14); public FlammalixBlock() { super(BehaviourBuilders.createPlant(MapColor.COLOR_ORANGE).lightLevel((bs) -> 12)); } - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.PALLIDIUM_FULL) || - state.is(EndBlocks.PALLIDIUM_HEAVY) || - state.is(EndBlocks.PALLIDIUM_THIN) || - state.is(EndBlocks.PALLIDIUM_TINY); - } - @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { return SHAPE; diff --git a/src/main/java/org/betterx/betterend/blocks/GlowingMossBlock.java b/src/main/java/org/betterx/betterend/blocks/GlowingMossBlock.java index 9c7c33dd..f26a700b 100644 --- a/src/main/java/org/betterx/betterend/blocks/GlowingMossBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/GlowingMossBlock.java @@ -1,24 +1,26 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnMossOrMycelium; import net.minecraft.core.BlockPos; import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class GlowingMossBlock extends EndPlantBlock { +public class GlowingMossBlock extends EndPlantBlock implements SurvivesOnMossOrMycelium, BehaviourPlant { public GlowingMossBlock(int light) { - super(light); + super(BehaviourBuilders + .createGrass(MapColor.COLOR_LIGHT_BLUE) + .lightLevel((bs) -> light) + .ignitedByLava() + ); } - @Override - protected boolean isTerrain(BlockState state) { - return state.getBlock() == EndBlocks.END_MOSS || state.getBlock() == EndBlocks.END_MYCELIUM; - } @Environment(EnvType.CLIENT) public boolean hasEmissiveLighting(BlockGetter world, BlockPos pos) { diff --git a/src/main/java/org/betterx/betterend/blocks/GlowingPillarSeedBlock.java b/src/main/java/org/betterx/betterend/blocks/GlowingPillarSeedBlock.java index 85d532c4..514fd63e 100644 --- a/src/main/java/org/betterx/betterend/blocks/GlowingPillarSeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/GlowingPillarSeedBlock.java @@ -1,12 +1,14 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourSeed; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.blocks.BlockProperties.TripleShape; import org.betterx.bclib.interfaces.tools.AddMineableShears; import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.MHelper; import org.betterx.betterend.blocks.basis.EndPlantWithAgeBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnAmberMoss; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -17,16 +19,17 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.material.MapColor; -public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock implements AddMineableShears { +public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock implements AddMineableShears, SurvivesOnAmberMoss, BehaviourSeed { public GlowingPillarSeedBlock() { super(BehaviourBuilders - .createPlant() + .createSeed(MapColor.COLOR_ORANGE) .sound(SoundType.GRASS) .lightLevel(state -> state.getValue(AGE) * 3 + 3) + .offsetType(OffsetType.XZ) .randomTicks() - .noCollission() ); } @@ -73,9 +76,4 @@ public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock implements AddM ); } } - - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.AMBER_MOSS); - } } diff --git a/src/main/java/org/betterx/betterend/blocks/HelixTreeSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/HelixTreeSaplingBlock.java index c59a070d..414b4203 100644 --- a/src/main/java/org/betterx/betterend/blocks/HelixTreeSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/HelixTreeSaplingBlock.java @@ -1,28 +1,21 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnAmberMoss; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.HelixTreeFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class HelixTreeSaplingBlock extends PottableFeatureSapling { +public class HelixTreeSaplingBlock extends PottableFeatureSapling implements SurvivesOnAmberMoss { public HelixTreeSaplingBlock() { super((state) -> EndFeatures.HELIX_TREE.configuredFeature); } - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.AMBER_MOSS); - } @Override public boolean canPlantOn(Block block) { - return block == EndBlocks.AMBER_MOSS; + return isSurvivable(block.defaultBlockState()); } } diff --git a/src/main/java/org/betterx/betterend/blocks/HydraluxBlock.java b/src/main/java/org/betterx/betterend/blocks/HydraluxBlock.java index 57fe96e7..22fe4522 100644 --- a/src/main/java/org/betterx/betterend/blocks/HydraluxBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/HydraluxBlock.java @@ -1,6 +1,7 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlant; import org.betterx.bclib.blocks.UnderwaterPlantBlock; import org.betterx.bclib.interfaces.tools.AddMineableShears; import org.betterx.bclib.util.MHelper; @@ -29,15 +30,14 @@ import com.google.common.collect.Lists; import java.util.Collections; import java.util.List; -public class HydraluxBlock extends UnderwaterPlantBlock implements AddMineableShears { +public class HydraluxBlock extends UnderwaterPlantBlock implements BehaviourWaterPlant, AddMineableShears { public static final EnumProperty SHAPE = EndBlockProperties.HYDRALUX_SHAPE; public HydraluxBlock() { - super(baseUnderwaterPlantSettings( - BehaviourBuilders.createWaterPlant(), - 0 - ) + super( + BehaviourBuilders + .createWaterPlant() .lightLevel((state) -> state.getValue(SHAPE).hasGlow() ? 15 : 0) ); } diff --git a/src/main/java/org/betterx/betterend/blocks/HydraluxPetalBlock.java b/src/main/java/org/betterx/betterend/blocks/HydraluxPetalBlock.java index cda6b537..f954f3fa 100644 --- a/src/main/java/org/betterx/betterend/blocks/HydraluxPetalBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/HydraluxPetalBlock.java @@ -14,7 +14,7 @@ public class HydraluxPetalBlock extends BaseBlock.Wood { public HydraluxPetalBlock() { this( BehaviourBuilders - .createPlant(MapColor.PODZOL) + .createWalkablePlant(MapColor.PODZOL) .strength(1) .sound(SoundType.WART_BLOCK) ); diff --git a/src/main/java/org/betterx/betterend/blocks/HydraluxSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/HydraluxSaplingBlock.java index c06202cd..31410f4a 100644 --- a/src/main/java/org/betterx/betterend/blocks/HydraluxSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/HydraluxSaplingBlock.java @@ -1,5 +1,6 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlantSapling; import org.betterx.bclib.blocks.UnderwaterPlantWithAgeBlock; import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.MHelper; @@ -12,7 +13,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -public class HydraluxSaplingBlock extends UnderwaterPlantWithAgeBlock { +public class HydraluxSaplingBlock extends UnderwaterPlantWithAgeBlock implements BehaviourWaterPlantSapling { @Override public void grow(WorldGenLevel world, RandomSource random, BlockPos pos) { diff --git a/src/main/java/org/betterx/betterend/blocks/LacugroveSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/LacugroveSaplingBlock.java index 6ff9a157..9bf01e29 100644 --- a/src/main/java/org/betterx/betterend/blocks/LacugroveSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/LacugroveSaplingBlock.java @@ -1,29 +1,14 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnMossOrDust; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.LacugroveFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class LacugroveSaplingBlock extends PottableFeatureSapling { +public class LacugroveSaplingBlock extends PottableFeatureSapling implements SurvivesOnMossOrDust { public LacugroveSaplingBlock() { super((state) -> EndFeatures.LACUGROVE.configuredFeature); } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.END_MOSS) || world.getBlockState(pos.below()) - .is(EndBlocks.ENDSTONE_DUST); - } - - @Override - public boolean canPlantOn(Block block) { - return block == EndBlocks.END_MOSS; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/LanceleafBlock.java b/src/main/java/org/betterx/betterend/blocks/LanceleafBlock.java index 1daedc07..f361576e 100644 --- a/src/main/java/org/betterx/betterend/blocks/LanceleafBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/LanceleafBlock.java @@ -1,9 +1,12 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.blocks.BlockProperties.PentaShape; import org.betterx.bclib.util.MHelper; import org.betterx.betterend.blocks.basis.EndPlantBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnAmberMoss; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -17,18 +20,19 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.storage.loot.LootParams; import java.util.Collections; import java.util.List; -public class LanceleafBlock extends EndPlantBlock { +public class LanceleafBlock extends EndPlantBlock implements SurvivesOnAmberMoss, BehaviourPlant { public static final EnumProperty SHAPE = BlockProperties.PENTA_SHAPE; public static final IntegerProperty ROTATION = BlockProperties.ROTATION; public LanceleafBlock() { - super(); + super(BehaviourBuilders.createPlant(MapColor.TERRACOTTA_BROWN).ignitedByLava().offsetType(OffsetType.XZ)); } @Override @@ -42,8 +46,7 @@ public class LanceleafBlock extends EndPlantBlock { if (shape == PentaShape.TOP) { return world.getBlockState(pos.below()).is(this); } else if (shape == PentaShape.BOTTOM) { - return world.getBlockState(pos.below()).is(EndBlocks.AMBER_MOSS) && world.getBlockState(pos.above()) - .is(this); + return canSurviveOnTop(world, pos) && world.getBlockState(pos.above()).is(this); } else { return world.getBlockState(pos.below()).is(this) && world.getBlockState(pos.above()).is(this); } diff --git a/src/main/java/org/betterx/betterend/blocks/LanceleafSeedBlock.java b/src/main/java/org/betterx/betterend/blocks/LanceleafSeedBlock.java index b3bb7035..3e1546f6 100644 --- a/src/main/java/org/betterx/betterend/blocks/LanceleafSeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/LanceleafSeedBlock.java @@ -1,11 +1,13 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourSeed; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.blocks.BlockProperties.PentaShape; import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.MHelper; import org.betterx.betterend.blocks.basis.EndPlantWithAgeBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnAmberMoss; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -14,10 +16,11 @@ import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class LanceleafSeedBlock extends EndPlantWithAgeBlock { +public class LanceleafSeedBlock extends EndPlantWithAgeBlock implements SurvivesOnAmberMoss, BehaviourSeed { public LanceleafSeedBlock() { - super(BehaviourBuilders.createPlant().offsetType(OffsetType.NONE)); + super(BehaviourBuilders.createSeed(MapColor.TERRACOTTA_BROWN)); } @Override @@ -54,9 +57,4 @@ public class LanceleafSeedBlock extends EndPlantWithAgeBlock { plant.setValue(BlockProperties.PENTA_SHAPE, PentaShape.TOP) ); } - - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.AMBER_MOSS); - } } diff --git a/src/main/java/org/betterx/betterend/blocks/LargeAmaranitaBlock.java b/src/main/java/org/betterx/betterend/blocks/LargeAmaranitaBlock.java index b659b15f..019dc6d3 100644 --- a/src/main/java/org/betterx/betterend/blocks/LargeAmaranitaBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/LargeAmaranitaBlock.java @@ -5,7 +5,7 @@ import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BlockProperties; import org.betterx.bclib.blocks.BlockProperties.TripleShape; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndBone; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; @@ -16,18 +16,20 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -public class LargeAmaranitaBlock extends EndPlantBlock implements BehaviourPlant { +public class LargeAmaranitaBlock extends EndPlantBlock implements BehaviourPlant, SurvivesOnEndBone { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; private static final VoxelShape SHAPE_BOTTOM = Block.box(4, 0, 4, 12, 14, 12); private static final VoxelShape SHAPE_TOP = Shapes.or(Block.box(1, 3, 1, 15, 16, 15), SHAPE_BOTTOM); public LargeAmaranitaBlock() { super(BehaviourBuilders - .createPlant() + .createWalkablePlant(MapColor.COLOR_RED) + .ignitedByLava() .lightLevel((state) -> (state.getValue(SHAPE) == TripleShape.TOP) ? 15 : 0) ); } @@ -37,11 +39,6 @@ public class LargeAmaranitaBlock extends EndPlantBlock implements BehaviourPlant return state.getValue(SHAPE) == TripleShape.TOP ? SHAPE_TOP : SHAPE_BOTTOM; } - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.SANGNUM) || state.is(EndBlocks.MOSSY_OBSIDIAN) || state.is(EndBlocks.MOSSY_DRAGON_BONE); - } - @Override protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { stateManager.add(SHAPE); diff --git a/src/main/java/org/betterx/betterend/blocks/LucerniaSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/LucerniaSaplingBlock.java index 3a2163b5..e6bcc331 100644 --- a/src/main/java/org/betterx/betterend/blocks/LucerniaSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/LucerniaSaplingBlock.java @@ -1,28 +1,14 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnRutiscus; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.LucerniaFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class LucerniaSaplingBlock extends PottableFeatureSapling { +public class LucerniaSaplingBlock extends PottableFeatureSapling implements SurvivesOnRutiscus { public LucerniaSaplingBlock() { super((state) -> EndFeatures.LUCERNIA.configuredFeature); } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.RUTISCUS); - } - - @Override - public boolean canPlantOn(Block block) { - return block == EndBlocks.RUTISCUS; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/LumecornSeedBlock.java b/src/main/java/org/betterx/betterend/blocks/LumecornSeedBlock.java index 667c7fa3..e32a5a2f 100644 --- a/src/main/java/org/betterx/betterend/blocks/LumecornSeedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/LumecornSeedBlock.java @@ -3,23 +3,23 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.bclib.behaviours.interfaces.BehaviourSeed; import org.betterx.betterend.blocks.basis.EndPlantWithAgeBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndMoss; import org.betterx.betterend.registry.EndFeatures; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.material.MapColor; import java.util.Optional; -public class LumecornSeedBlock extends EndPlantWithAgeBlock implements BehaviourSeed { +public class LumecornSeedBlock extends EndPlantWithAgeBlock implements BehaviourSeed, SurvivesOnEndMoss { public LumecornSeedBlock() { - super(BehaviourBuilders.createPlant()); + super(BehaviourBuilders.createSeed(MapColor.COLOR_LIGHT_BLUE)); } @Override @@ -33,9 +33,4 @@ public class LumecornSeedBlock extends EndPlantWithAgeBlock implements Behaviour null )); } - - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.END_MOSS); - } } diff --git a/src/main/java/org/betterx/betterend/blocks/MossyGlowshroomSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/MossyGlowshroomSaplingBlock.java index d8170eb6..6324133b 100644 --- a/src/main/java/org/betterx/betterend/blocks/MossyGlowshroomSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/MossyGlowshroomSaplingBlock.java @@ -1,29 +1,14 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnMossOrMycelium; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.MossyGlowshroomFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class MossyGlowshroomSaplingBlock extends PottableFeatureSapling { +public class MossyGlowshroomSaplingBlock extends PottableFeatureSapling implements SurvivesOnMossOrMycelium { public MossyGlowshroomSaplingBlock() { super(7, (state) -> EndFeatures.MOSSY_GLOWSHROOM.configuredFeature); } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.END_MOSS) || world.getBlockState(pos.below()) - .is(EndBlocks.END_MYCELIUM); - } - - @Override - public boolean canPlantOn(Block block) { - return block == EndBlocks.END_MOSS || block == EndBlocks.END_MYCELIUM; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/MurkweedBlock.java b/src/main/java/org/betterx/betterend/blocks/MurkweedBlock.java index 6d693af2..417f949a 100644 --- a/src/main/java/org/betterx/betterend/blocks/MurkweedBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/MurkweedBlock.java @@ -1,7 +1,8 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnShadowGrass; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; @@ -13,12 +14,19 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.pathfinder.PathComputationType; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class MurkweedBlock extends EndPlantBlock { +public class MurkweedBlock extends EndPlantBlock implements SurvivesOnShadowGrass { + public MurkweedBlock() { + super( + BehaviourBuilders.createPlant(MapColor.COLOR_BLACK).ignitedByLava() + ); + } + @Override @Environment(EnvType.CLIENT) public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) { @@ -37,11 +45,6 @@ public class MurkweedBlock extends EndPlantBlock { } } - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.SHADOW_GRASS); - } - @Override @SuppressWarnings("deprecation") public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { diff --git a/src/main/java/org/betterx/betterend/blocks/NeedlegrassBlock.java b/src/main/java/org/betterx/betterend/blocks/NeedlegrassBlock.java index e6a6c0a3..671ba076 100644 --- a/src/main/java/org/betterx/betterend/blocks/NeedlegrassBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/NeedlegrassBlock.java @@ -1,9 +1,10 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.bclib.items.tool.BaseShearsItem; import org.betterx.bclib.util.MHelper; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnShadowGrass; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; @@ -15,6 +16,7 @@ import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; @@ -23,7 +25,15 @@ import com.google.common.collect.Lists; import java.util.List; -public class NeedlegrassBlock extends EndPlantBlock { +public class NeedlegrassBlock extends EndPlantBlock implements SurvivesOnShadowGrass { + public NeedlegrassBlock() { + super(BehaviourBuilders + .createGrass(MapColor.COLOR_BLACK) + .ignitedByLava() + .offsetType(OffsetType.XZ) + ); + } + @Override @SuppressWarnings("deprecation") public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { @@ -45,11 +55,6 @@ public class NeedlegrassBlock extends EndPlantBlock { } } - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.SHADOW_GRASS); - } - @Override @SuppressWarnings("deprecation") public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { diff --git a/src/main/java/org/betterx/betterend/blocks/NeonCactusPlantBlock.java b/src/main/java/org/betterx/betterend/blocks/NeonCactusPlantBlock.java index 9e53bbdb..d0a02389 100644 --- a/src/main/java/org/betterx/betterend/blocks/NeonCactusPlantBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/NeonCactusPlantBlock.java @@ -389,6 +389,7 @@ public class NeonCactusPlantBlock extends BaseBlockNotFull implements SimpleWate } } + static { BIG_SHAPES.put(Axis.X, Block.box(0, 2, 2, 16, 14, 14)); BIG_SHAPES.put(Axis.Y, Block.box(2, 0, 2, 14, 16, 14)); diff --git a/src/main/java/org/betterx/betterend/blocks/PondAnemoneBlock.java b/src/main/java/org/betterx/betterend/blocks/PondAnemoneBlock.java index ee843847..e4f3166e 100644 --- a/src/main/java/org/betterx/betterend/blocks/PondAnemoneBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/PondAnemoneBlock.java @@ -1,6 +1,7 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourWaterPlant; import org.betterx.bclib.interfaces.tools.AddMineableShears; import org.betterx.betterend.blocks.basis.EndUnderwaterPlantBlock; @@ -19,15 +20,16 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class PondAnemoneBlock extends EndUnderwaterPlantBlock implements AddMineableShears { +public class PondAnemoneBlock extends EndUnderwaterPlantBlock implements BehaviourWaterPlant, AddMineableShears { private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14); public PondAnemoneBlock() { - super(baseUnderwaterPlantSettings( - BehaviourBuilders.createWaterPlant(), - 13 - ).sound(SoundType.CORAL_BLOCK) - .offsetType(OffsetType.NONE) + super( + BehaviourBuilders + .createWaterPlant() + .sound(SoundType.CORAL_BLOCK) + .offsetType(OffsetType.NONE) + .lightLevel(state -> 13) ); } diff --git a/src/main/java/org/betterx/betterend/blocks/PythadendronSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/PythadendronSaplingBlock.java index 63759429..aeedf4fb 100644 --- a/src/main/java/org/betterx/betterend/blocks/PythadendronSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/PythadendronSaplingBlock.java @@ -1,28 +1,14 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnChorusNylium; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.PythadendronTreeFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class PythadendronSaplingBlock extends PottableFeatureSapling { +public class PythadendronSaplingBlock extends PottableFeatureSapling implements SurvivesOnChorusNylium { public PythadendronSaplingBlock() { super((state) -> EndFeatures.PYTHADENDRON_TREE.configuredFeature); } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.CHORUS_NYLIUM); - } - - @Override - public boolean canPlantOn(Block block) { - return block == EndBlocks.CHORUS_NYLIUM; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/SmallAmaranitaBlock.java b/src/main/java/org/betterx/betterend/blocks/SmallAmaranitaBlock.java index f241ef50..ba1e1fc8 100644 --- a/src/main/java/org/betterx/betterend/blocks/SmallAmaranitaBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/SmallAmaranitaBlock.java @@ -1,8 +1,10 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.util.BlocksHelper; import org.betterx.betterend.blocks.basis.EndPlantBlock; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndBone; import org.betterx.betterend.registry.EndFeatures; import net.minecraft.core.BlockPos; @@ -14,19 +16,22 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import java.util.Optional; -public class SmallAmaranitaBlock extends EndPlantBlock { +public class SmallAmaranitaBlock extends EndPlantBlock implements SurvivesOnEndBone, BehaviourPlant { + public SmallAmaranitaBlock() { + super( + BehaviourBuilders.createPlant(MapColor.COLOR_RED).offsetType(OffsetType.XZ) + ); + } + private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 10, 12); - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.SANGNUM) || state.is(EndBlocks.MOSSY_OBSIDIAN) || state.is(EndBlocks.MOSSY_DRAGON_BONE); - } @Override public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { diff --git a/src/main/java/org/betterx/betterend/blocks/SmallJellyshroomBlock.java b/src/main/java/org/betterx/betterend/blocks/SmallJellyshroomBlock.java index 9f10eea1..c19a126c 100644 --- a/src/main/java/org/betterx/betterend/blocks/SmallJellyshroomBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/SmallJellyshroomBlock.java @@ -25,8 +25,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.BonemealableBlock; import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; @@ -47,7 +49,9 @@ public class SmallJellyshroomBlock extends BaseAttachedBlock implements RenderLa private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public SmallJellyshroomBlock() { - super(BehaviourBuilders.createPlant().sound(SoundType.NETHER_WART)); + super(BehaviourBuilders.createPlant(MapColor.COLOR_LIGHT_BLUE) + .sound(SoundType.NETHER_WART) + .offsetType(BlockBehaviour.OffsetType.XZ)); } @Override diff --git a/src/main/java/org/betterx/betterend/blocks/TenaneaSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/TenaneaSaplingBlock.java index 695d5275..aa6129b4 100644 --- a/src/main/java/org/betterx/betterend/blocks/TenaneaSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/TenaneaSaplingBlock.java @@ -1,28 +1,14 @@ package org.betterx.betterend.blocks; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnPinkMoss; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.TenaneaFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class TenaneaSaplingBlock extends PottableFeatureSapling { +public class TenaneaSaplingBlock extends PottableFeatureSapling implements SurvivesOnPinkMoss { public TenaneaSaplingBlock() { super((state) -> EndFeatures.TENANEA.configuredFeature); } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.PINK_MOSS); - } - - @Override - public boolean canPlantOn(Block block) { - return block == EndBlocks.PINK_MOSS; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/TerrainPlantBlock.java b/src/main/java/org/betterx/betterend/blocks/TerrainPlantBlock.java index c6013d1b..b8a82021 100644 --- a/src/main/java/org/betterx/betterend/blocks/TerrainPlantBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/TerrainPlantBlock.java @@ -1,25 +1,28 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; +import org.betterx.bclib.interfaces.SurvivesOnBlocks; import org.betterx.betterend.blocks.basis.EndPlantBlock; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class TerrainPlantBlock extends EndPlantBlock { - private final Block[] ground; +import java.util.List; + +public class TerrainPlantBlock extends EndPlantBlock implements SurvivesOnBlocks, BehaviourPlant { + private final List ground; public TerrainPlantBlock(Block... ground) { - super(true); - this.ground = ground; + super(BehaviourBuilders.createPlant(ground.length == 0 ? MapColor.PLANT : ground[0].defaultMapColor()) + .ignitedByLava() + .offsetType(OffsetType.XZ) + .replaceable()); + this.ground = List.of(ground); } @Override - protected boolean isTerrain(BlockState state) { - for (Block block : ground) { - if (state.is(block)) { - return true; - } - } - return false; + public List getSurvivableBlocks() { + return ground; } } diff --git a/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossBlock.java b/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossBlock.java index 5a52b679..35bf47cb 100644 --- a/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossBlock.java @@ -1,8 +1,11 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BaseDoublePlantBlock; import org.betterx.bclib.util.BlocksHelper; import org.betterx.betterend.blocks.basis.EndPlantBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnJungleMossOrMycelium; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -11,18 +14,14 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class TwistedUmbrellaMossBlock extends EndPlantBlock { +public class TwistedUmbrellaMossBlock extends EndPlantBlock implements BehaviourPlant, SurvivesOnJungleMossOrMycelium { public TwistedUmbrellaMossBlock() { - super(11); - } - - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.END_MOSS) || state.is(EndBlocks.END_MYCELIUM) || state.is(EndBlocks.JUNGLE_MOSS); + super(BehaviourBuilders.createPlant(MapColor.COLOR_BLUE).lightLevel((state) -> 12)); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossTallBlock.java b/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossTallBlock.java index c6fa9fcc..b1cc655f 100644 --- a/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossTallBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/TwistedUmbrellaMossTallBlock.java @@ -2,6 +2,7 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BaseDoublePlantBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnJungleMossOrMycelium; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -11,7 +12,7 @@ import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -public class TwistedUmbrellaMossTallBlock extends BaseDoublePlantBlock implements BehaviourPlant { +public class TwistedUmbrellaMossTallBlock extends BaseDoublePlantBlock implements BehaviourPlant, SurvivesOnJungleMossOrMycelium { public TwistedUmbrellaMossTallBlock() { super(12); } @@ -29,7 +30,7 @@ public class TwistedUmbrellaMossTallBlock extends BaseDoublePlantBlock implement } @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.END_MOSS) || state.is(EndBlocks.END_MYCELIUM) || state.is(EndBlocks.JUNGLE_MOSS); + public boolean isTerrain(BlockState state) { + return SurvivesOnJungleMossOrMycelium.super.isTerrain(state); } } diff --git a/src/main/java/org/betterx/betterend/blocks/UmbrellaMossBlock.java b/src/main/java/org/betterx/betterend/blocks/UmbrellaMossBlock.java index 5a7cea99..06ff271c 100644 --- a/src/main/java/org/betterx/betterend/blocks/UmbrellaMossBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/UmbrellaMossBlock.java @@ -1,8 +1,11 @@ package org.betterx.betterend.blocks; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BaseDoublePlantBlock; import org.betterx.bclib.util.BlocksHelper; import org.betterx.betterend.blocks.basis.EndPlantBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnJungleMossOrMycelium; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -11,18 +14,14 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class UmbrellaMossBlock extends EndPlantBlock { +public class UmbrellaMossBlock extends EndPlantBlock implements BehaviourPlant, SurvivesOnJungleMossOrMycelium { public UmbrellaMossBlock() { - super(11); - } - - @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.END_MOSS) || state.is(EndBlocks.END_MYCELIUM) || state.is(EndBlocks.JUNGLE_MOSS); + super(BehaviourBuilders.createGrass(MapColor.COLOR_ORANGE).ignitedByLava().lightLevel((state) -> 11)); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/org/betterx/betterend/blocks/UmbrellaMossTallBlock.java b/src/main/java/org/betterx/betterend/blocks/UmbrellaMossTallBlock.java index 55cc3a9f..dfb94d4d 100644 --- a/src/main/java/org/betterx/betterend/blocks/UmbrellaMossTallBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/UmbrellaMossTallBlock.java @@ -2,6 +2,7 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BaseDoublePlantBlock; +import org.betterx.betterend.interfaces.survives.SurvivesOnJungleMossOrMycelium; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.core.BlockPos; @@ -11,7 +12,7 @@ import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -public class UmbrellaMossTallBlock extends BaseDoublePlantBlock implements BehaviourPlant { +public class UmbrellaMossTallBlock extends BaseDoublePlantBlock implements BehaviourPlant, SurvivesOnJungleMossOrMycelium { public UmbrellaMossTallBlock() { super(12); } @@ -29,7 +30,7 @@ public class UmbrellaMossTallBlock extends BaseDoublePlantBlock implements Behav } @Override - protected boolean isTerrain(BlockState state) { - return state.is(EndBlocks.END_MOSS) || state.is(EndBlocks.END_MYCELIUM) || state.is(EndBlocks.JUNGLE_MOSS); + public boolean isTerrain(BlockState state) { + return SurvivesOnJungleMossOrMycelium.super.isTerrain(state); } } diff --git a/src/main/java/org/betterx/betterend/blocks/UmbrellaTreeSaplingBlock.java b/src/main/java/org/betterx/betterend/blocks/UmbrellaTreeSaplingBlock.java index 11ab4ba7..f14e1cc7 100644 --- a/src/main/java/org/betterx/betterend/blocks/UmbrellaTreeSaplingBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/UmbrellaTreeSaplingBlock.java @@ -2,33 +2,19 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.client.render.BCLRenderLayer; import org.betterx.betterend.blocks.basis.PottableFeatureSapling; -import org.betterx.betterend.registry.EndBlocks; +import org.betterx.betterend.interfaces.survives.SurvivesOnJungleMoss; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.features.trees.UmbrellaTreeFeature; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public class UmbrellaTreeSaplingBlock extends PottableFeatureSapling { +public class UmbrellaTreeSaplingBlock extends PottableFeatureSapling implements SurvivesOnJungleMoss { public UmbrellaTreeSaplingBlock() { super((state) -> EndFeatures.UMBRELLA_TREE.configuredFeature); } - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndBlocks.JUNGLE_MOSS); - } - @Override public BCLRenderLayer getRenderLayer() { return BCLRenderLayer.TRANSLUCENT; } - - @Override - public boolean canPlantOn(Block block) { - return block == EndBlocks.JUNGLE_MOSS; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/EndPlantBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/EndPlantBlock.java index 75d4fc3e..5d3091f3 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/EndPlantBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/EndPlantBlock.java @@ -1,6 +1,5 @@ package org.betterx.betterend.blocks.basis; -import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BasePlantBlock; import org.betterx.betterend.interfaces.PottablePlant; import org.betterx.worlds.together.tag.v3.CommonBlockTags; @@ -8,25 +7,13 @@ import org.betterx.worlds.together.tag.v3.CommonBlockTags; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -public class EndPlantBlock extends BasePlantBlock implements PottablePlant, BehaviourPlant { - protected EndPlantBlock() { - super(); - } - - protected EndPlantBlock(boolean replaceable) { - super(replaceable); - } - - protected EndPlantBlock(int light) { - super(light); - } - +public abstract class EndPlantBlock extends BasePlantBlock implements PottablePlant { protected EndPlantBlock(Properties props) { super(props); } @Override - protected boolean isTerrain(BlockState state) { + public boolean isTerrain(BlockState state) { return state.is(CommonBlockTags.END_STONES); } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/EndPlantWithAgeBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/EndPlantWithAgeBlock.java index 48f5e418..a1b84404 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/EndPlantWithAgeBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/EndPlantWithAgeBlock.java @@ -1,22 +1,18 @@ package org.betterx.betterend.blocks.basis; -import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BasePlantWithAgeBlock; import org.betterx.worlds.together.tag.v3.CommonBlockTags; import net.minecraft.world.level.block.state.BlockState; -public abstract class EndPlantWithAgeBlock extends BasePlantWithAgeBlock implements BehaviourPlant { - protected EndPlantWithAgeBlock() { - super(); - } +public abstract class EndPlantWithAgeBlock extends BasePlantWithAgeBlock { public EndPlantWithAgeBlock(Properties settings) { super(settings); } @Override - protected boolean isTerrain(BlockState state) { + public boolean isTerrain(BlockState state) { return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterPlantBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterPlantBlock.java index c6edf9c8..5dba9815 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterPlantBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterPlantBlock.java @@ -6,10 +6,6 @@ import org.betterx.worlds.together.tag.v3.CommonBlockTags; import net.minecraft.world.level.block.state.BlockState; public class EndUnderwaterPlantBlock extends UnderwaterPlantBlock { - - public EndUnderwaterPlantBlock() { - } - public EndUnderwaterPlantBlock(Properties settings) { super(settings); } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java index be4cf3d3..2f262c4f 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java @@ -1,17 +1,21 @@ package org.betterx.betterend.blocks.basis; +import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.bclib.blocks.BaseUnderwaterWallPlantBlock; -import org.betterx.worlds.together.tag.v3.CommonBlockTags; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndStone; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class EndUnderwaterWallPlantBlock extends BaseUnderwaterWallPlantBlock { +public class EndUnderwaterWallPlantBlock extends BaseUnderwaterWallPlantBlock implements SurvivesOnEndStone { - public EndUnderwaterWallPlantBlock() { + public EndUnderwaterWallPlantBlock(MapColor color) { + super(BehaviourBuilders.createWaterPlant(color)); } + @Override - protected boolean isTerrain(BlockState state) { - return state.is(CommonBlockTags.END_STONES); + public boolean isTerrain(BlockState state) { + return SurvivesOnEndStone.super.isTerrain(state); } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/EndWallPlantBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/EndWallPlantBlock.java index 395cf30b..3ef21973 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/EndWallPlantBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/EndWallPlantBlock.java @@ -1,21 +1,24 @@ package org.betterx.betterend.blocks.basis; +import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.bclib.behaviours.interfaces.BehaviourPlant; import org.betterx.bclib.blocks.BaseWallPlantBlock; -import org.betterx.worlds.together.tag.v3.CommonBlockTags; +import org.betterx.betterend.interfaces.survives.SurvivesOnEndStone; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; -public class EndWallPlantBlock extends BaseWallPlantBlock implements BehaviourPlant { - public EndWallPlantBlock() { +public class EndWallPlantBlock extends BaseWallPlantBlock implements BehaviourPlant, SurvivesOnEndStone { + public EndWallPlantBlock(MapColor color) { + super(BehaviourBuilders.createPlant(color)); } - public EndWallPlantBlock(int light) { - super(light); + public EndWallPlantBlock(MapColor color, int light) { + super(BehaviourBuilders.createPlant(color).lightLevel((bs) -> light)); } @Override - protected boolean isTerrain(BlockState state) { - return state.is(CommonBlockTags.END_STONES); + public boolean isTerrain(BlockState state) { + return SurvivesOnEndStone.super.isTerrain(state); } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/FurBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/FurBlock.java index 3412b3ac..b2305db1 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/FurBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/FurBlock.java @@ -5,20 +5,24 @@ import org.betterx.bclib.behaviours.interfaces.BehaviourShearablePlant; import org.betterx.bclib.blocks.BaseAttachedBlock; import org.betterx.bclib.client.render.BCLRenderLayer; import org.betterx.bclib.interfaces.RenderLayerProvider; +import org.betterx.bclib.interfaces.TagProvider; import org.betterx.bclib.items.tool.BaseShearsItem; import org.betterx.bclib.util.MHelper; -import org.betterx.worlds.together.tag.v3.TagManager; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; @@ -31,28 +35,26 @@ import com.google.common.collect.Maps; import java.util.EnumMap; import java.util.List; -public class FurBlock extends BaseAttachedBlock implements RenderLayerProvider, BehaviourShearablePlant { +public class FurBlock extends BaseAttachedBlock implements RenderLayerProvider, BehaviourShearablePlant, TagProvider { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); private final ItemLike drop; private final int dropChance; - public FurBlock(ItemLike drop, int light, int dropChance, boolean wet) { - super(BehaviourBuilders.createReplaceablePlant() - .lightLevel(bs -> light) - .sound(wet ? SoundType.WET_GRASS : SoundType.GRASS) + public FurBlock(MapColor color, ItemLike drop, int light, int dropChance, boolean wet) { + super(BehaviourBuilders + .createPlant(color) + .replaceable() + .lightLevel(bs -> light) + .ignitedByLava() + .sound(wet ? SoundType.WET_GRASS : SoundType.GRASS) ); + this.drop = drop; this.dropChance = dropChance; - TagManager.BLOCKS.add(BlockTags.LEAVES, this); } - public FurBlock(ItemLike drop, int dropChance) { - super(BehaviourBuilders.createReplaceablePlant() - .sound(SoundType.GRASS) - ); - this.drop = drop; - this.dropChance = dropChance; - TagManager.BLOCKS.add(BlockTags.LEAVES, this); + public FurBlock(MapColor color, ItemLike drop, int dropChance) { + this(color, drop, 0, dropChance, false); } @Override @@ -89,4 +91,9 @@ public class FurBlock extends BaseAttachedBlock implements RenderLayerProvider, BOUNDING_SHAPES.put(Direction.WEST, Shapes.box(0.5, 0.0, 0.0, 1.0, 1.0, 1.0)); BOUNDING_SHAPES.put(Direction.EAST, Shapes.box(0.0, 0.0, 0.0, 0.5, 1.0, 1.0)); } + + @Override + public void addTags(List> blockTags, List> itemTags) { + blockTags.add(BlockTags.LEAVES); + } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/PottableCropBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/PottableCropBlock.java index 89ad653a..81c06a27 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/PottableCropBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/PottableCropBlock.java @@ -2,31 +2,34 @@ package org.betterx.betterend.blocks.basis; import org.betterx.bclib.behaviours.interfaces.BehaviourSeed; import org.betterx.bclib.blocks.BaseCropBlock; +import org.betterx.bclib.interfaces.SurvivesOnBlocks; import org.betterx.betterend.interfaces.PottablePlant; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -public class PottableCropBlock extends BaseCropBlock implements PottablePlant, BehaviourSeed { - private final Block[] terrain; +import java.util.List; + +public class PottableCropBlock extends BaseCropBlock implements PottablePlant, BehaviourSeed, SurvivesOnBlocks { + private final List terrain; public PottableCropBlock(Item drop, Block... terrain) { super(drop, terrain); - this.terrain = terrain; - } - - @Override - public boolean canPlantOn(Block block) { - for (Block ter : terrain) { - if (block == ter) { - return true; - } - } - return false; + this.terrain = List.of(terrain); } @Override public String getPottedState() { return "age=3"; } + + @Override + public List getSurvivableBlocks() { + return terrain; + } + + @Override + public boolean canPlantOn(Block block) { + return isSurvivable(block.defaultBlockState()); + } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/PottableFeatureSapling.java b/src/main/java/org/betterx/betterend/blocks/basis/PottableFeatureSapling.java index cff9bd36..98a2f63b 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/PottableFeatureSapling.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/PottableFeatureSapling.java @@ -2,12 +2,14 @@ package org.betterx.betterend.blocks.basis; import org.betterx.bclib.behaviours.interfaces.BehaviourSapling; import org.betterx.bclib.blocks.FeatureSaplingBlock; +import org.betterx.bclib.interfaces.SurvivesOn; import org.betterx.betterend.interfaces.PottablePlant; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; -public abstract class PottableFeatureSapling, FC extends FeatureConfiguration> extends FeatureSaplingBlock implements PottablePlant, BehaviourSapling { +public abstract class PottableFeatureSapling, FC extends FeatureConfiguration> extends FeatureSaplingBlock implements PottablePlant, BehaviourSapling, SurvivesOn { public PottableFeatureSapling(FeatureSupplier featureSupplier) { super(featureSupplier); @@ -16,4 +18,9 @@ public abstract class PottableFeatureSapling, FC extends F public PottableFeatureSapling(int light, FeatureSupplier featureSupplier) { super(light, featureSupplier); } + + @Override + public boolean canPlantOn(Block block) { + return isSurvivable(block.defaultBlockState()); + } } diff --git a/src/main/java/org/betterx/betterend/blocks/basis/PottableLeavesBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/PottableLeavesBlock.java index 213b74c8..a5af1aa8 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/PottableLeavesBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/PottableLeavesBlock.java @@ -1,12 +1,15 @@ package org.betterx.betterend.blocks.basis; import org.betterx.bclib.blocks.BaseLeavesBlock; +import org.betterx.bclib.interfaces.SurvivesOnBlocks; import org.betterx.betterend.interfaces.PottablePlant; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.MapColor; -public class PottableLeavesBlock extends BaseLeavesBlock implements PottablePlant { +import java.util.List; + +public class PottableLeavesBlock extends BaseLeavesBlock implements PottablePlant, SurvivesOnBlocks { public PottableLeavesBlock(Block sapling, MapColor color) { super(sapling, color); @@ -23,4 +26,17 @@ public class PottableLeavesBlock extends BaseLeavesBlock implements PottablePlan } return true; } + + @Override + public List getSurvivableBlocks() { + if (sapling instanceof SurvivesOnBlocks pp) { + return pp.getSurvivableBlocks(); + } + return List.of(); + } + + @Override + public String prefixComponent() { + return "tooltip.bclib.pottable_on"; + } } diff --git a/src/main/java/org/betterx/betterend/integration/byg/BYGBlocks.java b/src/main/java/org/betterx/betterend/integration/byg/BYGBlocks.java index be446473..8c36a1d0 100644 --- a/src/main/java/org/betterx/betterend/integration/byg/BYGBlocks.java +++ b/src/main/java/org/betterx/betterend/integration/byg/BYGBlocks.java @@ -5,10 +5,14 @@ import org.betterx.betterend.blocks.basis.EndWallPlantBlock; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.MapColor; public class BYGBlocks { - public static final Block IVIS_MOSS = EndBlocks.registerBlock("ivis_moss", new EndWallPlantBlock()); - public static final Block NIGHTSHADE_MOSS = EndBlocks.registerBlock("nightshade_moss", new EndWallPlantBlock()); + public static final Block IVIS_MOSS = EndBlocks.registerBlock("ivis_moss", new EndWallPlantBlock(MapColor.PLANT)); + public static final Block NIGHTSHADE_MOSS = EndBlocks.registerBlock( + "nightshade_moss", + new EndWallPlantBlock(MapColor.PLANT) + ); public static final Block IVIS_VINE = EndBlocks.registerBlock("ivis_vine", new BaseVineBlock()); diff --git a/src/main/java/org/betterx/betterend/registry/EndBlocks.java b/src/main/java/org/betterx/betterend/registry/EndBlocks.java index 9f99927c..9bfed329 100644 --- a/src/main/java/org/betterx/betterend/registry/EndBlocks.java +++ b/src/main/java/org/betterx/betterend/registry/EndBlocks.java @@ -54,7 +54,7 @@ public class EndBlocks { ); public static final Block CRYSTAL_MOSS = registerBlock( "crystal_moss", - new EndTerrainBlock(MapColor.COLOR_PINK), + new EndTerrainBlock(MapColor.COLOR_CYAN), BCLBlockTags.BONEMEAL_SOURCE_END_STONE, BlockTags.NYLIUM ); @@ -238,6 +238,7 @@ public class EndBlocks { public static final Block MOSSY_GLOWSHROOM_FUR = registerBlock( "mossy_glowshroom_fur", new FurBlock( + MapColor.COLOR_LIGHT_BLUE, MOSSY_GLOWSHROOM_SAPLING, 15, 16, @@ -316,7 +317,7 @@ public class EndBlocks { public static final Block TENANEA_FLOWERS = registerBlock("tenanea_flowers", new TenaneaFlowersBlock()); public static final Block TENANEA_OUTER_LEAVES = registerBlock( "tenanea_outer_leaves", - new FurBlock(TENANEA_SAPLING, 32) + new FurBlock(MapColor.COLOR_PINK, TENANEA_SAPLING, 32) ); public static final EndWoodenComplexMaterial TENANEA = new EndWoodenComplexMaterial( "tenanea", @@ -381,7 +382,7 @@ public class EndBlocks { ); public static final Block LUCERNIA_OUTER_LEAVES = registerBlock( "lucernia_outer_leaves", - new FurBlock(LUCERNIA_SAPLING, 32) + new FurBlock(MapColor.COLOR_RED, LUCERNIA_SAPLING, 32) ); public static final EndWoodenComplexMaterial LUCERNIA = new EndWoodenComplexMaterial( "lucernia", @@ -396,11 +397,26 @@ public class EndBlocks { public static final Block UMBRELLA_MOSS_TALL = registerBlock("umbrella_moss_tall", new UmbrellaMossTallBlock()); public static final Block CREEPING_MOSS = registerBlock("creeping_moss", new GlowingMossBlock(11)); public static final Block CHORUS_GRASS = registerBlock("chorus_grass", new ChorusGrassBlock()); - public static final Block CAVE_GRASS = registerBlock("cave_grass", new TerrainPlantBlock(CAVE_MOSS)); - public static final Block CRYSTAL_GRASS = registerBlock("crystal_grass", new TerrainPlantBlock(CRYSTAL_MOSS)); - public static final Block SHADOW_PLANT = registerBlock("shadow_plant", new TerrainPlantBlock(SHADOW_GRASS)); - public static final Block BUSHY_GRASS = registerBlock("bushy_grass", new TerrainPlantBlock(PINK_MOSS)); - public static final Block AMBER_GRASS = registerBlock("amber_grass", new TerrainPlantBlock(AMBER_MOSS)); + public static final Block CAVE_GRASS = registerBlock( + "cave_grass", + new TerrainPlantBlock(CAVE_MOSS) + ); + public static final Block CRYSTAL_GRASS = registerBlock( + "crystal_grass", + new TerrainPlantBlock(CRYSTAL_MOSS) + ); + public static final Block SHADOW_PLANT = registerBlock( + "shadow_plant", + new TerrainPlantBlock(SHADOW_GRASS) + ); + public static final Block BUSHY_GRASS = registerBlock( + "bushy_grass", + new TerrainPlantBlock(PINK_MOSS) + ); + public static final Block AMBER_GRASS = registerBlock( + "amber_grass", + new TerrainPlantBlock(AMBER_MOSS) + ); public static final Block TWISTED_UMBRELLA_MOSS = registerBlock( "twisted_umbrella_moss", new TwistedUmbrellaMossBlock() @@ -409,8 +425,14 @@ public class EndBlocks { "twisted_umbrella_moss_tall", new TwistedUmbrellaMossTallBlock() ); - public static final Block JUNGLE_GRASS = registerBlock("jungle_grass", new TerrainPlantBlock(JUNGLE_MOSS)); - public static final Block BLOOMING_COOKSONIA = registerBlock("blooming_cooksonia", new TerrainPlantBlock(END_MOSS)); + public static final Block JUNGLE_GRASS = registerBlock( + "jungle_grass", + new TerrainPlantBlock(JUNGLE_MOSS) + ); + public static final Block BLOOMING_COOKSONIA = registerBlock( + "blooming_cooksonia", + new TerrainPlantBlock(END_MOSS) + ); public static final Block SALTEAGO = registerBlock("salteago", new TerrainPlantBlock(END_MOSS)); public static final Block VAIOLUSH_FERN = registerBlock("vaiolush_fern", new TerrainPlantBlock(END_MOSS)); public static final Block FRACTURN = registerBlock("fracturn", new TerrainPlantBlock(END_MOSS)); @@ -456,7 +478,7 @@ public class EndBlocks { public static final Block BLUE_VINE_LANTERN = registerBlock("blue_vine_lantern", new BlueVineLanternBlock()); public static final Block BLUE_VINE_FUR = registerBlock( "blue_vine_fur", - new FurBlock(BLUE_VINE_SEED, 15, 3, false) + new FurBlock(MapColor.COLOR_BLUE, BLUE_VINE_SEED, 15, 3, false) ); public static final Block LANCELEAF_SEED = registerBlock("lanceleaf_seed", new LanceleafSeedBlock()); @@ -473,7 +495,7 @@ public class EndBlocks { ); public static final Block GLOWING_PILLAR_LEAVES = registerBlock( "glowing_pillar_leaves", - new FurBlock(GLOWING_PILLAR_SEED, 15, 3, false) + new FurBlock(MapColor.COLOR_ORANGE, GLOWING_PILLAR_SEED, 15, 3, false) ); public static final Block SMALL_JELLYSHROOM = registerBlock("small_jellyshroom", new SmallJellyshroomBlock()); @@ -499,7 +521,7 @@ public class EndBlocks { public static final Block AMARANITA_LANTERN = registerBlock("amaranita_lantern", new GlowingHymenophoreBlock()); public static final Block AMARANITA_FUR = registerBlock( "amaranita_fur", - new FurBlock(SMALL_AMARANITA_MUSHROOM, 15, 4, true) + new FurBlock(MapColor.COLOR_CYAN, SMALL_AMARANITA_MUSHROOM, 15, 4, true) ); public static final Block AMARANITA_CAP = registerBlock("amaranita_cap", new AmaranitaCapBlock()); @@ -573,13 +595,22 @@ public class EndBlocks { // Wall Plants // public static final Block PURPLE_POLYPORE = registerBlock("purple_polypore", new EndWallMushroom(13)); public static final Block AURANT_POLYPORE = registerBlock("aurant_polypore", new EndWallMushroom(13)); - public static final Block TAIL_MOSS = registerBlock("tail_moss", new EndWallPlantBlock()); - public static final Block CYAN_MOSS = registerBlock("cyan_moss", new EndWallPlantBlock()); - public static final Block TWISTED_MOSS = registerBlock("twisted_moss", new EndWallPlantBlock()); - public static final Block TUBE_WORM = registerBlock("tube_worm", new EndUnderwaterWallPlantBlock()); - public static final Block BULB_MOSS = registerBlock("bulb_moss", new EndWallPlantBlock(12)); - public static final Block JUNGLE_FERN = registerBlock("jungle_fern", new EndWallPlantBlock()); - public static final Block RUSCUS = registerBlock("ruscus", new EndWallPlantBlock()); + public static final Block TAIL_MOSS = registerBlock("tail_moss", new EndWallPlantBlock(MapColor.COLOR_BLACK)); + public static final Block CYAN_MOSS = registerBlock("cyan_moss", new EndWallPlantBlock(MapColor.COLOR_CYAN)); + public static final Block TWISTED_MOSS = registerBlock( + "twisted_moss", + new EndWallPlantBlock(MapColor.COLOR_LIGHT_BLUE) + ); + public static final Block TUBE_WORM = registerBlock( + "tube_worm", + new EndUnderwaterWallPlantBlock(MapColor.TERRACOTTA_BROWN) + ); + public static final Block BULB_MOSS = registerBlock( + "bulb_moss", + new EndWallPlantBlock(MapColor.TERRACOTTA_ORANGE, 12) + ); + public static final Block JUNGLE_FERN = registerBlock("jungle_fern", new EndWallPlantBlock(MapColor.COLOR_GREEN)); + public static final Block RUSCUS = registerBlock("ruscus", new EndWallPlantBlock(MapColor.COLOR_RED)); // Vines // public static final Block DENSE_VINE = registerBlock("dense_vine", new BaseVineBlock(15, true));