允许弹射台二段跳任意骑乘实体()
This commit is contained in:
parent
72babcffe1
commit
e4874ceb12
3 changed files with 19 additions and 2 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue