papermc/Spigot-API-Patches/0021-Complete-resource-pack-API.patch

124 lines
4.9 KiB
Diff
Raw Normal View History

From 984cee00d239d54cbff29eb607aee7ec665bc07e Mon Sep 17 00:00:00 2001
2016-03-09 06:23:59 +00:00
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sat, 4 Apr 2015 22:59:54 -0400
Subject: [PATCH] Complete resource pack API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 2017a51d..307e5568 100644
2016-03-09 06:23:59 +00:00
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -1225,7 +1225,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
2016-03-09 06:23:59 +00:00
* @throws IllegalArgumentException Thrown if the URL is null.
* @throws IllegalArgumentException Thrown if the URL is too long. The
* length restriction is an implementation specific arbitrary value.
+ * @deprecated use {@link #setResourcePack(String, String)}
*/
+ @Deprecated // Paper
public void setResourcePack(@NotNull String url);
2016-03-09 06:23:59 +00:00
/**
@@ -1663,6 +1665,62 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
2016-03-09 06:23:59 +00:00
*/
public void openBook(@NotNull ItemStack book);
2016-03-09 06:23:59 +00:00
+ // Paper start
+ /**
+ * Request that the player's client download and switch resource packs.
+ * <p>
+ * The player's client will download the new resource pack asynchronously
+ * in the background, and will automatically switch to it once the
+ * download is complete. If the client has downloaded and cached the same
+ * resource pack in the past, it will perform a quick timestamp check
+ * over the network to determine if the resource pack has changed and
+ * needs to be downloaded again. When this request is sent for the very
+ * first time from a given server, the client will first display a
+ * confirmation GUI to the player before proceeding with the download.
+ * <p>
+ * Notes:
+ * <ul>
+ * <li>Players can disable server resources on their client, in which
+ * case this method will have no affect on them.
+ * <li>There is no concept of resetting resource packs back to default
+ * within Minecraft, so players will have to relog to do so.
+ * </ul>
+ *
+ * @param url The URL from which the client will download the resource
+ * pack. The string must contain only US-ASCII characters and should
+ * be encoded as per RFC 1738.
+ * @param hash A 40 character hexadecimal and lowercase SHA-1 digest of
+ * the resource pack file.
+ * @throws IllegalArgumentException Thrown if the URL is null.
+ * @throws IllegalArgumentException Thrown if the URL is too long. The
+ * length restriction is an implementation specific arbitrary value.
+ */
+ void setResourcePack(@NotNull String url, @NotNull String hash);
2016-03-09 06:23:59 +00:00
+
+ /**
+ * @return the most recent resource pack status received from the player,
+ * or null if no status has ever been received from this player.
+ */
+ @Nullable
2016-03-09 06:23:59 +00:00
+ org.bukkit.event.player.PlayerResourcePackStatusEvent.Status getResourcePackStatus();
+
+ /**
+ * @return the most recent resource pack hash received from the player,
+ * or null if no hash has ever been received from this player.
2018-10-29 13:02:56 +00:00
+ *
+ * @deprecated This is no longer sent from the client and will always be null
2016-03-09 06:23:59 +00:00
+ */
+ @Nullable
2018-10-29 13:02:56 +00:00
+ @Deprecated
2016-03-09 06:23:59 +00:00
+ String getResourcePackHash();
+
+ /**
+ * @return true if the last resource pack status received from this player
+ * was {@link org.bukkit.event.player.PlayerResourcePackStatusEvent.Status#SUCCESSFULLY_LOADED}
+ */
+ boolean hasResourcePack();
+ // Paper end
+
// Spigot start
public class Spigot extends Entity.Spigot
{
diff --git a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
index b9819565..4c2102a1 100644
2016-03-09 06:23:59 +00:00
--- a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
+++ b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
@@ -11,13 +11,32 @@ import org.jetbrains.annotations.NotNull;
2016-03-09 06:23:59 +00:00
public class PlayerResourcePackStatusEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();
+ @Deprecated
2016-03-09 06:23:59 +00:00
+ private final String hash; // Paper
private final Status status;
public PlayerResourcePackStatusEvent(@NotNull final Player who, @NotNull Status resourcePackStatus) {
2016-03-09 06:23:59 +00:00
super(who);
+ this.hash = null; // Paper
this.status = resourcePackStatus;
}
+ @Deprecated // Paper
2016-03-09 06:23:59 +00:00
+ public PlayerResourcePackStatusEvent(final Player who, Status resourcePackStatus, String hash) {
+ super(who);
+ this.hash = hash; // Paper
+ this.status = resourcePackStatus;
+ }
+
+ @Deprecated
+ /**
+ * @deprecated Hash does not seem to ever be set
+ */
2016-03-09 06:23:59 +00:00
+ public String getHash() {
+ return this.hash;
+ }
+ // Paper end
+
/**
* Gets the status of this pack.
*
--
2.25.0.windows.1
2016-03-09 06:23:59 +00:00