private ItemMeta getItemMeta(Material material, TestMetaItem meta) { switch (material) { case AIR: return null; case WRITTEN_BOOK: return meta instanceof TestMetaBookSigned ? meta : new TestMetaBookSigned(meta); case BOOK_AND_QUILL: return meta != null && meta.getClass().equals(TestMetaBook.class) ? meta : new TestMetaBook(meta); case SKULL_ITEM: // return meta instanceof CraftMetaSkull ? meta : new CraftMetaSkull(meta); case LEATHER_HELMET: case LEATHER_CHESTPLATE: case LEATHER_LEGGINGS: case LEATHER_BOOTS: return meta instanceof TestMetaLeatherArmor ? meta : new TestMetaLeatherArmor(meta); case POTION: case SPLASH_POTION: case LINGERING_POTION: case TIPPED_ARROW: return meta instanceof TestMetaPotion ? meta : new TestMetaPotion(meta); case MAP: return meta instanceof TestMetaMap ? meta : new TestMetaMap(meta); case FIREWORK: return meta instanceof TestMetaFirework ? meta : new TestMetaFirework(meta); case FIREWORK_CHARGE: return meta instanceof TestMetaCharge ? meta : new TestMetaCharge(meta); case ENCHANTED_BOOK: return meta instanceof TestMetaEnchantedBook ? meta : new TestMetaEnchantedBook(meta); case BANNER: return meta instanceof TestMetaBanner ? meta : new TestMetaBanner(meta); case MONSTER_EGG: return meta instanceof TestMetaSpawnEgg ? meta : new TestMetaSpawnEgg(meta); case FURNACE: case CHEST: case TRAPPED_CHEST: case JUKEBOX: case DISPENSER: case DROPPER: case SIGN: case MOB_SPAWNER: case NOTE_BLOCK: case PISTON_BASE: case BREWING_STAND_ITEM: case ENCHANTMENT_TABLE: case COMMAND: case COMMAND_REPEATING: case COMMAND_CHAIN: case BEACON: case DAYLIGHT_DETECTOR: case DAYLIGHT_DETECTOR_INVERTED: case HOPPER: case REDSTONE_COMPARATOR: case FLOWER_POT_ITEM: case SHIELD: // return new CraftMetaBlockState(meta, material); default: return new TestMetaItem(meta); } }
private boolean equals(TestMetaItem meta1, TestMetaItem meta2) { return meta1.equalsCommon(meta2) && meta1.notUncommon(meta2) && meta2.notUncommon(meta1); }