Implemented sounds into the block animateTick method. Implemented missing isMoonVisible method. Updated parameter names.
This commit is contained in:
@ -1,15 +1,19 @@
|
||||
package dev.micle.firefly_bush_backport.block;
|
||||
|
||||
import dev.micle.firefly_bush_backport.sound.ModSounds;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.BonemealableBlock;
|
||||
import net.minecraft.world.level.block.BushBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@ -20,28 +24,45 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock {
|
||||
private static final int FIREFLY_SPAWN_MAX_BRIGHTNESS_LEVEL = 13;
|
||||
private static final int FIREFLY_AMBIENT_SOUND_CHANCE_ONE_IN = 30;
|
||||
|
||||
public FireflyBushBlock(Properties pProperties) {
|
||||
super(pProperties);
|
||||
public FireflyBushBlock(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void animateTick(BlockState pState, Level pLevel, BlockPos pPos, RandomSource pRandom) {
|
||||
super.animateTick(pState, pLevel, pPos, pRandom);
|
||||
@ParametersAreNonnullByDefault
|
||||
public void animateTick(BlockState blockState, Level level, BlockPos blockPos, RandomSource randomSource) {
|
||||
if (randomSource.nextInt(30) == 0
|
||||
&& isMoonVisible(level)
|
||||
&& level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockPos.getX(), blockPos.getZ()) <= blockPos.getY()) {
|
||||
level.playLocalSound(blockPos, ModSounds.FIREFLY_BUSH_IDLE.get(), SoundSource.AMBIENT, 1.0F, 1.0F, false);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMoonVisible(Level level) {
|
||||
if (!level.dimensionType().natural()) {
|
||||
return false;
|
||||
} else {
|
||||
int i = (int) (level.getDayTime() % 24000L);
|
||||
return i >= 12600 && i <= 23400;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidBonemealTarget(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean pIsClient) {
|
||||
return hasSpreadableNeighbourPos(pLevel, pPos, pState);
|
||||
@ParametersAreNonnullByDefault
|
||||
public boolean isValidBonemealTarget(LevelReader level, BlockPos blockPos, BlockState blockState, boolean isClient) {
|
||||
return hasSpreadableNeighbourPos(level, blockPos, blockState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBonemealSuccess(Level pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) {
|
||||
@ParametersAreNonnullByDefault
|
||||
public boolean isBonemealSuccess(Level level, RandomSource randomSource, BlockPos blockPos, BlockState blockState) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void performBonemeal(ServerLevel pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) {
|
||||
findSpreadableNeighbourPos(pLevel, pPos, pState).ifPresent(x -> pLevel.setBlockAndUpdate(x, this.defaultBlockState()));
|
||||
@ParametersAreNonnullByDefault
|
||||
public void performBonemeal(ServerLevel level, RandomSource randomSource, BlockPos blockPos, BlockState blockState) {
|
||||
findSpreadableNeighbourPos(level, blockPos, blockState).ifPresent(x -> level.setBlockAndUpdate(x, this.defaultBlockState()));
|
||||
}
|
||||
|
||||
static boolean hasSpreadableNeighbourPos(LevelReader levelReader, BlockPos blockPos, BlockState blockState) {
|
||||
|
Reference in New Issue
Block a user