182 lines
		
	
	
	
		
			8.9 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
	
		
			8.9 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
						|
--- a/src/main/java/org/bukkit/entity/Player.java
 | 
						|
+++ b/src/main/java/org/bukkit/entity/Player.java
 | 
						|
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
 | 
						|
      * @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);
 | 
						|
 
 | 
						|
     /**
 | 
						|
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
 | 
						|
     default net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowEntity> asHoverEvent(final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowEntity> op) {
 | 
						|
         return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.of(this.getType().getKey(), this.getUniqueId(), this.displayName())));
 | 
						|
     }
 | 
						|
+
 | 
						|
+    /**
 | 
						|
+     * 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);
 | 
						|
+
 | 
						|
+    /**
 | 
						|
+     * 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.
 | 
						|
+     * @param required Marks if the resource pack should be required by the client
 | 
						|
+     * @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, boolean required);
 | 
						|
+
 | 
						|
+    /**
 | 
						|
+     * 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.
 | 
						|
+     * @param required Marks if the resource pack should be required by the client
 | 
						|
+     * @param resourcePackPrompt A Prompt to be displayed in the client request
 | 
						|
+     * @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, boolean required, @Nullable net.kyori.adventure.text.Component resourcePackPrompt);
 | 
						|
+    /**
 | 
						|
+     * @return the most recent resource pack status received from the player,
 | 
						|
+     *         or null if no status has ever been received from this player.
 | 
						|
+     */
 | 
						|
+    @Nullable
 | 
						|
+    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.
 | 
						|
+     *
 | 
						|
+     * @deprecated This is no longer sent from the client and will always be null
 | 
						|
+     */
 | 
						|
+    @Nullable
 | 
						|
+    @Deprecated
 | 
						|
+    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
 | 
						|
diff --git a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
 | 
						|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
						|
--- a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
 | 
						|
+++ b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
 | 
						|
@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
 | 
						|
 public class PlayerResourcePackStatusEvent extends PlayerEvent {
 | 
						|
 
 | 
						|
     private static final HandlerList handlers = new HandlerList();
 | 
						|
+    @Deprecated
 | 
						|
+    private final String hash; // Paper
 | 
						|
     private final Status status;
 | 
						|
 
 | 
						|
     public PlayerResourcePackStatusEvent(@NotNull final Player who, @NotNull Status resourcePackStatus) {
 | 
						|
         super(who);
 | 
						|
+        this.hash = null; // Paper
 | 
						|
         this.status = resourcePackStatus;
 | 
						|
     }
 | 
						|
 
 | 
						|
+    @Deprecated // Paper
 | 
						|
+    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
 | 
						|
+     */
 | 
						|
+    public String getHash() {
 | 
						|
+        return this.hash;
 | 
						|
+    }
 | 
						|
+    // Paper end
 | 
						|
+
 | 
						|
     /**
 | 
						|
      * Gets the status of this pack.
 | 
						|
      *
 |