aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0159-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0159-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch')
-rw-r--r--patches/api/0159-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/patches/api/0159-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/patches/api/0159-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
new file mode 100644
index 0000000000..28494eb9d4
--- /dev/null
+++ b/patches/api/0159-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
@@ -0,0 +1,62 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Zach Brown <[email protected]>
+Date: Wed, 2 Jan 2019 00:31:12 -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/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java
+index a9d63b1630b05b86a0396355fcfee261bab96293..d81701f0128bdeca180ff9957621f695c787f334 100644
+--- a/src/main/java/org/bukkit/OfflinePlayer.java
++++ b/src/main/java/org/bukkit/OfflinePlayer.java
+@@ -223,7 +223,9 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+ * UTC.
+ *
+ * @return Date of last log-in for this player, or 0
++ * @deprecated The API contract is ambiguous and the implementation may or may not return the correct value given this API ambiguity. It is instead recommended use {@link #getLastLogin()} or {@link #getLastSeen()} depending on your needs.
+ */
++ @Deprecated
+ public long getLastPlayed();
+
+ /**
+@@ -246,6 +248,30 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+ @Nullable
+ @Deprecated
+ public Location getBedSpawnLocation();
++ // Paper start
++ /**
++ * Gets the last date and time that this player logged into the server.
++ * <p>
++ * If the player has never played before, this will return 0. Otherwise,
++ * it will be the amount of milliseconds since midnight, January 1, 1970
++ * UTC.
++ *
++ * @return last login time
++ */
++ public long getLastLogin();
++
++ /**
++ * Gets the last date and time that this player was seen on the server.
++ * <p>
++ * If the player has never played before, this will return 0. If the
++ * player is currently online, this will return the current time.
++ * Otherwise it will be the amount of milliseconds since midnight,
++ * January 1, 1970 UTC.
++ *
++ * @return last seen time
++ */
++ public long getLastSeen();
++ // Paper end
+
+ /**
+ * Gets the Location where the player will spawn at, null if they