Обучение/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. Щелкните правой кнопкой мыши на | Эти инструкции предназначены для 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()); | GalacticraftRegistry.registerCelestialBody(new GCTestPlanet()); | ||
В файле GCTestPlanet заполняете все поля в зависимости от того какую планету вы собираетесь делать. (Советую посмотреть в исходники мода: Луны и Марса.) | |||
Еще один файл, до конца ... EDIT: ВРУ ПРОСТИТЕ. ЕСТЬ ЕЩЕ ОДИН ФАЙЛ ПОСЛЕ ЭТОГО! | |||
===TutorialPlanetMapObject=== | |||
Этот класс, добавляет планету на карту вселенной. Вы можете сделать очень прикольную графику здесь, однако я просто собираюсь взять код Земли и изменить несколько цифр, чтобы наша планета вращалась в два раза дальше. Создайте класс TutorialPlanetMapObject, и сделайте его implements IMapObject. В этот класс скопируйте и вставьте код с Pastebin, или из файла исходного кода Galacticraft "/ micdoodle8/mods/galacticraft/client/GCCoreMapPlanetOverworld" Pastebin здесь с измененным кодом и комментариями: http://pastebin.com/eCsbnyri | |||
@Override | ===TutorialPlanetSlotRenderer class=== | ||
public | В этом классе есть только три метода. Вам нужно сделать 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(); | |||
} | |||
'''Это все!! :)''' | |||
==Добавление Галактики== | ==Добавление Галактики== |
Revision as of 16:06, 24 November 2013
Contents
Введение
Вы скорей всего как и многие ждете когда появится болще планет. Но как насчет добавить свою планету или ракету? Для этого в моде есть такая вещь как API.
API позволяет сделать такие вещи как:
- Добавить планету
- Добавить галактику
- Добавить gui для ракеты (индикатор высоты который появляется справа при взлете)
- Добавить лут в данж (например, на Луне или Марсе)
- Добавить рецепт для ракеты T1, T2, Kargo.
- Добавить багги
- Добавить космическую станцию
- Добавить планету/луну/систему на карту галактики (кнопка M)
Начало
Вам понадобится:
- MCP
- Eclipse
- Базовые знания моддинга minecraft
- API и Dev-Deobf версия мода и MicCore (скачать отсюда http://ci.micdoodle8.com/job/Galacticraft-Dev/)
Предполагается, что вы знакомы с основами 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(); }
Это все!! :)
Добавление Галактики
В разработке
Добавление Ракеты
В разработке