Posted January 15, 201510 yr So, I made custom rendered block. When I try to make it rotate with this : @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack){ if(entity == null){ return; } TileEntityMaP tile = (TileEntityMaP)world.getTileEntity(x, y, z); tile.direction = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F/360) + 0.5D) & 3; it works fine, but after I relog directions aren't saved. I think NBT tags are needed but I need help with that. this model isn't centered so it's hitbox stays same even if rotated ._. I've tried using AABBs but it doesn't work... Any ideas? Thing I love most in this forum, is that when you ask for help, moderators don't give you ready code, you have to figure it out yourself.
January 15, 201510 yr Author Okay, I'll figure out that, but what about hitbox? Thing I love most in this forum, is that when you ask for help, moderators don't give you ready code, you have to figure it out yourself.
January 15, 201510 yr I made a fairly huge topic that should help you to find an answer - the post is called '[1.7.10] Directional Models' and should just be about 10 or so topics below this one
January 15, 201510 yr Author public static AxisAlignedBB getRotatedInstance(AxisAlignedBB def, int rotation) { def = def.copy(); def.offset(-0.5, -0.5, -0.5); switch (rotation) { case 2 : def = AxisAlignedBB.getBoundingBox(def.minZ, def.minY, def.maxX * -1, def.maxZ, def.maxY, def.minX * -1); case 3 : def = AxisAlignedBB.getBoundingBox(def.maxX * -1, def.minY, def.maxZ * -1, def.minX * -1, def.maxY, def.minZ * -1); case 1 : def = AxisAlignedBB.getBoundingBox(def.maxZ * -1, def.minY, def.minX, def.minZ * -1, def.maxY, def.maxX); } def.offset(0.5, 0.5, 0.5); return def; } Of course X,Y,Z coordinates were changed(below 1.0F) Thing I love most in this forum, is that when you ask for help, moderators don't give you ready code, you have to figure it out yourself.
January 15, 201510 yr And... where do you call this method? Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! | mah twitter This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.
January 15, 201510 yr Author I tried in block.java and RenderBlock.java.... Am I being a total noob? ╥﹏╥ Thing I love most in this forum, is that when you ask for help, moderators don't give you ready code, you have to figure it out yourself.
January 15, 201510 yr Author package com.joey.renderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.Entity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import com.joey.Main.lib.RefStrings; import com.joey.model.ModelMaP; public class RenderMaP extends TileEntitySpecialRenderer{ private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/model/MaP.png"); private ModelMaP model; public RenderMaP(){ this.model = new ModelMaP(); } public static AxisAlignedBB getRotatedInstance(AxisAlignedBB def, int rotation) { def = def.copy(); def.offset(-0.25, -0.5, -0.25); switch (rotation) { case 2 : def = AxisAlignedBB.getBoundingBox(0.625F, 0F, 0.375F * -1, 0.875F, 0.1875F, 0.125F * -1); case 3 : def = AxisAlignedBB.getBoundingBox(0.375F * -1, 0F, 0.875F * -1, 0.125F * -1, 0.1875F, 0.625F * -1); case 1 : def = AxisAlignedBB.getBoundingBox(0.875F * -1, 0F, 0.125F, 0.625F * -1, 0.1875F, 0.375F); } def.offset(0.25, 0.5, 0.25); return def; } @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); GL11.glRotatef(180, 0.0F, 0.0F, 1.0F); this.bindTexture(texture); GL11.glPushMatrix(); this.model.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); GL11.glPopMatrix(); } } I also forgot to change default center offsets (defs are 0.5(center of the block)) but already fixed it with some help... I think this must work now... isn't it? just gonna add rotation to it. Thing I love most in this forum, is that when you ask for help, moderators don't give you ready code, you have to figure it out yourself.
January 15, 201510 yr Author ||||UPDATE|||| I added rotation angles but it still doesn't work package com.joey.renderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.Entity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import com.joey.Main.lib.RefStrings; import com.joey.blocks.TileEntity.TileEntityMaP; import com.joey.model.ModelMaP; public class RenderMaP extends TileEntitySpecialRenderer{ private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/model/MaP.png"); private ModelMaP model; public RenderMaP(){ this.model = new ModelMaP(); } public static AxisAlignedBB getRotatedInstance(AxisAlignedBB def, int rotation) { def = def.copy(); def.offset(-0.25, -0.5, -0.25); switch (rotation) { case 2 : def = AxisAlignedBB.getBoundingBox(0.625F, 0F, 0.375F * -1, 0.875F, 0.1875F, 0.125F * -1); case 3 : def = AxisAlignedBB.getBoundingBox(0.375F * -1, 0F, 0.875F * -1, 0.125F * -1, 0.1875F, 0.625F * -1); case 1 : def = AxisAlignedBB.getBoundingBox(0.875F * -1, 0F, 0.125F, 0.625F * -1, 0.1875F, 0.375F); } def.offset(0.25, 0.5, 0.25); return def; } public void renderAModelAt(TileEntityMaP EntityMaP, double x, double y, double z, float f){ int metadata = EntityMaP.getBlockMetadata(); int rotationAngle = 0; if(metadata%4 == 0){ rotationAngle = 0; } if(metadata%4 == 1){ rotationAngle = 270; } if(metadata%4 == 2){ rotationAngle = 180; } if(metadata%4 == 3){ rotationAngle = 90; } GL11.glPushMatrix(); GL11.glTranslated((float) x + 0.5F,(float) y + 1.5F,(float) z + 0.5F); GL11.glScalef(1.0F, -1F, -1F); GL11.glRotatef(rotationAngle * 90, 0.0F, 1.0F, 0.0F); this.bindTexture(texture); this.model.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); } @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); GL11.glRotatef(180, 0.0F, 0.0F, 1.0F); this.bindTexture(texture); GL11.glPushMatrix(); this.model.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); GL11.glPopMatrix(); } } Thing I love most in this forum, is that when you ask for help, moderators don't give you ready code, you have to figure it out yourself.
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.