Обучение/API туториалы: Difference between revisions

No edit summary
(Дописал создание планеты))))
Line 28: Line 28:
Теперь вы должны добавить папку с API в ваш /Forge/MCP/src.
Теперь вы должны добавить папку с API в ваш /Forge/MCP/src.


'''Почти все, вы просто должны добавить две библиотеки библиотеки.'''
'''Почти все, вы просто должны добавить две библиотеки.'''


Эти инструкции предназначены для Eclipse, так как если вы делаете моды, вы должны, вероятно, использовать Eclipse. Загрузите MicCore-Dev-Deobf и GC-Dev-Deobf с сайта. Поместите эти файлы в /Forge/MCP/Lib. Щелкните правой кнопкой мыши на название, а затем нажмите "properties", в нижней части меню. Перейдите в раздел "Java Build Path" и нажмите "Add External Jars". Выберите GC-Dev-Deobf jar в папке Lib, затем повторите процесс для MicCore-Dev-Deobf.
Эти инструкции предназначены для Eclipse, так как если вы делаете моды, вы должны, вероятно, использовать Eclipse. Загрузите MicCore-Dev-Deobf и GC-Dev-Deobf с сайта. Поместите эти файлы в /Forge/MCP/Lib. Щелкните правой кнопкой мыши на проект в Eclipse, а затем нажмите "properties", в нижней части меню. Перейдите в раздел "Java Build Path" и нажмите "Add External Jars". Выберите GC-Dev-Deobf jar в папке Lib, затем повторите процесс для MicCore-Dev-Deobf.


==Добавление Планеты==
В методе FMLPreInitalizationEvent, добавляем следующую строку кода:
        GalacticraftRegistry.registerTeleportType (PlanetWorldProvider.class, новая PlanetTeleportType ());
Этот код используется позже, в определении того, где будут спавнится игроки на новой планете.
Eclipse должен добавить необходимые импорты, однако если этого не произойдет, после каждого шага не забывайте нажимать Ctrl + Shift + O, чтобы добавлять необходимые импорты.
===PlanetWorldProvider Class===
Это второе место для того чтобы сделать конфигурацию планеты. Единственное другое место это файл генерации мира. У этого класса должны быть extends WorldProvider, а также некоторые классы Galacticraft API. Эти классы включают IGalacticraftWorldProvider, IExitHeight, и, возможно, ISolarLevel. Так как это длинный класс, я просто дам вам Pastebin примера кода.Pastebin: http://pastebin.com/NhGTmR5D
Там должны быть некоторые ошибки под кодом "PlanetWorldChunkManager" и "PlanetWorldChunkProvider" Чтобы исправить это, создайте класс "PlanetWorldChunkProvider" и скопируйте код из файла "net.minecraft.world.gen.ChunkProviderGenerate" Чтобы исправить ошибку в PlanetWorldChunkManager, создать этот класс и скопируйте код из "net.minecraft.world.biome.WorldChunkManager". В обоих этих случаях, не забудьте изменить имя класса и package на то, какие должны быть. И не забудьте нажать Ctrl + Shift + O в каждом классе. Я не буду размещать код, и если вы используете этот код ваша планета не должна быть с открытым исходным кодом, так как это может быть нарушением Mojang лицензии.
===PlanetTeleporterType Class===
Этот класс определяет, как каждый игрок, будут появляться на новой планете. В этом классе необходимо добавить implements ITeleportType, и заполнить методы оттуда. Pastebin пример здесь: http://pastebin.com/bzknNwGN и еще раз, не забудьте нажать Ctrl + Shift + O. Все эти методы очень нуждаются в пояснениях.


==Добавление Планеты==
===GCTestPlanet Class===
Чтобы добавить планету нужно добавить эту строку в FMLInitialiationEvent
Создайте новый класс и назовите его GCTestPlanet, и он должен быть implements IPlanet. Pastebin пример: http://pastebin.com/dn2Jh1YD
Это также должно быть зарегистрировано с Galacticraft. Добавьте следующий код в файл @Mod в методе FMLPreInitializationEvent:
         GalacticraftRegistry.registerCelestialBody(new GCTestPlanet());
         GalacticraftRegistry.registerCelestialBody(new GCTestPlanet());
Сразу появится ошибка так как файл самой планеты мы еще на создали. Создаем файл и сразу же меняем implements ICelestialBody на implements IPlanet. Добавляем недостающие импорты и методы. Тут будет основная информация о планете такая как: Имя, можно ли на нее полететь, отображение на карте, в какой галактике она находится.
В файле GCTestPlanet заполняете все поля в зависимости от того какую планету вы собираетесь делать. (Советую посмотреть в исходники мода: Луны и Марса.)
 
Вот содержание и описание внутренностей файла.


@Override
Еще один файл, до конца ... EDIT: ВРУ ПРОСТИТЕ. ЕСТЬ ЕЩЕ ОДИН ФАЙЛ ПОСЛЕ ЭТОГО!
public String getName()
===TutorialPlanetMapObject===
{
Этот класс, добавляет планету на карту вселенной. Вы можете сделать очень прикольную графику здесь, однако я просто собираюсь взять код Земли и изменить несколько цифр, чтобы наша планета вращалась в два раза дальше. Создайте класс TutorialPlanetMapObject, и сделайте его implements IMapObject. В этот класс скопируйте и вставьте код с Pastebin, или из файла исходного кода Galacticraft "/ micdoodle8/mods/galacticraft/client/GCCoreMapPlanetOverworld" Pastebin здесь с измененным кодом и комментариями: http://pastebin.com/eCsbnyri
return "Имя";
}
'''Задает имя'''


         @Override
===TutorialPlanetSlotRenderer class===
         public boolean isReachable()
В этом классе есть только три метода. Вам нужно сделать implements ICelestialBodyRenderer, и использовать следующий код:
         {
    @Override
              return значение;
    public ResourceLocation getPlanetSprite()
         }
    {
'''Можно ли полететь на эту планету'''. Значение true - можно или false - нельзя.
         return new ResourceLocation(GalacticraftCore.TEXTURE_DOMAIN, "textures/gui/planets/overworld.png");
    }
    @Override
    public String getPlanetName()
    {
         return "TutorialPlanet";//Replace this string with the name of your dimension as defined in the WorldProvider class.
    }
    @Override
    public void renderSlot(int index, int x, int y, float slotHeight, Tessellator tessellator)
    {
         tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(x + 12 - slotHeight, y - 11 + slotHeight, -90.0D, 0.0, 1.0);
        tessellator.addVertexWithUV(x + 12, y - 11 + slotHeight, -90.0D, 1.0, 1.0);
         tessellator.addVertexWithUV(x + 12, y - 11, -90.0D, 1.0, 0.0);
        tessellator.addVertexWithUV(x + 12 - slotHeight, y - 11, -90.0D, 0.0, 0.0);
        tessellator.draw();
    }


Продолжение следует
'''Это все!! :)'''


==Добавление Галактики==
==Добавление Галактики==

Revision as of 16:06, 24 November 2013

This article is a stub. You can help us by expanding it

Введение

Вы скорей всего как и многие ждете когда появится болще планет. Но как насчет добавить свою планету или ракету? Для этого в моде есть такая вещь как API.

API позволяет сделать такие вещи как:

  • Добавить планету
  • Добавить галактику
  • Добавить gui для ракеты (индикатор высоты который появляется справа при взлете)
  • Добавить лут в данж (например, на Луне или Марсе)
  • Добавить рецепт для ракеты T1, T2, Kargo.
  • Добавить багги
  • Добавить космическую станцию
  • Добавить планету/луну/систему на карту галактики (кнопка M)


Начало

Вам понадобится:

Предполагается, что вы знакомы с основами Java и умеете делать моды, и у вас уже есть forge рабочее пространство. Если нет, перейдите по этой ссылке:http://www.mcmodding.ru/учебник/

Как только вы это сделали, вы должны внести некоторые изменения в файл. Перейдите по этой ссылке: http://ci.micdoodle8.com/job/Galacticraft-Dev/. Загрузите архив Galacticraft-API, и распакуйте его куда-нибудь.

Теперь вы должны добавить папку с API в ваш /Forge/MCP/src.

Почти все, вы просто должны добавить две библиотеки.

Эти инструкции предназначены для Eclipse, так как если вы делаете моды, вы должны, вероятно, использовать Eclipse. Загрузите MicCore-Dev-Deobf и GC-Dev-Deobf с сайта. Поместите эти файлы в /Forge/MCP/Lib. Щелкните правой кнопкой мыши на проект в Eclipse, а затем нажмите "properties", в нижней части меню. Перейдите в раздел "Java Build Path" и нажмите "Add External Jars". Выберите GC-Dev-Deobf jar в папке Lib, затем повторите процесс для MicCore-Dev-Deobf.

Добавление Планеты

В методе FMLPreInitalizationEvent, добавляем следующую строку кода:

       GalacticraftRegistry.registerTeleportType (PlanetWorldProvider.class, новая PlanetTeleportType ());

Этот код используется позже, в определении того, где будут спавнится игроки на новой планете. Eclipse должен добавить необходимые импорты, однако если этого не произойдет, после каждого шага не забывайте нажимать Ctrl + Shift + O, чтобы добавлять необходимые импорты.

PlanetWorldProvider Class

Это второе место для того чтобы сделать конфигурацию планеты. Единственное другое место это файл генерации мира. У этого класса должны быть extends WorldProvider, а также некоторые классы Galacticraft API. Эти классы включают IGalacticraftWorldProvider, IExitHeight, и, возможно, ISolarLevel. Так как это длинный класс, я просто дам вам Pastebin примера кода.Pastebin: http://pastebin.com/NhGTmR5D

Там должны быть некоторые ошибки под кодом "PlanetWorldChunkManager" и "PlanetWorldChunkProvider" Чтобы исправить это, создайте класс "PlanetWorldChunkProvider" и скопируйте код из файла "net.minecraft.world.gen.ChunkProviderGenerate" Чтобы исправить ошибку в PlanetWorldChunkManager, создать этот класс и скопируйте код из "net.minecraft.world.biome.WorldChunkManager". В обоих этих случаях, не забудьте изменить имя класса и package на то, какие должны быть. И не забудьте нажать Ctrl + Shift + O в каждом классе. Я не буду размещать код, и если вы используете этот код ваша планета не должна быть с открытым исходным кодом, так как это может быть нарушением Mojang лицензии.

PlanetTeleporterType Class

Этот класс определяет, как каждый игрок, будут появляться на новой планете. В этом классе необходимо добавить implements ITeleportType, и заполнить методы оттуда. Pastebin пример здесь: http://pastebin.com/bzknNwGN и еще раз, не забудьте нажать Ctrl + Shift + O. Все эти методы очень нуждаются в пояснениях.

GCTestPlanet Class

Создайте новый класс и назовите его GCTestPlanet, и он должен быть implements IPlanet. Pastebin пример: http://pastebin.com/dn2Jh1YD Это также должно быть зарегистрировано с Galacticraft. Добавьте следующий код в файл @Mod в методе FMLPreInitializationEvent:

       GalacticraftRegistry.registerCelestialBody(new GCTestPlanet());

В файле GCTestPlanet заполняете все поля в зависимости от того какую планету вы собираетесь делать. (Советую посмотреть в исходники мода: Луны и Марса.)

Еще один файл, до конца ... EDIT: ВРУ ПРОСТИТЕ. ЕСТЬ ЕЩЕ ОДИН ФАЙЛ ПОСЛЕ ЭТОГО!

TutorialPlanetMapObject

Этот класс, добавляет планету на карту вселенной. Вы можете сделать очень прикольную графику здесь, однако я просто собираюсь взять код Земли и изменить несколько цифр, чтобы наша планета вращалась в два раза дальше. Создайте класс TutorialPlanetMapObject, и сделайте его implements IMapObject. В этот класс скопируйте и вставьте код с Pastebin, или из файла исходного кода Galacticraft "/ micdoodle8/mods/galacticraft/client/GCCoreMapPlanetOverworld" Pastebin здесь с измененным кодом и комментариями: http://pastebin.com/eCsbnyri

TutorialPlanetSlotRenderer class

В этом классе есть только три метода. Вам нужно сделать implements ICelestialBodyRenderer, и использовать следующий код:

   @Override
   public ResourceLocation getPlanetSprite()
   {
       return new ResourceLocation(GalacticraftCore.TEXTURE_DOMAIN, "textures/gui/planets/overworld.png");
   }
   @Override
   public String getPlanetName()
   {
       return "TutorialPlanet";//Replace this string with the name of your dimension as defined in the WorldProvider class.
   }
   @Override
   public void renderSlot(int index, int x, int y, float slotHeight, Tessellator tessellator)
   {
       tessellator.startDrawingQuads();
       tessellator.addVertexWithUV(x + 12 - slotHeight, y - 11 + slotHeight, -90.0D, 0.0, 1.0);
       tessellator.addVertexWithUV(x + 12, y - 11 + slotHeight, -90.0D, 1.0, 1.0);
       tessellator.addVertexWithUV(x + 12, y - 11, -90.0D, 1.0, 0.0);
       tessellator.addVertexWithUV(x + 12 - slotHeight, y - 11, -90.0D, 0.0, 0.0);
       tessellator.draw();
   }

Это все!! :)

Добавление Галактики

В разработке

Добавление Ракеты

В разработке



Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Need wiki hosting?

Do you need a wiki for your Minecraft mod/gaming wiki? We'll host it for free! Contact us.

Other wikis

Indie-game wikis
Powered by Indie Wikis