mirror of
https://github.com/SparklyPower/SparklyPaper.git
synced 2025-12-19 15:09:27 +00:00
Useful if you want to actually control what the player is moving, because VehicleMoveEvent does not let you cancel nor change the location. Also useful to detect BoatFly hacks.
43 lines
2.8 KiB
Diff
43 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MrPowerGamerBR <git@mrpowergamerbr.com>
|
|
Date: Sat, 4 Jan 2025 23:58:55 -0300
|
|
Subject: [PATCH] Add PlayerMoveControllableVehicleEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index af4bcc57a9ad361de5da8c62ef7928b728c033de..ac0af5da6646df1cfe66aead3f945a9f77efa5de 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -611,6 +611,31 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
|
ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", new Object[]{entity.getName().getString(), this.player.getName().getString(), Math.sqrt(d10)});
|
|
}
|
|
|
|
+ // SparklyPaper start - Add PlayerMoveControllableVehicleEvent
|
|
+ Player craftPlayer = this.getCraftPlayer();
|
|
+ org.bukkit.entity.Entity bukkitVehicle = entity.getBukkitEntity();
|
|
+ if (bukkitVehicle instanceof org.bukkit.entity.Vehicle) {
|
|
+ net.sparklypower.sparklypaper.event.player.PlayerMoveControllableVehicleEvent playerMoveControllableVehicleEvent = new net.sparklypower.sparklypaper.event.player.PlayerMoveControllableVehicleEvent(
|
|
+ craftPlayer,
|
|
+ (org.bukkit.entity.Vehicle) bukkitVehicle,
|
|
+ new org.bukkit.Location(craftPlayer.getWorld(), d0, d1, d2, f, f1),
|
|
+ new org.bukkit.Location(craftPlayer.getWorld(), d3, d4, d5, f, f1)
|
|
+ );
|
|
+ if (!playerMoveControllableVehicleEvent.callEvent()) {
|
|
+ // Cancelled, move back!
|
|
+ entity.absMoveTo(d0, d1, d2, f, f1);
|
|
+ this.player.absMoveTo(d0, d1, d2, this.player.getYRot(), this.player.getXRot()); // CraftBukkit
|
|
+ this.send(new ClientboundMoveVehiclePacket(entity));
|
|
+ return;
|
|
+ }
|
|
+ d3 = playerMoveControllableVehicleEvent.getTo().x();
|
|
+ d4 = playerMoveControllableVehicleEvent.getTo().y();
|
|
+ d5 = playerMoveControllableVehicleEvent.getTo().z();
|
|
+ f = playerMoveControllableVehicleEvent.getTo().getYaw();
|
|
+ f1 = playerMoveControllableVehicleEvent.getTo().getPitch();
|
|
+ }
|
|
+ // SparklyPaper end
|
|
+
|
|
entity.absMoveTo(d3, d4, d5, f, f1);
|
|
this.player.absMoveTo(d3, d4, d5, this.player.getYRot(), this.player.getXRot()); // CraftBukkit
|
|
|