1. Minecraft-RUS » Основной раздел » Гайды и описания » [MODS] [1.7.10] Создание мультитекстур

[MODS] [1.7.10] Создание мультитекстур

Активный участник
  1. Оффлайн
  2. Администраторы
  3. 147 сообщений
  4. Сообщение
  5. Личные данные
    Полезность: 0 | сообщение № 1 отправлено 21:21, 11.01.2016
    Создание мультитекстуры для блока:
    У нас есть массив иконок из 6 элементов (да, у блока 6 сторон, внезапно).
    В методе registerBlockIcons мы проходим циклом по этому массиву и регистрируем его каждый элемент(текстуру, иконку) с помощью метод registerIcons.
    Но если у нас есть одинаковые стороны, зачем нам делать одно и тоже? Только карту текстур забиваем.
    И да, тогда нет смысла держать массив из 6 элементов. Давай представим, что у нас боковые четыре стороны одинаковые, а верх и низ - разные.
    Тогда код будет выглядеть так.

    php code:
    1. IIcon[] icons;
    2.  
    3. public void registerBlockIcons(IIconRegister ir){
    4.     icons = new IIcon[3];
    5.     icons[0] = ir.registerIcon("modid:texturename_up"); // Текстура для верхней стороны
    6.     icons[1] = ir.registerIcon("modid:texturename_side"); // Текстура для боковых сторон
    7.     icons[2] = ir.registerIcon("modid:texturename_down"); // Текстура для нижней стороны
    8. }


    Угу, зарегистрировали все нужные текстуры.
    Теперь нам нужно в зависимости от стороны блока накладывать ему нужную текстуру.
    В этом нам поможет метод getIcon, у которого в аргументах есть сторона блока и метадата(нам она сейчас не нужна).

    php code:
    1. public IIcon getIcon(int side, int meta) {
    2.     return side == 0 ? icons[0] : (side == 1 ? icons[2] : icons[1]);
    3. }


    Здесь мы проверили, что если сторона 0(вверх) - то мы вернули верхнюю текстуру и так далее.

    Чтобы при установке блок поворачивался лицевой стороной к игроку, поможет этот код:

    php code:
    1. @SideOnly(Side.CLIENT)
    2.     private IIcon blockIcon;
    3.     private IIcon blockIcon_front;
    4.  
    5.     @SideOnly(Side.CLIENT)
    6.     @Override
    7.     public void registerBlockIcons(IIconRegister iconReg)
    8.     {
    9.         blockIcon = iconReg.registerIcon("modid:texturename");
    10.         blockIcon_front = iconReg.registerIcon("modid:texturename_front");
    11.     }
    12.     @SideOnly(Side.CLIENT)
    13.     @Override
    14.     public IIcon getIcon(int side, int meta)
    15.     {
    16.         ForgeDirection dir = ForgeDirection.getOrientation(side);
    17.         ForgeDirection block_dir;
    18.         if (meta != 0)
    19.             block_dir = ForgeDirection.getOrientation(meta);
    20.         else
    21.             block_dir = ForgeDirection.WEST;
    22.         if (block_dir == dir) return blockIcon_front;
    23.         return blockIcon;
    24.     }
    25.     @Override
    26.     public void onBlockPlacedBy(World world, int x, int y, int z,
    27.             EntityLivingBase entity, ItemStack itemStack) {
    28.         super.onBlockPlacedBy(world, x, y, z, entity, itemStack);
    29.         int dir = (MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3);
    30.         int[] r = {2, 5, 3, 4};
    31.         world.setBlockMetadataWithNotify(x, y, z, r[dir], 3);
    32.     }

    Последний раз редактировал ipv2007 23:52, 11.01.2016
    Активный участник
    1. Оффлайн
    2. Посетители
    3. 157 сообщений
    4. Сообщение
    5. Личные данные
      Полезность: 0 | сообщение № 2 отправлено 21:45, 11.01.2016
      Как сделать блоку анимацию? Во первых как у печки, во вторых постоянную.
      Активный участник
      1. Оффлайн
      2. Администраторы
      3. 147 сообщений
      4. Сообщение
      5. Личные данные
        Полезность: 0 | сообщение № 3 отправлено 00:05, 12.01.2016
        Talon (11.01.2016, 21:45) писал:Как сделать блоку анимацию? Во первых как у печки, во вторых постоянную.

        Как в печке - не знаю, еще не изучал, а постоянную анимацию делать так:
        1. В Фотошопе рисуем текстуру в виде полоски. Например, если мы хотим в анимацию вставить 2 кадра, то размер картинки должен быть 16х32 и вставляем две текстуры друг под другом.
        2. Дальше называем ее, например: anime.png
        3. Загружаем, как обычную текстуру в свой код
        4. Далее, создаем текстовый файл с названием нашей текстуры, но на конце добавляем .mcmeta. Должно получиться так: anime.png.mcmeta
        В этом файле пишем текст:

        php code:
        1. {
        2.     "animation": {
        3.         "frametime": 2.5
        4.     }
        5. }


        где "frametime": 2.5 - частота обновления картинки.
        После этого файл также кидаем в туже папку, что и наша картинка anime.png
        Все, готово!

        Последний раз редактировал ipv2007 00:10, 12.01.2016
        Активный участник
        1. Оффлайн
        2. Посетители
        3. 157 сообщений
        4. Сообщение
        5. Личные данные
          Полезность: 0 | сообщение № 4 отправлено 00:51, 12.01.2016
          Это круто, я прям сохраню этот урок. Только вопрос, как сильно анимация нагружает сервер, и сколько кадров потянет например гт?
          Это очень важно, т.к. от этого зависит какую анимацию вообще делать.
          Fozzzy
          1. Гости
            Полезность: 0 | сообщение № 5 отправлено 04:27, 12.01.2016
            Talon (12.01.2016, 00:51) писал:Только вопрос, как сильно анимация нагружает сервер,

            А как анимация может нагружать сервер, если она на клиенте рендерится? Если бы всякие там партикл эффекты, анимация, шейдеры или текстурпаки влияли на сервер, то его намертво могли бы положить с клиента. Крутая анимация может понизить ФПС клиента, поэтому нужно брать во внимание не железо сервера, а железо клиента.
            DEUCALION
            1. Гости
              Полезность: 0 | сообщение № 6 отправлено 06:59, 12.01.2016
              Да не у всех железо от корабля стар трек! Давайте останемся при старых или уберём моды карпентер блок и чизел2, так как они очень сильно садят фпс клиента и сделаем анимацию блоков посмотрим что получится!!)))

              Последний раз редактировал DEUCALION 07:02, 12.01.2016
              Priest
              1. Гости
                Полезность: 0 | сообщение № 7 отправлено 09:40, 12.01.2016
                DEUCALION (12.01.2016, 06:59) писал:Да не у всех железо от корабля стар трек! Давайте останемся при старых или уберём моды карпентер блок и чизел2, так как они очень сильно садят фпс клиента и сделаем анимацию блоков посмотрим что получится!!)))

                А то можно еще устроиться на работу и купить приличный компьютер, чтобы на калькуляторе не играть.
                Активный участник
                1. Оффлайн
                2. Посетители
                3. 157 сообщений
                4. Сообщение
                5. Личные данные
                  Полезность: 0 | сообщение № 8 отправлено 11:20, 12.01.2016
                  Убрать чизел и Карпентер? Серьезно?
                  К тому же под анимацией я имел ввиду блеск позолоты античных колонн как дополнение к чизелу (не считая анимацию гт).

                  Последний раз редактировал Talon 15:06, 12.01.2016
                   
                  Перейти
                  Найти

                  Доступ закрыт.

                  1. Вам запрещено отвечать в темах данного форума.