diff options
author | Max Lee <mail@moep.tv> | 2017-02-14 14:00:30 +0100 |
---|---|---|
committer | md_5 <git@md-5.net> | 2017-02-15 10:04:26 +1100 |
commit | ba3e9b43b2db4869061a50014dc01501f5a24fd3 (patch) | |
tree | 32f1431946fb0730a815729f4cb50f5bdd83acf0 | |
parent | 1861013a8c070400d70d3b9703e1c9afcce0be80 (diff) | |
download | bukkit-ba3e9b43b2db4869061a50014dc01501f5a24fd3.tar bukkit-ba3e9b43b2db4869061a50014dc01501f5a24fd3.tar.gz bukkit-ba3e9b43b2db4869061a50014dc01501f5a24fd3.tar.lz bukkit-ba3e9b43b2db4869061a50014dc01501f5a24fd3.tar.xz bukkit-ba3e9b43b2db4869061a50014dc01501f5a24fd3.zip |
SPIGOT-2152: Method to set resource pack + hash.
-rw-r--r-- | src/main/java/org/bukkit/entity/Player.java | 70 |
1 files changed, 59 insertions, 11 deletions
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. * <p> * Notes: * <ul> * <li>Players can disable server textures on their client, in which - * case this method will have no affect on them. + * case this method will have no affect on them. Use the + * {@link PlayerResourcePackStatusEvent} to figure out whether or not + * the player loaded the pack! * <li>There is no concept of resetting texture packs back to default - * within Minecraft, so players will have to relog to do so. + * within Minecraft, so players will have to relog to do so or you + * have to send an empty pack. + * <li>The request is send with "null" as the hash. This might result + * in newer versions not loading the pack correctly. * </ul> * * @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: * <ul> * <li>Players can disable server resources on their client, in which - * case this method will have no affect on them. + * case this method will have no affect on them. Use the + * {@link PlayerResourcePackStatusEvent} to figure out whether or not + * the player loaded the pack! * <li>There is no concept of resetting resource packs back to default - * within Minecraft, so players will have to relog to do so. + * within Minecraft, so players will have to relog to do so or you + * have to send an empty pack. + * <li>The request is send with "null" as the hash. This might result + * in newer versions not loading the pack correctly. * </ul> * * @param url The URL from which the client will download the resource @@ -1023,6 +1034,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. + * <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 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. + * <p> + * Notes: + * <ul> + * <li>Players can disable server resources on their client, in which + * case this method will have no affect on them. Use the + * {@link PlayerResourcePackStatusEvent} to figure out whether or not + * the player loaded the pack! + * <li>There is no concept of resetting resource packs back to default + * within Minecraft, so players will have to relog to do so or you + * have to send an empty pack. + * </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 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 * * @return The current scoreboard seen by this player |