|
31 | 31 | import org.bukkit.Bukkit; |
32 | 32 | import org.bukkit.Material; |
33 | 33 | import org.bukkit.inventory.ItemStack; |
| 34 | +import org.bukkit.inventory.meta.ItemMeta; |
| 35 | +import org.bukkit.inventory.meta.SpawnEggMeta; |
34 | 36 |
|
35 | 37 | import javax.annotation.Nonnull; |
36 | 38 | import javax.annotation.Nullable; |
@@ -163,7 +165,7 @@ public enum XMaterial { |
163 | 165 | BLACK_CARPET(15, "CARPET"), |
164 | 166 | BLACK_CONCRETE(15, "CONCRETE"), |
165 | 167 | BLACK_CONCRETE_POWDER(15, "CONCRETE_POWDER"), |
166 | | - BLACK_DYE("INK_SACK", "INK_SAC"), |
| 168 | + BLACK_DYE, |
167 | 169 | BLACK_GLAZED_TERRACOTTA, |
168 | 170 | BLACK_SHULKER_BOX, |
169 | 171 | BLACK_STAINED_GLASS(15, "STAINED_GLASS"), |
@@ -465,7 +467,7 @@ public enum XMaterial { |
465 | 467 | DONKEY_SPAWN_EGG(32, "MONSTER_EGG"), |
466 | 468 | DRAGON_BREATH("DRAGONS_BREATH"), |
467 | 469 | DRAGON_EGG, |
468 | | - DRAGON_HEAD("SKULL", "SKULL_ITEM"), |
| 470 | + DRAGON_HEAD(5, "SKULL", "SKULL_ITEM"), |
469 | 471 | DRAGON_WALL_HEAD(5, "SKULL", "SKULL_ITEM"), |
470 | 472 | DRIED_KELP, |
471 | 473 | DRIED_KELP_BLOCK, |
@@ -1682,11 +1684,21 @@ public static XMaterial matchXMaterial(@Nonnull ItemStack item) { |
1682 | 1684 | String material = item.getType().name(); |
1683 | 1685 | byte data = (byte) (Data.ISFLAT || item.getType().getMaxDurability() > 0 ? 0 : item.getDurability()); |
1684 | 1686 |
|
| 1687 | + if (!Data.ISFLAT && item.hasItemMeta() && material.equals("MONSTER_EGG")) { |
| 1688 | + ItemMeta meta = item.getItemMeta(); |
| 1689 | + if (meta instanceof SpawnEggMeta) { |
| 1690 | + SpawnEggMeta egg = (SpawnEggMeta) meta; |
| 1691 | + material = egg.getSpawnedType().name() + "_SPAWN_EGG"; |
| 1692 | + } |
| 1693 | + } |
| 1694 | + |
1685 | 1695 | // Check FILLED_MAP enum for more info. |
1686 | 1696 | //if (!Data.ISFLAT && item.hasItemMeta() && item.getItemMeta() instanceof org.bukkit.inventory.meta.MapMeta) return FILLED_MAP; |
1687 | 1697 |
|
1688 | | - return matchDefinedXMaterial(material, data) |
1689 | | - .orElseThrow(() -> new IllegalArgumentException("Unsupported material from item: " + material + " (" + data + ')')); |
| 1698 | + // No orElseThrow, I don't want to deal with all that final variable bullshit. |
| 1699 | + Optional<XMaterial> result = matchDefinedXMaterial(material, data); |
| 1700 | + if (result.isPresent()) return result.get(); |
| 1701 | + throw new IllegalArgumentException("Unsupported material from item: " + material + " (" + data + ')'); |
1690 | 1702 | } |
1691 | 1703 |
|
1692 | 1704 | /** |
|
0 commit comments