Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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.

  • 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.

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

  • 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.

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.

  • 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.

  • 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.

  • 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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.