mirror of
https://github.com/PaperMC/Paper.git
synced 2025-05-18 21:20:24 -07:00
Fix ItemStack amount issues with Chat Components (#12216)
This commit is contained in:
parent
bc3d946fdf
commit
0e9b94d533
@ -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
|
||||
/**
|
||||
|
@ -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() {
|
||||
|
@ -214,9 +214,9 @@ public final class CraftItemFactory implements ItemFactory {
|
||||
return CraftItemStack.asCraftMirror(EnchantmentHelper.enchantItem(source, craft.handle, level, registry, optional));
|
||||
}
|
||||
|
||||
// Paper start - Adventure
|
||||
@Override
|
||||
public net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowItem> asHoverEvent(final ItemStack item, final java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowItem> op) {
|
||||
Preconditions.checkArgument(item.getAmount() > 1 && item.getAmount() <= 99, "ItemStack amount must be between 1 and 99 but was %s", item.getAmount());
|
||||
return net.kyori.adventure.text.event.HoverEvent.showItem(op.apply(
|
||||
net.kyori.adventure.text.event.HoverEvent.ShowItem.showItem(
|
||||
item.getType().getKey(),
|
||||
@ -229,7 +229,6 @@ public final class CraftItemFactory implements ItemFactory {
|
||||
public net.kyori.adventure.text.@org.jetbrains.annotations.NotNull Component displayName(@org.jetbrains.annotations.NotNull ItemStack itemStack) {
|
||||
return io.papermc.paper.adventure.PaperAdventure.asAdventure(CraftItemStack.asNMSCopy(itemStack).getDisplayName());
|
||||
}
|
||||
// Paper end - Adventure
|
||||
|
||||
// Paper start - ensure server conversions API
|
||||
// TODO: DO WE NEED THIS?
|
||||
|
Loading…
x
Reference in New Issue
Block a user