mirror of
https://github.com/PaperMC/Paper.git
synced 2025-05-19 05:30:23 -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
|
@Deprecated(since = "1.19.3") // Paper
|
||||||
ItemStack enchantItem(@NotNull final ItemStack item, final int level, final boolean allowTreasures);
|
ItemStack enchantItem(@NotNull final ItemStack item, final int level, final boolean allowTreasures);
|
||||||
|
|
||||||
// Paper start - Adventure
|
|
||||||
/**
|
/**
|
||||||
* Creates a hover event for the given item.
|
* Creates a hover event for the given item.
|
||||||
*
|
*
|
||||||
* @param item The item
|
* @param item The item
|
||||||
* @return A hover event
|
* @return A hover event
|
||||||
|
* @throws IllegalArgumentException if the {@link ItemStack#getAmount()} is not between 1 and 99
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@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);
|
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}.
|
* 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}
|
* @param itemStack the {@link ItemStack}
|
||||||
* @return display name of the {@link ItemStack}
|
* @return display name of the {@link ItemStack}
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
net.kyori.adventure.text.Component displayName(@NotNull ItemStack itemStack);
|
net.kyori.adventure.text.Component displayName(@NotNull ItemStack itemStack);
|
||||||
// Paper end - Adventure
|
|
||||||
|
|
||||||
// Paper start - add getI18NDisplayName
|
// Paper start - add getI18NDisplayName
|
||||||
/**
|
/**
|
||||||
|
@ -9,6 +9,7 @@ import java.util.Map;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.event.HoverEvent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
@ -706,6 +707,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
|
|||||||
return Bukkit.getItemFactory().enchantWithLevels(this, levels, keySet, random);
|
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
|
@NotNull
|
||||||
@Override
|
@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) {
|
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}.
|
* 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}
|
* @return display name of the {@link ItemStack}
|
||||||
*/
|
*/
|
||||||
public net.kyori.adventure.text.@NotNull Component displayName() {
|
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));
|
return CraftItemStack.asCraftMirror(EnchantmentHelper.enchantItem(source, craft.handle, level, registry, optional));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paper start - Adventure
|
|
||||||
@Override
|
@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) {
|
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(
|
return net.kyori.adventure.text.event.HoverEvent.showItem(op.apply(
|
||||||
net.kyori.adventure.text.event.HoverEvent.ShowItem.showItem(
|
net.kyori.adventure.text.event.HoverEvent.ShowItem.showItem(
|
||||||
item.getType().getKey(),
|
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) {
|
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());
|
return io.papermc.paper.adventure.PaperAdventure.asAdventure(CraftItemStack.asNMSCopy(itemStack).getDisplayName());
|
||||||
}
|
}
|
||||||
// Paper end - Adventure
|
|
||||||
|
|
||||||
// Paper start - ensure server conversions API
|
// Paper start - ensure server conversions API
|
||||||
// TODO: DO WE NEED THIS?
|
// TODO: DO WE NEED THIS?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user