aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0028-Complete-resource-pack-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0028-Complete-resource-pack-API.patch')
-rw-r--r--patches/api/0028-Complete-resource-pack-API.patch182
1 files changed, 182 insertions, 0 deletions
diff --git a/patches/api/0028-Complete-resource-pack-API.patch b/patches/api/0028-Complete-resource-pack-API.patch
new file mode 100644
index 0000000000..670123b021
--- /dev/null
+++ b/patches/api/0028-Complete-resource-pack-API.patch
@@ -0,0 +1,182 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jedediah Smith <[email protected]>
+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 d5746291dd0cfc32591482945040e992ad1efb8e..e12d28143a213abdc0552a15e82cacecc414ca26 100644
+--- a/src/main/java/org/bukkit/entity/Player.java
++++ b/src/main/java/org/bukkit/entity/Player.java
+@@ -1655,7 +1655,9 @@ 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);
+
+ /**
+@@ -2502,6 +2504,124 @@ 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 b98195650d49d78ec35970ca0376b6289b861e4b..4c2102a11c3d682d98f0db4ccafa35231e66bcdd 100644
+--- a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
++++ b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
+@@ -11,13 +11,32 @@ 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.
+ *