• Страница 1 из 1
  • 1
Модератор форума: KHz, mef_prog, Mo3RiN  
Форум » Другие игры » Minecraft » [Modloader]Основы Программирования Для Minecraft Часть 5
[Modloader]Основы Программирования Для Minecraft Часть 5
KHzДата: Пятница, 28.10.2011, 22:32 | Сообщение # 1
Группа: Администраторы
Сообщений: 29
Награды: 0
Репутация: 5
Статус: Offline
Глава 14. Использование редстоуна с блоками. Часть 1.

Вот и долгожданная глава, уважаемые читатели!
Тут все на первый взгляд тяжело, но уверяю вас - все очень легко
Сейчас мы сделаем почти обычный TNT. При подключении редстоуна к блоку - он взорвется.

Откроем наш файлик BlockNew.java и добавим ниже строку:

Code
public void onPoweredBlockChange(World world, int i, int j, int k, boolean flag)
      {
          if(world.multiplayerWorld)
          {
              return;
                
          } else
          {
          float f = 5F;
          world.createExplosion(null, i, j, k, f);
              return;
          }
      }


Данной строкой мы проверяем, если блок активирован, то:

Устанавливаем силу взрыва.

Code
float f = 5F;


Создается взрыв.

Code
world.createExplosion(null, i, j, k, f);


Ну и добавляем настройки связывания редстоуна:

Code
public void onNeighborBlockChange(World world, int i, int j, int k, int l)
      {
          int i1 = world.getBlockMetadata(i, j, k);
          if((i1 & 8) != 0)
          {
              if(world.getBlockId(i, j - 1, k) != blockID)
              {
                  world.setBlockWithNotify(i, j, k, 0);
              }
              if(l > 0 && Block.blocksList[l].canProvidePower())
              {
                  onNeighborBlockChange(world, i, j - 1, k, l);
              }
          } else
          {
              boolean flag = false;
              if(world.getBlockId(i, j + 1, k) != blockID)
              {
                  world.setBlockWithNotify(i, j, k, 0);
                  flag = true;
              }
              if(!world.isBlockNormalCube(i, j - 1, k))
              {
                  world.setBlockWithNotify(i, j, k, 0);
                  flag = true;
                  if(world.getBlockId(i, j + 1, k) == blockID)
                  {
                      world.setBlockWithNotify(i, j + 1, k, 0);
                  }
              }
              if(flag)
              {
                  if(!world.multiplayerWorld)
                  {
                      dropBlockAsItem(world, i, j, k, i1);
                  }
              } else
              if(l > 0 && Block.blocksList[l].canProvidePower())
              {
                  boolean flag1 = world.isBlockIndirectlyGettingPowered(i, j, k) || world.isBlockIndirectlyGettingPowered(i, j + 1, k);
                  onPoweredBlockChange(world, i, j, k, flag1);
              }
          }
      }


Тут ничего менять не надо - все уже готовое.

Вот и все. Осталось только проверить!

Экспериментировать можно всегда - сделайте так, чтобы блок не взрывался, а менял свои свойства, прыгал, двигался и прочее. Все действия подглядеть всегда можно в Block.java.

Первая часть главы закончена - я рассказал все самые основы. Чуть позже будет больше!

Глава 15. Создание новой брони на основе стандартных материалов.

Ожидайте.

Глава 16. Как создать свою музыкальную пластинку.
В уроке объяснения происходят в самом коде.

Создадим новый mod_musicdiscs.java:

Code
package net.minecraft.src;

import java.util.Random;

public class mod_musicdiscs extends BaseMod
{
     public static final Item discExample = new ItemRecord(3004, "Example").setItemName("discExample"); // Обозначаем, что он ItemRecord (ID, "Имя звукового файла")
     public static final Item discExample2 = new ItemRecord(3005, "Example2").setItemName("discExample2");   

public mod_musicdiscs()
{
     discExample.iconIndex = ModLoader.addOverride("/gui/items.png", "/texututes/discExample.png"); // Путь к png изображению
     discExample2.iconIndex = ModLoader.addOverride("/gui/items.png", "/texututes/discExample2.png");
     ModLoader.AddName(discExample, "Music Disc 1");   
     ModLoader.AddName(discExample2, "Music Disc 2");
     ModLoader.AddRecipe(new ItemStack(mod_musicdiscs.discExample, 1), new Object[] {
              "X", "#", Character.valueOf('#'), Block.obsidian, Character.valueOf('X'), Block.sand
          });
     ModLoader.AddRecipe(new ItemStack(mod_musicdiscs.discExample2, 1), new Object[] {
              "X", "#", Character.valueOf('#'), Block.obsidian, Character.valueOf('X'), Block.dirt
          });
}
            
   public String Version()
     {
     return "Tutorial by Sawoder";
     }

}

Теперь просто кидаем в указанный вами путь .png изображение своего музыкального диска.
А музыку в папку resources\streaming в формате .ogg и с названием Example и Example2.

Глава 17. Как создать специальный файл настроек мода.
В уроке объяснения происходят в самом коде.

Начнем. Наш блок будет иметь имя firstBlock.
Впишите в mod_prop следующее:

Code
package net.minecraft.src;

import java.util.Properties;
import net.minecraft.client.Minecraft;

public class mod_prop extends BaseMod
{

          public mod_prop()
          {

              Properties properties = new Properties();
              try
              {
                  File file = new File((new StringBuilder()).append(Minecraft.getMinecraftDir()).append("/mods/mod_prop.properties"
).toString()); // Создание нового файла пропорций, указываем путь и имя
                  boolean flag = file.createNewFile();
                  if(flag)
                  {
                      FileOutputStream fileoutputstream = new FileOutputStream(file);
                      properties.setProperty("firstBlockID", Integer.toString(129)); // Первое название, второе ID (129). Важно! ID писать обязательно!
                      properties.store(fileoutputstream, "Change the ID's."); // Сообщения в пропорциях
                      fileoutputstream.close();
                  }
                  properties.load(new FileInputStream((new StringBuilder()).append(Minecraft.getMinecraftDir()).append("/mods/mod_prop.properties"
).toString()));
                  firstBlockID = Integer.parseInt(properties.getProperty("firstBlockID")); // Интегрирует блок в пропорции
              }
              catch(IOException ioexception)
              {
                  ioexception.printStackTrace();
              }

                  firstBlock = new BlockFirstBlock(firstBlockID, ModLoader.addOverride("/terrain.png", "/textures/firstBlock.png")).setHardness(0.2F).setResistance(1.5F).setLightValue(1.
0F).setStepSound(Block.soundGrassFootstep).setBlockName("firstBlock"); // Чуть изменено
                   
                  ModLoader.RegisterBlock(firstBlock);

                  ModLoader.AddName(firstBlock, "Properties Test");

                  ModLoader.AddRecipe(new ItemStack(firstBlock, 4), new Object[] {
                          "XX ", "XX ", Character.valueOf('X'), Block.dirt
                  });
          }
       
          public static Block firstBlock;

          public static int firstBlockID; // Регестрируем блок отображения в пропорциях

          public String Version()
          {
              return "Tutorial by Sawoder";
          }
}


Вот и все, теперь с помощью файла mod_prop.properties в папке mods можно редактировать блок!

© FunnyAlien


[Skype][Steam][Portfolio][CodHacks.ru]
 
Форум » Другие игры » Minecraft » [Modloader]Основы Программирования Для Minecraft Часть 5
  • Страница 1 из 1
  • 1
Поиск:

 

Полная статистика форума

Ваш текст ну или чего хотите