[Change] Removed Dependency on BCLConfiguredFeature for growing saplings
This commit is contained in:
parent
60237175ff
commit
dfd3621af9
1 changed files with 21 additions and 9 deletions
|
@ -1,7 +1,6 @@
|
||||||
package org.betterx.bclib.blocks;
|
package org.betterx.bclib.blocks;
|
||||||
|
|
||||||
import org.betterx.bclib.api.v3.datagen.DropSelfLootProvider;
|
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.behaviours.BehaviourBuilders;
|
||||||
import org.betterx.bclib.client.models.BasePatterns;
|
import org.betterx.bclib.client.models.BasePatterns;
|
||||||
import org.betterx.bclib.client.models.ModelsHelper;
|
import org.betterx.bclib.client.models.ModelsHelper;
|
||||||
|
@ -34,13 +33,19 @@ import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfiguration> extends SaplingBlock implements RenderLayerProvider, BlockModelProvider, DropSelfLootProvider<FeatureSaplingBlock> {
|
public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfiguration> extends SaplingBlock implements RenderLayerProvider, BlockModelProvider, DropSelfLootProvider<FeatureSaplingBlock> {
|
||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface FeatureSupplier<F extends Feature<FC>, FC extends FeatureConfiguration> {
|
public interface FeatureSupplier<F extends Feature<FC>, FC extends FeatureConfiguration> {
|
||||||
BCLConfigureFeature<F, FC> 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);
|
private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12);
|
||||||
|
@ -68,8 +73,16 @@ public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfig
|
||||||
this.feature = featureSupplier;
|
this.feature = featureSupplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected BCLConfigureFeature<F, FC> getConfiguredFeature(BlockState state) {
|
protected boolean growFeature(
|
||||||
return feature != null ? feature.get(state) : null;
|
@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
|
@Override
|
||||||
|
@ -95,13 +108,11 @@ public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfig
|
||||||
if (blockState.getValue(STAGE) == 0) {
|
if (blockState.getValue(STAGE) == 0) {
|
||||||
world.setBlock(pos, blockState.cycle(STAGE), 4);
|
world.setBlock(pos, blockState.cycle(STAGE), 4);
|
||||||
} else {
|
} else {
|
||||||
BCLConfigureFeature<F, FC> conf = getConfiguredFeature(blockState);
|
doGrowFeature(world, pos, blockState, random);
|
||||||
growFeature(conf, world, pos, blockState, random);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean growFeature(
|
protected boolean doGrowFeature(
|
||||||
BCLConfigureFeature<F, FC> feature,
|
|
||||||
ServerLevel serverLevel,
|
ServerLevel serverLevel,
|
||||||
BlockPos blockPos,
|
BlockPos blockPos,
|
||||||
BlockState originalBlockState,
|
BlockState originalBlockState,
|
||||||
|
@ -112,7 +123,8 @@ public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfig
|
||||||
} else {
|
} else {
|
||||||
BlockState emptyState = serverLevel.getFluidState(blockPos).createLegacyBlock();
|
BlockState emptyState = serverLevel.getFluidState(blockPos).createLegacyBlock();
|
||||||
serverLevel.setBlock(blockPos, emptyState, 4);
|
serverLevel.setBlock(blockPos, emptyState, 4);
|
||||||
if (feature.placeInWorld(serverLevel, blockPos, randomSource)) {
|
;
|
||||||
|
if (growFeature(serverLevel, blockPos, originalBlockState, randomSource)) {
|
||||||
if (serverLevel.getBlockState(blockPos) == emptyState) {
|
if (serverLevel.getBlockState(blockPos) == emptyState) {
|
||||||
serverLevel.sendBlockUpdated(blockPos, originalBlockState, emptyState, 2);
|
serverLevel.sendBlockUpdated(blockPos, originalBlockState, emptyState, 2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue