Posted August 26, 201510 yr Hi! I made a fancy model. In 1.8, I cannot render .OBJ models, because there's no wavefront loader in Forge 1.8 (Of course I can copy the 1.7.10 version, but that only works with the rendered block in 1.8 ). So, I converted my .OBJ model into a .B3D model, using Blender with the B3DExporter script, made by RainWarrior. Then, I followed this tutorial (debugging code): https://github.com/MinecraftForge/MinecraftForge/blob/master/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java. Then made a blockstate file by this: https://github.com/MinecraftForge/MinecraftForge/blob/master/src/test/resources/assets/forgedebugmodelloaderregistry/blockstates/CustomModelBlock.json. It worked pretty well. I did my own transforms and in GUI, THIRDPERSON and FIRSTPERSON, they look really good. So, my problem is that Blender has a flipped YZ axis. From Minecraft's aspect the Y axis in Blender is the Z axis, and the Minecraft Z axis in Blender is the Y axis. Because of this, I have a 90° rotation around the X. No problem, in GUI, THIRDPERSON and FIRSTPERSON, I did rotations around the Z axis. So, in these cases it looks nice. But! If I want to do this in the "normal" variant it doesn't work. I don't know why. So, any suggestions how to rotate it when it's placed down? Block class: public class FancyModelBlocks extends Block { public FancyModelBlock() { super(Material.rock); this.setUnlocalizedName(NameReferences.NAME_FANCY_MODEL_BLOCK); this.setCreativeTab(ModCreativeTab.CREATIVE_TAB); } @Override public boolean isOpaqueCube() { return false; } @Override public boolean isFullCube() { return false; } @Override public boolean isVisuallyOpaque() { return false; } @Override public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { B3DLoader.B3DState newState = new B3DLoader.B3DState(null, 1); return ((IExtendedBlockState) state).withProperty(B3DLoader.B3DFrameProperty.instance, newState); } @Override public BlockState createBlockState() { return new ExtendedBlockState(this, new IProperty[]{}, new IUnlistedProperty[]{B3DLoader.B3DFrameProperty.instance}); } } Main mod class' model registering part: @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { B3DLoader.instance.addDomain(MOD_ID.toLowerCase()); ModelLoader.setCustomModelResourceLocation(new FancyModelBlock(), 0, new ModelResourceLocation(MOD_ID.toLowerCase() + ":" + NameReferences.NAME_FANCY_MODEL_BLOCK)); } Blockstate file { "forge_marker": 1, "defaults": { "textures": { "#texture": "mymod:blocks/fancy_model_block_texture" }, "model": "mymod:fancy_model_block.b3d" }, "variants": { "normal": [{ "transform": { "rotation": [{"x": -90}] //This is not working } }], "inventory": [{ "transform": { "firstperson": { "translation": [0, -0.2, 0.15], "rotation": [{"z": 90}] //This is the rotation that I've talked about. In this case +90°, because in FP the perspective changes }, "thirdperson": { "translation": [0, -0.05, 0.025], "rotation": [{"x": 100}, {"y": -45}, {"z": -45}], //Here, to make the model fancier in third person I've rotated around just -45°, not -90° "scale": [0.45, 0.45, 0.45] }, "gui": { "translation": [0, 0.04, 0], "rotation": [{"z": 90}], //In here, it's +90°, because in GUI the perspective changes, too "scale": [0.7, 0.7, 0.7] } } }] } }
August 28, 201510 yr I dont know anything about models, but I do know if you can get access to the method that renders the model you can call GL11.rotateF(rotationsNums) and that'll rotate it easy PS: There is a chance it hasnt been translated properly yet when rendering so you might have to use some trigonometry to move it back to the right spot after rotating (Only a chance) "you seem to be THE best modder I've seen imo." ~spynathan ლ(́◉◞౪◟◉‵ლ
August 28, 201510 yr Author It is not translated properly, but that is easy, just 0.5F or -0.5F on the X or Z. But, I don't really know, how B3D models are getting rendered or where? Is it BlockModelRenderer?
August 28, 201510 yr For the translation do x+0.5, z+0.5 cuz when a Block is rendered, the models origin will be in a corner of the rendered cube. And for the rotation, if the GL11.glRotated(angle, valueX, valueY, valueZ); isn't working, then i don't know what else to do
August 28, 201510 yr Probably youll try changing these lines in the .json file: "variants": { "normal": [{ /*"transform": { "rotation": {"y": 45} }*/ }],
August 28, 201510 yr Hm... since im totally new with the 1.8 block rotation stuff i can't help you with that But ill have a closer look at your problem anyway - ill tell you if i find anything.
August 28, 201510 yr Author Thx, and by the way, I'm not familiar with this too, so... This is kinda a hard thing to do. I mean the 1.8 system is better, but it's much harder to do stuff with.
August 30, 201510 yr Perhaps you should try to export it from Blender with flipped YZ axes... Who are you? Why have you brought me here? And why are there so many PewDiePie fanboys surrounding meeeeeeeee....... *falls into pit and dies*. Also this. Check it out. http://i.imgur.com/J4rrGt6.png[/img]
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.