Posted November 11, 20204 yr Hi guys, i am learning to develop forge mods on 1.16.3 and i am wondering if you have any idea of how i can simplify this blockstate file. Currently i have a miniframe item, that can be attached on a block in all 6 directions, with a custom model. Furthermore it can then be rotated depending on the player position. The code for setting the blockstates etc. all work out and the block is behaving exactly how it should. However currently i have the model pre-transformed in all 24 versions of blockstates. Is there a smarter way to do this? I Tried using the built in X and Y parameters in the JSON, but could not achieve all the needed mutations. Ideally i would like to just have one render of the model, since it only differs in rotation and reexporting it quickly becomes a chore. { "variants": { "facing=up,rotated=0": { "model": "testmod:block/miniframe_up_n"}, "facing=up,rotated=1": { "model": "testmod:block/miniframe_up_s"}, "facing=up,rotated=2": { "model": "testmod:block/miniframe_up_e"}, "facing=up,rotated=3": { "model": "testmod:block/miniframe_up_w"}, "facing=down,rotated=0": { "model": "testmod:block/miniframe_down_n"}, "facing=down,rotated=1": { "model": "testmod:block/miniframe_down_s"}, "facing=down,rotated=2": { "model": "testmod:block/miniframe_down_e"}, "facing=down,rotated=3": { "model": "testmod:block/miniframe_down_w"}, "facing=north,rotated=0": { "model": "testmod:block/miniframe_north_u" }, "facing=north,rotated=1": { "model": "testmod:block/miniframe_north_d" }, "facing=north,rotated=2": { "model": "testmod:block/miniframe_north_e" }, "facing=north,rotated=3": { "model": "testmod:block/miniframe_north_w" }, "facing=south,rotated=0": { "model": "testmod:block/miniframe_south_u"}, "facing=south,rotated=1": { "model": "testmod:block/miniframe_south_d"}, "facing=south,rotated=2": { "model": "testmod:block/miniframe_south_e"}, "facing=south,rotated=3": { "model": "testmod:block/miniframe_south_w"}, "facing=west,rotated=0": { "model": "testmod:block/miniframe_west_u"}, "facing=west,rotated=1": { "model": "testmod:block/miniframe_west_d"}, "facing=west,rotated=2": { "model": "testmod:block/miniframe_west_n"}, "facing=west,rotated=3": { "model": "testmod:block/miniframe_west_s"}, "facing=east,rotated=0": { "model": "testmod:block/miniframe_east_u"}, "facing=east,rotated=1": { "model": "testmod:block/miniframe_east_d"}, "facing=east,rotated=2": { "model": "testmod:block/miniframe_east_n"}, "facing=east,rotated=3": { "model": "testmod:block/miniframe_east_s"} } }
November 12, 20204 yr Since they are all unique models, I don't think a multipart could simplify what you've shown currently. You could find out which variations of the model result in similar states or states that differ by rotation such that you don't need all of these. Then you can simplify.
November 12, 20204 yr Author Ah perhaps i was not explicit enough in the first post, but all the models are rotations of the first one. They are just "prerotated" in the modelling software
November 12, 20204 yr Then you can use x and y rotations to get the same result. See this for more information.
November 12, 20204 yr Author That would still leavy me having to export multiple versions of the model in different rotations, as the X and Y rotations allo 0, 90, 180 and 270 each, giving me at max 16 combinations out of the 24 needed. Is there any way to use the transform property? I have tried adding it but it seems to have little effect (and its documentation is barely existing)
November 12, 20204 yr Author 1 hour ago, Heliarco said: That would still leavy me having to export multiple versions of the model in different rotations, as the X and Y rotations allo 0, 90, 180 and 270 each, giving me at max 16 combinations out of the 24 needed. Is there any way to use the transform property? I have tried adding it but it seems to have little effect (and its documentation is barely existing) Damn after stepping through the MC Code i can now 100% confirm that for model variants the ONLY properties that are used for rotation are the X and Y, nothing else, the transform field referred to here: https://gist.github.com/RainWarrior/0618131f51b8d37b80a6 specifically does not apply to the main model. only to models in hand etc. the relevant mc code (MASSIVELY abbreviated) basically does this when it encounters the transform element. int i = JSONUtils.getInt(json, "x", 0); int j = JSONUtils.getInt(json, "y", 0); ModelRotation modelrotation = ModelRotation.getModelRotation(i, j); I think my conclusion here is to just write a small script for Blockbench (the modelling tool i use) and have it generate all the models that way
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.