Поворот блока)

Версия Minecraft
1.7.10
Привет всем!Делал поворот блока,но ругается на 
Код:
((BlockDryerTileEntity)world.getTileEntity(x, y, z)).func_145951_a(itemStack.getDisplayName());

Класс блока:
Код:
public class BlockObj extends Block implements ITileEntityProvider {
 private final Random field_149933_a = new Random();

 private static boolean field_149934_M;


 private boolean isActive;
 private IIcon iconFront;
 private IIcon iconTop;
 private IIcon iconDown;
 public BlockObj() {
 super(Material.circuits);
 setCreativeTab(CreativeTabs.tabBlock);
 setHardness(0.25F);
 setStepSound(soundTypeMetal);
 setBlockTextureName("iron_block");
 setBlockName(ModBlockObj.MODID + ".block_obj");
 }

 @Override
 public TileEntity createNewTileEntity(World world, int metadata) {
 return new TileEntityObj();
 }

 public int getRenderType() {
 return -1;
 }

 public boolean isOpaqueCube() {
 return false;
 }

 public boolean renderAsNormalBlock() {
 return false;
 }
 @SideOnly(Side.CLIENT)
 public IIcon getIcon(int side, int meta)
 {
 ForgeDirection dir = ForgeDirection.getOrientation(side);
      ForgeDirection block_dir;
      if (meta != 0)
          block_dir = ForgeDirection.getOrientation(meta);
      else
          block_dir = ForgeDirection.SOUTH;
      if (block_dir == dir) return iconFront;

 return side == 1 ? this.iconTop : (side == 0 ? this.iconDown : (side != meta ? this.blockIcon : this.iconFront));
 }
 public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase eLB, ItemStack itemStack)
 {
 int l = MathHelper.floor_double((double)(eLB.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

 if (l == 0)
 {
 world.setBlockMetadataWithNotify(x, y, z, 2, 2);
 }

 if (l == 1)
 {
 world.setBlockMetadataWithNotify(x, y, z, 5, 2);
 }

 if (l == 2)
 {
 world.setBlockMetadataWithNotify(x, y, z, 3, 2);
 }

 if (l == 3)
 {
 world.setBlockMetadataWithNotify(x, y, z, 4, 2);
 }

 if (itemStack.hasDisplayName())
 {
 ((BlockDryerTileEntity)world.getTileEntity(x, y, z)).func_145951_a(itemStack.getDisplayName());
 }
 }
}

Помогите пожалуйста
 
5,023
47
784
Лол, лол, ЛОЛ! Пора пилить гайд как делать печку...
Насколько я знаю тайл - механизм без непосредственной связи с игровым пространством. Контейнер - это собственно реализация слотов и механизма, вроде как, но это не точно. Гуи - это то что рисуется на экране и позволяет тебе не вслепую тыкать в экран, нащупывая слот, а видеть его сразу
 
Maxik001 написал(а):
Лол, лол, ЛОЛ! Пора пилить гайд как делать печку...
Насколько я знаю тайл - механизм без непосредственной связи с игровым пространством. Контейнер - это собственно реализация слотов и механизма, вроде как, но это не точно. Гуи - это то что рисуется на экране и позволяет тебе не вслепую тыкать в экран, нащупывая слот, а видеть его сразу

Ты видимо меня неправильно понял,у меня просто блок с моделькой OBJ,и я хочу сделать так что бы моделька поворачивалась лицом к иггроку.
 

timaxa007

Модератор
5,831
409
672
У тебя повороты сохраняются в метадате и эту метадату используешь для поворота модели в рендере.
А то что у тебя ошибка на func_145951_a, то скорее всего у тебя нету этого метода.
 
5,023
47
784
Аа , я тебя понял. Я тут дебажил малек, короче в render такое напиши(ну и настрой, если что не так)
Код:
	int metadata = tile.getBlockMetadata();
		int rotationAngle = 0;
		if(metadata%4 == 0)
		{
		rotationAngle = 180;
		}
		if(metadata%4 == 1)
		{
		rotationAngle = 90 ;
		}
		if(metadata%4 == 2)
		{
		rotationAngle = 0;
		} 
		if(metadata%4 == 3)
		{
		rotationAngle = 270;
		}
 
timaxa007 написал(а):
У тебя повороты сохраняются в метадате и эту метадату используешь для поворота модели в рендере.
А то что у тебя ошибка на func_145951_a, то скорее всего у тебя нету этого метода.

Ошибка на эту строку
Код:
(BlockDryerTileEntity)world.getTileEntity(x, y, z))


Maxik001 написал(а):
Аа , я тебя понял. Я тут дебажил малек, короче в render такое напиши(ну и настрой, если что не так)
Код:
 int metadata = tile.getBlockMetadata();
 int rotationAngle = 0;
 if(metadata%4 == 0)
 {
 rotationAngle = 180;
 }
 if(metadata%4 == 1)
 {
 rotationAngle = 90 ;
 }
 if(metadata%4 == 2)
 {
 rotationAngle = 0;
 } 
 if(metadata%4 == 3)
 {
 rotationAngle = 270;
 }
Чет все равно поворот не робит
 

timaxa007

Модератор
5,831
409
672
Hajime написал(а):
Ошибка на эту строку
Ты используешь TileEntityObj, а пытаешься дать BlockDryerTileEntity.

Hajime написал(а):
Чет все равно поворот не робит
rotationAngle нужно использовать как значение угла поворота в GL11.glRotatef или GL11.glRotated в рендере.
 
timaxa007 написал(а):
Hajime написал(а):
Ошибка на эту строку
Ты используешь TileEntityObj, а пытаешься дать BlockDryerTileEntity.

Hajime написал(а):
Чет все равно поворот не робит
rotationAngle нужно использовать как значение угла поворота в GL11.glRotatef или GL11.glRotated в рендере.

Чет не понял :s
 
5,023
47
784
Держи весь класс целиком(это мое, тебе нужно отредактировать под себя!!!)
Код:
public class RenderTileEntityChair extends TileEntitySpecialRenderer {

 public static final IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation("spaceadvanced:model/chair.obj"));
 public static final ResourceLocation
 texture = new ResourceLocation("spaceadvanced:model/texture_chairs/iron_armrest.png"),
 textureDark = new ResourceLocation("spaceadvanced:model/texture_chairs/dark.png"),
 textureInsetRed = new ResourceLocation("spaceadvanced:model/texture_chairs/iron_insetRed.png");
 @Override
 public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
 render((TileEntityChair)tile, x, y, z, f);
 }

 public void render(TileEntityChair tile, double x, double y, double z, float f) {

 int metadata = tile.getBlockMetadata();
 int rotationAngle = 0;
 if(metadata%4 == 0)
 {
 rotationAngle = 180;
 }
 if(metadata%4 == 1)
 {
 rotationAngle = 90 ;
 }
 if(metadata%4 == 2)
 {
 rotationAngle = 0;
 } 
 if(metadata%4 == 3)
 {
 rotationAngle = 270;
 }


 World world = tile.getWorldObj();

 GL11.glPushMatrix();
 GL11.glTranslated(x, y, z);
 GL11.glTranslatef(0.5F, 0.0F, 0.5F);
 GL11.glEnable(GL11.GL_BLEND);
 GL11.glRotatef(rotationAngle + 180, 0.0F,1.0F, 0);
 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

 bindTexture(textureDark);
 model.renderPart("armrest1");
 model.renderPart("armrest2");
 model.renderPart("Leg1");
 model.renderPart("Leg2");
 model.renderPart("Leg3");
 model.renderPart("Leg4");

 bindTexture(textureInsetRed);
 model.renderPart("armrest1D");
 model.renderPart("armrest2D");
 model.renderPart("BackrestWool");
 model.renderPart("SeatWool");
 
 bindTexture(texture);
 model.renderPart("Backrest");
 model.renderPart("Seat");

 GL11.glDisable(GL11.GL_BLEND);
 GL11.glPopMatrix();
}
}
 
Maxik001 написал(а):
Держи весь класс целиком(это мое, тебе нужно отредактировать под себя!!!)
Код:
public class RenderTileEntityChair extends TileEntitySpecialRenderer {

 public static final IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation("spaceadvanced:model/chair.obj"));
 public static final ResourceLocation
 texture = new ResourceLocation("spaceadvanced:model/texture_chairs/iron_armrest.png"),
 textureDark = new ResourceLocation("spaceadvanced:model/texture_chairs/dark.png"),
 textureInsetRed = new ResourceLocation("spaceadvanced:model/texture_chairs/iron_insetRed.png");
 @Override
 public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
 render((TileEntityChair)tile, x, y, z, f);
 }

 public void render(TileEntityChair tile, double x, double y, double z, float f) {

 int metadata = tile.getBlockMetadata();
 int rotationAngle = 0;
 if(metadata%4 == 0)
 {
 rotationAngle = 180;
 }
 if(metadata%4 == 1)
 {
 rotationAngle = 90 ;
 }
 if(metadata%4 == 2)
 {
 rotationAngle = 0;
 } 
 if(metadata%4 == 3)
 {
 rotationAngle = 270;
 }


 World world = tile.getWorldObj();

 GL11.glPushMatrix();
 GL11.glTranslated(x, y, z);
 GL11.glTranslatef(0.5F, 0.0F, 0.5F);
 GL11.glEnable(GL11.GL_BLEND);
 GL11.glRotatef(rotationAngle + 180, 0.0F,1.0F, 0);
 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

 bindTexture(textureDark);
 model.renderPart("armrest1");
 model.renderPart("armrest2");
 model.renderPart("Leg1");
 model.renderPart("Leg2");
 model.renderPart("Leg3");
 model.renderPart("Leg4");

 bindTexture(textureInsetRed);
 model.renderPart("armrest1D");
 model.renderPart("armrest2D");
 model.renderPart("BackrestWool");
 model.renderPart("SeatWool");
 
 bindTexture(texture);
 model.renderPart("Backrest");
 model.renderPart("Seat");

 GL11.glDisable(GL11.GL_BLEND);
 GL11.glPopMatrix();
}
}

Большое спасибо!Получилось)
 
3,005
192
592
691
1
5
Maxik001 написал(а):

maxresdefault.jpg
 
Сверху