From bb7bbe6c985fed6e6923c89acf68ded7fa53ba93 Mon Sep 17 00:00:00 2001 From: Jedediah Smith 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 32b495fd..5ca1a7b2 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -1208,7 +1208,9 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline * @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(String url); /** @@ -1609,6 +1611,57 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline */ public void setViewDistance(int viewDistance); + // Paper start + /** + * 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 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. + *

+ * 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 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(String url, String hash); + + /** + * @return the most recent resource pack status received from the player, + * or null if no status has ever been received from this player. + */ + 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. + */ + 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 4c498016..4c838519 100644 --- a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java @@ -10,13 +10,28 @@ import org.bukkit.event.HandlerList; public class PlayerResourcePackStatusEvent extends PlayerEvent { private static final HandlerList handlers = new HandlerList(); + private final String hash; // Paper private final Status status; + @Deprecated // Paper public PlayerResourcePackStatusEvent(final Player who, Status resourcePackStatus) { super(who); + this.hash = null; // Paper this.status = resourcePackStatus; } + // Paper start + public PlayerResourcePackStatusEvent(final Player who, Status resourcePackStatus, String hash) { + super(who); + this.hash = hash; // Paper + this.status = resourcePackStatus; + } + + public String getHash() { + return this.hash; + } + // Paper end + /** * Gets the status of this pack. * -- 2.15.0