Обучение/API туториалы: Difference between revisions
No edit summary |
No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 15: | Line 15: | ||
== | ==Запуск Galacticraft в Eclipse == | ||
Предполагается, что вы знакомы с основами Java и умеете делать моды, и у вас уже есть forge рабочее пространство. Если нет, перейдите по этой ссылке:http://www.mcmodding.ru/учебник/ | Предполагается, что вы знакомы с основами Java и умеете делать моды, и у вас уже есть forge рабочее пространство. Если нет, перейдите по этой ссылке:http://www.mcmodding.ru/учебник/ | ||
*1.---Скачайте GC API отсюда: http://www.micdoodle8.com/mods/galacticraft/downloads/dev | |||
*2.---Скачайте Chickencodecore отсюда: http://www.minecraftforum.net/topic/909223-164-smp-chickenbones-mods/ | |||
*3.---Зайдите в ваше рабочее пространство, найдите папку Mods и поместите туда ChickenCodeCore | |||
*4.---Запустите | |||
*5.---Поместите GC core к Chickencodecore, в папку mods рабочего пространства | |||
*6.---Вуаля рабочего пространство теперь должно работать (если вы уже привязал исходники GC для моддинга) AKA теперь вы не должны компилировать, чтобы проверить свой мод, использующий GC зависимость. | |||
==Добавление Планеты== | |||
В методе 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(); | |||
} | |||
'''Это все!! :)''' | |||
==Добавление Галактики== | ==Добавление Галактики== |
Latest revision as of 14:20, 17 March 2014
Contents
Введение
Вы скорей всего как и многие ждете когда появится болще планет. Но как насчет добавить свою планету или ракету? Для этого в моде есть такая вещь как API.
API позволяет сделать такие вещи как:
- Добавить планету
- Добавить галактику
- Добавить gui для ракеты (индикатор высоты который появляется справа при взлете)
- Добавить лут в данж (например, на Луне или Марсе)
- Добавить рецепт для ракеты T1, T2, Kargo.
- Добавить багги
- Добавить космическую станцию
- Добавить планету/луну/систему на карту галактики (кнопка M)
Запуск Galacticraft в Eclipse
Предполагается, что вы знакомы с основами Java и умеете делать моды, и у вас уже есть forge рабочее пространство. Если нет, перейдите по этой ссылке:http://www.mcmodding.ru/учебник/
- 1.---Скачайте GC API отсюда: http://www.micdoodle8.com/mods/galacticraft/downloads/dev
- 2.---Скачайте Chickencodecore отсюда: http://www.minecraftforum.net/topic/909223-164-smp-chickenbones-mods/
- 3.---Зайдите в ваше рабочее пространство, найдите папку Mods и поместите туда ChickenCodeCore
- 4.---Запустите
- 5.---Поместите GC core к Chickencodecore, в папку mods рабочего пространства
- 6.---Вуаля рабочего пространство теперь должно работать (если вы уже привязал исходники GC для моддинга) AKA теперь вы не должны компилировать, чтобы проверить свой мод, использующий GC зависимость.
Добавление Планеты
В методе 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(); }
Это все!! :)
Добавление Галактики
В разработке
Добавление Ракеты
В разработке