2021-06-11 14:02:28 +02:00
|
|
|
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
|
2023-09-21 10:35:38 +02:00
|
|
|
index 02febdfdd45ee79b659fed23a54886371feded0f..a63a4053c8a17284cd302db1fb6b6b673310ae44 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/org/bukkit/entity/Player.java
|
|
|
|
+++ b/src/main/java/org/bukkit/entity/Player.java
|
2023-08-06 02:21:59 +02:00
|
|
|
@@ -1655,7 +1655,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
2021-06-11 14:02:28 +02:00
|
|
|
* @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);
|
|
|
|
|
|
|
|
/**
|
2023-09-21 10:35:38 +02:00
|
|
|
@@ -2502,6 +2504,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
2021-06-11 14:02:28 +02:00
|
|
|
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);
|
|
|
|
+
|
|
|
|
+ /**
|
2021-07-12 21:42:17 +02:00
|
|
|
+ * 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.
|
|
|
|
+ */
|
2021-07-13 20:15:18 +02:00
|
|
|
+ void setResourcePack(@NotNull String url, @NotNull String hash, boolean required, @Nullable net.kyori.adventure.text.Component resourcePackPrompt);
|
2021-07-12 21:42:17 +02:00
|
|
|
+ /**
|
2021-06-11 14:02:28 +02:00
|
|
|
+ * @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.
|
|
|
|
*
|