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.
This commit is contained in:
Aikar 2016-05-04 23:55:48 -04:00
parent 221abecc78
commit 8df1d2656c
2 changed files with 28 additions and 1 deletions

View file

@ -236,4 +236,18 @@ public interface ItemFactory {
@Deprecated(since = "1.18.1", forRemoval = true)
String getI18NDisplayName(@Nullable ItemStack item);
// Paper end - add getI18NDisplayName
// Paper start - ensure server conversions API
/**
* Minecraft's updates are converting simple item stacks into more complex NBT oriented Item Stacks.
*
* Use this method to ensure any desired data conversions are processed.
* The input itemstack will not be the same as the returned itemstack.
*
* @param item The item to process conversions on
* @return A potentially Data-Converted-ItemStack
*/
@NotNull
ItemStack ensureServerConversions(@NotNull ItemStack item);
// Paper end - ensure server conversions API
}

View file

@ -566,7 +566,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
}
}
return result;
return result.ensureServerConversions(); // Paper
}
/**
@ -643,6 +643,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
return Bukkit.getServer().getItemFactory().displayName(this);
}
/**
* Minecraft updates are converting simple item stacks into more complex NBT oriented Item Stacks.
*
* Use this method to ensure any desired data conversions are processed.
* The input itemstack will not be the same as the returned itemstack.
*
* @return A potentially Data Converted ItemStack
*/
@NotNull
public ItemStack ensureServerConversions() {
return Bukkit.getServer().getItemFactory().ensureServerConversions(this);
}
/**
* Gets the Display name as seen in the Client.
* Currently the server only supports the English language. To override this,