Restore 0129-Optimize-World.isLoaded-BlockPosition-Z.patch
This commit is contained in:
parent
16071c7e1a
commit
c47cf32c7c
290 changed files with 1073 additions and 1072 deletions
142
Spigot-Server-Patches/0206-Player.setPlayerProfile-API.patch
Normal file
142
Spigot-Server-Patches/0206-Player.setPlayerProfile-API.patch
Normal file
|
@ -0,0 +1,142 @@
|
|||
From 3536545d96acde2dd82d5b6a3e0c9c5045a0026a Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
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.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
index eb8f3833ec..205a842ee6 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
@@ -66,7 +66,7 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
protected int bO;
|
||||
protected final float bP = 0.02F;
|
||||
private int bS;
|
||||
- private final GameProfile bT;
|
||||
+ private GameProfile bT; public final void setProfile(final GameProfile profile) { this.bT = profile; } // Paper - OBFHELPER
|
||||
private ItemStack bV;
|
||||
private final ItemCooldown bW;
|
||||
@Nullable
|
||||
diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java
|
||||
index 0614976b86..a985ae7ba0 100644
|
||||
--- a/src/main/java/net/minecraft/server/LoginListener.java
|
||||
+++ b/src/main/java/net/minecraft/server/LoginListener.java
|
||||
@@ -37,7 +37,7 @@ public class LoginListener implements PacketLoginInListener {
|
||||
public final NetworkManager networkManager;
|
||||
private LoginListener.EnumProtocolState g;
|
||||
private int h;
|
||||
- private GameProfile i;
|
||||
+ private GameProfile i; private void setGameProfile(final GameProfile profile) { this.i = profile; } private GameProfile getGameProfile() { return this.i; } // Paper - OBFHELPER
|
||||
private final String j;
|
||||
private SecretKey loginKey;
|
||||
private EntityPlayer l;
|
||||
@@ -291,12 +291,12 @@ public class LoginListener implements PacketLoginInListener {
|
||||
final org.bukkit.craftbukkit.CraftServer server = LoginListener.this.server.server;
|
||||
|
||||
// Paper start
|
||||
- PlayerProfile profile = Bukkit.createProfile(uniqueId, playerName);
|
||||
+ PlayerProfile profile = CraftPlayerProfile.asBukkitMirror(getGameProfile());
|
||||
AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, uniqueId, profile);
|
||||
server.getPluginManager().callEvent(asyncEvent);
|
||||
profile = asyncEvent.getPlayerProfile();
|
||||
- profile.complete();
|
||||
- i = CraftPlayerProfile.asAuthlibCopy(profile);
|
||||
+ profile.complete(true);
|
||||
+ setGameProfile(CraftPlayerProfile.asAuthlib(profile));
|
||||
playerName = i.getName();
|
||||
uniqueId = i.getId();
|
||||
// Paper end
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 6bdee24f84..96b1eec916 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.destroystokyo.paper.Title;
|
||||
+import com.destroystokyo.paper.profile.CraftPlayerProfile;
|
||||
+import com.destroystokyo.paper.profile.PlayerProfile;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.io.BaseEncoding;
|
||||
@@ -1185,8 +1187,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
hiddenPlayers.put(player.getUniqueId(), hidingPlugins);
|
||||
|
||||
// Remove this player from the hidden player's EntityTrackerEntry
|
||||
- PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
+ // Paper start
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
+ unregisterPlayer(other);
|
||||
+ }
|
||||
+ private void unregisterPlayer(EntityPlayer other) {
|
||||
+ PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
+ // Paper end
|
||||
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
|
||||
if (entry != null) {
|
||||
entry.clear(getHandle());
|
||||
@@ -1227,8 +1234,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
hiddenPlayers.remove(player.getUniqueId());
|
||||
|
||||
- PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
+ // Paper start
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
+ registerPlayer(other);
|
||||
+ }
|
||||
+ private void registerPlayer(EntityPlayer other) {
|
||||
+ PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
+ // Paper end
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, other));
|
||||
|
||||
@@ -1237,6 +1249,46 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
entry.updatePlayer(getHandle());
|
||||
}
|
||||
}
|
||||
+ // Paper start
|
||||
+ private void reregisterPlayer(EntityPlayer player) {
|
||||
+ if (!hiddenPlayers.containsKey(player.getUniqueID())) {
|
||||
+ unregisterPlayer(player);
|
||||
+ registerPlayer(player);
|
||||
+ }
|
||||
+ }
|
||||
+ public void setPlayerProfile(PlayerProfile profile) {
|
||||
+ EntityPlayer self = getHandle();
|
||||
+ self.setProfile(CraftPlayerProfile.asAuthlibCopy(profile));
|
||||
+ List<EntityPlayer> players = server.getServer().getPlayerList().players;
|
||||
+ for (EntityPlayer player : players) {
|
||||
+ player.getBukkitEntity().reregisterPlayer(self);
|
||||
+ }
|
||||
+ refreshPlayer();
|
||||
+ }
|
||||
+ public PlayerProfile getPlayerProfile() {
|
||||
+ return new CraftPlayerProfile(this).clone();
|
||||
+ }
|
||||
+
|
||||
+ private void refreshPlayer() {
|
||||
+ EntityPlayer handle = getHandle();
|
||||
+
|
||||
+ Location loc = getLocation();
|
||||
+
|
||||
+ PlayerConnection connection = handle.playerConnection;
|
||||
+ reregisterPlayer(handle);
|
||||
+
|
||||
+ //Respawn the player then update their position and selected slot
|
||||
+ connection.sendPacket(new net.minecraft.server.PacketPlayOutRespawn(handle.dimension, net.minecraft.server.WorldData.c(handle.world.getWorldData().getSeed()), handle.world.getWorldData().getType(), handle.playerInteractManager.getGameMode()));
|
||||
+ handle.updateAbilities();
|
||||
+ connection.sendPacket(new net.minecraft.server.PacketPlayOutPosition(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch(), new HashSet<>(), 0));
|
||||
+ net.minecraft.server.MinecraftServer.getServer().getPlayerList().updateClient(handle);
|
||||
+
|
||||
+ if (this.isOp()) {
|
||||
+ this.setOp(false);
|
||||
+ this.setOp(true);
|
||||
+ }
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
public void removeDisconnectingPlayer(Player player) {
|
||||
hiddenPlayers.remove(player.getUniqueId());
|
||||
--
|
||||
2.24.1
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue