This commit is contained in:
yrsegal@gmail.com 2022-05-25 18:50:19 -04:00
parent 41c5ceaa1c
commit 2c471d3a8b

View file

@ -17,10 +17,15 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public class BlockStoredPlayerImpetus extends BlockAbstractImpetus { public class BlockStoredPlayerImpetus extends BlockAbstractImpetus {
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
public BlockStoredPlayerImpetus(Properties p_49795_) { public BlockStoredPlayerImpetus(Properties p_49795_) {
super(p_49795_); super(p_49795_);
} }
@ -31,6 +36,12 @@ public class BlockStoredPlayerImpetus extends BlockAbstractImpetus {
return new BlockEntityStoredPlayerImpetus(pPos, pState); return new BlockEntityStoredPlayerImpetus(pPos, pState);
} }
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(POWERED);
}
@Override @Override
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
BlockHitResult pHit) { BlockHitResult pHit) {
@ -64,10 +75,14 @@ public class BlockStoredPlayerImpetus extends BlockAbstractImpetus {
boolean pIsMoving) { boolean pIsMoving) {
super.neighborChanged(pState, pLevel, pPos, pBlock, pFromPos, pIsMoving); super.neighborChanged(pState, pLevel, pPos, pBlock, pFromPos, pIsMoving);
if (!pLevel.isClientSide() if (!pLevel.isClientSide()) {
&& pLevel.hasNeighborSignal(pPos) boolean prevPowered = pState.getValue(POWERED);
&& !pState.getValue(ENERGIZED) boolean isPowered = pLevel.hasNeighborSignal(pPos);
&& pLevel.getBlockEntity(pPos) instanceof BlockEntityStoredPlayerImpetus tile) {
if (prevPowered != isPowered) {
pLevel.setBlockAndUpdate(pPos, pState.setValue(POWERED, isPowered));
if (isPowered && pLevel.getBlockEntity(pPos) instanceof BlockEntityStoredPlayerImpetus tile) {
var player = tile.getStoredPlayer(); var player = tile.getStoredPlayer();
if (player instanceof ServerPlayer splayer) { if (player instanceof ServerPlayer splayer) {
// phew // phew
@ -75,4 +90,6 @@ public class BlockStoredPlayerImpetus extends BlockAbstractImpetus {
} }
} }
} }
}
}
} }