SPIGOT-4253: Add way to prioritise item conversion

This commit is contained in:
md_5 2018-08-11 17:43:41 +10:00
parent 29e7564874
commit 96778caabb
2 changed files with 19 additions and 2 deletions

View file

@ -163,6 +163,10 @@ public class CraftLegacy {
} }
public static Material fromLegacy(MaterialData materialData) { public static Material fromLegacy(MaterialData materialData) {
return fromLegacy(materialData, false);
}
public static Material fromLegacy(MaterialData materialData, boolean itemPriority) {
Material material = materialData.getItemType(); Material material = materialData.getItemType();
if (material == null || !material.isLegacy()) { if (material == null || !material.isLegacy()) {
return material; return material;
@ -170,7 +174,15 @@ public class CraftLegacy {
Material mappedData = null; Material mappedData = null;
if (material.isBlock()) { // Try item first
if (itemPriority) {
Item item = materialToItem.get(materialData);
if (item != null) {
mappedData = CraftMagicNumbers.getMaterial(item);
}
}
if (mappedData == null && material.isBlock()) {
// Try exact match first // Try exact match first
IBlockData iblock = materialToData.get(materialData); IBlockData iblock = materialToData.get(materialData);
if (iblock != null) { if (iblock != null) {
@ -187,7 +199,7 @@ public class CraftLegacy {
} }
// Fallback to matching item // Fallback to matching item
if (mappedData == null) { if (!itemPriority && mappedData == null) {
Item item = materialToItem.get(materialData); Item item = materialToItem.get(materialData);
if (item != null) { if (item != null) {
mappedData = CraftMagicNumbers.getMaterial(item); mappedData = CraftMagicNumbers.getMaterial(item);

View file

@ -134,6 +134,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
return CraftLegacy.fromLegacy(material); return CraftLegacy.fromLegacy(material);
} }
@Override
public Material fromLegacy(MaterialData material, boolean itemPriority) {
return CraftLegacy.fromLegacy(material, itemPriority);
}
@Override @Override
public BlockData fromLegacy(Material material, byte data) { public BlockData fromLegacy(Material material, byte data) {
return CraftBlockData.fromData(getBlock(material, data)); return CraftBlockData.fromData(getBlock(material, data));