[Fixes] Tree growing would sometimes not destroy sapling (quiqueck/BetterNether#65)
This commit is contained in:
parent
5faf0ef134
commit
81b6a464fd
1 changed files with 31 additions and 2 deletions
|
@ -109,8 +109,37 @@ public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfig
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void advanceTree(ServerLevel world, BlockPos pos, BlockState blockState, RandomSource random) {
|
public void advanceTree(ServerLevel world, BlockPos pos, BlockState blockState, RandomSource random) {
|
||||||
BCLConfigureFeature<F, FC> conf = getConfiguredFeature(blockState);
|
if (blockState.getValue(STAGE) == 0) {
|
||||||
conf.placeInWorld(world, pos, random);
|
world.setBlock(pos, blockState.cycle(STAGE), 4);
|
||||||
|
} else {
|
||||||
|
BCLConfigureFeature<F, FC> conf = getConfiguredFeature(blockState);
|
||||||
|
growFeature(conf, world, pos, blockState, random);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean growFeature(
|
||||||
|
BCLConfigureFeature<F, FC> feature,
|
||||||
|
ServerLevel serverLevel,
|
||||||
|
BlockPos blockPos,
|
||||||
|
BlockState originalBlockState,
|
||||||
|
RandomSource randomSource
|
||||||
|
) {
|
||||||
|
if (feature == null) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
BlockState emptyState = serverLevel.getFluidState(blockPos).createLegacyBlock();
|
||||||
|
serverLevel.setBlock(blockPos, emptyState, 4);
|
||||||
|
if (feature.placeInWorld(serverLevel, blockPos, randomSource)) {
|
||||||
|
if (serverLevel.getBlockState(blockPos) == emptyState) {
|
||||||
|
serverLevel.sendBlockUpdated(blockPos, originalBlockState, emptyState, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
serverLevel.setBlock(blockPos, originalBlockState, 4);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue