Новые сообщения · Участники · Правила форума · Поиск · RSS
  • Страница 1 из 1
  • 1
Создание разностороннего блока
Fyral Дата: Суббота, 08.10.2011, 16:39 | Сообщение # 1
Администраторы
Сообщений: 10
Репутация: 2
Offline
Копируем данный код, он должен уже быть ясен вам. Если нет, то бегом зубрить предыдущие главы.

Cоздаем файл с именем mod_tex.java дабы не портить mod_gcc и не запутаться.

Code
package net.minecraft.src;
import java.util.Random;

public class mod_tex extends BaseMod
{
          public static Block Tex = new BlockTex(110, 0).setHardness(1.0F).setResistance(6000.0F).setBlockName("Tex");
}
            
     public String Version()
     {
                  return "1.8.1";
     }
       
     public mod_tex()
     {
          ModLoader.RegisterBlock(Tex);
          Tex.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/Tex.png");
          ModLoader.AddName(Tex, "Tex");
          ModLoader.AddRecipe(new ItemStack(Tex, 1), new Object[]{ "#", Character.valueOf('#'), Block.dirt,});
     }
}


Далее пишем под публичной блока:
Публичная текстуры с бока:
Code
public static int TexSide;


Публичная текстуры с лица:
Code
public static int TexFront;


Сделали? Отлично! Теперь нам нужно указать TexSide и TexFront куда им ходить за текстурой. Пишем после рецепта:

Путь к текстуре, которя будет боковой:
Code
TexSide = ModLoader.addOverride("/terrain.png", "/textures/TexSide.png");


Путь к текстуре, которя будет лицевой:
Code
TexFront = ModLoader.addOverride("/terrain.png", "/textures/TexFront.png");


Front.
http://savepic.ru/2985844.htm

Side.
http://savepic.net/1891524.htm

Обычная Tex.
http://savepic.net/1837253.htm

Проверяем.
http://savepic.ru/3004276.htm

Двинемся далее. Cоздаем файл с именем BlockTex.java.
Вот код для отображении текстуры на нашем блоке. Думаю, что потом вам не составит труда отредактировать его для своего следующего блока. В общих словах, вся эта махина создает блок с текстурой Tex. Потом присваивает всем сторонам текстуру TexSide, а уже потом только лицевой стороне присваивается текстура TexFront.
Code
package net.minecraft.src;

import java.util.Random;

public class BlockTex extends Block
{

     public BlockTex(int i, int j)
     {
         super(i, j, Material.rock);
                 blockIndexInTexture = j;
     }
          
     public int idDropped(int i, int j)
     {
         return mod_tex.Tex.blockID;
     }
          
     public int quantityDropped(Random random)
     {
             return 2;
     }
                  
         public int getBlockTextureFromSideAndMetadata(int i, int j)
     {
         if(i == 1)
         {
             return blockIndexInTexture;
         }
         if(i == 0)
         {
             return blockIndexInTexture;
         }

         int k = mod_tex.TexFront;
          
         if(j == 2 && i == 2)
         {
             return k;
         }
         if(j == 3 && i == 5)
         {
             return k;
         }
         if(j == 0 && i == 3)
         {
             return k;
         }
         if(j == 1 && i == 4)
         {
             return k;
         } else
         {
             return mod_tex.TexSide;
         }
     }

     public int getBlockTextureFromSide(int i)    
     {
         if(i == 1)  
         {
             return blockIndexInTexture;
         }
         if(i == 0)
         {
             return blockIndexInTexture;
         }
         if(i == 3)
         {
                 return mod_tex.TexFront;
              
         } else
         {
             return mod_tex.TexSide;
         }
     }
}


Ну и как бы бонус. Вот эти пару строчек будут ставить блок к вам лицом. Если это нужно, то впишите их в конце.
Code
        public void onBlockPlacedBy(World world, int i, int j, int k, EntityLiving entityliving)
     {
         int l = MathHelper.floor_double((double)((entityliving.rotationYaw * 4F) / 360F) + 2.5D) & 3;
         world.setBlockMetadataWithNotify(i, j, k, l);
     }


Скриншот из игры:
  • Страница 1 из 1
  • 1
Поиск: