4d40e87b33
Had to drop some hunks modifying getEntities, as those methods were rewritten by Mojang in 1.17
83 lines
3.6 KiB
Diff
83 lines
3.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MiniDigger <admin@minidigger.me>
|
|
Date: Sat, 6 Jun 2020 18:13:42 +0200
|
|
Subject: [PATCH] Support components in ItemMeta
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
|
index daca454b375ab1d5900b6c3c9b6575463e47a3a9..81738dac125a7247fff5e51fa595667ef25ba0a1 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
|
@@ -873,11 +873,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
|
return CraftChatMessage.fromJSONComponent(displayName);
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public net.md_5.bungee.api.chat.BaseComponent[] getDisplayNameComponent() {
|
|
+ return displayName == null ? new net.md_5.bungee.api.chat.BaseComponent[0] : net.md_5.bungee.chat.ComponentSerializer.parse(displayName);
|
|
+ }
|
|
+ // Paper end
|
|
@Override
|
|
public final void setDisplayName(String name) {
|
|
this.displayName = CraftChatMessage.fromStringOrNullToJSON(name);
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public void setDisplayNameComponent(net.md_5.bungee.api.chat.BaseComponent[] component) {
|
|
+ this.displayName = net.md_5.bungee.chat.ComponentSerializer.toString(component);
|
|
+ }
|
|
+ // Paper end
|
|
@Override
|
|
public boolean hasDisplayName() {
|
|
return this.displayName != null;
|
|
@@ -1020,6 +1032,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
|
return this.lore == null ? null : new ArrayList<String>(Lists.transform(this.lore, CraftChatMessage::fromJSONComponent));
|
|
}
|
|
|
|
+ // 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(entry)
|
|
+ ).collect(java.util.stream.Collectors.toList()));
|
|
+ }
|
|
+ // Paper end
|
|
@Override
|
|
public void setLore(List<String> lore) {
|
|
if (lore == null || lore.isEmpty()) {
|
|
@@ -1034,6 +1054,21 @@ 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()), false);
|
|
+ } else {
|
|
+ this.lore.clear();
|
|
+ safelyAdd(lore, this.lore, false);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
@Override
|
|
public boolean hasCustomModelData() {
|
|
return this.customModelData != null;
|
|
@@ -1494,6 +1529,11 @@ 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(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());
|