WIP: Implemented isValidBonemealTarget method.
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
package dev.micle.firefly_bush_backport.block;
|
package dev.micle.firefly_bush_backport.block;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.util.RandomSource;
|
import net.minecraft.util.RandomSource;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
@ -9,6 +10,9 @@ import net.minecraft.world.level.block.BonemealableBlock;
|
|||||||
import net.minecraft.world.level.block.BushBlock;
|
import net.minecraft.world.level.block.BushBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class FireflyBushBlock extends BushBlock implements BonemealableBlock {
|
public class FireflyBushBlock extends BushBlock implements BonemealableBlock {
|
||||||
private static final double FIREFLY_CHANCE_PER_TICK = 0.7;
|
private static final double FIREFLY_CHANCE_PER_TICK = 0.7;
|
||||||
private static final double FIREFLY_HORIZONTAL_RANGE = 10.0;
|
private static final double FIREFLY_HORIZONTAL_RANGE = 10.0;
|
||||||
@ -27,7 +31,7 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidBonemealTarget(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean pIsClient) {
|
public boolean isValidBonemealTarget(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean pIsClient) {
|
||||||
return false;
|
return hasSpreadableNeighbourPos(pLevel, pPos, pState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -39,4 +43,18 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock {
|
|||||||
public void performBonemeal(ServerLevel pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) {
|
public void performBonemeal(ServerLevel pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean hasSpreadableNeighbourPos(LevelReader levelReader, BlockPos blockPos, BlockState blockState) {
|
||||||
|
return getSpreadableNeighbourPos(Direction.Plane.HORIZONTAL.stream().toList(), levelReader, blockPos, blockState).isPresent();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Optional<BlockPos> getSpreadableNeighbourPos(List<Direction> directions, LevelReader levelReader, BlockPos blockPos, BlockState blockState) {
|
||||||
|
for (Direction direction : directions) {
|
||||||
|
BlockPos blockPosDirection = blockPos.relative(direction);
|
||||||
|
if (levelReader.isEmptyBlock(blockPosDirection) && blockState.canSurvive(levelReader, blockPosDirection)) {
|
||||||
|
return Optional.of(blockPosDirection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user