summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorMax Lee <mail@moep.tv>2017-02-14 14:00:30 +0100
committermd_5 <git@md-5.net>2017-02-15 10:04:26 +1100
commitba3e9b43b2db4869061a50014dc01501f5a24fd3 (patch)
tree32f1431946fb0730a815729f4cb50f5bdd83acf0 /src/main
parent1861013a8c070400d70d3b9703e1c9afcce0be80 (diff)
downloadbukkit-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.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/bukkit/entity/Player.java70
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