Jump to content

sguthals

Members
  • Posts

    5
  • Joined

  • Last visited

Everything posted by sguthals

  1. OK - I figured something out - My custom blocks/items are no longer calling hasReousrceName or getInputStreamByName in my CustomResourcePack class that extends FileResourcePack. Looking into it now...
  2. OK - Here is what I have so far: Block: Constructor: public Block(String domain, String name) { super(Material.iron); this.name = name; this.domain = domain; this.preferredName = name; this.setUnlocalizedName(Reference.MOD_ID + "_" + this.name); this.setCreativeTab(CreativeTabs.tabMisc); } Register: for(Block block : blocks) { GameRegistry.registerBlock(block, block.name); } Render: RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); for(Block block : blocks) { ModelResourceLocation model = new ModelResourceLocation(block.domain + ":" + block.name, "inventory"); renderItem.getItemModelMesher().register(net.minecraft.item.Item.getItemFromBlock(block), 0, model); } JSON: public static String jsonMakerBlockItem(String domain, String assetName) { return "{ \"parent\": \"" + domain + ":" + "block/" + assetName + "\",\"display\": {\"thirdperson\": {\"rotation\": [ 10, -45, 170 ],\"translation\": [ 0, 1.5, -2.75 ],\"scale\": [ 0.375, 0.375, 0.375 ]}}}"; } public static String jsonMakerBlock(String domain, String assetName) { return "{\"parent\": \"block/cube\",\"textures\": {\"down\": \"" + domain + ":blocks/" + assetName + "\",\"up\": \"" + domain + ":blocks/" + assetName + "\",\"north\": \"" + domain + ":blocks/" + assetName + "\",\"south\": \"" + domain + ":blocks/" + assetName + "\",\"west\": \"" + domain + ":blocks/" + assetName + "\",\"east\": \"" + domain + ":blocks/" + assetName + "\",\"particle\": \"" + domain + ":blocks/" + assetName + "\"}}"; } public static String jsonMakerBlockstates(String domain, String assetName) { return "{\"variants\": { \"normal\": { \"model\": \""+ domain + ":" + assetName + "\" } } }"; } Image: In mods/assets/domain/textures/blocks/blockName.png Items: Constructor: public Item (String domain, String name) { super(); this.name = name; this.domain = domain; this.preferredName = name; this.setUnlocalizedName(Reference.MOD_ID + "_" + this.name); this.setCreativeTab(CreativeTabs.tabMisc); } Register: for(Item item : items) { GameRegistry.registerItem(item, item.name); } Render RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); for(Item item : items) { ModelResourceLocation model = new ModelResourceLocation(item.domain + ":" + item.name, "inventory"); renderItem.getItemModelMesher().register(item, 0, model); } JSON: public static String jsonMakerItem(String domain, String assetName) { return "{ \"parent\": \"builtin/generated\", \"textures\": { \"layer0\": \"" + domain + ":items/" + assetName + "\"}, \"display\": {\"thirdperson\": {\"rotation\": [ -90, 0, 0 ],\"translation\": [ 0, 1, -3 ],\"scale\": [ 0.55, 0.55, 0.55 ]}, \"firstperson\": {\"rotation\": [ 0, -135, 25 ],\"translation\": [ 0, 4, 2 ],\"scale\": [ 1.7, 1.7, 1.7 ]}}}"; } Image: In mods/assets/domain/textures/items/itemName.png So I think I set everything correctly? When the Block/Item is registered, it uses MODID, but when I make the model /JSON I use myDomain. - Am I missing something? PS - You rock! Thanks for the help!!
  3. I see - But when Forge goes to look for the Block/Item model/texture doesn't it look in MODID? How do I tell it to look somewhere else? I need my mod to look for it in a different directory, assuming my mod has already been compiled and my new model/texture cannot be in main/resources and isn't in ResourcePacks? Does that make sense?
  4. BTW - this is how I am registering the ModelResourceLocation: RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); for(Block block : blocks) { ModelResourceLocation model = new ModelResourceLocation(block.domain + ":" + block.name, "inventory"); renderItem.getItemModelMesher().register(GameRegistry.findItem(block.domain, block.name), 0, model); } And registering the blocks: for(Block block : blocks) { GameRegistry.registerBlock(block, block.name); }
  5. Hi Everyone! I'm trying to get custom blocks and items to load custom textures from a different domain (not minecraft, not my modid). I know that my JSON files are all in the correct place and are correct. My issue is that when I create my Block/Item I set the unlocalized name to: this.setUnlocalizedName(this.domain + "_" + this.name); Where this.domain is a domain I have specified and is correct. But when Forge goes to find my new Block/Item textures it automatically looks for my modid: [iNSIDE OF GAMEDATA.CLASS] private String addPrefix(String name) { int index = name.lastIndexOf(':'); String oldPrefix = index == -1 ? "" : name.substring(0, index); String prefix; ModContainer mc = Loader.instance().activeModContainer(); if (mc != null) { prefix = mc.getModId(); } else // no mod container, assume minecraft { prefix = "minecraft"; } if (!oldPrefix.equals(prefix)) { name = prefix + ":" + name; } return name; } And so I get the error: [06:21:04] [Client thread/ERROR] [FML]: Model definition for location MODID:blockName#inventory not found [06:21:13] [Client thread/ERROR] [FML]: Model definition for location MODID:blockName#normal not found [06:21:17] [Client thread/ERROR] [FML]: Model definition for location MODID:itemName#inventory not found I need my blocks and items to potentially each have a different domain and not automatically look in MODID. Any advice?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.