允许弹射台二段跳任意骑乘实体()

This commit is contained in:
Light_Quanta 2025-06-03 00:34:23 +08:00
parent 72babcffe1
commit e4874ceb12
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
3 changed files with 19 additions and 2 deletions

View file

@ -126,6 +126,12 @@ public class JumpPadBlock extends Block {
level.playLocalSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.JUMP.get(), SoundSource.BLOCKS, 1, 1, false); level.playLocalSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.JUMP.get(), SoundSource.BLOCKS, 1, 1, false);
} }
// 谁说载具就不能二段跳了
entity.passengers.stream()
.filter(e -> e instanceof Player player && player.level().isClientSide)
.findFirst()
.ifPresent(player -> Mod.queueClientWork(2, () -> ClientEventHandler.canDoubleJump = true));
if (entity instanceof Player player && player.level().isClientSide) { if (entity instanceof Player player && player.level().isClientSide) {
Mod.queueClientWork(2, () -> ClientEventHandler.canDoubleJump = true); Mod.queueClientWork(2, () -> ClientEventHandler.canDoubleJump = true);
} }

View file

@ -28,7 +28,7 @@ public class NetworkRegistry {
registrar.playToServer(LaserShootMessage.TYPE, LaserShootMessage.STREAM_CODEC, LaserShootMessage::handler); registrar.playToServer(LaserShootMessage.TYPE, LaserShootMessage.STREAM_CODEC, LaserShootMessage::handler);
registrar.playToServer(ShootMessage.TYPE, ShootMessage.STREAM_CODEC, ShootMessage::handler); registrar.playToServer(ShootMessage.TYPE, ShootMessage.STREAM_CODEC, ShootMessage::handler);
registrar.playToServer(DoubleJumpMessage.TYPE, DoubleJumpMessage.STREAM_CODEC, DoubleJumpMessage::handler); registrar.playToServer(DoubleJumpMessage.TYPE, DoubleJumpMessage.STREAM_CODEC, (message, context) -> DoubleJumpMessage.handler(context));
registrar.playToServer(VehicleMovementMessage.TYPE, VehicleMovementMessage.STREAM_CODEC, VehicleMovementMessage::handler); registrar.playToServer(VehicleMovementMessage.TYPE, VehicleMovementMessage.STREAM_CODEC, VehicleMovementMessage::handler);
registrar.playToServer(MeleeAttackMessage.TYPE, MeleeAttackMessage.STREAM_CODEC, MeleeAttackMessage::handler); registrar.playToServer(MeleeAttackMessage.TYPE, MeleeAttackMessage.STREAM_CODEC, MeleeAttackMessage::handler);
registrar.playToServer(LungeMineAttackMessage.TYPE, LungeMineAttackMessage.STREAM_CODEC, LungeMineAttackMessage::handler); registrar.playToServer(LungeMineAttackMessage.TYPE, LungeMineAttackMessage.STREAM_CODEC, LungeMineAttackMessage::handler);

View file

@ -9,7 +9,9 @@ import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;
import net.neoforged.neoforge.network.handling.IPayloadContext; import net.neoforged.neoforge.network.handling.IPayloadContext;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -22,7 +24,7 @@ public record DoubleJumpMessage(int empty) implements CustomPacketPayload {
DoubleJumpMessage::new DoubleJumpMessage::new
); );
public static void handler(final DoubleJumpMessage message, final IPayloadContext context) { public static void handler(final IPayloadContext context) {
ServerPlayer player = (ServerPlayer) context.player(); ServerPlayer player = (ServerPlayer) context.player();
Level level = player.level(); Level level = player.level();
@ -31,6 +33,15 @@ public record DoubleJumpMessage(int empty) implements CustomPacketPayload {
double z = player.getZ(); double z = player.getZ();
level.playSound(null, BlockPos.containing(x, y, z), ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1); level.playSound(null, BlockPos.containing(x, y, z), ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1);
Entity vehicle = player;
while (vehicle.getVehicle() != null) {
vehicle = vehicle.getVehicle();
}
if (vehicle != player) {
vehicle.setDeltaMovement(new Vec3(vehicle.getLookAngle().x, 0.8, vehicle.getLookAngle().z));
}
} }
@Override @Override