Разносторонняя текстура блока

Версия Minecraft
1.7.10
Необходимо сделать блок который будит иметь разностороннюю текстуру которая при установке блока будит поворачиваться лицом к игроку (Как печка) Кто нибудь может подсказать как это сделать
 
Последнее редактирование:
Решение
Написал (и нарисовал текстуры) [меньше чем за два часа].
Java:
block_rot_side = new BlockRotSide(Material.iron).setBlockName("rot_side.rot_side").setBlockTextureName("rot_side:rot_side").setCreativeTab(CreativeTabs.tabBlock);
Java:
package timaxa007.rot_side.v1;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class BlockRotSide extends Block {...

tox1cozZ

aka Agravaine
8,455
598
2,892
forge modding block side texture 1.7.10 | Давай я поищу в Google вместо тебя, первая ссылка.
ПОЧЕМУ ВЫ ДАЖЕ ПЫТАТЬСЯ НЕ ХОТИТЕ ПОДУМАТЬ СВОЕЙ ГОЛОВОЙ, А СРАЗУ ПОЛЗЕТЕ НА ФОРУМ ЧТОБЫ ЗА ВАС ВСЕ СДЕЛАЛИ? И НЕ НАДО ЛЕПИТЬ ОТМАЗКИ ЧТО ТЫ НОВИЧОК. ХОСПАДЕ, ДА ОТКРОЙ ТЫ БЛОК ПЕЧКИ И ПОСМОТРИ ТАМ, ПОИЩИ В ГУГЛЕ, СОБЕРИ ВСЕ ВОЕДИНО. ЕСЛИ БУДУТ ОШИБКИ - ПРИКЛАДЫВАЙ СВОЙ КОД И ГОВОРИ ЧТО ВОТ МОЛ Я ПЫТАЛСЯ, НЕ ПОЛУЧАЕТСЯ, ПОМОГИТЕ.
Я перед тем как задать вопрос потрачу как минимум час чтобы порыться в исходниках в поисках ответа на свой вопрос. Потом еще час гуглю. Потом пытаюсь уже методом тыка что-то намутить. И только если после всего этого ничего не получается - иду на форум за помощью.
Горит от таких людей. Нихера не хотят думать, только давай им все готовое, даже гуглить лять не хотят.
Простите.
 
Первая ссылка не то что мне нужно(и остальные тоже). Просто разную текстуру я сам могу сделать. Мне нужно чтобы текстура поворачивалась лицом к игроку!!! По этому запросу я нечего не нашел хотя искал не 5 минут
 
На 1.7.10 файлы самого Forge в формате .class и из за этого код очень сложно читать
Код:
    private void func_149930_e(World p_149930_1_, int p_149930_2_, int p_149930_3_, int p_149930_4_)
    {
        if (!p_149930_1_.isRemote)
        {
            Block block = p_149930_1_.getBlock(p_149930_2_, p_149930_3_, p_149930_4_ - 1);
            Block block1 = p_149930_1_.getBlock(p_149930_2_, p_149930_3_, p_149930_4_ + 1);
            Block block2 = p_149930_1_.getBlock(p_149930_2_ - 1, p_149930_3_, p_149930_4_);
            Block block3 = p_149930_1_.getBlock(p_149930_2_ + 1, p_149930_3_, p_149930_4_);
            byte b0 = 3;
            if (block.func_149730_j() && !block1.func_149730_j()) { b0 = 3;}
            if (block1.func_149730_j() && !block.func_149730_j()) { b0 = 2;}
            if (block2.func_149730_j() && !block3.func_149730_j()){ b0 = 5;}
            if (block3.func_149730_j() && !block2.func_149730_j()){ b0 = 4;}
            p_149930_1_.setBlockMetadataWithNotify(p_149930_2_, p_149930_3_, p_149930_4_, b0, 2);
        }
    }
 
Последнее редактирование:
1,057
50
234
Java:
@Override
    public void registerBlockIcons(IIconRegister iconRegister)
    {
        this.blockIcon = iconRegister.registerIcon(GalacticraftCore.TEXTURE_PREFIX + "machine");
        this.iconOutput = iconRegister.registerIcon(GalacticraftCore.TEXTURE_PREFIX + "machine_output");
        this.iconMachineSide = iconRegister.registerIcon(GalacticraftCore.TEXTURE_PREFIX + "machine_side");
        this.iconFuelOutput = iconRegister.registerIcon(GalacticraftCore.TEXTURE_PREFIX + "machine_fuel_input");

        for (int i = 0; i < this.iconFuelGenerator.length; i++)
        {
            this.iconFuelGenerator[i] = iconRegister.registerIcon(GalaxySpace.ASSET_PREFIX + ":" + "overworld/fuelGenerator_" + i);
        }
    }

@Override
    public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
    {      
        return this.getIcon(side, world.getBlockMetadata(x, y, z));
    }

    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getIcon(int side, int metadata)
    {
        if (side == 0 || side == 1)
        {
            return this.blockIcon;
        }
        
        if (metadata >= BlockFuelGenerator.FUEL_GENERATOR_METADATA)
        {
            // If it is the front side
            if (side == metadata + 2)
            {
                return this.iconOutput;
            }
            
            if (side == ForgeDirection.getOrientation(metadata + 2).getOpposite().ordinal())
            {
                return this.iconFuelOutput;
            }
            // If it is the back side

            if (metadata == 0 && side == 4 || metadata == 1 && side == 5 || metadata == 2 && side == 3 || metadata == 3 && side == 2)
            {
                return this.iconFuelGenerator[0];
            }
            else
            {
                return this.iconFuelGenerator[1];
            }

        }

        return this.iconMachineSide;
    }
 

timaxa007

Модератор
5,831
409
672
Написал (и нарисовал текстуры) [меньше чем за два часа].
Java:
block_rot_side = new BlockRotSide(Material.iron).setBlockName("rot_side.rot_side").setBlockTextureName("rot_side:rot_side").setCreativeTab(CreativeTabs.tabBlock);
Java:
package timaxa007.rot_side.v1;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class BlockRotSide extends Block {

    @SideOnly(Side.CLIENT)
    private IIcon[] icons;

    public final String[] name = new String[] {
            "bottom",
            "top",
            "back",
            "front",
            "left",
            "right"
    };

    public BlockRotSide(Material material) {
        super(material);
    }

    /**Called when the block is placed in the world.**/
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) {
        int l = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        world.setBlockMetadataWithNotify(x, y, z, l, 2);
    }

    /**Gets the block's texture. Args: side, meta**/
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int meta) {
        switch(side) {
        case 0:return icons[0];
        case 1:return icons[1];
        /*
        case 2:return icons[2];
        case 3:return icons[3];
        case 4:return icons[4];
        case 5:return icons[5];
         */

        case 2:
            switch(meta) {
            case 0:return icons[3];
            case 1:return icons[5];
            case 2:return icons[2];
            case 3:return icons[4];
            }
            break;

        case 3:
            switch(meta) {
            case 0:return icons[2];
            case 1:return icons[4];
            case 2:return icons[3];
            case 3:return icons[5];
            }
            break;

        case 4:
            switch(meta) {
            case 0:return icons[5];
            case 1:return icons[2];
            case 2:return icons[4];
            case 3:return icons[3];
            }
            break;

        case 5:
            switch(meta) {
            case 0:return icons[4];
            case 1:return icons[3];
            case 2:return icons[5];
            case 3:return icons[2];
            }
            break;

        }
        return super.getIcon(side, meta);
    }

    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister ir) {
        icons = new IIcon[6];
        for (int i = 0; i < icons.length; ++i)
            icons[i] = ir.registerIcon(this.getTextureName() + "_" + name[i]);
    }

}
---
(github.com) rot_side_block
 
Последнее редактирование:
Сверху