Code/net/minecraft/world/level/block/BeaconBlock.java

56 lines
2.1 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.world.level.block;
import com.mojang.serialization.MapCodec;
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
import net.minecraft.stats.Stats;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BeaconBlockEntity;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
public class BeaconBlock extends BaseEntityBlock implements BeaconBeamBlock {
public static final MapCodec<BeaconBlock> CODEC = simpleCodec(BeaconBlock::new);
@Override
public MapCodec<BeaconBlock> codec() {
return CODEC;
}
public BeaconBlock(BlockBehaviour.Properties p_49421_) {
super(p_49421_);
}
@Override
public DyeColor getColor() {
return DyeColor.WHITE;
}
@Override
public BlockEntity newBlockEntity(BlockPos p_152164_, BlockState p_152165_) {
return new BeaconBlockEntity(p_152164_, p_152165_);
}
@Nullable
@Override
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level p_152160_, BlockState p_152161_, BlockEntityType<T> p_152162_) {
return createTickerHelper(p_152162_, BlockEntityType.BEACON, BeaconBlockEntity::tick);
}
@Override
protected InteractionResult useWithoutItem(BlockState p_335352_, Level p_329169_, BlockPos p_333104_, Player p_330505_, BlockHitResult p_335231_) {
if (!p_329169_.isClientSide && p_329169_.getBlockEntity(p_333104_) instanceof BeaconBlockEntity beaconblockentity) {
p_330505_.openMenu(beaconblockentity);
p_330505_.awardStat(Stats.INTERACT_WITH_BEACON);
}
return InteractionResult.SUCCESS;
}
}