aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
diff options
context:
space:
mode:
authorFivePB (Xer) <[email protected]>2022-08-08 15:25:41 +0000
committerGitHub <[email protected]>2022-08-08 16:25:41 +0100
commitc7e118b39425bd3aa817ad9bb5ed40db8266d785 (patch)
tree3efd8cfd04875482509b031280ceb8cd6962a43a /patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
parent78b19f89a4658892c5ec79d5062f8c5b95ca149b (diff)
downloadPaper-c7e118b39425bd3aa817ad9bb5ed40db8266d785.tar.gz
Paper-c7e118b39425bd3aa817ad9bb5ed40db8266d785.zip
Update modern forwarding to v3 (#8219)
Diffstat (limited to 'patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch')
-rw-r--r--patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch164
1 files changed, 0 insertions, 164 deletions
diff --git a/patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
deleted file mode 100644
index d105707985..0000000000
--- a/patches/server/0293-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Zach Brown <[email protected]>
-Date: Wed, 2 Jan 2019 00:35:43 -0600
-Subject: [PATCH] Add APIs to replace OfflinePlayer#getLastPlayed
-
-Currently OfflinePlayer#getLastPlayed could more accurately be described
-as "OfflinePlayer#getLastTimeTheirDataWasSaved".
-
-The API doc says it should return the last time the server "witnessed"
-the player, whilst also saying it should return the last time they
-logged in. The current implementation does neither.
-
-Given this interesting contradiction in the API documentation and the
-current defacto implementation, I've elected to deprecate (with no
-intent to remove) and replace it with two new methods, clearly named and
-documented as to their purpose.
-
-diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index f95e8e53fc0438858921446f44279f747414b12f..eaf95c84896f71f36e250b3a07bb504230e4d85d 100644
---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
-+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -230,6 +230,7 @@ public class ServerPlayer extends Player {
- public int latency;
- public boolean wonGame;
- private int containerUpdateDelay; // Paper
-+ public long loginTime; // Paper
- // Paper start - cancellable death event
- public boolean queueHealthUpdatePacket = false;
- public net.minecraft.network.protocol.game.ClientboundSetHealthPacket queuedHealthUpdatePacket;
-diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 734a7b101e5ac9ac4ceb0ba3cb74b94bf2c18683..f6f086d1e5f08e5beae142685cfb682b8e5683f1 100644
---- a/src/main/java/net/minecraft/server/players/PlayerList.java
-+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -178,6 +178,7 @@ public abstract class PlayerList {
- }
-
- public void placeNewPlayer(Connection connection, ServerPlayer player) {
-+ player.loginTime = System.currentTimeMillis(); // Paper
- GameProfile gameprofile = player.getGameProfile();
- GameProfileCache usercache = this.server.getProfileCache();
- Optional<GameProfile> optional = usercache.get(gameprofile.getId());
-diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-index e7442952ef1f03969949014492a7ddc6d0796ba5..d7823d7dc88cfba6f6ac9dae220e03dea4a0bcdd 100644
---- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-@@ -250,6 +250,61 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
- return this.getData() != null;
- }
-
-+ // Paper start
-+ @Override
-+ public long getLastLogin() {
-+ Player player = getPlayer();
-+ if (player != null) return player.getLastLogin();
-+
-+ CompoundTag data = getPaperData();
-+
-+ if (data != null) {
-+ if (data.contains("LastLogin")) {
-+ return data.getLong("LastLogin");
-+ } else {
-+ // if the player file cannot provide accurate data, this is probably the closest we can approximate
-+ File file = getDataFile();
-+ return file.lastModified();
-+ }
-+ } else {
-+ return 0;
-+ }
-+ }
-+
-+ @Override
-+ public long getLastSeen() {
-+ Player player = getPlayer();
-+ if (player != null) return player.getLastSeen();
-+
-+ CompoundTag data = getPaperData();
-+
-+ if (data != null) {
-+ if (data.contains("LastSeen")) {
-+ return data.getLong("LastSeen");
-+ } else {
-+ // if the player file cannot provide accurate data, this is probably the closest we can approximate
-+ File file = getDataFile();
-+ return file.lastModified();
-+ }
-+ } else {
-+ return 0;
-+ }
-+ }
-+
-+ private CompoundTag getPaperData() {
-+ CompoundTag result = getData();
-+
-+ if (result != null) {
-+ if (!result.contains("Paper")) {
-+ result.put("Paper", new CompoundTag());
-+ }
-+ result = result.getCompound("Paper");
-+ }
-+
-+ return result;
-+ }
-+ // Paper end
-+
- @Override
- public Location getLastDeathLocation() {
- if (this.getData().contains("LastDeathLocation", 10)) {
-diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index df164a6fe8d53d34db93f4f1f2af6a9c1c98a7e8..500c1a317f58c1b24ae1b7cbcd101f1d327e3ae8 100644
---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -168,6 +168,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
- private String resourcePackHash;
- private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit
-+ private long lastSaveTime;
- // Paper end
-
- public CraftPlayer(CraftServer server, ServerPlayer entity) {
-@@ -1686,6 +1687,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- this.firstPlayed = firstPlayed;
- }
-
-+ // Paper start
-+ @Override
-+ public long getLastLogin() {
-+ return getHandle().loginTime;
-+ }
-+
-+ @Override
-+ public long getLastSeen() {
-+ return isOnline() ? System.currentTimeMillis() : this.lastSaveTime;
-+ }
-+ // Paper end
-+
- public void readExtraData(CompoundTag nbttagcompound) {
- this.hasPlayedBefore = true;
- if (nbttagcompound.contains("bukkit")) {
-@@ -1708,6 +1721,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- }
-
- public void setExtraData(CompoundTag nbttagcompound) {
-+ this.lastSaveTime = System.currentTimeMillis(); // Paper
-+
- if (!nbttagcompound.contains("bukkit")) {
- nbttagcompound.put("bukkit", new CompoundTag());
- }
-@@ -1722,6 +1737,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- data.putLong("firstPlayed", this.getFirstPlayed());
- data.putLong("lastPlayed", System.currentTimeMillis());
- data.putString("lastKnownName", handle.getScoreboardName());
-+
-+ // Paper start - persist for use in offline save data
-+ if (!nbttagcompound.contains("Paper")) {
-+ nbttagcompound.put("Paper", new CompoundTag());
-+ }
-+
-+ CompoundTag paper = nbttagcompound.getCompound("Paper");
-+ paper.putLong("LastLogin", handle.loginTime);
-+ paper.putLong("LastSeen", System.currentTimeMillis());
-+ // Paper end
- }
-
- @Override