aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0180-Player.setPlayerProfile-API.patch
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2024-01-23 15:43:48 +0100
committerNassim Jahnke <[email protected]>2024-01-23 15:57:42 +0100
commite66037960b02c7b22bbed75318904c55a4177977 (patch)
treed0b197f87dbd7c547018af9defdb33691ddce30b /patches/server/0180-Player.setPlayerProfile-API.patch
parent52619e7a2162d0feb8f142227fe8ad34e21ce860 (diff)
downloadPaper-e66037960b02c7b22bbed75318904c55a4177977.tar.gz
Paper-e66037960b02c7b22bbed75318904c55a4177977.zip
[ci skip] Move some disruptive patches back
Diffstat (limited to 'patches/server/0180-Player.setPlayerProfile-API.patch')
-rw-r--r--patches/server/0180-Player.setPlayerProfile-API.patch239
1 files changed, 0 insertions, 239 deletions
diff --git a/patches/server/0180-Player.setPlayerProfile-API.patch b/patches/server/0180-Player.setPlayerProfile-API.patch
deleted file mode 100644
index 932856ea66..0000000000
--- a/patches/server/0180-Player.setPlayerProfile-API.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Aikar <[email protected]>
-Date: Sun, 18 Mar 2018 12:29:48 -0400
-Subject: [PATCH] Player.setPlayerProfile API
-
-This can be useful for changing name or skins after a player has logged in.
-
-== AT ==
-public-f net.minecraft.world.entity.player.Player gameProfile
-
-diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 9c0440a6e3768ca6300e128da7f1b11a96f10f91..c1c9076be05cd4b0b19d16aabbf0320c2531cca1 100644
---- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1468,7 +1468,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
- this.internalTeleport(dest.getX(), dest.getY(), dest.getZ(), dest.getYaw(), dest.getPitch(), Collections.emptySet());
- }
-
-- private void internalTeleport(double d0, double d1, double d2, float f, float f1, Set<RelativeMovement> set) {
-+ public void internalTeleport(double d0, double d1, double d2, float f, float f1, Set<RelativeMovement> set) { // Paper
- // CraftBukkit start
- if (Float.isNaN(f)) {
- f = 0;
-diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-index 58d97fce07ad8f786940c3f5e74e9aaeabe8d261..dd4e97ff4c8fb2d2f251713271f5ac493574fcd9 100644
---- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-@@ -295,11 +295,11 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
-
- // Paper start - Add more fields to AsyncPlayerPreLoginEvent
- final java.net.InetAddress rawAddress = ((java.net.InetSocketAddress) this.connection.channel.remoteAddress()).getAddress();
-- com.destroystokyo.paper.profile.PlayerProfile profile = org.bukkit.Bukkit.createProfile(uniqueId, playerName);
-+ com.destroystokyo.paper.profile.PlayerProfile profile = com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(gameprofile); // Paper - setPlayerProfileAPI
- AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, rawAddress, uniqueId, profile, this.connection.hostname);
- server.getPluginManager().callEvent(asyncEvent);
- profile = asyncEvent.getPlayerProfile();
-- profile.complete();
-+ profile.complete(true); // Paper - setPlayerProfileAPI
- gameprofile = com.destroystokyo.paper.profile.CraftPlayerProfile.asAuthlibCopy(profile);
- playerName = gameprofile.getName();
- uniqueId = gameprofile.getId();
-diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 6e0a21935f9d5f35cbce72b32e0a89bb636804e2..782cc6d910efe5bc5498d0083afab42fad6c4fa2 100644
---- a/src/main/java/net/minecraft/server/players/PlayerList.java
-+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -862,10 +862,16 @@ public abstract class PlayerList {
- }
-
- public void sendPlayerPermissionLevel(ServerPlayer player) {
-+ // Paper start - avoid recalculating permissions if possible
-+ this.sendPlayerPermissionLevel(player, true);
-+ }
-+
-+ public void sendPlayerPermissionLevel(ServerPlayer player, boolean recalculatePermissions) {
-+ // Paper end - avoid recalculating permissions if possible
- GameProfile gameprofile = player.getGameProfile();
- int i = this.server.getProfilePermissions(gameprofile);
-
-- this.sendPlayerPermissionLevel(player, i);
-+ this.sendPlayerPermissionLevel(player, i, recalculatePermissions); // Paper - avoid recalculating permissions if possible
- }
-
- public void tick() {
-diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-index 477d3245facb5ae59c786d4f696f64226cb540a6..e8490a58dd4d9bc39a5bb2f9fc109526e031b971 100644
---- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-@@ -81,8 +81,8 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
- }
-
- @Override
-- public PlayerProfile getPlayerProfile() {
-- return new CraftPlayerProfile(this.profile);
-+ public com.destroystokyo.paper.profile.PlayerProfile getPlayerProfile() { // Paper
-+ return new com.destroystokyo.paper.profile.CraftPlayerProfile(this.profile); // Paper
- }
-
- public Server getServer() {
-diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 8dd7e875d0e2ac3c10cce9b7045b5dbc742e9fb7..d296e1687fd596d6674e18b316603d08cd9057df 100644
---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -272,11 +272,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- return this.server.getPlayer(this.getUniqueId()) != null;
- }
-
-- @Override
-- public PlayerProfile getPlayerProfile() {
-- return new CraftPlayerProfile(this.getProfile());
-- }
--
- @Override
- public InetSocketAddress getAddress() {
- if (this.getHandle().connection == null) return null;
-@@ -1693,8 +1688,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
-
- private void untrackAndHideEntity(org.bukkit.entity.Entity entity) {
- // Remove this entity from the hidden player's EntityTrackerEntry
-- ChunkMap tracker = ((ServerLevel) this.getHandle().level()).getChunkSource().chunkMap;
-+ // Paper start
- Entity other = ((CraftEntity) entity).getHandle();
-+ unregisterEntity(other);
-+
-+ server.getPluginManager().callEvent(new PlayerHideEntityEvent(this, entity));
-+ }
-+ private void unregisterEntity(Entity other) {
-+ // Paper end
-+ ChunkMap tracker = ((ServerLevel) this.getHandle().level()).getChunkSource().chunkMap;
- ChunkMap.TrackedEntity entry = tracker.entityMap.get(other.getId());
- if (entry != null) {
- entry.removePlayer(this.getHandle());
-@@ -1707,8 +1709,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- this.getHandle().connection.send(new ClientboundPlayerInfoRemovePacket(List.of(otherPlayer.getUUID())));
- }
- }
--
-- this.server.getPluginManager().callEvent(new PlayerHideEntityEvent(this, entity));
- }
-
- void resetAndHideEntity(org.bukkit.entity.Entity entity) {
-@@ -1773,12 +1773,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- }
-
- private void trackAndShowEntity(org.bukkit.entity.Entity entity) {
-+ // Paper start - uuid override
-+ this.trackAndShowEntity(entity, null);
-+ }
-+ private void trackAndShowEntity(org.bukkit.entity.Entity entity, final @Nullable UUID uuidOverride) {
-+ // Paper end
- ChunkMap tracker = ((ServerLevel) this.getHandle().level()).getChunkSource().chunkMap;
- Entity other = ((CraftEntity) entity).getHandle();
-
- if (other instanceof ServerPlayer) {
- ServerPlayer otherPlayer = (ServerPlayer) other;
-+ // Paper start - uuid override
-+ UUID original = null;
-+ if (uuidOverride != null) {
-+ original = otherPlayer.getUUID();
-+ otherPlayer.setUUID(uuidOverride);
-+ }
-+ // Paper end
- this.getHandle().connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(otherPlayer)));
-+ if (original != null) otherPlayer.setUUID(original); // Paper - uuid override
- }
-
- ChunkMap.TrackedEntity entry = tracker.entityMap.get(other.getId());
-@@ -1788,6 +1801,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
-
- this.server.getPluginManager().callEvent(new PlayerShowEntityEvent(this, entity));
- }
-+ // Paper start
-+ @Override
-+ public void setPlayerProfile(com.destroystokyo.paper.profile.PlayerProfile profile) {
-+ ServerPlayer self = this.getHandle();
-+ GameProfile gameProfile = com.destroystokyo.paper.profile.CraftPlayerProfile.asAuthlibCopy(profile);
-+ if (!self.sentListPacket) {
-+ self.gameProfile = gameProfile;
-+ return;
-+ }
-+ List<ServerPlayer> players = this.server.getServer().getPlayerList().players;
-+ // First unregister the player for all players with the OLD game profile
-+ for (ServerPlayer player : players) {
-+ CraftPlayer bukkitPlayer = player.getBukkitEntity();
-+ if (bukkitPlayer.canSee(this)) {
-+ bukkitPlayer.unregisterEntity(self);
-+ }
-+ }
-+
-+ // Set the game profile here, we should have unregistered the entity via iterating all player entities above.
-+ self.gameProfile = gameProfile;
-+
-+ // Re-register the game profile for all players
-+ for (ServerPlayer player : players) {
-+ CraftPlayer bukkitPlayer = player.getBukkitEntity();
-+ if (bukkitPlayer.canSee(this)) {
-+ bukkitPlayer.trackAndShowEntity(self.getBukkitEntity(), gameProfile.getId());
-+ }
-+ }
-+
-+ // Refresh misc player things AFTER sending game profile
-+ this.refreshPlayer();
-+ }
-+ // Paper end
-
- void resetAndShowEntity(org.bukkit.entity.Entity entity) {
- // SPIGOT-7312: Can't show/hide self
-@@ -1799,6 +1845,34 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- this.trackAndShowEntity(entity);
- }
- }
-+ // Paper start
-+ public com.destroystokyo.paper.profile.PlayerProfile getPlayerProfile() {
-+ return new com.destroystokyo.paper.profile.CraftPlayerProfile(this).clone();
-+ }
-+
-+ private void refreshPlayer() {
-+ ServerPlayer handle = this.getHandle();
-+ Location loc = this.getLocation();
-+
-+ ServerGamePacketListenerImpl connection = handle.connection;
-+
-+ //Respawn the player then update their position and selected slot
-+ ServerLevel worldserver = handle.serverLevel();
-+ connection.send(new net.minecraft.network.protocol.game.ClientboundRespawnPacket(handle.createCommonSpawnInfo(worldserver), net.minecraft.network.protocol.game.ClientboundRespawnPacket.KEEP_ALL_DATA));
-+ handle.onUpdateAbilities();
-+ connection.internalTeleport(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch(), java.util.Collections.emptySet());
-+ net.minecraft.server.players.PlayerList playerList = handle.server.getPlayerList();
-+ playerList.sendPlayerPermissionLevel(handle, false);
-+ playerList.sendLevelInfo(handle, worldserver);
-+ playerList.sendAllPlayerInfo(handle);
-+
-+ // Resend their XP and effects because the respawn packet resets it
-+ connection.send(new net.minecraft.network.protocol.game.ClientboundSetExperiencePacket(handle.experienceProgress, handle.totalExperience, handle.experienceLevel));
-+ for (net.minecraft.world.effect.MobEffectInstance mobEffect : handle.getActiveEffects()) {
-+ connection.send(new net.minecraft.network.protocol.game.ClientboundUpdateMobEffectPacket(handle.getId(), mobEffect));
-+ }
-+ }
-+ // Paper end
-
- public void onEntityRemove(Entity entity) {
- this.invertedVisibilityEntities.remove(entity.getUUID());
-diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index 457860fa9babe542347608a3fc11ad5d75e5d135..6a661bbae8bc35a4c3b4bb7e86dd77a7575fdd97 100644
---- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -277,6 +277,13 @@ public class Commodore {
- return;
- }
-
-+ // Paper start - Rewrite plugins
-+ if ((owner.equals("org/bukkit/OfflinePlayer") || owner.equals("org/bukkit/entity/Player")) && name.equals("getPlayerProfile") && desc.equals("()Lorg/bukkit/profile/PlayerProfile;")) {
-+ super.visitMethodInsn(opcode, owner, name, "()Lcom/destroystokyo/paper/profile/PlayerProfile;", itf);
-+ return;
-+ }
-+ // Paper end
-+
- if (modern) {
- if (owner.equals("org/bukkit/Material") || (instantiatedMethodType != null && instantiatedMethodType.getDescriptor().startsWith("(Lorg/bukkit/Material;)"))) {
- switch (name) {