diff --git a/src/main/java/org/betterx/bclib/blocks/FeatureSaplingBlock.java b/src/main/java/org/betterx/bclib/blocks/FeatureSaplingBlock.java index 70108212..92d31f2e 100644 --- a/src/main/java/org/betterx/bclib/blocks/FeatureSaplingBlock.java +++ b/src/main/java/org/betterx/bclib/blocks/FeatureSaplingBlock.java @@ -1,7 +1,6 @@ package org.betterx.bclib.blocks; import org.betterx.bclib.api.v3.datagen.DropSelfLootProvider; -import org.betterx.bclib.api.v3.levelgen.features.BCLConfigureFeature; import org.betterx.bclib.behaviours.BehaviourBuilders; import org.betterx.bclib.client.models.BasePatterns; import org.betterx.bclib.client.models.ModelsHelper; @@ -34,13 +33,19 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import java.util.Optional; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class FeatureSaplingBlock, FC extends FeatureConfiguration> extends SaplingBlock implements RenderLayerProvider, BlockModelProvider, DropSelfLootProvider { @FunctionalInterface public interface FeatureSupplier, FC extends FeatureConfiguration> { - BCLConfigureFeature get(BlockState state); + boolean grow( + @NotNull ServerLevel level, + @NotNull BlockPos pos, + @NotNull BlockState state, + @NotNull RandomSource random + ); } private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); @@ -68,8 +73,16 @@ public class FeatureSaplingBlock, FC extends FeatureConfig this.feature = featureSupplier; } - protected BCLConfigureFeature getConfiguredFeature(BlockState state) { - return feature != null ? feature.get(state) : null; + protected boolean growFeature( + @NotNull ServerLevel world, + @NotNull BlockPos pos, + @NotNull BlockState blockState, + @NotNull RandomSource random + ) { + if (feature != null) { + return feature.grow(world, pos, blockState, random); + } + return false; } @Override @@ -95,13 +108,11 @@ public class FeatureSaplingBlock, FC extends FeatureConfig if (blockState.getValue(STAGE) == 0) { world.setBlock(pos, blockState.cycle(STAGE), 4); } else { - BCLConfigureFeature conf = getConfiguredFeature(blockState); - growFeature(conf, world, pos, blockState, random); + doGrowFeature(world, pos, blockState, random); } } - protected boolean growFeature( - BCLConfigureFeature feature, + protected boolean doGrowFeature( ServerLevel serverLevel, BlockPos blockPos, BlockState originalBlockState, @@ -112,7 +123,8 @@ public class FeatureSaplingBlock, FC extends FeatureConfig } else { BlockState emptyState = serverLevel.getFluidState(blockPos).createLegacyBlock(); serverLevel.setBlock(blockPos, emptyState, 4); - if (feature.placeInWorld(serverLevel, blockPos, randomSource)) { + ; + if (growFeature(serverLevel, blockPos, originalBlockState, randomSource)) { if (serverLevel.getBlockState(blockPos) == emptyState) { serverLevel.sendBlockUpdated(blockPos, originalBlockState, emptyState, 2); }