mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 06:24:06 +01:00
e4d10a6d67
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 122289ff Add FaceAttachable interface to handle Grindstone facing in common with Switches a6db750e SPIGOT-5647: ZombieVillager entity should have getVillagerType() CraftBukkit Changes:bbe3d58e
SPIGOT-5650: Lectern.setPage(int) causes a NullPointerException3075579f
Add FaceAttachable interface to handle Grindstone facing in common with Switches95bd4238
SPIGOT-5647: ZombieVillager entity should have getVillagerType()4d975ac3
SPIGOT-5617: setBlockData does not work when NotPlayEvent is called by redstone current
59 lines
3.1 KiB
Diff
59 lines
3.1 KiB
Diff
From c2abf57d9f2f352fdb91ac63edf5966985e3cc6d Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Thu, 28 Sep 2017 17:21:44 -0400
|
|
Subject: [PATCH] Add PlayerJumpEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
index 046ef418f8..b0651dcfbf 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -58,6 +58,8 @@ import org.bukkit.inventory.CraftingInventory;
|
|
import org.bukkit.inventory.EquipmentSlot;
|
|
import org.bukkit.inventory.InventoryView;
|
|
import org.bukkit.util.NumberConversions;
|
|
+import com.destroystokyo.paper.event.player.IllegalPacketEvent; // Paper
|
|
+import com.destroystokyo.paper.event.player.PlayerJumpEvent; // Paper
|
|
import co.aikar.timings.MinecraftTimings; // Paper
|
|
// CraftBukkit end
|
|
|
|
@@ -925,7 +927,34 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
}
|
|
|
|
if (this.player.onGround && !packetplayinflying.b() && d8 > 0.0D) {
|
|
- this.player.jump();
|
|
+ // Paper start - Add player jump event
|
|
+ Player player = this.getPlayer();
|
|
+ Location from = new Location(player.getWorld(), lastPosX, lastPosY, lastPosZ, lastYaw, lastPitch); // Get the Players previous Event location.
|
|
+ Location to = player.getLocation().clone(); // Start off the To location as the Players current location.
|
|
+
|
|
+ // If the packet contains movement information then we update the To location with the correct XYZ.
|
|
+ if (packetplayinflying.hasPos) {
|
|
+ to.setX(packetplayinflying.x);
|
|
+ to.setY(packetplayinflying.y);
|
|
+ to.setZ(packetplayinflying.z);
|
|
+ }
|
|
+
|
|
+ // If the packet contains look information then we update the To location with the correct Yaw & Pitch.
|
|
+ if (packetplayinflying.hasLook) {
|
|
+ to.setYaw(packetplayinflying.yaw);
|
|
+ to.setPitch(packetplayinflying.pitch);
|
|
+ }
|
|
+
|
|
+ PlayerJumpEvent event = new PlayerJumpEvent(player, from, to);
|
|
+
|
|
+ if (event.callEvent()) {
|
|
+ this.player.jump();
|
|
+ } else {
|
|
+ from = event.getFrom();
|
|
+ this.internalTeleport(from.getX(), from.getY(), from.getZ(), from.getYaw(), from.getPitch(), Collections.emptySet());
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
this.player.move(EnumMoveType.PLAYER, new Vec3D(d7, d8, d9));
|
|
--
|
|
2.25.1
|
|
|