[Сторона] Как сделать поворот(например направо)

Версия Minecraft
1.7.10
5,149
49
899
Как сделать поворот блока направо, если на x-1, стоит другой блок(любой ваще). А если нету, то не поворачивать? 
В рендер-тайл-энтити можно писать всякие setBlock и getBlock'и ?
P.S Нашел кучу тем, как поворачивать относительно игрока, а вот как относительно блока- не нашел.

Up - например
Код:
public void render(TileEntityMyceliumBend tile, double x, double y, double z, float f) {
 World world;
 int metadata = tile.getBlockMetadata();
 int rotationAngle = 0;
 if(world.getBlock(x,y,z,Blocks.bedrock)){
 if(metadata%4 == 0)
 {
 rotationAngle = 270 - 90;
 } 
 }
 if(metadata%4 == 1)
 {
 rotationAngle = 0;
 }
 if(metadata%4 == 2)
 {
 rotationAngle = 90 ;
 } 
 if(metadata%4 == 3)
 {
 rotationAngle = 180 + 90;
 
 
 }


Но ошибку подсвечивает.


 
Решение
Либо место world использовать tile.getWorldObj(), либо типа так:
Код:
World world = tile.getWorldObj();

И x, y и z нужны int, а не double. Т.е. tile.xCoord, tile.yCoord и tile.zCoord.
Код:
public void render(TileEntityMyceliumBend tile, double x, double y, double z, float f) {

int position = 4;
if (tile.getWorldObj().getBlock(tile.xCoord + 1, tile.yCoord , tile.zCoord) == Blocks.bedrock){
Ап. Тема вери весьма актульна
 
Щас тебе мой код трубы чтоль кину.


Вообще не буду. Это выглядит так:
Рендеришь серединку. Если справа есть блок, рендеришь кусочек справа, слева - слева, впереди - переднюю, сзади - заднюю. В чём проблема?)
 
svk2140 написал(а):
Щас тебе мой код трубы чтоль кину.


Вообще не буду. Это выглядит так:
Рендеришь серединку. Если справа есть блок, рендеришь кусочек справа, слева - слева, впереди - переднюю, сзади - заднюю. В чём проблема?)



ВАХ! Точно! Я ж так пиццу делал. Все спасибо!


Стоп, а куда этот World вставлять? Если делать в рендере условие, то он очень ругается на getBlock


Хотя вообще я рано тему закрыл. Написать что то типо вот такого?\
Но никак не хочет getBlock принимать. Хочет изменить на isAirBlock
Код:
public void render(TileEntityMyceliumBend tile, double x, double y, double z, float f) {
 
 
 World world;
 
 int position = 4;
 if(world.getBlock(x + 1, y, z) == Blocks.bedrock){
 position = 3;
 }

 GL11.glPushMatrix();
 GL11.glTranslated(x, y, z);
 GL11.glTranslatef(0.5F, 0.0F, 0.5F);
 GL11.glEnable(GL11.GL_BLEND);
 
 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
 bindTexture(texture_grow);
 model.renderPart("Line005");
 model.renderPart("Box003");
 model.renderPart("Box011");
 model.renderPart("Box031");
 model.renderPart("Box032");
 model.renderPart("Box033");
 model.renderPart("Box042");
 if (position == 3){
 model.renderPart("Box002");
 // model.renderPart("Box003");
 model.renderPart("Box004");
 model.renderPart("Box005");
 GL11.glDisable(GL11.GL_BLEND);

 GL11.glPopMatrix();
 
Апдейт темы!
 
tile.worldObj
 
Либо место world использовать tile.getWorldObj(), либо типа так:
Код:
World world = tile.getWorldObj();

И x, y и z нужны int, а не double. Т.е. tile.xCoord, tile.yCoord и tile.zCoord.
Код:
public void render(TileEntityMyceliumBend tile, double x, double y, double z, float f) {

int position = 4;
if (tile.getWorldObj().getBlock(tile.xCoord + 1, tile.yCoord , tile.zCoord) == Blocks.bedrock){
 
Назад
Сверху