geforkt von Mirrors/Paper
Deep clone nbt tags in PDC
Dieser Commit ist enthalten in:
Ursprung
49778e042c
Commit
4c8c367eee
@ -376,7 +376,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
||||
this.maxDamage = meta.maxDamage;
|
||||
this.unhandledTags.copy(meta.unhandledTags.build());
|
||||
this.removedTags.addAll(meta.removedTags);
|
||||
this.persistentDataContainer.putAll(meta.persistentDataContainer.getRaw());
|
||||
this.persistentDataContainer.putAll(meta.persistentDataContainer.getTagsCloned()); // Paper - deep clone NBT tags
|
||||
|
||||
this.customTag = meta.customTag;
|
||||
|
||||
@ -1987,7 +1987,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
|
||||
clone.customTag = this.customTag.copy();
|
||||
}
|
||||
clone.removedTags = Sets.newHashSet(this.removedTags);
|
||||
clone.persistentDataContainer = new CraftPersistentDataContainer(this.persistentDataContainer.getRaw(), CraftMetaItem.DATA_TYPE_REGISTRY);
|
||||
clone.persistentDataContainer = new CraftPersistentDataContainer(this.persistentDataContainer.getTagsCloned(), CraftMetaItem.DATA_TYPE_REGISTRY); // Paper - deep clone NBT tags
|
||||
clone.hideFlag = this.hideFlag;
|
||||
clone.hideTooltip = this.hideTooltip;
|
||||
clone.tooltipStyle = this.tooltipStyle;
|
||||
|
@ -207,4 +207,12 @@ public class CraftPersistentDataContainer implements PersistentDataContainer {
|
||||
}
|
||||
}
|
||||
// Paper end - byte array serialization
|
||||
|
||||
// Paper start - deep clone tags
|
||||
public Map<String, Tag> getTagsCloned() {
|
||||
final Map<String, Tag> tags = new HashMap<>();
|
||||
this.customDataTags.forEach((key, tag) -> tags.put(key, tag.copy()));
|
||||
return tags;
|
||||
}
|
||||
// Paper end - deep clone tags
|
||||
}
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren