Posted July 22, 20178 yr I'm sure I'm just being dense because even though I've tried to find tutorials or other examples here in the forums I still cannot get a simple block with variants to render the item in my hand, inventory or on the ground. The full source code is here, I'll try to pluck out the bits I think are important but it may just be easier to go look at the actual source code. I have a block with variants; those variants determine the texture to be applied (among other things). And I've registered the single block and the item block inside my preInit() handler public class BlockIronTank extends Block { public static final PropertyEnum<IronTankType> VARIANT = PropertyEnum.create("variant", IronTankType.class); ... } // This happens inside the preInit() handler GameRegistry.register(ironTankBlock); GameRegistry.register(ironTankItemBlock); I also have a blockstate and block model: Quote blockstate: { "forge_marker": 1, "variants": { "variant": { "glass": { "comment": "This is just here to suppress a warning that the glass variant has no blockstate, it's never actually used", "textures": { "particle": "buildcraftfactory:blocks/tank/side", "end": "buildcraftfactory:blocks/tank/end", "side": "buildcraftfactory:blocks/tank/side", "side_stacked": "buildcraftfactory:blocks/tank/side_joined_below" } }, "copper": { "textures": { "particle": "irontanks:blocks/coppertank/side", "end": "irontanks:blocks/coppertank/end", "side": "irontanks:blocks/coppertank/side", "side_stacked": "irontanks:blocks/coppertank/side_stacked" } }, "iron": { "textures": { "particle": "irontanks:blocks/irontank/side", "end": "irontanks:blocks/irontank/end", "side": "irontanks:blocks/irontank/side", "side_stacked": "irontanks:blocks/irontank/side_stacked" } }, "silver": { "textures": { "particle": "irontanks:blocks/silvertank/side", "end": "irontanks:blocks/silvertank/end", "side": "irontanks:blocks/silvertank/side", "side_stacked": "irontanks:blocks/silvertank/side_stacked" } }, "gold": { "textures": { "particle": "irontanks:blocks/goldtank/side", "end": "irontanks:blocks/goldtank/end", "side": "irontanks:blocks/goldtank/side", "side_stacked": "irontanks:blocks/goldtank/side_stacked" } }, "diamond": { "textures": { "particle": "irontanks:blocks/diamondtank/side", "end": "irontanks:blocks/diamondtank/end", "side": "irontanks:blocks/diamondtank/side", "side_stacked": "irontanks:blocks/diamondtank/side_stacked" } }, "obsidian": { "textures": { "particle": "irontanks:blocks/obsidiantank/side", "end": "irontanks:blocks/obsidiantank/end", "side": "irontanks:blocks/obsidiantank/side", "side_stacked": "irontanks:blocks/obsidiantank/side_stacked" } } } } } model: { "elements": [ { "from": [2, 0, 2], "to": [14, 16, 14], "faces": { "down": {"texture": "#end", "cullface": "down"}, "up": {"texture": "#end", "cullface": "up"}, "north": {"texture": "#side"}, "south": {"texture": "#side"}, "west": {"texture": "#side"}, "east": {"texture": "#side"} } } ] } So far everything works. I can place the blocks and they render as expected and it seems like all that should be required at this point it to apply some transformations so it scales right in the player's hand etc; so I have an iron_tank item model too that inherits the block model and applies the transformations: { "parent": "irontanks:block/iron_tank", "display": { "gui": { "rotation": [30, 225, 0], "translation": [0, 0, 0], "scale": [0.625, 0.625, 0.625] }, "ground": { "rotation": [0, 0, 0], "translation": [0, 3, 0], "scale": [0.25, 0.25, 0.25] }, "fixed": { "rotation": [0, 0, 0], "translation": [0, 0, 0], "scale": [0.5, 0.5, 0.5] }, "thirdperson_righthand": { "rotation": [75, 45, 0], "translation": [0, 2.5, 0], "scale": [0.375, 0.375, 0.375] }, "firstperson_righthand": { "rotation": [0, 45, 0], "translation": [0, 0, 0], "scale": [0.40, 0.40, 0.40] }, "firstperson_lefthand": { "rotation": [0, 225, 0], "translation": [0, 0, 0], "scale": [0.40, 0.40, 0.40] } } }
July 22, 20178 yr The problem is that you don't ever register a item model to your block's items, at least as far as I could tell. You need to call ModelLoader.setCustomModelResourceLocation and you can check out this thread for more info. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
July 22, 20178 yr Author Semi-progress, I added the following chunk of code: for (IronTankType type : IronTankType.VALUES) { ModelLoader.setCustomModelResourceLocation(Content.ironTankItemBlock, type.metaValue, new ModelResourceLocation(Content.ironTankItemBlock.getRegistryName(), "stacked=false,variant=" + type.name)); } and now the item renders in my hand with the right shape and transformation; but now nothing has a texture (neither in my hand, nor placed as a block)
July 22, 20178 yr The FML log (logs/fml-client-latest.log in the game directory) should say why the textures aren't working, please post it using Gist or Pastebin. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
July 23, 20178 yr Author Log: https://gist.github.com/Indemnity83/45cea216e9538d73efe9b1a93aa9587f Scrolling through it, I don't see any indication of a problem with the block models. There are some for the upgrade items (which are working fine). Maybe I just don't know what I'm looking for.
July 23, 20178 yr Indeed, there aren't any model/texture errors in the log. Please update your Git repository with the latest version of your code, I'd like to debug this locally. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
July 23, 20178 yr Author The branch 1.11/feature/fix_block_rendering incorporates the changes: https://github.com/Indemnity83/irontanks/tree/1.11/feature/fix_block_rendering Thanks for your help.
July 24, 20178 yr Author Is it possibly because I haven't moved the rendering stuff into a client only proxy yet? I didn't actually think this was going to be a problem functionally, just performance so I wanted to get everything working, then refactor things into their best homes.
July 24, 20178 yr 40 minutes ago, indemnity83 said: Is it possibly because I haven't moved the rendering stuff into a client only proxy yet? I didn't actually think this was going to be a problem functionally, just performance so I wanted to get everything working, then refactor things into their best homes. Registering the models in common code will crash the dedicated server, but it should work in single player. Something's causing the iron_tank model to be treated differently to the iron_tank_stacked model (it's loaded but not baked), but I haven't determined what that is yet. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
July 28, 20178 yr Author Progress! I have the blocks rendering again, and now the item in my hand has all the right transformations, but without textures. I actually think the item in my hand not having textures is maybe a different problem having to do with blockstates and how item don't pay any attention to blockstates. What I changed was removing the "stacked" variant information from the resource string on load. No idea why that was hanging things up, but that part at least seems to be working again.
July 28, 20178 yr 12 hours ago, indemnity83 said: What I changed was removing the "stacked" variant information from the resource string The whole JSON resource paradigm is extremely fragile. Strings must be matched exactly. Your IDE isn't there to flag typos. Just one misplaced underscore or mixed-case string (semantic error) in either your JSON or the variable that must match it) can derail a JSON file, even if the JSON passes json lint (which you should be using to prove your JSON files are at least syntactically kosher). Therefore, sometimes it helps to have your text editor search for all occurrences of identifiers related to a nonfunctional object. What it fails to find might surprise you. If that doesn't trip anything, then set break points in your methods that concatenate strings so you can examine them in the debugger. The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
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.