[1.6.4|Просто-блок] Как повернуть блок лицом к игроку?

11
0
Много гуглил, пытался сделать сам, декомпилировал, тырил код, но находил только такой код:
Код:
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack is) 
    {
        int i1 = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        world.setBlock(x, y, z, this.blockID, i1, 3);
    }
Который поворачивает блок задницей к игроку, но мне нужно лицом, при чём я совершенно не могу понять КАКОГО ХРЕНА ИМЕННО ТАКОЙ ПРИМЕР?
Код:
(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3
Находил ещё много разнообразного кода для моделей, версии 1.7.2 или просто нерабочего кода, вопрос как же всё таки повернуть блок ЛИЦОМ к игроку? ВАРНИНГ! Автор нуб-нуб-нуб-нуб-нуб в моддинге, так что плз не обсирать то что я не могу в каком-то одном месте изменить 4 на 3 и всё будет норм. :lol:

Код блока:
Код:
package assets.СИКРЕТ.blocks.reactor.units;
 
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import assets.СИКРЕТ.src.СИКРЕТ;
import assets.СИКРЕТ.src.ModInfo;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class СИКРЕТ extends Block
{
    private Icon front, side, top, bottom;
    public СИКРЕТ(int par1)
    {
        super(par1, Material.iron);
        this.setCreativeTab(СИКРЕТ.СИКРЕТ);
        this.setHardness(3.5F);
        this.setResistance(90.0F);
    }
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack is) 
    {
        int i1 = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        world.setBlock(x, y, z, this.blockID, i1, 3);
    }
    public boolean isOpaqueCube()
    {
        return false;
    }
    public boolean renderAsNormalBlock()
    {
        return false;
    }
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister register)
    {
        front = register.registerIcon(ModInfo.MODID + ":СИКРЕТ");
        bottom = register.registerIcon(ModInfo.MODID + ":ReactorWallFrame");
        side = register.registerIcon(ModInfo.MODID + ":ReactorWallFrame");
        top = register.registerIcon(ModInfo.MODID + ":ReactorWallFrame");
    }
    public int getRenderBlockPass()
    {
        return 1;
    }
    @Override
    public Icon getIcon(int side, int meta)
    {
        return side == 1 ? this.top : (side == 0 ? this.bottom : (meta == 2 && side == 2 ? this.front : (meta == 3 && side == 5 ? this.front : (meta == 0 && side == 3 ? this.front : (meta == 1 && side == 4 ? this.front : this.side)))));
    }
}
 
В getIcon перепутал где front и back. Инвертируй условие для них.
Код установки поворота правильный. Внезапно, да? У всех всё хорошо, а у тебя тот же код неправильно работает прям. Это значит, что текстуры через жопу назначил.
P.S. Убиват. За. Русский. В. Коде. Сильно. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень.
 
Oldestkon написал(а):
В getIcon перепутал где front и back. Инвертируй условие для них.
Код установки поворота правильный. Внезапно, да? У всех всё хорошо, а у тебя тот же код неправильно работает прям. Это значит, что текстуры через жопу назначил.
P.S. Убиват. За. Русский. В. Коде. Сильно. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень.
Всё делал по учебнику MCModding, получается он неправильный... :|
[merge_posts_bbcode]Добавлено: 13.12.2014 21:29:19[/merge_posts_bbcode]

Oldestkon написал(а):
В getIcon перепутал где front и back. Инвертируй условие для них.
Код установки поворота правильный. Внезапно, да? У всех всё хорошо, а у тебя тот же код неправильно работает прям. Это значит, что текстуры через жопу назначил.
P.S. Убиват. За. Русский. В. Коде. Сильно. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень. Очень.
Эммм... Back у меня нету... Хотелось бы добавить, но математика явы выносит мозг...
 
Чё. Какая математика явы? Если ты не умеешь составлять условия - это твои проблемы.
Код:
 @Override
    public Icon getIcon(int side, int meta)
    {
        switch (side) {
            case 0: return this.bottom; 
                break;
            case 1: return this.top; 
                break;
            case 2: if (metadata == 2) 
                      return this.north; 
                    else
                      return this.east;
                break;
            case 3: return this.south; 
                break;
            case 4: return this.west; 
                break;
            case 5: return this.east; 
                break;
        }
        
        return this.top;
    }
Вот, к примеру.
И зачем цитировать предыдущий ответ?
 
  1. Нихера не работает
  2. Ява предлагает такой вариант:
Код:
    public Icon getIcon(int side, int metadata)
    {
        switch (side) {
            case 0: return this.bottom; 
        case 1: return this.top; 
        case 2: if (metadata == 2) 
                      return this.north; 
                    else
                      return this.east;
        case 3: return this.south; 
        case 4: return this.west; 
        case 5: return this.east;
        }
        
        return this.top;
    }
[merge_posts_bbcode]Добавлено: 14.12.2014 11:12:49[/merge_posts_bbcode]

Agravaine написал(а):
МАТЕМАТИКА ЯВЫ АХАХА БЛЯ
Если форум MCModding стоит на серверах РФ, то, пожалуйста удали своё сообщение, если тебе нравится этот форум...
С недавнего времени мат в СМИ запрещён, а СМИ считается любым сайтом/телеканалом/радио-частотой :)
 
Добавь себе:
Код:
 @Override
    public IIcon getIcon(int side, int meta) {
        ForgeDirection block_dir = ForgeDirection.getOrientation(meta);
        ForgeDirection dir = meta != 0 ? ForgeDirection.getOrientation(side) : ForgeDirection.WEST;
        if(dir == block_dir) return иконкаПереда;
        else if(dir == block_dir.getOpposite()) return иконкаЗада;
        else if(dir == ForgeDirection.DOWN) return иконкаНиза;
        else if(dir == ForgeDirection.UP) return иконкаВерха;
        else return иконкаБоковыхСторон;
    }

    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) {
        int dir = (MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3);
        int[] rotation = {2, 5, 3, 4};
        world.setBlockMetadataWithNotify(x, y, z, rotation[dir], 3);
    }

Ascal написал(а):
Если форум MCModding стоит на серверах РФ, то, пожалуйста удали своё сообщение, если тебе нравится этот форум...
Он не обязан ничего удалять. Просто ты морозишь хрень из-за незнания языка, вот он тебе и намекает.
 
Дело в том,что ява это остров/мотоцикл/кофе,но никак не язык. Джава да,это важно,т.к. тебк неприятно если тебя назовут азгаль.
 
Dragon2488 написал(а):
Добавь себе:
Код:
 @Override
    public IIcon getIcon(int side, int meta) {
        ForgeDirection block_dir = ForgeDirection.getOrientation(meta);
        ForgeDirection dir = meta != 0 ? ForgeDirection.getOrientation(side) : ForgeDirection.WEST;
        if(dir == block_dir) return иконкаПереда;
        else if(dir == block_dir.getOpposite()) return иконкаЗада;
        else if(dir == ForgeDirection.DOWN) return иконкаНиза;
        else if(dir == ForgeDirection.UP) return иконкаВерха;
        else return иконкаБоковыхСторон;
    }

    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) {
        int dir = (MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3);
        int[] rotation = {2, 5, 3, 4};
        world.setBlockMetadataWithNotify(x, y, z, rotation[dir], 3);
    }

Ascal написал(а):
Если форум MCModding стоит на серверах РФ, то, пожалуйста удали своё сообщение, если тебе нравится этот форум...
Он не обязан ничего удалять. Просто ты морозишь хрень из-за незнания языка, вот он тебе и намекает.
Спасибо, всё работает! Тему на закрытие, теги надо только бы добавить...
 
А как это всё реализовать для модели? Какую неделю еб* себе мозг, всё вроде есть, но вот чего-то не хватает, мне попадаются всегда такие способы, которые работают по отрывкам кода, которые находятся по всему моду и ... это всё очень плохо... У кого есть нормальный способ поворота модели?
 
HanteR12372 написал(а):
У кого есть нормальный способ поворота модели?
Мало вероятно, что у кого-то есть метод нормального поворота модели (если есть, то я точно знать не могу есть-ли у них).
Так как сами модели могут быть сделаны, не особо правильно. И методы установки модели бывают разными. (По 90 градусов, по 45 градусов и + ещё некоторым надо методы которые ставились лицом вниз или верх.)
 
HanteR12372 написал(а):
А как это всё реализовать для модели? Какую неделю еб* себе мозг, всё вроде есть, но вот чего-то не хватает, мне попадаются всегда такие способы, которые работают по отрывкам кода, которые находятся по всему моду и ... это всё очень плохо... У кого есть нормальный способ поворота модели?
В гугле есть такая функция.
 
Назад
Сверху