Adventure
Co-authored-by: zml <zml@stellardrift.ca> Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com> Co-authored-by: Yannick Lamprecht <yannicklamprecht@live.de>
This commit is contained in:
@@ -58,7 +58,41 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* Represents a player, connected or not
|
||||
*/
|
||||
public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient {
|
||||
public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, net.kyori.adventure.bossbar.BossBarViewer { // Paper
|
||||
|
||||
// Paper start
|
||||
@Override
|
||||
default net.kyori.adventure.identity.@NotNull Identity identity() {
|
||||
return net.kyori.adventure.identity.Identity.identity(this.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an unmodifiable view of all known currently active bossbars.
|
||||
* <p>
|
||||
* <b>This currently only returns bossbars shown to the player via
|
||||
* {@link #showBossBar(net.kyori.adventure.bossbar.BossBar)} and does not contain bukkit
|
||||
* {@link org.bukkit.boss.BossBar} instances shown to the player.</b>
|
||||
*
|
||||
* @return an unmodifiable view of all known currently active bossbars
|
||||
* @since 4.14.0
|
||||
*/
|
||||
@Override
|
||||
@org.jetbrains.annotations.UnmodifiableView @NotNull Iterable<? extends net.kyori.adventure.bossbar.BossBar> activeBossBars();
|
||||
|
||||
/**
|
||||
* Gets the "friendly" name to display of this player.
|
||||
*
|
||||
* @return the display name
|
||||
*/
|
||||
net.kyori.adventure.text.@NotNull Component displayName();
|
||||
|
||||
/**
|
||||
* Sets the "friendly" name to display of this player.
|
||||
*
|
||||
* @param displayName the display name to set
|
||||
*/
|
||||
void displayName(final net.kyori.adventure.text.@Nullable Component displayName);
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
@@ -75,7 +109,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* places defined by plugins.
|
||||
*
|
||||
* @return the friendly name
|
||||
* @deprecated in favour of {@link #displayName()}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
@NotNull
|
||||
public String getDisplayName();
|
||||
|
||||
@@ -87,15 +123,50 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* places defined by plugins.
|
||||
*
|
||||
* @param name The new display name.
|
||||
* @deprecated in favour of {@link #displayName(net.kyori.adventure.text.Component)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void setDisplayName(@Nullable String name);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* Sets the name that is shown on the in-game player list.
|
||||
* <p>
|
||||
* If the value is null, the name will be identical to {@link #getName()}.
|
||||
*
|
||||
* @param name new player list name
|
||||
*/
|
||||
void playerListName(net.kyori.adventure.text.@Nullable Component name);
|
||||
|
||||
/**
|
||||
* Gets the name that is shown on the in-game player list.
|
||||
*
|
||||
* @return the player list name
|
||||
*/
|
||||
net.kyori.adventure.text.@NotNull Component playerListName();
|
||||
|
||||
/**
|
||||
* Gets the currently displayed player list header for this player.
|
||||
*
|
||||
* @return player list header or null
|
||||
*/
|
||||
net.kyori.adventure.text.@Nullable Component playerListHeader();
|
||||
|
||||
/**
|
||||
* Gets the currently displayed player list footer for this player.
|
||||
*
|
||||
* @return player list footer or null
|
||||
*/
|
||||
net.kyori.adventure.text.@Nullable Component playerListFooter();
|
||||
// Paper end
|
||||
/**
|
||||
* Gets the name that is shown on the player list.
|
||||
*
|
||||
* @return the player list name
|
||||
* @deprecated in favour of {@link #playerListName()}
|
||||
*/
|
||||
@NotNull
|
||||
@Deprecated // Paper
|
||||
public String getPlayerListName();
|
||||
|
||||
/**
|
||||
@@ -104,7 +175,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* If the value is null, the name will be identical to {@link #getName()}.
|
||||
*
|
||||
* @param name new player list name
|
||||
* @deprecated in favour of {@link #playerListName(net.kyori.adventure.text.Component)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void setPlayerListName(@Nullable String name);
|
||||
|
||||
/**
|
||||
@@ -126,7 +199,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* Gets the currently displayed player list header for this player.
|
||||
*
|
||||
* @return player list header or null
|
||||
* @deprecated in favour of {@link #playerListHeader()}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
@Nullable
|
||||
public String getPlayerListHeader();
|
||||
|
||||
@@ -134,7 +209,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* Gets the currently displayed player list footer for this player.
|
||||
*
|
||||
* @return player list header or null
|
||||
* @deprecated in favour of {@link #playerListFooter()}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
@Nullable
|
||||
public String getPlayerListFooter();
|
||||
|
||||
@@ -142,14 +219,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* Sets the currently displayed player list header for this player.
|
||||
*
|
||||
* @param header player list header, null for empty
|
||||
* @deprecated in favour of {@link #sendPlayerListHeader(net.kyori.adventure.text.Component)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void setPlayerListHeader(@Nullable String header);
|
||||
|
||||
/**
|
||||
* Sets the currently displayed player list footer for this player.
|
||||
*
|
||||
* @param footer player list footer, null for empty
|
||||
* @deprecated in favour of {@link #sendPlayerListFooter(net.kyori.adventure.text.Component)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void setPlayerListFooter(@Nullable String footer);
|
||||
|
||||
/**
|
||||
@@ -158,7 +239,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*
|
||||
* @param header player list header, null for empty
|
||||
* @param footer player list footer, null for empty
|
||||
* @deprecated in favour of {@link #sendPlayerListHeaderAndFooter(net.kyori.adventure.text.Component, net.kyori.adventure.text.Component)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void setPlayerListHeaderFooter(@Nullable String header, @Nullable String footer);
|
||||
|
||||
/**
|
||||
@@ -235,9 +318,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* Kicks player with custom kick message.
|
||||
*
|
||||
* @param message kick message
|
||||
* @deprecated in favour of {@link #kick(net.kyori.adventure.text.Component)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void kickPlayer(@Nullable String message);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* Kicks the player with the default kick message.
|
||||
* @see #kick(net.kyori.adventure.text.Component)
|
||||
*/
|
||||
void kick();
|
||||
/**
|
||||
* Kicks player with custom kick message.
|
||||
*
|
||||
* @param message kick message
|
||||
*/
|
||||
void kick(final net.kyori.adventure.text.@Nullable Component message);
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
|
||||
* update the entry.
|
||||
@@ -924,6 +1023,106 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*/
|
||||
public void sendEquipmentChange(@NotNull LivingEntity entity, @NotNull Map<EquipmentSlot, ItemStack> items);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* Send a sign change. This fakes a sign change packet for a user at
|
||||
* a certain location. This will not actually change the world in any way.
|
||||
* This method will use a sign at the location's block or a faked sign
|
||||
* sent via
|
||||
* {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
|
||||
* <p>
|
||||
* If the client does not have a sign at the given location it will
|
||||
* display an error message to the user.
|
||||
*
|
||||
* @param loc the location of the sign
|
||||
* @param lines the new text on the sign or null to clear it
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated
|
||||
default void sendSignChange(@NotNull Location loc, @Nullable java.util.List<? extends net.kyori.adventure.text.Component> lines) throws IllegalArgumentException {
|
||||
this.sendSignChange(loc, lines, DyeColor.BLACK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a sign change. This fakes a sign change packet for a user at
|
||||
* a certain location. This will not actually change the world in any way.
|
||||
* This method will use a sign at the location's block or a faked sign
|
||||
* sent via
|
||||
* {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
|
||||
* <p>
|
||||
* If the client does not have a sign at the given location it will
|
||||
* display an error message to the user.
|
||||
*
|
||||
* @param loc the location of the sign
|
||||
* @param lines the new text on the sign or null to clear it
|
||||
* @param dyeColor the color of the sign
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if dyeColor is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated
|
||||
default void sendSignChange(@NotNull Location loc, @Nullable java.util.List<? extends net.kyori.adventure.text.Component> lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException {
|
||||
this.sendSignChange(loc, lines, dyeColor, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a sign change. This fakes a sign change packet for a user at
|
||||
* a certain location. This will not actually change the world in any way.
|
||||
* This method will use a sign at the location's block or a faked sign
|
||||
* sent via
|
||||
* {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
|
||||
* <p>
|
||||
* If the client does not have a sign at the given location it will
|
||||
* display an error message to the user.
|
||||
*
|
||||
* @param loc the location of the sign
|
||||
* @param lines the new text on the sign or null to clear it
|
||||
* @param hasGlowingText whether the text of the sign should glow as if dyed with a glowing ink sac
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if dyeColor is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated
|
||||
default void sendSignChange(@NotNull Location loc, @Nullable java.util.List<? extends net.kyori.adventure.text.Component> lines, boolean hasGlowingText) throws IllegalArgumentException {
|
||||
this.sendSignChange(loc, lines, DyeColor.BLACK, hasGlowingText);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a sign change. This fakes a sign change packet for a user at
|
||||
* a certain location. This will not actually change the world in any way.
|
||||
* This method will use a sign at the location's block or a faked sign
|
||||
* sent via
|
||||
* {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
|
||||
* <p>
|
||||
* If the client does not have a sign at the given location it will
|
||||
* display an error message to the user.
|
||||
*
|
||||
* @param loc the location of the sign
|
||||
* @param lines the new text on the sign or null to clear it
|
||||
* @param dyeColor the color of the sign
|
||||
* @param hasGlowingText whether the text of the sign should glow as if dyed with a glowing ink sac
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if dyeColor is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated
|
||||
void sendSignChange(@NotNull Location loc, @Nullable java.util.List<? extends net.kyori.adventure.text.Component> lines, @NotNull DyeColor dyeColor, boolean hasGlowingText)
|
||||
throws IllegalArgumentException;
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* Send a sign change. This fakes a sign change packet for a user at
|
||||
* a certain location. This will not actually change the world in any way.
|
||||
@@ -941,7 +1140,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @param lines the new text on the sign or null to clear it
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
@@ -963,7 +1166,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if dyeColor is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
@@ -986,7 +1193,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @throws IllegalArgumentException if location is null
|
||||
* @throws IllegalArgumentException if dyeColor is null
|
||||
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
|
||||
* @deprecated Use {@link #sendBlockUpdate(Location, TileState)} by creating a new virtual
|
||||
* {@link org.bukkit.block.Sign} block state via {@link BlockData#createBlockState()}
|
||||
* (constructed e.g. via {@link Material#createBlockData()})
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor, boolean hasGlowingText) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
@@ -1461,7 +1672,7 @@ 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.
|
||||
* @deprecated Minecraft no longer uses textures packs. Instead you
|
||||
* should use {@link #setResourcePack(String)}.
|
||||
* should use {@link #setResourcePack(UUID, String, byte[], net.kyori.adventure.text.Component, boolean)}.
|
||||
*/
|
||||
@Deprecated(since = "1.7.2")
|
||||
public void setTexturePack(@NotNull String url);
|
||||
@@ -1497,7 +1708,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 in favour of {@link #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)}
|
||||
*/
|
||||
@Deprecated // Paper - adventure
|
||||
public void setResourcePack(@NotNull String url);
|
||||
|
||||
/**
|
||||
@@ -1529,6 +1742,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* pack correctly.
|
||||
* </ul>
|
||||
*
|
||||
* @deprecated in favour of {@link #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)}
|
||||
* @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.
|
||||
@@ -1541,6 +1755,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
*/
|
||||
@Deprecated // Paper - adventure
|
||||
public void setResourcePack(@NotNull String url, @Nullable byte[] hash);
|
||||
|
||||
/**
|
||||
@@ -1565,7 +1780,53 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePack(UUID)} or {@link #removeResourcePacks()}.
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
* </ul>
|
||||
*
|
||||
* @deprecated in favour of {@link #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)}
|
||||
* @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 The sha1 hash sum of the resource pack file which is used
|
||||
* to apply a cached version of the pack directly without downloading
|
||||
* if it is available. Hast to be 20 bytes long!
|
||||
* @param prompt The optional custom prompt message to be shown to 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.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
*/
|
||||
@Deprecated // Paper - adventure
|
||||
public void setResourcePack(@NotNull String url, @Nullable byte[] hash, @Nullable String prompt);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* 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 a
|
||||
* resource pack with the same hash in the past it will not download but
|
||||
* directly apply the cached pack. If the hash is null and the client has
|
||||
* downloaded and cached the same resource pack in the past, it will
|
||||
* perform a file size check against the response content 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. Use the
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
@@ -1583,8 +1844,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* length restriction is an implementation specific arbitrary value.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
* @see #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)
|
||||
*/
|
||||
public void setResourcePack(@NotNull String url, @Nullable byte[] hash, @Nullable String prompt);
|
||||
default void setResourcePack(final @NotNull String url, final byte @Nullable [] hash, final net.kyori.adventure.text.@Nullable Component prompt) {
|
||||
this.setResourcePack(url, hash, prompt, false);
|
||||
}
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* Request that the player's client download and switch resource packs.
|
||||
@@ -1608,7 +1873,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePack(UUID)} or {@link #removeResourcePacks()}.
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
@@ -1627,7 +1892,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* length restriction is an implementation specific arbitrary value.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
* @deprecated in favour of {@link #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)}
|
||||
*/
|
||||
@Deprecated // Paper - adventure
|
||||
public void setResourcePack(@NotNull String url, @Nullable byte[] hash, boolean force);
|
||||
|
||||
/**
|
||||
@@ -1652,7 +1919,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePack(UUID)} or {@link #removeResourcePacks()}.
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
@@ -1672,9 +1939,61 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* length restriction is an implementation specific arbitrary value.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
* @deprecated in favour of {@link #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void setResourcePack(@NotNull String url, @Nullable byte[] hash, @Nullable String prompt, boolean force);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* 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 a
|
||||
* resource pack with the same hash in the past it will not download but
|
||||
* directly apply the cached pack. If the hash is null and the client has
|
||||
* downloaded and cached the same resource pack in the past, it will
|
||||
* perform a file size check against the response content 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 with a custom prompt
|
||||
* 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. Use the
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
* </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 The sha1 hash sum of the resource pack file which is used
|
||||
* to apply a cached version of the pack directly without downloading
|
||||
* if it is available. Hast to be 20 bytes long!
|
||||
* @param prompt The optional custom prompt message to be shown to client.
|
||||
* @param force If true, the client will be disconnected from the server
|
||||
* when it declines to use the resource pack.
|
||||
* @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.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
* @see #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)
|
||||
*/
|
||||
default void setResourcePack(final @NotNull String url, final byte @Nullable [] hash, final net.kyori.adventure.text.@Nullable Component prompt, final boolean force) {
|
||||
this.setResourcePack(UUID.nameUUIDFromBytes(url.getBytes(java.nio.charset.StandardCharsets.UTF_8)), url, hash, prompt, force);
|
||||
}
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* Request that the player's client download and switch resource packs.
|
||||
* <p>
|
||||
@@ -1697,7 +2016,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePack(UUID)} or {@link #removeResourcePacks()}.
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
@@ -1718,9 +2037,60 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* length restriction is an implementation specific arbitrary value.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
* @deprecated in favour of {@link #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)}
|
||||
*/
|
||||
@Deprecated // Paper - adventure
|
||||
public void setResourcePack(@NotNull UUID id, @NotNull String url, @Nullable byte[] hash, @Nullable String prompt, boolean force);
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* 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 a
|
||||
* resource pack with the same hash in the past it will not download but
|
||||
* directly apply the cached pack. If the hash is null and the client has
|
||||
* downloaded and cached the same resource pack in the past, it will
|
||||
* perform a file size check against the response content 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. Use the
|
||||
* {@link PlayerResourcePackStatusEvent} to figure out whether or not
|
||||
* the player loaded the pack!
|
||||
* <li>To remove a resource pack you can use
|
||||
* {@link #removeResourcePacks(UUID, UUID...)} or {@link #clearResourcePacks()}.
|
||||
* <li>The request is sent with empty string as the hash when the hash is
|
||||
* not provided. This might result in newer versions not loading the
|
||||
* pack correctly.
|
||||
* </ul>
|
||||
*
|
||||
* @param uuid Unique resource pack ID.
|
||||
* @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 The sha1 hash sum of the resource pack file which is used
|
||||
* to apply a cached version of the pack directly without downloading
|
||||
* if it is available. Hast to be 20 bytes long!
|
||||
* @param prompt The optional custom prompt message to be shown to client.
|
||||
* @param force If true, the client will be disconnected from the server
|
||||
* when it declines to use the resource pack.
|
||||
* @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.
|
||||
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
|
||||
* long.
|
||||
* @see #sendResourcePacks(net.kyori.adventure.resource.ResourcePackRequest)
|
||||
*/
|
||||
void setResourcePack(@NotNull UUID uuid, @NotNull String url, byte @Nullable [] hash, net.kyori.adventure.text.@Nullable Component prompt, boolean force);
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
* Request that the player's client download and include another resource pack.
|
||||
* <p>
|
||||
@@ -1773,12 +2143,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*
|
||||
* @param id the id of the resource pack.
|
||||
* @throws IllegalArgumentException If the ID is null.
|
||||
* @see #removeResourcePacks(UUID, UUID...)
|
||||
*/
|
||||
public void removeResourcePack(@NotNull UUID id);
|
||||
|
||||
/**
|
||||
* Request that the player's client remove all loaded resource pack sent by
|
||||
* the server.
|
||||
* @see #clearResourcePacks()
|
||||
*/
|
||||
public void removeResourcePacks();
|
||||
|
||||
@@ -1916,7 +2288,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*
|
||||
* @param title Title text
|
||||
* @param subtitle Subtitle text
|
||||
* @deprecated API behavior subject to change
|
||||
* @deprecated Use {@link #showTitle(net.kyori.adventure.title.Title)} or {@link #sendTitlePart(net.kyori.adventure.title.TitlePart, Object)}
|
||||
*/
|
||||
@Deprecated(since = "1.8.7")
|
||||
public void sendTitle(@Nullable String title, @Nullable String subtitle);
|
||||
@@ -1935,7 +2307,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @param fadeIn time in ticks for titles to fade in. Defaults to 10.
|
||||
* @param stay time in ticks for titles to stay. Defaults to 70.
|
||||
* @param fadeOut time in ticks for titles to fade out. Defaults to 20.
|
||||
* @deprecated Use {@link #showTitle(net.kyori.adventure.title.Title)} or {@link #sendTitlePart(net.kyori.adventure.title.TitlePart, Object)}
|
||||
*/
|
||||
@Deprecated // Paper - Adventure
|
||||
public void sendTitle(@Nullable String title, @Nullable String subtitle, int fadeIn, int stay, int fadeOut);
|
||||
|
||||
/**
|
||||
@@ -2210,6 +2584,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*/
|
||||
public int getClientViewDistance();
|
||||
|
||||
// Paper start
|
||||
/**
|
||||
* Gets the player's current locale.
|
||||
*
|
||||
* @return the player's locale
|
||||
*/
|
||||
@NotNull java.util.Locale locale();
|
||||
// Paper end
|
||||
/**
|
||||
* Gets the player's estimated ping in milliseconds.
|
||||
*
|
||||
@@ -2235,8 +2617,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* they wish.
|
||||
*
|
||||
* @return the player's locale
|
||||
* @deprecated in favour of {@link #locale()}
|
||||
*/
|
||||
@NotNull
|
||||
@Deprecated // Paper
|
||||
public String getLocale();
|
||||
|
||||
/**
|
||||
@@ -2288,6 +2672,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*/
|
||||
public boolean isAllowingServerListings();
|
||||
|
||||
// Paper start
|
||||
@NotNull
|
||||
@Override
|
||||
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())));
|
||||
}
|
||||
// Paper end
|
||||
|
||||
// Spigot start
|
||||
public class Spigot extends Entity.Spigot {
|
||||
|
||||
@@ -2319,11 +2711,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Deprecated // Paper
|
||||
@Override
|
||||
public void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent component) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Deprecated // Paper
|
||||
@Override
|
||||
public void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@@ -2334,7 +2728,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*
|
||||
* @param position the screen position
|
||||
* @param component the components to send
|
||||
* @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @NotNull net.md_5.bungee.api.chat.BaseComponent component) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
@@ -2344,7 +2740,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
*
|
||||
* @param position the screen position
|
||||
* @param components the components to send
|
||||
* @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
@@ -2355,7 +2753,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @param position the screen position
|
||||
* @param sender the sender of the message
|
||||
* @param component the components to send
|
||||
* @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @Nullable java.util.UUID sender, @NotNull net.md_5.bungee.api.chat.BaseComponent component) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
@@ -2366,7 +2766,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @param position the screen position
|
||||
* @param sender the sender of the message
|
||||
* @param components the components to send
|
||||
* @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
|
||||
*/
|
||||
@Deprecated // Paper
|
||||
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @Nullable java.util.UUID sender, @NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user