From ba3e9b43b2db4869061a50014dc01501f5a24fd3 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Tue, 14 Feb 2017 14:00:30 +0100 Subject: SPIGOT-2152: Method to set resource pack + hash. --- src/main/java/org/bukkit/entity/Player.java | 70 ++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java index 9e359a63..2ae9f6c2 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -18,6 +18,7 @@ import org.bukkit.Statistic; import org.bukkit.WeatherType; import org.bukkit.command.CommandSender; import org.bukkit.conversations.Conversable; +import org.bukkit.event.player.PlayerResourcePackStatusEvent; import org.bukkit.map.MapView; import org.bukkit.plugin.messaging.PluginMessageRecipient; import org.bukkit.scoreboard.Scoreboard; @@ -968,18 +969,23 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline * The player's client will download the new texture 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 - * texture pack in the past, it will perform a quick timestamp check over - * the network to determine if the texture 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. + * texture pack in the past, it will perform a file size check against + * the response content to determine if the texture 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. *

* Notes: *

* * @param url The URL from which the client will download the texture @@ -999,8 +1005,8 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline * 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 + * resource pack in the past, it will perform a file size check against + * the response content 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. @@ -1008,9 +1014,14 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline * Notes: * * * @param url The URL from which the client will download the resource @@ -1022,6 +1033,43 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline */ public void setResourcePack(String url); + /** + * Request that the player's client download and switch resource packs. + *

+ * 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 a + * resource pack with the same hash in the past it will not download but + * directly apply the cached pack. 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. + *

+ * Notes: + *

+ * + * @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 The sha1 hash sum of the resource pack file which is used + * to apply a cached version of the pack directly without downloading + * if it is available. Hast to be 20 bytes long! + * @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. + * @throws IllegalArgumentException Thrown if the hash is null. + * @throws IllegalArgumentException Thrown if the hash is not 20 bytes + * long. + */ + public void setResourcePack(String url, byte[] hash); + /** * Gets the Scoreboard displayed to this player * -- cgit v1.2.3