Блок древесины

Версия Minecraft
1.7.10
57
2
0
Нужно создать блок древесины, но есть проблема: блок из игры устанавливается "разрезом" на такой угол, на какую сторону другого блока игрок его поставил. Как это можно реализовать в моде?

Код класса блока древесины:

Java:
package io.batrat.plants;

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;

public class MapleWood extends Block {
    protected MapleWood() {
        super(Material.wood);

        this.setBlockName("maplewood");
        this.setCreativeTab(Main.plantstab);
        this.setStepSound(soundTypeWood);

        this.setBlockTextureName("plants:maplewood");
    }

    private IIcon[] icons = new IIcon[6];

    @Override
    public void registerBlockIcons(IIconRegister reg) {
        for (int i = 0; i < 6; i ++) {
            this.icons[i] = reg.registerIcon(this.textureName + "_" + i);
        }
    }

    @Override
    public IIcon getIcon(int side, int meta) {
        return this.icons[side];
    }
}

Скриншот:

2018-05-26_18.31.52.png
 
Решение
Ну к примеру можно так:
Код:
public static Block log = new BlockMyLog().setBlockName("log").setCreativeTab(CreativeTabs.tabDecorations).setBlockTextureName(MODID + ":log");
Java:
public class BlockMyLog extends net.minecraft.block.BlockLog {

    @SideOnly(Side.CLIENT)
    private IIcon[]
            side_icons,
            top_icons;

    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getSideIcon(int metada) {
        return side_icons[metada % side_icons.length];
    }

    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getTopIcon(int metada) {
        return top_icons[metada % top_icons.length];
    }

    @SideOnly(Side.CLIENT)
    @Override
    public void registerBlockIcons(IIconRegister ir) {
        side_icons = new...

timaxa007

Модератор
5,831
409
672
Ну к примеру можно так:
Код:
public static Block log = new BlockMyLog().setBlockName("log").setCreativeTab(CreativeTabs.tabDecorations).setBlockTextureName(MODID + ":log");
Java:
public class BlockMyLog extends net.minecraft.block.BlockLog {

    @SideOnly(Side.CLIENT)
    private IIcon[]
            side_icons,
            top_icons;

    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getSideIcon(int metada) {
        return side_icons[metada % side_icons.length];
    }

    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getTopIcon(int metada) {
        return top_icons[metada % top_icons.length];
    }

    @SideOnly(Side.CLIENT)
    @Override
    public void registerBlockIcons(IIconRegister ir) {
        side_icons = new IIcon[4];
        top_icons = new IIcon[4];

        for (int i = 0; i < side_icons.length; ++i)
            side_icons[i] = ir.registerIcon(getTextureName() + "_" + (i + 1));

        for (int i = 0; i < top_icons.length; ++i)
            top_icons[i] = ir.registerIcon(getTextureName() + "_" + (i + 1) + "_top");

    }

}
 

timaxa007

Модератор
5,831
409
672
Ну у блока метадата максимально 16 значение. В стоячем и два лежачих положениях и у нас ещё много не использованного, так-что во эти 4 это можно использовать на разные виды древесины. Дуб, берёза, ель и тропическая древесина - это всё один блок (как объект в коде), просто с разными метадатами.
 
Сверху