package net.minecraft.world.level.block; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.stats.Stat; import net.minecraft.stats.Stats; import net.minecraft.util.Mth; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.ChestBlockEntity; import net.minecraft.world.level.block.entity.TrappedChestBlockEntity; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; public class TrappedChestBlock extends ChestBlock { public static final MapCodec CODEC = simpleCodec(TrappedChestBlock::new); @Override public MapCodec codec() { return CODEC; } public TrappedChestBlock(BlockBehaviour.Properties properties) { super(() -> BlockEntityType.TRAPPED_CHEST, properties); } @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new TrappedChestBlockEntity(pos, state); } @Override protected Stat getOpenChestStat() { return Stats.CUSTOM.get(Stats.TRIGGER_TRAPPED_CHEST); } @Override protected boolean isSignalSource(BlockState state) { return true; } @Override protected int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { return Mth.clamp(ChestBlockEntity.getOpenCount(level, pos), 0, 15); } @Override protected int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { return direction == Direction.UP ? state.getSignal(level, pos, direction) : 0; } }