Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Запрашиваю помощи! разносторонние блоки (metadata).

Тема в разделе "[Архив] Помощь", создана пользователем Ordi, 23 апр 2012.

  1. Автор темы
    Ordi

    Ordi Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Ordi
    Неделю мучаюсь с этой проблемой. Суть в том, что я написал блоки на метадате (Экономия ид, 130:1, 130:2, 130:3), однако осталось последнее, сделать так, чтобы блок ставился лицом к игроку определённой текстурой. Нужный код вставил, всё компилится без ошибок (Кстати, работаю на jdk). Но при заходе в игру система поворота блока работает абсолютно неправильно. Например стоя лицом на север и ставя добавленный блок, ставится этот блок, но с текстурой камня (Оо), стоя лицом на юг, ставится блок с текстрой досок, только с 1 положением блок ставится только 1 нужной текстурой (Вместо 6 с разных сторон). В общем система работает абсолюно некорректно. (Без метадаты работает нормально).

    Вот пример как ставятся блоки (Стоя лицом к разным сторонам)

    [​IMG]

    Как должен ставится блок (Стоя лицом к разным сторонам)

    [​IMG]

    Код:
    package net.minecraft.src;
     
    import java.util.Random;
     
    public class BlockComod extends Block
    {
        public BlockComod(int id)
                          {
                super(id, Material.rock);
                          }
     
            public int idDropped(int metadata, Random random)
            {
                    return blockID;
            }
       
            protected int damageDropped(int metadata) {
                    return metadata;
            }
     
        public int getBlockTextureFromSideAndMetadata(int side, int metadata)
            {
              switch (metadata){
            case 0:
            if( metadata == 0 )
            {
            switch (side) {
              case 0: return mod_mebel.ComodSide;
              case 1: return mod_mebel.Comod;
              case 2: return mod_mebel.ComodFront;
              case 3: return mod_mebel.Comod;
              case 4: return mod_mebel.Comod;
              case 5: return mod_mebel.Comod;
              }
            return metadata;
              }
            return metadata;
                  }
                return metadata;
                }
                public void onBlockPlacedBy(World world, int side, int metadata, int k, EntityLiving entityliving)
                        {
                            int l = MathHelper.floor_double((double)((entityliving.rotationYaw * 4F) / 360F) + 2.5D) & 3;
                            world.setBlockMetadataWithNotify(side, metadata, k, l);
                        }       
    }
    Поясню, что у меня тут да как. Начало думаю понятное, свойства блока, тд и тп. Далее при присваивании текстуры идёт сама соль метадаты, присваивание в 1 файле текстур для нескольких блоков, которые регистрируются в файле mod_mebel. Для этого я использовал код:
    Код:
              switch (metadata){
            case 0:
            if( metadata == 0 )
            {
            switch (side) {
    Где:
    Код:
    case 0:
            if( metadata == 0 )
    Отвечает за блок под №1.
    Далее идут case 1, case 2, case 3, тд и тп.
    Именно это разделение на присваивание текстур для разных блоков и мешает данному паблику, который отвечает за поворот блока к игроку.
    Код:
    public void onBlockPlacedBy(World world, int side, int metadata, int k, EntityLiving entityliving)
    После того, как появились лишние return параметры, началось и некорректная работа системы. Без метадаты поворот блока работает хорошо. Помогите мне пожалуйста разобраться с этим.

    Скину и другие файлы метадаты на всякий случай:

    Код:
    package net.minecraft.src;
     
    public class mod_mebel extends BaseMod
    { 
     
            public static int Comod = ModLoader.addOverride("/terrain.png", "/textures/comod.png");
            public static int ComodFront = ModLoader.addOverride("/terrain.png", "/textures/comodFront.png");
            public static int ComodSide = ModLoader.addOverride("/terrain.png", "/textures/comodSide.png");
            public static int Taburet = ModLoader.addOverride("/terrain.png", "/textures/taburet.png");
            public static int TaburetSide = ModLoader.addOverride("/terrain.png", "/textures/taburetSide.png");
       
            public static final Block Mebel = new BlockComod(130).setHardness(50F).setResistance(2000F).setBlockName("Комод");
           
     
            public void load()
            {
                    ModLoader.registerBlock(Mebel, net.minecraft.src.ItemMebel.class);
                    ModLoader.addName(new ItemStack(Mebel, 1,0), "Комод");
                    ModLoader.addRecipe(new ItemStack(Mebel, 1,0), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});
               
                    ModLoader.addName(new ItemStack(Mebel, 1, 1), "Табурет");
                    ModLoader.addRecipe(new ItemStack(Mebel, 1,1), new Object[]{ "#X#", "#X#", Character.valueOf('X'), Block.sand});
                }
                public String getVersion() {
                    return "r1 for 1.0.*";
            }
        }
    
    Код:
    package net.minecraft.src;
     
    public class ItemMebel extends ItemBlock {
     
            public static String[] blockNames = {"Комод", "Табурет"};
     
            public ItemMebel(int i) {
                            super(i);
                            setMaxDamage(0);
                            setHasSubtypes(true);
            }
     
            public String getItemNameIS(ItemStack itemstack)
                            {
                    return(new StringBuilder()).append(super.getItemName()).append(".").append(blockNames[itemstack.getItemDamage()]).toString();
                            }
             
                    public int getMetadata(int i)
                            {
                                    return i;
                            }
                    }
    
    Извините за такой большой объём информации, просто хотел расписать всё более подробно.
     
  2. Хостинг MineCraft
    <
  3. TTATPuOT

    TTATPuOT Старожил Пользователь

    Баллы:
    173
    Skype:
    gamer0704
    Хочу хочу этот мод!)
    А так врятли помогут. Я последний раз из девлоперов
    видел asn007 неделю назад)​
     
    Greenberg и ВремяПриключений нравится это.
  4. andrey456

    andrey456 Старожил Пользователь

    Баллы:
    123
    +
    Надеюсь в паблик выложишь
     

Поделиться этой страницей