diff options
Diffstat (limited to 'Spigot-API-Patches-Unmapped/0033-Add-handshake-event-to-allow-plugins-to-handle-clien.patch')
-rw-r--r-- | Spigot-API-Patches-Unmapped/0033-Add-handshake-event-to-allow-plugins-to-handle-clien.patch | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/Spigot-API-Patches-Unmapped/0033-Add-handshake-event-to-allow-plugins-to-handle-clien.patch b/Spigot-API-Patches-Unmapped/0033-Add-handshake-event-to-allow-plugins-to-handle-clien.patch new file mode 100644 index 0000000000..eb1703e485 --- /dev/null +++ b/Spigot-API-Patches-Unmapped/0033-Add-handshake-event-to-allow-plugins-to-handle-clien.patch @@ -0,0 +1,290 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: kashike <[email protected]> +Date: Wed, 13 Apr 2016 20:20:18 -0700 +Subject: [PATCH] Add handshake event to allow plugins to handle client + handshaking logic themselves + + +diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..a077962fa786a3291849abfa823c7f0ec4664fce +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +@@ -0,0 +1,277 @@ ++package com.destroystokyo.paper.event.player; ++ ++import net.kyori.adventure.text.Component; ++import net.kyori.adventure.text.format.NamedTextColor; ++import org.apache.commons.lang.Validate; ++import org.bukkit.Bukkit; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.Event; ++import org.bukkit.event.HandlerList; ++ ++import java.util.UUID; ++import org.jetbrains.annotations.NotNull; ++import org.jetbrains.annotations.Nullable; ++ ++/** ++ * This event is fired during a player handshake. ++ * ++ * <p>If there are no listeners listening to this event, the logic default ++ * to your server platform will be ran.</p> ++ * ++ * <p>WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS</p> ++ */ ++public class PlayerHandshakeEvent extends Event implements Cancellable { ++ ++ private static final HandlerList HANDLERS = new HandlerList(); ++ @NotNull private final String originalHandshake; ++ @NotNull private final String originalSocketAddressHostname; ++ private boolean cancelled; ++ @Nullable private String serverHostname; ++ @Nullable private String socketAddressHostname; ++ @Nullable private UUID uniqueId; ++ @Nullable private String propertiesJson; ++ private boolean failed; ++ private Component failMessage = Component.text("If you wish to use IP forwarding, please enable it in your BungeeCord config as well!", NamedTextColor.YELLOW); ++ ++ /** ++ * Creates a new {@link PlayerHandshakeEvent}. ++ * ++ * @param originalHandshake the original handshake string ++ * @param cancelled if this event is enabled ++ * ++ * @deprecated in favour of {@link PlayerHandshakeEvent(String, String, boolean)} ++ */ ++ @Deprecated ++ public PlayerHandshakeEvent(@NotNull String originalHandshake, boolean cancelled) { ++ this(originalHandshake, "127.0.0.1", cancelled); ++ } ++ ++ /** ++ * Creates a new {@link PlayerHandshakeEvent}. ++ * ++ * @param originalHandshake the original handshake string ++ * @param originalSocketAddressHostname the original socket address hostname ++ * @param cancelled if this event is enabled ++ */ ++ public PlayerHandshakeEvent(@NotNull String originalHandshake, @NotNull String originalSocketAddressHostname, boolean cancelled) { ++ super(true); ++ this.originalHandshake = originalHandshake; ++ this.originalSocketAddressHostname = originalSocketAddressHostname; ++ this.cancelled = cancelled; ++ } ++ ++ /** ++ * Determines if this event is cancelled. ++ * ++ * <p>When this event is cancelled, custom handshake logic will not ++ * be processed.</p> ++ * ++ * @return {@code true} if this event is cancelled, {@code false} otherwise ++ */ ++ @Override ++ public boolean isCancelled() { ++ return this.cancelled; ++ } ++ ++ /** ++ * Sets if this event is cancelled. ++ * ++ * <p>When this event is cancelled, custom handshake logic will not ++ * be processed.</p> ++ * ++ * @param cancelled {@code true} if this event is cancelled, {@code false} otherwise ++ */ ++ @Override ++ public void setCancelled(boolean cancelled) { ++ this.cancelled = cancelled; ++ } ++ ++ /** ++ * Gets the original handshake string. ++ * ++ * @return the original handshake string ++ */ ++ @NotNull ++ public String getOriginalHandshake() { ++ return this.originalHandshake; ++ } ++ ++ /** ++ * Gets the original socket address hostname. ++ * ++ * <p>This does not include the port.</p> ++ * <p>In cases where this event is manually fired and the plugin wasn't updated yet, the default is {@code "127.0.0.1"}.</p> ++ * ++ * @return the original socket address hostname ++ */ ++ @NotNull ++ public String getOriginalSocketAddressHostname() { ++ return this.originalSocketAddressHostname; ++ } ++ ++ /** ++ * Gets the server hostname string. ++ * ++ * <p>This should not include the port.</p> ++ * ++ * @return the server hostname string ++ */ ++ @Nullable ++ public String getServerHostname() { ++ return this.serverHostname; ++ } ++ ++ /** ++ * Sets the server hostname string. ++ * ++ * <p>This should not include the port.</p> ++ * ++ * @param serverHostname the server hostname string ++ */ ++ public void setServerHostname(@NotNull String serverHostname) { ++ this.serverHostname = serverHostname; ++ } ++ ++ /** ++ * Gets the socket address hostname string. ++ * ++ * <p>This should not include the port.</p> ++ * ++ * @return the socket address hostname string ++ */ ++ @Nullable ++ public String getSocketAddressHostname() { ++ return this.socketAddressHostname; ++ } ++ ++ /** ++ * Sets the socket address hostname string. ++ * ++ * <p>This should not include the port.</p> ++ * ++ * @param socketAddressHostname the socket address hostname string ++ */ ++ public void setSocketAddressHostname(@NotNull String socketAddressHostname) { ++ this.socketAddressHostname = socketAddressHostname; ++ } ++ ++ /** ++ * Gets the unique id. ++ * ++ * @return the unique id ++ */ ++ @Nullable ++ public UUID getUniqueId() { ++ return this.uniqueId; ++ } ++ ++ /** ++ * Sets the unique id. ++ * ++ * @param uniqueId the unique id ++ */ ++ public void setUniqueId(@NotNull UUID uniqueId) { ++ this.uniqueId = uniqueId; ++ } ++ ++ /** ++ * Gets the profile properties. ++ * ++ * <p>This should be a valid JSON string.</p> ++ * ++ * @return the profile properties, as JSON ++ */ ++ @Nullable ++ public String getPropertiesJson() { ++ return this.propertiesJson; ++ } ++ ++ /** ++ * Determines if authentication failed. ++ * ++ * <p>When {@code true}, the client connecting will be disconnected ++ * with the {@link #getFailMessage() fail message}.</p> ++ * ++ * @return {@code true} if authentication failed, {@code false} otherwise ++ */ ++ public boolean isFailed() { ++ return this.failed; ++ } ++ ++ /** ++ * Sets if authentication failed and the client should be disconnected. ++ * ++ * <p>When {@code true}, the client connecting will be disconnected ++ * with the {@link #getFailMessage() fail message}.</p> ++ * ++ * @param failed {@code true} if authentication failed, {@code false} otherwise ++ */ ++ public void setFailed(boolean failed) { ++ this.failed = failed; ++ } ++ ++ /** ++ * Sets the profile properties. ++ * ++ * <p>This should be a valid JSON string.</p> ++ * ++ * @param propertiesJson the profile properties, as JSON ++ */ ++ public void setPropertiesJson(@NotNull String propertiesJson) { ++ this.propertiesJson = propertiesJson; ++ } ++ ++ /** ++ * Gets the message to display to the client when authentication fails. ++ * ++ * @return the message to display to the client ++ */ ++ @NotNull ++ public Component failMessage() { ++ return this.failMessage; ++ } ++ ++ /** ++ * Sets the message to display to the client when authentication fails. ++ * ++ * @param failMessage the message to display to the client ++ */ ++ public void failMessage(@NotNull Component failMessage) { ++ this.failMessage = failMessage; ++ } ++ ++ /** ++ * Gets the message to display to the client when authentication fails. ++ * ++ * @return the message to display to the client ++ * @deprecated use {@link #failMessage()} ++ */ ++ @NotNull ++ @Deprecated ++ public String getFailMessage() { ++ return Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.failMessage()); ++ } ++ ++ /** ++ * Sets the message to display to the client when authentication fails. ++ * ++ * @param failMessage the message to display to the client ++ * @deprecated use {@link #failMessage(Component)} ++ */ ++ @Deprecated ++ public void setFailMessage(@NotNull String failMessage) { ++ Validate.notEmpty(failMessage, "fail message cannot be null or empty"); ++ this.failMessage(Bukkit.getUnsafe().legacyComponentSerializer().deserialize(failMessage)); ++ } ++ ++ @NotNull ++ @Override ++ public HandlerList getHandlers() { ++ return HANDLERS; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return HANDLERS; ++ } ++} |