Говорю сразу, всё это для 1.7.10!!!
Кхмкхм, начнём. Первое, что мы должны сделать это настроить нашу среду. Я не буду говорить как это делается, потому что это давно не нова и различные люди уже писали как настроить среду для работы с моддингом для Minecraft.
А вот и последовательность:
1. Скачайте нужные файлы! Их можно найти тут.
2. Зайдите в Eclipse/IntelliJ IDEA. В "Minecraft --> src/main/java" распакуйте всё содержимое архива (Если высказался не так, извините подправьте. Просто вариант тимохи не работает), а теперь зайдите в папку с вашим модом, далее "eclipse", потом "mods". Туда впихиваем deobf версию мода.
3. Создайте Main/Core/**Core/**Main класс для вашего мода.
Всё. Дальше будут спойлеры (О да, те самые лагучие спойлеры на этом сайте ).
Кхмкхм, начнём. Первое, что мы должны сделать это настроить нашу среду. Я не буду говорить как это делается, потому что это давно не нова и различные люди уже писали как настроить среду для работы с моддингом для Minecraft.
А вот и последовательность:
1. Скачайте нужные файлы! Их можно найти тут.
2. Зайдите в Eclipse/IntelliJ IDEA. В "Minecraft --> src/main/java" распакуйте всё содержимое архива (Если высказался не так, извините подправьте. Просто вариант тимохи не работает), а теперь зайдите в папку с вашим модом, далее "eclipse", потом "mods". Туда впихиваем deobf версию мода.
3. Создайте Main/Core/**Core/**Main класс для вашего мода.
Всё. Дальше будут спойлеры (О да, те самые лагучие спойлеры на этом сайте ).
Вкладка делается так:
Получаем это :
Код:
package пакетик;
import java.util.HashMap;
import net.minecraft.util.ResourceLocation;
import thaumcraft.api.research.ResearchCategories;
public class * //Вместо "*" пишите название своего класса (Лучше при создании его не изменять). Не имеет "extends". Это класс самой вкладки.
{
public static final String LM = "LM"; //Не обязательно.
public static HashMap<String, Object> recipeList = new HashMap();
public static final ResourceLocation[] backgrounds = new ResourceLocation[]{new ResourceLocation("") /* Местоположение фона для вкладки */, new ResourceLocation("") /* Местоположение фона для вкладки */};
public static void setupResearchPages() {
ResearchCategories.registerCategory((String)"LIGHTMAGIC" /* ID вашей вкладки. Обязательно писать большими буквами!!! */, (ResourceLocation)new ResourceLocation("") /* Местоположение иконки вкладки */, (ResourceLocation)backgrounds[0]);
}
}
Код:
//Здесь я объясняю подробнее. Это всё надо в ваш главный класс в "postInit" ([color=#ff3333]Только postInit, ни init, ни preInit, никуда, только в postInit[/color])
/* Тут ваш класс */./* Тут ваш(и) методы */();
Вот классы:
Код:
* ConfigBlocks
* ConfigAspects
* ConfigResearch
* ConfigItems
* ConfigEntities
* ConfigAspects
Сейчас я объясню что такое ResearchItem и как его использовать.
Код:
/**
* Небольшой String отвечающий за "ключ" вашего изучения. Очень уникально. Вместо него пишите String (Текст в двойных ковычках).
*/
public final String key;
/**
* Небольшой String отвечающий за то в какой категории (ResearchCategory) будет находиться ваше изучение. Вместо него пишите название вашей/чужой вкладки в двойных кавычках естественно (Можно использовать String)
*/
public final String category;
/**
* Аспектовые пометки. То что вы укажете после них нужно будет потом "изучать" на столике (Normal Mode), требуется указывать кол-во аспектов ведь некоторые пользуются Easy Mode. Пример: new AspectList().add(Aspect.AIR, 4 /* 4 - это кол-во нужных аспектов при Easy Mode, в Normal Mode будет только 1 аспект */)
*/
public final AspectList tags;
/**
* Этот String использовать не обязательно ибо он назначает "родителей" (Изучения которые нужно изучить, чтобы только потом можно было изучить другое). Изначально он null - у изучения нету "родителей". Пример ванила Thaumcraft: 'FOCUSFIRE' - .setParents(new String[] { "BASICTHAUMATURGY" }). Мой пример: .setParents(new String[] { "INFUSION", "MM.RINGOFMAGIC" /* Можно использовать несколько "родителей */ })
*/
public String[] parents = null;
/**
* Похож на setParents, но линии соединения с изучением в таумономиконе невидима. Естественно изначально он null
*/
public String[] parentsHidden = null;
/**
* Любое изучение привязанное на то которое имеет параметр setSiblings будут автоматически "открываться" если то изучение тоже "открыто". Пример ванила Thaumcraft: setSiblings(new String[] { "JARLABEL" })
*/
public String[] siblings = null;
/**
* Горизонтальная позиция иконки изучения. Если "-int", то оно идёт вверх, если "int", то оно идёт вниз.
*/
public final int displayColumn;
/**
* Вертикальная позиция иконки изучения. Если "-int", то оно идёт налево, если "int", то оно идёт направо.
*/
public final int displayRow;
/**
* Иконка используемая для этого изучения. [color=#ff3333]ItemStack[/color].
*/
public final ItemStack icon_item;
/**
* Иконка используемая для этого изучения. [color=#ff3333]ResourceLocation[/color]. Сразу объясняю - это нужно только для того, чтобы использовать не предмет/блок в качестве иконки, а картинку. Как пример это нужно для зачарований.
*/
public final ResourceLocation icon_resource;
/**
* Насколько большая будет "сетка" в процессе изучения на столике. Минимум 1, максимум 3.
*/
private int complexity;
/**
* Специальное изучение имеющее "шипастые" края. Используются для важных изучений. Но можно использовать и для красоты.
*/
private boolean isSpecial;
/**
* Изучение которое можно купить за аспекты (Как в Easy Mode) в Normal Mode.
*/
private boolean isSecondary;
/**
* Это показывает, что изучение будет иметь круглые края. Используется для "пассивных" изучений, но можно и просто так. Для
*/
private boolean isRound;
/**
* Делает иконку изучения "квадратной".
*/
private boolean isStub;
/**
* Concealed изучения не отображаются в таумономиконе пока не будет изучено его родительское изучение.
*/
private boolean isConcealed;
/**
* Спрятанные изучения можно изучить только изучая что-либо таумометром (Ну тут рандом конечно ;)) или фрагментами знаний.
*/
private boolean isHidden;
/**
* Потерянные знания - это почти спрятанные, только их нельзя изучить с помощью фрагментов знаний, только изучая что-либо таумометром.
*/
private boolean isLost;
Сразу говорю писал это не я, а hohserg
Для начала создадим класс реакции на действие.
Далее: нужно зарегистрировать эту реакцию:
Для начала создадим класс реакции на действие.
Код:
package;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.wands.IWandTriggerManager;
import thaumcraft.common.items.wands.ItemWandCasting;
import thaumcraft.common.lib.research.ResearchManager;
public class OnWandReaction
implements IWandTriggerManager//реализуем этот интерфейс
{
public boolean performTrigger(World world, ItemStack wand, EntityPlayer player, int x, int y, int z, int side, int event)
{
if (!world.isRemote && event == 1 && side == 1) {//если игрок кликнул палочкой по блоку, его сторона == 1, индекс события == 1, то можно что-то сделать
return true
}
return false;
}
}
Код:
//Главный класс мода, postInit
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event)
{
wandRaction=new OnWandReaction()
WandTriggerRegistry.registerWandBlockTrigger(wandRaction,1/*индекс события*/,YourMod.yourBlock/*наш блок*/,0/*метадата*/)}