mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
Support components in ItemMeta (#3513)
This commit is contained in:
parent
c09194971e
commit
cbc2d143d7
2 changed files with 172 additions and 0 deletions
77
Spigot-API-Patches/Support-components-in-ItemMeta.patch
Normal file
77
Spigot-API-Patches/Support-components-in-ItemMeta.patch
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MiniDigger | Martin <admin@minidigger.dev>
|
||||||
|
Date: Sat, 6 Jun 2020 18:13:16 +0200
|
||||||
|
Subject: [PATCH] Support components in ItemMeta
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
|
||||||
|
+++ b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
|
||||||
|
@@ -0,0 +0,0 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
|
||||||
|
@NotNull
|
||||||
|
String getDisplayName();
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ /**
|
||||||
|
+ * Gets the display name that is set.
|
||||||
|
+ * <p>
|
||||||
|
+ * Plugins should check that hasDisplayName() returns <code>true</code>
|
||||||
|
+ * before calling this method.
|
||||||
|
+ *
|
||||||
|
+ * @return the display name that is set
|
||||||
|
+ */
|
||||||
|
+ @NotNull
|
||||||
|
+ net.md_5.bungee.api.chat.BaseComponent[] getDisplayNameComponent();
|
||||||
|
+ // Paper end
|
||||||
|
/**
|
||||||
|
* Sets the display name.
|
||||||
|
*
|
||||||
|
@@ -0,0 +0,0 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
|
||||||
|
*/
|
||||||
|
void setDisplayName(@Nullable String name);
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ /**
|
||||||
|
+ * Sets the display name.
|
||||||
|
+ *
|
||||||
|
+ * @param component the name component to set
|
||||||
|
+ */
|
||||||
|
+ void setDisplayNameComponent(@Nullable net.md_5.bungee.api.chat.BaseComponent[] component);
|
||||||
|
+ // Paper end
|
||||||
|
/**
|
||||||
|
* Checks for existence of a localized name.
|
||||||
|
*
|
||||||
|
@@ -0,0 +0,0 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
|
||||||
|
@Nullable
|
||||||
|
List<String> getLore();
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * Gets the lore that is set.
|
||||||
|
+ * <p>
|
||||||
|
+ * Plugins should check if hasLore() returns <code>true</code> before
|
||||||
|
+ * calling this method.
|
||||||
|
+ *
|
||||||
|
+ * @return a list of lore that is set
|
||||||
|
+ */
|
||||||
|
+ @Nullable
|
||||||
|
+ List<net.md_5.bungee.api.chat.BaseComponent[]> getLoreComponents();
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Sets the lore for this item.
|
||||||
|
* Removes lore when given null.
|
||||||
|
@@ -0,0 +0,0 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
|
||||||
|
*/
|
||||||
|
void setLore(@Nullable List<String> lore);
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * Sets the lore for this item.
|
||||||
|
+ * Removes lore when given null.
|
||||||
|
+ *
|
||||||
|
+ * @param lore the lore that will be set
|
||||||
|
+ */
|
||||||
|
+ void setLoreComponents(@Nullable List<net.md_5.bungee.api.chat.BaseComponent[]> lore);
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Checks for existence of custom model data.
|
||||||
|
* <p>
|
95
Spigot-Server-Patches/Support-components-in-ItemMeta.patch
Normal file
95
Spigot-Server-Patches/Support-components-in-ItemMeta.patch
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MiniDigger | Martin <admin@minidigger.dev>
|
||||||
|
Date: Sat, 6 Jun 2020 18:13:42 +0200
|
||||||
|
Subject: [PATCH] Support components in ItemMeta
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/IChatBaseComponent.java b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
||||||
|
@@ -0,0 +0,0 @@ public interface IChatBaseComponent extends Message, IChatFormatted, Iterable<IC
|
||||||
|
return jsonobject;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public static String componentToJson(IChatBaseComponent ichatbasecomponent) { return a(ichatbasecomponent);} // Paper - OBFHELPER
|
||||||
|
public static String a(IChatBaseComponent ichatbasecomponent) {
|
||||||
|
return IChatBaseComponent.ChatSerializer.a.toJson(ichatbasecomponent);
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
||||||
|
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
||||||
|
return CraftChatMessage.fromComponent(displayName);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ @Override
|
||||||
|
+ public net.md_5.bungee.api.chat.BaseComponent[] getDisplayNameComponent() {
|
||||||
|
+ return net.md_5.bungee.chat.ComponentSerializer.parse(IChatBaseComponent.ChatSerializer.componentToJson(displayName));
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
@Override
|
||||||
|
public final void setDisplayName(String name) {
|
||||||
|
this.displayName = CraftChatMessage.fromStringOrNull(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ @Override
|
||||||
|
+ public void setDisplayNameComponent(net.md_5.bungee.api.chat.BaseComponent[] component) {
|
||||||
|
+ this.displayName = IChatBaseComponent.ChatSerializer.jsonToComponent(net.md_5.bungee.chat.ComponentSerializer.toString(component));
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
@Override
|
||||||
|
public boolean hasDisplayName() {
|
||||||
|
return displayName != null;
|
||||||
|
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
||||||
|
return this.lore == null ? null : new ArrayList<String>(Lists.transform(this.lore, CraftChatMessage::fromComponent));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ @Override
|
||||||
|
+ public List<net.md_5.bungee.api.chat.BaseComponent[]> getLoreComponents() {
|
||||||
|
+ return this.lore == null ? null : new ArrayList<>(this.lore.stream().map(entry ->
|
||||||
|
+ net.md_5.bungee.chat.ComponentSerializer.parse(IChatBaseComponent.ChatSerializer.componentToJson(entry)
|
||||||
|
+ )).collect(java.util.stream.Collectors.toList()));
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
@Override
|
||||||
|
public void setLore(List<String> lore) { // too tired to think if .clone is better
|
||||||
|
if (lore == null) {
|
||||||
|
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ @Override
|
||||||
|
+ public void setLoreComponents(List<net.md_5.bungee.api.chat.BaseComponent[]> lore) {
|
||||||
|
+ if (lore == null) {
|
||||||
|
+ this.lore = null;
|
||||||
|
+ } else {
|
||||||
|
+ if (this.lore == null) {
|
||||||
|
+ safelyAdd(lore, this.lore = new ArrayList<>(lore.size()), Integer.MAX_VALUE);
|
||||||
|
+ } else {
|
||||||
|
+ this.lore.clear();
|
||||||
|
+ safelyAdd(lore, this.lore, Integer.MAX_VALUE);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
@Override
|
||||||
|
public boolean hasCustomModelData() {
|
||||||
|
return customModelData != null;
|
||||||
|
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Object object : addFrom) {
|
||||||
|
+ // Paper start - support components
|
||||||
|
+ if(object instanceof net.md_5.bungee.api.chat.BaseComponent[]) {
|
||||||
|
+ addTo.add(IChatBaseComponent.ChatSerializer.jsonToComponent(net.md_5.bungee.chat.ComponentSerializer.toString((net.md_5.bungee.api.chat.BaseComponent[]) object)));
|
||||||
|
+ } else
|
||||||
|
+ // Paper end
|
||||||
|
if (!(object instanceof String)) {
|
||||||
|
if (object != null) {
|
||||||
|
throw new IllegalArgumentException(addFrom + " cannot contain non-string " + object.getClass().getName());
|
Loading…
Reference in a new issue