Posted August 12, 20214 yr Hi, I would like to create a two-part block, like a fixed base and an upper part which is moving up and down. So I looked how vanilla does for the bell and other blocks like this, however I am struggling, I know I should do it in TileEntityRenderer, but should I use IForgeBakedModel or anything else ? I also read the doc in Advanced Block Models but I think I need some more infos
August 12, 20214 yr 51 minutes ago, bibouche_ said: So I looked how vanilla does for the bell and other blocks like this, however I am struggling, I know I should do it in TileEntityRenderer, but should I use IForgeBakedModel or anything else ? I also read the doc in Advanced Block Models but I think I need some more infos you will need a custom model, take a look at the Book model for the EnchantingTable
August 12, 20214 yr Author Okay so I got that, however if I am right I do need to add the boxes manually, or is there a way to use a json model ? Because my model is quiet complex and adding cube by cube would take years
August 12, 20214 yr you can use Blockbench to create the model (Modded Entity) you need to update the method names if you are using mojang mappings because Blockbench still use MCP mappings
August 12, 20214 yr Author Oh, I was already using blockbench but I didn’t know that I should do Modded Entity project. Thanks, I should be able do finish it on my own now.
August 13, 20214 yr Author Okayy so I have my model, and got it to render, however the only issue I have is that it doesn't display the texture, and I really don't know where it could come from. Model : public class CelestialWorkbenchLevitatingPartModel extends Model { private final ModelRenderer model; public CelestialWorkbenchLevitatingPartModel() { super(RenderType::getEntitySolid); textureWidth = 64; textureHeight = 32; model = new ModelRenderer(this); model.setRotationPoint(0.0F, 24.0F, 0.0F); model.setTextureOffset(0, 0).addBox(-7.0F, -6.0F, -7.0F, 14.0F, 1.0F, 14.0F, 0.0F, false); model.setTextureOffset(0, 23).addBox(7.0F, -7.0F, -8.0F, 1.0F, 5.0F, 1.0F, 0.0F, true); model.setTextureOffset(0, 23).addBox(-8.0F, -7.0F, -8.0F, 1.0F, 5.0F, 1.0F, 0.0F, true); model.setTextureOffset(0, 23).addBox(-8.0F, -7.0F, 7.0F, 1.0F, 5.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 23).addBox(7.0F, -7.0F, 7.0F, 1.0F, 5.0F, 1.0F, 0.0F, false); model.setTextureOffset(13, 15).addBox(-7.0F, -7.0F, -8.0F, 14.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(13, 15).addBox(-7.0F, -7.0F, 7.0F, 14.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(6, 17).addBox(7.0F, -7.0F, -7.0F, 1.0F, 1.0F, 14.0F, 0.0F, false); model.setTextureOffset(6, 17).addBox(-8.0F, -7.0F, -7.0F, 1.0F, 1.0F, 14.0F, 0.0F, true); model.setTextureOffset(0, 20).addBox(6.0F, -10.0F, -7.0F, 1.0F, 2.0F, 1.0F, 0.0F, true); model.setTextureOffset(0, 20).addBox(-7.0F, -10.0F, -7.0F, 1.0F, 2.0F, 1.0F, 0.0F, true); model.setTextureOffset(0, 20).addBox(-7.0F, -10.0F, 6.0F, 1.0F, 2.0F, 1.0F, 0.0F, true); model.setTextureOffset(0, 20).addBox(6.0F, -10.0F, 6.0F, 1.0F, 2.0F, 1.0F, 0.0F, true); model.setTextureOffset(0, 15).addBox(4.0F, -10.0F, -8.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 15).addBox(-6.0F, -10.0F, -8.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 15).addBox(-6.0F, -10.0F, 7.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 15).addBox(4.0F, -10.0F, 7.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 17).addBox(7.0F, -10.0F, -6.0F, 1.0F, 1.0F, 2.0F, 0.0F, true); model.setTextureOffset(0, 17).addBox(7.0F, -10.0F, 4.0F, 1.0F, 1.0F, 2.0F, 0.0F, true); model.setTextureOffset(0, 17).addBox(-8.0F, -10.0F, 4.0F, 1.0F, 1.0F, 2.0F, 0.0F, true); model.setTextureOffset(0, 17).addBox(-8.0F, -10.0F, -6.0F, 1.0F, 1.0F, 2.0F, 0.0F, true); model.setTextureOffset(35, 8).addBox(6.0F, -8.0F, -8.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(31, 4).addBox(-7.0F, -8.0F, -8.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(35, 8).addBox(-7.0F, -8.0F, 7.0F, 1.0F, 1.0F, 1.0F, 0.0F, true); model.setTextureOffset(29, 12).addBox(6.0F, -8.0F, 7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(30, 10).addBox(7.0F, -8.0F, -7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(28, 0).addBox(7.0F, -8.0F, 6.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(37, 1).addBox(-8.0F, -8.0F, 6.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(38, 12).addBox(-8.0F, -8.0F, -7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 0).addBox(6.0F, -2.0F, -9.0F, 3.0F, 1.0F, 3.0F, 0.0F, true); model.setTextureOffset(0, 0).addBox(6.0F, -2.0F, 6.0F, 3.0F, 1.0F, 3.0F, 0.0F, true); model.setTextureOffset(0, 0).addBox(-9.0F, -2.0F, 6.0F, 3.0F, 1.0F, 3.0F, 0.0F, true); model.setTextureOffset(0, 0).addBox(-9.0F, -2.0F, -9.0F, 3.0F, 1.0F, 3.0F, 0.0F, true); model.setTextureOffset(37, 6).addBox(6.0F, -6.0F, -8.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(32, 2).addBox(-7.0F, -6.0F, -8.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(29, 0).addBox(-8.0F, -6.0F, -7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(36, 11).addBox(-8.0F, -6.0F, 6.0F, 1.0F, 1.0F, 1.0F, 0.0F, true); model.setTextureOffset(33, 3).addBox(-7.0F, -6.0F, 7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(31, 13).addBox(6.0F, -6.0F, 7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(29, 0).addBox(7.0F, -6.0F, 6.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(37, 5).addBox(7.0F, -6.0F, -7.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(0, 1).addBox(6.0F, -6.0F, -8.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(35, 4).addBox(5.0F, -7.0F, -7.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(36, 0).addBox(-7.0F, -7.0F, -7.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(33, 4).addBox(-7.0F, -7.0F, 6.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(30, 6).addBox(5.0F, -7.0F, 6.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(32, 12).addBox(6.0F, -7.0F, -6.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(33, 7).addBox(-7.0F, -7.0F, -6.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(37, 7).addBox(-7.0F, -7.0F, 5.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(33, 7).addBox(6.0F, -7.0F, 5.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(30, 2).addBox(-1.0F, -7.0F, -7.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(30, 5).addBox(-1.0F, -7.0F, 6.0F, 2.0F, 1.0F, 1.0F, 0.0F, false); model.setTextureOffset(35, 9).addBox(6.0F, -7.0F, -1.0F, 1.0F, 1.0F, 2.0F, 0.0F, false); model.setTextureOffset(31, 2).addBox(-7.0F, -7.0F, -1.0F, 1.0F, 1.0F, 2.0F, 0.0F, false); model.setTextureOffset(26, 12).addBox(-2.0F, -5.0F, -2.0F, 4.0F, 1.0F, 4.0F, 0.0F, true); model.setTextureOffset(34, 1).addBox(-1.0F, -5.0F, -4.0F, 2.0F, 1.0F, 2.0F, 0.0F, false); model.setTextureOffset(33, 8).addBox(-1.0F, -5.0F, 2.0F, 2.0F, 1.0F, 2.0F, 0.0F, true); model.setTextureOffset(29, 11).addBox(2.0F, -5.0F, -1.0F, 2.0F, 1.0F, 2.0F, 0.0F, false); model.setTextureOffset(32, 7).addBox(-4.0F, -5.0F, -1.0F, 2.0F, 1.0F, 2.0F, 0.0F, false); model.setTextureOffset(29, 1).addBox(-1.0F, -4.0F, -2.0F, 2.0F, 1.0F, 4.0F, 0.0F, false); model.setTextureOffset(30, 1).addBox(1.0F, -4.0F, -1.0F, 1.0F, 1.0F, 2.0F, 0.0F, true); model.setTextureOffset(34, 13).addBox(-2.0F, -4.0F, -1.0F, 1.0F, 1.0F, 2.0F, 0.0F, false); model.setTextureOffset(31, 2).addBox(0.0F, -3.0F, -1.0F, 1.0F, 3.0F, 1.0F, 0.0F, true); model.setTextureOffset(38, 10).addBox(-1.0F, -3.0F, -1.0F, 1.0F, 2.0F, 1.0F, 0.0F, false); model.setTextureOffset(30, 5).addBox(0.0F, -3.0F, 0.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); } @Override public void render(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { model.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); } } Renderer: public class CelestialWorkbenchTileEntityRenderer extends TileEntityRenderer<CelestialWorkbenchTileEntity> { public static final RenderMaterial TOP_TEXTURE = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(Alcamod.ModID, "entity/celestial_workbench_top")); private final CelestialWorkbenchLevitatingPartModel model_top = new CelestialWorkbenchLevitatingPartModel(); public CelestialWorkbenchTileEntityRenderer(TileEntityRendererDispatcher rendererDispatcher) { super(rendererDispatcher); } @Override public void render(CelestialWorkbenchTileEntity tileEntityIn, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) { matrixStackIn.push(); matrixStackIn.translate(0.0d, 1.0d, 0.0); matrixStackIn.rotate(Vector3f.XP.rotationDegrees(180.0F)); IVertexBuilder iVertexBuilder = TOP_TEXTURE.getBuffer(bufferIn, RenderType::getEntitySolid); this.model_top.render(matrixStackIn, iVertexBuilder, combinedLightIn, combinedOverlayIn, 1.0F, 1.0F, 1.0F, 1.0F); matrixStackIn.pop(); } }
August 13, 20214 yr Author Just now, Luis_ST said: where is your texture located under assets/textures/entity/celestial_workbench_top.png
August 13, 20214 yr should normally work but you can try to stitch the texture in TextureStitchEvent.Pre
August 13, 20214 yr Author 15 minutes ago, Luis_ST said: should normally work but you can try to stitch the texture in TextureStitchEvent.Pre Alright, worked, thanks !
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.