If you're going to keep asking for a replacement, convert all your item IDs to names using this. Code: public String itemIdToString(int id) { return Material.getMaterial(id).name(); }
Ultimate_n00b I still don't see how it will be usefull in the future ._. (The id's are probably going to be removed. So it will be useless when 1.7 comes out (I guess so))
I think all ids will be removed, even the ones in the enums. The bukkit team will make new methods once the update is released
You're aware of the getMaterial(String) and matchMaterial(String) methods, right? Neither of which are deprecated. The correct migration strategy here is for plugins to simply stop supporting the use of integer material ID's and only use material names.
didnt even know that this methods exist . Thanks for pointing that out. And I never supported that ids, I cant keep them all in my mind
If you're looking for a hard workaround you might as well just do this: Probably not the best thing to do but... (Move your mouse to reveal the content) Probably not the best thing to do but... (open) Probably not the best thing to do but... (close) Code:java Map<Integer, Material> idToMaterial = new HashMap<Integer, Material>(){{ put(0, Material.AIR); put(1, Material.STONE); put(2, Material.GRASS); put(3, Material.DIRT); put(4, Material.COBBLESTONE); put(5, Material.WOOD); put(6, Material.SAPLING); put(7, Material.BEDROCK); put(8, Material.WATER); put(9, Material.STATIONARY_WATER); put(10, Material.LAVA); put(11, Material.STATIONARY_LAVA); put(12, Material.SAND); put(13, Material.GRAVEL); put(14, Material.GOLD_ORE); put(15, Material.IRON_ORE); put(16, Material.COAL_ORE); put(17, Material.LOG); put(18, Material.LEAVES); put(19, Material.SPONGE); put(20, Material.GLASS); put(21, Material.LAPIS_ORE); put(22, Material.LAPIS_BLOCK); put(23, Material.DISPENSER); put(24, Material.SANDSTONE); put(25, Material.NOTE_BLOCK); put(26, Material.BED_BLOCK); put(27, Material.POWERED_RAIL); put(28, Material.DETECTOR_RAIL); put(29, Material.PISTON_STICKY_BASE); put(30, Material.WEB); put(31, Material.LONG_GRASS); put(32, Material.DEAD_BUSH); put(33, Material.PISTON_BASE); put(34, Material.PISTON_EXTENSION); put(35, Material.WOOL); put(36, Material.PISTON_MOVING_PIECE); put(37, Material.YELLOW_FLOWER); put(38, Material.RED_ROSE); put(39, Material.BROWN_MUSHROOM); put(40, Material.RED_MUSHROOM); put(41, Material.GOLD_BLOCK); put(42, Material.IRON_BLOCK); put(43, Material.DOUBLE_STEP); put(44, Material.STEP); put(45, Material.BRICK); put(46, Material.TNT); put(47, Material.BOOKSHELF); put(48, Material.MOSSY_COBBLESTONE); put(49, Material.OBSIDIAN); put(50, Material.TORCH); put(51, Material.FIRE); put(52, Material.MOB_SPAWNER); put(53, Material.WOOD_STAIRS); put(54, Material.CHEST); put(55, Material.REDSTONE_WIRE); put(56, Material.DIAMOND_ORE); put(57, Material.DIAMOND_BLOCK); put(58, Material.WORKBENCH); put(59, Material.CROPS); put(60, Material.SOIL); put(61, Material.FURNACE); put(62, Material.BURNING_FURNACE); put(63, Material.SIGN_POST); put(64, Material.WOODEN_DOOR); put(65, Material.LADDER); put(66, Material.RAILS); put(67, Material.COBBLESTONE_STAIRS); put(68, Material.WALL_SIGN); put(69, Material.LEVER); put(70, Material.STONE_PLATE); put(71, Material.IRON_DOOR_BLOCK); put(72, Material.WOOD_PLATE); put(73, Material.REDSTONE_ORE); put(74, Material.GLOWING_REDSTONE_ORE); put(75, Material.REDSTONE_TORCH_OFF); put(76, Material.REDSTONE_TORCH_ON); put(77, Material.STONE_BUTTON); put(78, Material.SNOW); put(79, Material.ICE); put(80, Material.SNOW_BLOCK); put(81, Material.CACTUS); put(82, Material.CLAY); put(83, Material.SUGAR_CANE_BLOCK); put(84, Material.JUKEBOX); put(85, Material.FENCE); put(86, Material.PUMPKIN); put(87, Material.NETHERRACK); put(88, Material.SOUL_SAND); put(89, Material.GLOWSTONE); put(90, Material.PORTAL); put(91, Material.JACK_O_LANTERN); put(92, Material.CAKE_BLOCK); put(93, Material.DIODE_BLOCK_OFF); put(94, Material.DIODE_BLOCK_ON); put(95, Material.LOCKED_CHEST); put(96, Material.TRAP_DOOR); put(97, Material.MONSTER_EGGS); put(98, Material.SMOOTH_BRICK); put(99, Material.HUGE_MUSHROOM_1); put(100, Material.HUGE_MUSHROOM_2); put(101, Material.IRON_FENCE); put(102, Material.THIN_GLASS); put(103, Material.MELON_BLOCK); put(104, Material.PUMPKIN_STEM); put(105, Material.MELON_STEM); put(106, Material.VINE); put(107, Material.FENCE_GATE); put(108, Material.BRICK_STAIRS); put(109, Material.SMOOTH_STAIRS); put(110, Material.MYCEL); put(111, Material.WATER_LILY); put(112, Material.NETHER_BRICK); put(113, Material.NETHER_FENCE); put(114, Material.NETHER_BRICK_STAIRS); put(115, Material.NETHER_WARTS); put(116, Material.ENCHANTMENT_TABLE); put(117, Material.BREWING_STAND); put(118, Material.CAULDRON); put(119, Material.ENDER_PORTAL); put(120, Material.ENDER_PORTAL_FRAME); put(121, Material.ENDER_STONE); put(122, Material.DRAGON_EGG); put(123, Material.REDSTONE_LAMP_OFF); put(124, Material.REDSTONE_LAMP_ON); put(125, Material.WOOD_DOUBLE_STEP); put(126, Material.WOOD_STEP); put(127, Material.COCOA); put(128, Material.SANDSTONE_STAIRS); put(129, Material.EMERALD_ORE); put(130, Material.ENDER_CHEST); put(131, Material.TRIPWIRE_HOOK); put(132, Material.TRIPWIRE); put(133, Material.EMERALD_BLOCK); put(134, Material.SPRUCE_WOOD_STAIRS); put(135, Material.BIRCH_WOOD_STAIRS); put(136, Material.JUNGLE_WOOD_STAIRS); put(137, Material.COMMAND); put(138, Material.BEACON); put(139, Material.COBBLE_WALL); put(140, Material.FLOWER_POT); put(141, Material.CARROT); put(142, Material.POTATO); put(143, Material.WOOD_BUTTON); put(144, Material.SKULL); put(145, Material.ANVIL); put(146, Material.TRAPPED_CHEST); put(147, Material.GOLD_PLATE); put(148, Material.IRON_PLATE); put(149, Material.REDSTONE_COMPARATOR_OFF); put(150, Material.REDSTONE_COMPARATOR_ON); put(151, Material.DAYLIGHT_DETECTOR); put(152, Material.REDSTONE_BLOCK); put(153, Material.QUARTZ_ORE); put(154, Material.HOPPER); put(155, Material.QUARTZ_BLOCK); put(156, Material.QUARTZ_STAIRS); put(157, Material.ACTIVATOR_RAIL); put(158, Material.DROPPER); put(159, Material.STAINED_CLAY); put(170, Material.HAY_BLOCK); put(171, Material.CARPET); put(172, Material.HARD_CLAY); put(173, Material.COAL_BLOCK); put(256, Material.IRON_SPADE); put(257, Material.IRON_PICKAXE); put(258, Material.IRON_AXE); put(259, Material.FLINT_AND_STEEL); put(260, Material.APPLE); put(261, Material.BOW); put(262, Material.ARROW); put(263, Material.COAL); put(264, Material.DIAMOND); put(265, Material.IRON_INGOT); put(266, Material.GOLD_INGOT); put(267, Material.IRON_SWORD); put(268, Material.WOOD_SWORD); put(269, Material.WOOD_SPADE); put(270, Material.WOOD_PICKAXE); put(271, Material.WOOD_AXE); put(272, Material.STONE_SWORD); put(273, Material.STONE_SPADE); put(274, Material.STONE_PICKAXE); put(275, Material.STONE_AXE); put(276, Material.DIAMOND_SWORD); put(277, Material.DIAMOND_SPADE); put(278, Material.DIAMOND_PICKAXE); put(279, Material.DIAMOND_AXE); put(280, Material.STICK); put(281, Material.BOWL); put(282, Material.MUSHROOM_SOUP); put(283, Material.GOLD_SWORD); put(284, Material.GOLD_SPADE); put(285, Material.GOLD_PICKAXE); put(286, Material.GOLD_AXE); put(287, Material.STRING); put(288, Material.FEATHER); put(289, Material.SULPHUR); put(290, Material.WOOD_HOE); put(291, Material.STONE_HOE); put(292, Material.IRON_HOE); put(293, Material.DIAMOND_HOE); put(294, Material.GOLD_HOE); put(295, Material.SEEDS); put(296, Material.WHEAT); put(297, Material.BREAD); put(298, Material.LEATHER_HELMET); put(299, Material.LEATHER_CHESTPLATE); put(300, Material.LEATHER_LEGGINGS); put(301, Material.LEATHER_BOOTS); put(302, Material.CHAINMAIL_HELMET); put(303, Material.CHAINMAIL_CHESTPLATE); put(304, Material.CHAINMAIL_LEGGINGS); put(305, Material.CHAINMAIL_BOOTS); put(306, Material.IRON_HELMET); put(307, Material.IRON_CHESTPLATE); put(308, Material.IRON_LEGGINGS); put(309, Material.IRON_BOOTS); put(310, Material.DIAMOND_HELMET); put(311, Material.DIAMOND_CHESTPLATE); put(312, Material.DIAMOND_LEGGINGS); put(313, Material.DIAMOND_BOOTS); put(314, Material.GOLD_HELMET); put(315, Material.GOLD_CHESTPLATE); put(316, Material.GOLD_LEGGINGS); put(317, Material.GOLD_BOOTS); put(318, Material.FLINT); put(319, Material.PORK); put(320, Material.GRILLED_PORK); put(321, Material.PAINTING); put(322, Material.GOLDEN_APPLE); put(323, Material.SIGN); put(324, Material.WOOD_DOOR); put(325, Material.BUCKET); put(326, Material.WATER_BUCKET); put(327, Material.LAVA_BUCKET); put(328, Material.MINECART); put(329, Material.SADDLE); put(330, Material.IRON_DOOR); put(331, Material.REDSTONE); put(332, Material.SNOW_BALL); put(333, Material.BOAT); put(334, Material.LEATHER); put(335, Material.MILK_BUCKET); put(336, Material.CLAY_BRICK); put(337, Material.CLAY_BALL); put(338, Material.SUGAR_CANE); put(339, Material.PAPER); put(340, Material.BOOK); put(341, Material.SLIME_BALL); put(342, Material.STORAGE_MINECART); put(343, Material.POWERED_MINECART); put(344, Material.EGG); put(345, Material.COMPASS); put(346, Material.FISHING_ROD); put(347, Material.WATCH); put(348, Material.GLOWSTONE_DUST); put(349, Material.RAW_FISH); put(350, Material.COOKED_FISH); put(351, Material.INK_SACK); put(352, Material.BONE); put(353, Material.SUGAR); put(354, Material.CAKE); put(355, Material.BED); put(356, Material.DIODE); put(357, Material.COOKIE); put(358, Material.MAP); put(359, Material.SHEARS); put(360, Material.MELON); put(361, Material.PUMPKIN_SEEDS); put(362, Material.MELON_SEEDS); put(363, Material.RAW_BEEF); put(364, Material.COOKED_BEEF); put(365, Material.RAW_CHICKEN); put(366, Material.COOKED_CHICKEN); put(367, Material.ROTTEN_FLESH); put(368, Material.ENDER_PEARL); put(369, Material.BLAZE_ROD); put(370, Material.GHAST_TEAR); put(371, Material.GOLD_NUGGET); put(372, Material.NETHER_STALK); put(373, Material.POTION); put(374, Material.GLASS_BOTTLE); put(375, Material.SPIDER_EYE); put(376, Material.FERMENTED_SPIDER_EYE); put(377, Material.BLAZE_POWDER); put(378, Material.MAGMA_CREAM); put(379, Material.BREWING_STAND_ITEM); put(380, Material.CAULDRON_ITEM); put(381, Material.EYE_OF_ENDER); put(382, Material.SPECKLED_MELON); put(383, Material.MONSTER_EGG); put(384, Material.EXP_BOTTLE); put(385, Material.FIREBALL); put(386, Material.BOOK_AND_QUILL); put(387, Material.WRITTEN_BOOK); put(388, Material.EMERALD); put(389, Material.ITEM_FRAME); put(390, Material.FLOWER_POT_ITEM); put(391, Material.CARROT_ITEM); put(392, Material.POTATO_ITEM); put(393, Material.BAKED_POTATO); put(394, Material.POISONOUS_POTATO); put(395, Material.EMPTY_MAP); put(396, Material.GOLDEN_CARROT); put(397, Material.SKULL_ITEM); put(398, Material.CARROT_STICK); put(399, Material.NETHER_STAR); put(400, Material.PUMPKIN_PIE); put(401, Material.FIREWORK); put(402, Material.FIREWORK_CHARGE); put(403, Material.ENCHANTED_BOOK); put(404, Material.REDSTONE_COMPARATOR); put(405, Material.NETHER_BRICK_ITEM); put(406, Material.QUARTZ); put(407, Material.EXPLOSIVE_MINECART); put(408, Material.HOPPER_MINECART); put(417, Material.IRON_BARDING); put(418, Material.GOLD_BARDING); put(419, Material.DIAMOND_BARDING); put(420, Material.LEASH); put(421, Material.NAME_TAG); put(2256, Material.GOLD_RECORD); put(2257, Material.GREEN_RECORD); put(2258, Material.RECORD_3); put(2259, Material.RECORD_4); put(2260, Material.RECORD_5); put(2261, Material.RECORD_6); put(2262, Material.RECORD_7); put(2263, Material.RECORD_8); put(2264, Material.RECORD_9); put(2265, Material.RECORD_10); put(2266, Material.RECORD_11); put(2267, Material.RECORD_12);}};
Jogy34 I dont think anybody really wants that ids. You can use the names and add TabCompletion to it. This is the best method
For my TARDIS plugin I have a bunch of files that dictate how structures are built. To create theses files I save blocks in a cuboid by using their id and data values. When 1.7 comes out and takes away id and data I'll probably use a map similar to the one that I posted until I figure out a way of creating and reading these files efficiently without using them.
Because then the files sizes would be a lot larger. I recently optimized the format that I use to save them so it wouldn't be as bad as it used to be though. It would also make the files ugly and prone to corruption, plus I don't yet know what data values are being replaced with.
I'm guessing the bukkit devs will do a similar thing to what they did when the health format was changed from integers to doubles so as not to break a lot of plugins. They may just keep the deprecated methods but not have id support for new blocks and items.
Jogy34 I'm in a similar situation with ChessCraft and the piece template files, e.g. https://github.com/desht/ChessCraft/blob/master/src/main/resources/datafiles/piece_styles/huge.yml - I recently switched everything over to material names instead of id's. The real problem comes, though, with material data values (e.g. LADDER:5 is a ladder facing east) - there's no easy way right now with Bukkit to parse data values in general from strings like LADDER:EAST. I'm hoping some API is added to Bukkit to do this, other I (and potentially others, like WorldEdit) will be doing a lot of coding...
I tried using material names on one of my middle sized structures and it turned out all right (current | with names). I still don't really like the look of it as it went from having all symbols to have all caps words interlaced with symbols. I also have a few (not many but still some) people that edit these files and with the names being like this I know they're going to mess up the file and then continue to complain to me that it doesn't work. There's also the problem that I don't know what to do with the data values yet but I guess I'll have to wait and see how minecraft/bukkit handles that.
I like how you store a lot of blocks, it's a nice way. I think I'll have to use that for a custom block storage thing I am working on..