Posted August 3, 201411 yr This thread is a continuation of my previous one but I felt a new thread would be better. I want to store all the items, recipes and other related stuff in a MySQL database for later use. I'm storing the items' data in a table like so: CREATE TABLE `items` ( `unlocalized_name` varchar(192) NOT NULL, `sub_id` int(11) NOT NULL DEFAULT '0', `localized_name` varchar(256) DEFAULT NULL, `owning_mod` varchar(128) NOT NULL, PRIMARY KEY (`unlocalized_name`,`sub_id`), KEY `owning_mod_idx` (`owning_mod`), CONSTRAINT `owning_mod` FOREIGN KEY (`owning_mod`) REFERENCES `mods` (`mod`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8; I plan on dropping the sub_id column once I get this issue sorted out. Some items in the game like records, mushrooms and pressure plates (stone and wood) have the same unlocalized name so I need to make custom ones. In my mod's constructor I have this: this.unlocalized_name_override = new HashMap<Object, String>(); this.unlocalized_name_override.put(Blocks.brown_mushroom, "tile.mushroom.brown"); this.unlocalized_name_override.put(Blocks.red_mushroom, "tile.mushroom.red"); this.unlocalized_name_override.put(Blocks.brown_mushroom_block, "tile.mushroomBlock.red"); this.unlocalized_name_override.put(Blocks.red_mushroom_block, "tile.mushroomBlock.red"); this.unlocalized_name_override.put(Blocks.stone_pressure_plate, "tile.pressurePlate.stone"); this.unlocalized_name_override.put(Blocks.wooden_pressure_plate, "tile.pressurePlate.wood"); this.unlocalized_name_override.put(Items.record_11, "item.record.11"); this.unlocalized_name_override.put(Items.record_13, "item.record.13"); this.unlocalized_name_override.put(Items.record_blocks, "item.record.blocks"); this.unlocalized_name_override.put(Items.record_cat, "item.record.cat"); this.unlocalized_name_override.put(Items.record_chirp, "item.record.chirp"); this.unlocalized_name_override.put(Items.record_far, "item.record.far"); this.unlocalized_name_override.put(Items.record_mall, "item.record.mall"); this.unlocalized_name_override.put(Items.record_mellohi, "item.record.mellohi"); this.unlocalized_name_override.put(Items.record_stal, "item.record.stal"); this.unlocalized_name_override.put(Items.record_strad, "item.record.strad"); this.unlocalized_name_override.put(Items.record_wait, "item.record.wait"); this.unlocalized_name_override.put(Items.record_ward, "item.record.ward"); When I run the '/dump' command through the chat this code is run: ArrayList<ItemStack> items = new ArrayList<ItemStack>(); for (Object io : Item.itemRegistry) { Item i = (Item)io; i.getSubItems(i, null, items); } ps = this.conn.prepareStatement("INSERT INTO items (`unlocalized_name`, `sub_id`, `localized_name`, `owning_mod`) VALUES (?, ?, ?, ?);"); for (ItemStack is : items) { Item i = is.getItem(); String unlocalized_name; String localized_name = is.getDisplayName(); String mod_id = Util.getModId(is.getItem()); if (this.unlocalized_name_override.containsKey(i)) unlocalized_name = this.unlocalized_name_override.get(i); else unlocalized_name = i.getUnlocalizedName(); ps.setString(1, unlocalized_name); ps.setInt(2, is.getItemDamage()); ps.setString(3, localized_name); ps.setString(4, mod_id); ps.execute(); } ps.close(); Now for the records, this works just fine: SELECT unlocalized_name FROM mcrd.items WHERE unlocalized_name LIKE 'item.record%'; item.record.11 item.record.13 item.record.blocks item.record.cat item.record.chirp item.record.far item.record.mall item.record.mellohi item.record.stal item.record.strad item.record.wait item.record.ward But for mushrooms or pressure plates it doesn't work, no row with the unlocalized name of tile.mushroom.brown or tile.pressurePlate.stone exists. I suspect it has to do with the fact that the records are items while the pressure plates and mushrooms are blocks but I don't know what to do about it. I like trains.
August 3, 201411 yr Author I figured out what I need to do. I need to wrap the Block bits with Item.getItemFromBlock: this.unlocalized_name_override.put(Item.getItemFromBlock(Blocks.brown_mushroom), "tile.mushroom.brown"); this.unlocalized_name_override.put(Item.getItemFromBlock(Blocks.red_mushroom), "tile.mushroom.red"); this.unlocalized_name_override.put(Item.getItemFromBlock(Blocks.brown_mushroom_block), "tile.mushroomBlock.brown"); this.unlocalized_name_override.put(Item.getItemFromBlock(Blocks.red_mushroom_block), "tile.mushroomBlock.red"); I like trains.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.