38 Zeilen
2.3 KiB
Diff
38 Zeilen
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 4 May 2016 22:43:12 -0400
|
|
Subject: [PATCH] Implement ensureServerConversions API
|
|
|
|
This will take a Bukkit ItemStack and run it through any conversions a server process would perform on it,
|
|
to ensure it meets latest minecraft expectations.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
index e6a47317eb24fc65ed02a4d4f9c4b19b5abc920d..8e8bcf829818fbbaedb13d9eddca096d457c511a 100644
|
|
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
@@ -229,7 +229,7 @@ public final class ItemStack {
|
|
|
|
// Called to run this stack through the data converter to handle older storage methods and serialized items
|
|
public void convertStack(int version) {
|
|
- if (0 < version && version < CraftMagicNumbers.INSTANCE.getDataVersion()) {
|
|
+ if (0 < version && version < CraftMagicNumbers.INSTANCE.getDataVersion() && MinecraftServer.getServer() != null) { // Paper - skip conversion if the server doesn't exist (for tests)
|
|
CompoundTag savedStack = new CompoundTag();
|
|
this.save(savedStack);
|
|
savedStack = (CompoundTag) MinecraftServer.getServer().fixerUpper.update(References.ITEM_STACK, new Dynamic(NbtOps.INSTANCE, savedStack), version, CraftMagicNumbers.INSTANCE.getDataVersion()).getValue();
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
index 4c5ef6472947baf2ca3cc294eed77ceebd6cd5af..edb3b4efb38a644e312bf4dde4c756bec21192f7 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
@@ -511,4 +511,11 @@ public final class CraftItemFactory implements ItemFactory {
|
|
return io.papermc.paper.adventure.PaperAdventure.asAdventure(CraftItemStack.asNMSCopy(itemStack).getDisplayName());
|
|
}
|
|
// Paper end - Adventure
|
|
+
|
|
+ // Paper start - ensure server conversions API
|
|
+ @Override
|
|
+ public ItemStack ensureServerConversions(ItemStack item) {
|
|
+ return CraftItemStack.asCraftMirror(CraftItemStack.asNMSCopy(item));
|
|
+ }
|
|
+ // Paper end - ensure server conversions API
|
|
}
|