125 lines
3.6 KiB
Diff
125 lines
3.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Moulberry <james.jenour@protonmail.com>
|
|
Date: Wed, 26 Jul 2023 20:57:11 +0800
|
|
Subject: [PATCH] Add PlayerFailMoveEvent
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/event/player/PlayerFailMoveEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerFailMoveEvent.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..c7380874f99cd2aa28a24bbb0dd3375e8842dd0d
|
|
--- /dev/null
|
|
+++ b/src/main/java/io/papermc/paper/event/player/PlayerFailMoveEvent.java
|
|
@@ -0,0 +1,113 @@
|
|
+package io.papermc.paper.event.player;
|
|
+
|
|
+import org.bukkit.Location;
|
|
+import org.bukkit.entity.Player;
|
|
+import org.bukkit.event.HandlerList;
|
|
+import org.bukkit.event.player.PlayerEvent;
|
|
+import org.jetbrains.annotations.ApiStatus;
|
|
+import org.jspecify.annotations.NullMarked;
|
|
+
|
|
+/**
|
|
+ * Runs when a player attempts to move, but is prevented from doing so by the server
|
|
+ */
|
|
+@NullMarked
|
|
+public class PlayerFailMoveEvent extends PlayerEvent {
|
|
+
|
|
+ private static final HandlerList HANDLER_LIST = new HandlerList();
|
|
+
|
|
+ private final FailReason failReason;
|
|
+ private final Location from;
|
|
+ private final Location to;
|
|
+ private boolean allowed;
|
|
+ private boolean logWarning;
|
|
+
|
|
+ @ApiStatus.Internal
|
|
+ public PlayerFailMoveEvent(final Player player, final FailReason failReason, final boolean allowed, final boolean logWarning, final Location from, final Location to) {
|
|
+ super(player);
|
|
+ this.failReason = failReason;
|
|
+ this.allowed = allowed;
|
|
+ this.logWarning = logWarning;
|
|
+ this.from = from;
|
|
+ this.to = to;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the reason this movement was prevented by the server
|
|
+ *
|
|
+ * @return The reason the movement was prevented
|
|
+ */
|
|
+ public FailReason getFailReason() {
|
|
+ return this.failReason;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the location this player moved from
|
|
+ *
|
|
+ * @return Location the player moved from
|
|
+ */
|
|
+ public Location getFrom() {
|
|
+ return this.from.clone();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the location this player tried to move to
|
|
+ *
|
|
+ * @return Location the player tried to move to
|
|
+ */
|
|
+ public Location getTo() {
|
|
+ return this.to.clone();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets if the check should be bypassed, allowing the movement
|
|
+ *
|
|
+ * @return whether to bypass the check
|
|
+ */
|
|
+ public boolean isAllowed() {
|
|
+ return this.allowed;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Set if the check should be bypassed and the movement should be allowed
|
|
+ *
|
|
+ * @param allowed whether to bypass the check
|
|
+ */
|
|
+ public void setAllowed(final boolean allowed) {
|
|
+ this.allowed = allowed;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets if warnings will be printed to console. e.g. "Player123 moved too quickly!"
|
|
+ *
|
|
+ * @return whether to log warnings
|
|
+ */
|
|
+ public boolean getLogWarning() {
|
|
+ return this.logWarning;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Set if a warning is printed to console. e.g. "Player123 moved too quickly!"
|
|
+ *
|
|
+ * @param logWarning whether to log warnings
|
|
+ */
|
|
+ public void setLogWarning(final boolean logWarning) {
|
|
+ this.logWarning = logWarning;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public HandlerList getHandlers() {
|
|
+ return HANDLER_LIST;
|
|
+ }
|
|
+
|
|
+ public static HandlerList getHandlerList() {
|
|
+ return HANDLER_LIST;
|
|
+ }
|
|
+
|
|
+ public enum FailReason {
|
|
+ MOVED_INTO_UNLOADED_CHUNK, // Only fired if the world setting prevent-moving-into-unloaded-chunks is true
|
|
+ MOVED_TOO_QUICKLY,
|
|
+ MOVED_WRONGLY,
|
|
+ CLIPPED_INTO_BLOCK
|
|
+ }
|
|
+
|
|
+}
|