优化无线收发器操作方式

This commit is contained in:
GaLicn 2025-08-12 23:56:56 +08:00
parent 3d2e7b7165
commit f7e57d9dd8

View File

@ -16,6 +16,8 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import com.extendedae_plus.init.ModBlockEntities; import com.extendedae_plus.init.ModBlockEntities;
import net.minecraft.world.item.Items;
import net.minecraft.network.chat.Component;
public class WirelessTransceiverBlock extends Block implements EntityBlock { public class WirelessTransceiverBlock extends Block implements EntityBlock {
public WirelessTransceiverBlock(Properties props) { public WirelessTransceiverBlock(Properties props) {
@ -23,10 +25,29 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
} }
@Override @Override
public @Nullable BlockEntity newBlockEntity(BlockPos pos, BlockState state) { public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
return new WirelessTransceiverBlockEntity(pos, state); return new WirelessTransceiverBlockEntity(pos, state);
} }
@Override
public void attack(BlockState state, Level level, BlockPos pos, Player player) {
// 潜行左键减频-1 -10
if (!level.isClientSide && player.isShiftKeyDown()) {
BlockEntity be = level.getBlockEntity(pos);
if (be instanceof WirelessTransceiverBlockEntity te) {
int step = 1;
if (player.getMainHandItem().is(Items.REDSTONE_TORCH)) step = 10;
if (player.getMainHandItem().is(Items.STICK)) step = 10;
long f = te.getFrequency();
f -= step;
if (f < 0) f = 0;
te.setFrequency(f);
player.displayClientMessage(Component.literal("Freq: " + te.getFrequency()), true);
}
}
super.attack(state, level, pos, player);
}
@Override @Override
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
if (level.isClientSide) { if (level.isClientSide) {
@ -36,13 +57,24 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
if (be instanceof WirelessTransceiverBlockEntity te) { if (be instanceof WirelessTransceiverBlockEntity te) {
boolean sneaking = player.isShiftKeyDown(); boolean sneaking = player.isShiftKeyDown();
if (sneaking) { if (sneaking) {
// 简单演示Shift+右键 频率+1 // 频率调节主手 +1 +10副手 -1 -10
int step = 1;
// 手持红石火把加10手持木棍减10仅改变步长不改变加/减方向
if (player.getItemInHand(hand).is(Items.REDSTONE_TORCH)) step = 10;
if (player.getItemInHand(hand).is(Items.STICK)) step = 10;
long f = te.getFrequency(); long f = te.getFrequency();
te.setFrequency(f + 1); if (hand == InteractionHand.MAIN_HAND) {
player.displayClientMessage(net.minecraft.network.chat.Component.literal("Freq: " + te.getFrequency()), true); f += step;
} else {
f -= step;
if (f < 0) f = 0;
}
te.setFrequency(f);
player.displayClientMessage(Component.literal("Freq: " + te.getFrequency()), true);
} else { } else {
te.setMasterMode(!te.isMasterMode()); te.setMasterMode(!te.isMasterMode());
player.displayClientMessage(net.minecraft.network.chat.Component.literal(te.isMasterMode() ? "Mode: MASTER" : "Mode: SLAVE"), true); player.displayClientMessage(Component.literal(te.isMasterMode() ? "Mode: MASTER" : "Mode: SLAVE"), true);
} }
return InteractionResult.CONSUME; return InteractionResult.CONSUME;
} }