diff --git a/Spigot-API-Patches/0089-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch b/Spigot-API-Patches/0089-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch new file mode 100644 index 0000000000..dba682e845 --- /dev/null +++ b/Spigot-API-Patches/0089-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch @@ -0,0 +1,55 @@ +From b4f2e1cd5828d6ef07b9e674d27f4b1c98d2d2c0 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Sun, 18 Mar 2018 11:43:30 -0400 +Subject: [PATCH] Ability to change PlayerProfile in AsyncPreLoginEvent + +This will allow you to change the players name or skin on login. + +diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +index 1d571889..0c16128e 100644 +--- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java ++++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +@@ -3,6 +3,8 @@ package org.bukkit.event.player; + import java.net.InetAddress; + import java.util.UUID; + ++import com.destroystokyo.paper.profile.PlayerProfile; ++import org.bukkit.Bukkit; + import org.bukkit.event.Event; + import org.bukkit.event.HandlerList; + +@@ -25,7 +27,31 @@ public class AsyncPlayerPreLoginEvent extends Event { + } + + public AsyncPlayerPreLoginEvent(final String name, final InetAddress ipAddress, final UUID uniqueId) { ++ // Paper start ++ this(name, ipAddress, uniqueId, Bukkit.createProfile(uniqueId, name)); ++ } ++ private PlayerProfile profile; ++ ++ /** ++ * Gets the PlayerProfile of the player logging in ++ * @return The Profile ++ */ ++ public PlayerProfile getPlayerProfile() { ++ return profile; ++ } ++ ++ /** ++ * Changes the PlayerProfile the player will login as ++ * @param profile The profile to use ++ */ ++ public void setPlayerProfile(PlayerProfile profile) { ++ this.profile = profile; ++ } ++ ++ public AsyncPlayerPreLoginEvent(final String name, final InetAddress ipAddress, final UUID uniqueId, PlayerProfile profile) { + super(true); ++ this.profile = profile; ++ // Paper end + this.result = Result.ALLOWED; + this.message = ""; + this.name = name; +-- +2.16.2 + diff --git a/Spigot-Server-Patches/0276-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch b/Spigot-Server-Patches/0276-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch new file mode 100644 index 0000000000..495dc5c41a --- /dev/null +++ b/Spigot-Server-Patches/0276-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch @@ -0,0 +1,48 @@ +From cccaac220a16d63ca4b3888c5288f36c97d3acdb Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Sun, 18 Mar 2018 11:45:57 -0400 +Subject: [PATCH] Ability to change PlayerProfile in AsyncPreLoginEvent + +This will allow you to change the players name or skin on login. + +diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java +index eaac25dc3..2842956bf 100644 +--- a/src/main/java/net/minecraft/server/LoginListener.java ++++ b/src/main/java/net/minecraft/server/LoginListener.java +@@ -1,5 +1,7 @@ + package net.minecraft.server; + ++import com.destroystokyo.paper.profile.CraftPlayerProfile; ++import com.destroystokyo.paper.profile.PlayerProfile; + import com.mojang.authlib.GameProfile; + import com.mojang.authlib.exceptions.AuthenticationUnavailableException; + import io.netty.channel.ChannelFuture; +@@ -23,6 +25,7 @@ import org.apache.logging.log4j.LogManager; + import org.apache.logging.log4j.Logger; + + // CraftBukkit start ++import org.bukkit.Bukkit; + import org.bukkit.craftbukkit.util.Waitable; + import org.bukkit.event.player.AsyncPlayerPreLoginEvent; + import org.bukkit.event.player.PlayerPreLoginEvent; +@@ -290,8 +293,16 @@ public class LoginListener implements PacketLoginInListener, ITickable { + java.util.UUID uniqueId = i.getId(); + final org.bukkit.craftbukkit.CraftServer server = LoginListener.this.server.server; + +- AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, uniqueId); ++ // Paper start ++ PlayerProfile profile = Bukkit.createProfile(uniqueId, playerName); ++ AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, uniqueId, profile); + server.getPluginManager().callEvent(asyncEvent); ++ profile = asyncEvent.getPlayerProfile(); ++ profile.complete(); ++ i = CraftPlayerProfile.asAuthlibCopy(profile); ++ playerName = i.getName(); ++ uniqueId = i.getId(); ++ // Paper end + + if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) { + final PlayerPreLoginEvent event = new PlayerPreLoginEvent(playerName, address, uniqueId); +-- +2.16.2 +