diff options
Diffstat (limited to 'patches/api/0028-Complete-resource-pack-API.patch')
-rw-r--r-- | patches/api/0028-Complete-resource-pack-API.patch | 182 |
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. + * |