Fix ItemStack amount issues with Chat Components (#12216)

This commit is contained in:
Pedro
2025-04-30 21:24:49 -04:00
committed by GitHub
parent bc3d946fdf
commit 0e9b94d533
3 changed files with 14 additions and 4 deletions

View File

@@ -210,12 +210,12 @@ public interface ItemFactory {
@Deprecated(since = "1.19.3") // Paper
ItemStack enchantItem(@NotNull final ItemStack item, final int level, final boolean allowTreasures);
// Paper start - Adventure
/**
* Creates a hover event for the given item.
*
* @param item The item
* @return A hover event
* @throws IllegalArgumentException if the {@link ItemStack#getAmount()} is not between 1 and 99
*/
@NotNull
net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowItem> asHoverEvent(final @NotNull ItemStack item, final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowItem> op);
@@ -223,12 +223,13 @@ public interface ItemFactory {
/**
* Get the formatted display name of the {@link ItemStack}.
*
* @apiNote this component include a {@link net.kyori.adventure.text.event.HoverEvent item hover event}.
* When used in chat, make sure to follow the ItemStack rules regarding amount, type, and other properties.
* @param itemStack the {@link ItemStack}
* @return display name of the {@link ItemStack}
*/
@NotNull
net.kyori.adventure.text.Component displayName(@NotNull ItemStack itemStack);
// Paper end - Adventure
// Paper start - add getI18NDisplayName
/**

View File

@@ -9,6 +9,7 @@ import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Predicate;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
@@ -706,6 +707,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
return Bukkit.getItemFactory().enchantWithLevels(this, levels, keySet, random);
}
/**
* {@inheritDoc}
*
* @param op transformation on value
* @return a hover event
* @throws IllegalArgumentException if the {@link ItemStack#getAmount()} is not between 1 and 99
*/
@NotNull
@Override
public net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowItem> asHoverEvent(final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowItem> op) {
@@ -715,6 +723,8 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
/**
* Get the formatted display name of the {@link ItemStack}.
*
* @apiNote this component include a {@link net.kyori.adventure.text.event.HoverEvent item hover event}.
* When used in chat, make sure to follow the ItemStack rules regarding amount, type, and other properties.
* @return display name of the {@link ItemStack}
*/
public net.kyori.adventure.text.@NotNull Component displayName() {