- Версия(и) Minecraft
- 1.7.10
Всем привет! Данный туториал создан по мотивам гайда от SLywnow (Вот тут). Обещания, который он давал не сбылись, так что эту обязанность я возьму на себя. Настоятельно рекомендую прочесть его гайд для установки таумкрафта в среду разработки и разработки базовых вещей.
( Разработка аддона для Thaumcraft - также источник информации )
Спойлер ниже обязателен к прочтению!
( Разработка аддона для Thaumcraft - также источник информации )
Спойлер ниже обязателен к прочтению!
Когда вы скачали и установили в качестве библиотеки таумкрафт, вы можете приступать к работе. Но прежде всего разберемся, что и откуда я брал.
Основная папка это api, именно в ней находится большинство нужных нам вещей.
Например здесь мы можем найти интерфейс IGoggles:
Также здесь находятся файлы для разработки новых аспектов/своих письменных принадлежностей и многого другого. Вообщем это и есть ваш главный друг при разработке.
Создайте папку init в главной папке мода. В ней можно инициализировать свои вещи, аспекты, крафты, исследования и многое другое.
А теперь поехали!
\
Основная папка это api, именно в ней находится большинство нужных нам вещей.
Например здесь мы можем найти интерфейс IGoggles:
Также здесь находятся файлы для разработки новых аспектов/своих письменных принадлежностей и многого другого. Вообщем это и есть ваш главный друг при разработке.
Создайте папку init в главной папке мода. В ней можно инициализировать свои вещи, аспекты, крафты, исследования и многое другое.
А теперь поехали!
\
Зачем нужен свой аспект? Возможно при крафте более дорогой вещи/наполнения для которой оправдано создание такого аспекта. Также в целях более подробного разбиения на аспекты(Например аспект "Скорость" для создания сверхскоростных ботинок).
В созданной папке init(Прочтите спойлер сверху!) создадим класс initAspects.
В него запишем:
Здесь можно увидеть создание двух аспектов. Первый аспект создан из двух первоначальных аспектов(AIR(Aer) + EARTH(Terra)).
Второй - это наш новый "первоначальный"(primal) аспект. Наряду с Aer, Terra, Ignis, Aque он не будет создаваться, однако его обязательно нужно зарегистрировать в любом обьекте(для расщепления в столе расщепления или изучения с таумометром(Будет рассказано в следующем спойлере).
Также можно разобрать аргументы создания аспекта.
1-й - название.
2-й - цвет аспекта(цвет узла ауры)
3-й - состав аспекта
4-й - иконка аспекта. В этих примерах я взял текстуру vacuos(пустоты) для примера, однако вы можете использовать свою!
5-й - некий blend(смешивание), однако все аспекты кроме void используют 1, так что используем 1.
В созданной папке init(Прочтите спойлер сверху!) создадим класс initAspects.
В него запишем:
Java:
public class InitAspects {
public static void setup() { // по аналогии с гайдом SLywnow
// аспект который создается из других аспектов
new Aspect("aspectus", 00000000, new Aspect[]{AIR, EARTH}, new ResourceLocation("thaumcraft", "textures/aspects/vacuos"), 1);
// начальный аспект(типо ignis, aqua, terra и других)
new Aspect("aspectus", 00000000, new Aspect[]{}, new ResourceLocation("thaumcraft", "textures/aspects/vacuos"), 1);
}
}
Второй - это наш новый "первоначальный"(primal) аспект. Наряду с Aer, Terra, Ignis, Aque он не будет создаваться, однако его обязательно нужно зарегистрировать в любом обьекте(для расщепления в столе расщепления или изучения с таумометром(Будет рассказано в следующем спойлере).
Также можно разобрать аргументы создания аспекта.
1-й - название.
2-й - цвет аспекта(цвет узла ауры)
3-й - состав аспекта
4-й - иконка аспекта. В этих примерах я взял текстуру vacuos(пустоты) для примера, однако вы можете использовать свою!
5-й - некий blend(смешивание), однако все аспекты кроме void используют 1, так что используем 1.
Наверняка данная опция будет очень удобна при создании интеграции с модами, так как ванильный таумкрафт, интегрируется далеко не со всеми предметами.
Для этого создадим класс InitThaumometer в вышеописанной папке init.
В нем же создадим метод (public static void) init и в нем registerEntitiesAspects и registerBlocksAspects
После создания файла, вызовите setup() в preInit(preLoad) в главном классе.
В registerEntitesAspects можно добавлять аспекты которые будут выдаваться игроку при изучении мобов таумометром.
В registerBlocksAspects то же самое, но с блоками.
Также при создании кастомных интеграций с другими модами перед названием предмета указывается modid мода.
И дополнительная киллерфича, можно использовать oreDict для одних и тех же обьектов, которые реализуются разными модами(например слиток меди).
Для этого создадим класс InitThaumometer в вышеописанной папке init.
В нем же создадим метод (public static void) init и в нем registerEntitiesAspects и registerBlocksAspects
Java:
public class initThaumometer {
public static void setup() {
registerEntitiesAspects();
registerBlocksAspects();
}
public static void registerEntitiesAspects() {
ThaumcraftApi.registerEntityTag("Zombie" /* имя сущности */, (new AspectList()).add(Aspect.UNDEAD, 2).add(Aspect.MAN, 1).add(Aspect.EARTH, 1), new ThaumcraftApi.EntityTagsNBT[0]);
}
public static void registerBlocksAspects() {
ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.bedrock) /* выдается при изучении бедрока */, (new AspectList()).add(Aspect.VOID, 16).add(Aspect.ENTROPY, 16).add(Aspect.EARTH, 16).add(Aspect.DARKNESS, 16) /* сколько выдается аспектов, создаем с помощью AspectList() */);
}
}
После создания файла, вызовите setup() в preInit(preLoad) в главном классе.
В registerEntitesAspects можно добавлять аспекты которые будут выдаваться игроку при изучении мобов таумометром.
В registerBlocksAspects то же самое, но с блоками.
Также при создании кастомных интеграций с другими модами перед названием предмета указывается modid мода.
И дополнительная киллерфича, можно использовать oreDict для одних и тех же обьектов, которые реализуются разными модами(например слиток меди).
ThaumcraftApi.registerObjectTag("nuggetLead", (new AspectList()).add(Aspect.METAL, 1));
Однажды вы захотели создать свои собственные письменные принадлежности( в дальнейшем буду называть ПП) и для этого создан класс IScribeTools. Сам он ничего не делает как таковой, поэтому стоит пользоваться кодом из таумкрафта и аддонами к нему.
А вот и базовый код любых письменных принадлежностей. Вы можете добавить какую-либо интеграцию или что-нибудь свое(к примеру на ПКМ у вас высасывается мана из планшета маны ботании).
( примеры можно найти вот здесь: ForbiddenMagic/src/main/java/fox/spiteful/forbidden/items/scribes at master · SpitefulFox/ForbiddenMagic )
А вот и базовый код любых письменных принадлежностей. Вы можете добавить какую-либо интеграцию или что-нибудь свое(к примеру на ПКМ у вас высасывается мана из планшета маны ботании).
Java:
public class scribe extends Item implements IScribeTools {
@SideOnly(Side.CLIENT)
public IIcon icon;
public ItemInkwell() {
this.maxStackSize = 1;
this.canRepair = true;
this.setMaxDamage(100);
this.setHasSubtypes(false);
}
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister ir) {
this.icon = ir.registerIcon("thaumcraft:inkwell");
}
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int par1) {
return this.icon;
}
}
Для создания очков откровения в таумкрафте есть интерфейс IGoggles. Он предоставляет возможность видеть узлы ауры и аспекты в котлах/банках/узлах ауры.
(Код закомментирован):
Для достижения эффекта очков откровения нужно вовзращать true в обоих последних функциях.
(Код закомментирован):
Java:
public class GogglesHelmet extends ItemArmor implements IRepairable, IVisDiscountGear, IRevealer, IGoggles, IRunicArmor {
public IIcon icon;
public GogglesHelmet(ArmorMaterial enumarmormaterial, int j, int k) {
super(enumarmormaterial, j, k);
this.setMaxDamage(350);
this.setCreativeTab(/* ваша вкладка, https://minecrafting.ru/topic/10939/ здесь я узнавал как сделать */);
}
public int getRunicCharge(ItemStack itemstack) {
return 0;
} /* руническая зарядка, не знаю, что это, но в большинстве предметов возвращает 0 */
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister ir) {
this.icon = ir.registerIcon("thaumcraft:gogglesrevealing");
} /* зарегистрировали предмет с иконкой
очков откровения. На первое время нормально */
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int par1) {
return this.icon;
}
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
return "thaumcraft:thaumiumfortresshelm"; /* текстура штурмового шлема */
}
public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) {
return par2ItemStack.isItemEqual(new ItemStack(Items.gold_ingot)) ? true : super.getIsRepairable(par1ItemStack, par2ItemStack);
} /* добавляем починку предмета */
/* ТЕПЕРЬ САМОЕ ВАЖНОЕ */
/* Данная функция добавляет возможность видеть узлы ауры */
public boolean showNodes(ItemStack itemstack, EntityLivingBase player) {
return true;
}
/* Эта показывает количество аспектов в различных вещах */
public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player) {
return true;
}
}
Для достижения эффекта очков откровения нужно вовзращать true в обоих последних функциях.