Работа с Waila (перезалив и переделка)

1,560
86
204
Для работы с Waila понадобится собранная рабочая среда Forge версии от 1.7.10 до 1.11.2. После того как вы посмотрели на свою собранную версию заходим в build.gradleи добавляем метод repositories. В этом методе добавляем ещё один метод maven и в этот метод записываем url = "http://mobiusstrip.eu/maven". Вот что получилось:

Код:
repositories {
     maven { url = "http://mobiusstrip.eu/maven" }
}
Потом ищем метод dependencies и в него вписываем "mcp.mobius.waila:Waila:{версияМода}_{версияMC}". Вот что должно получится:
Код:
dependencies {
    compile "mcp.mobius.waila:Waila:1.5.9b_dev2_1.7.10" // Для 1.7.10(последняя версия Waila)
    compile "mcp.mobius.waila:Waila:1.7.0-B3_1.9.4" // Для 1.9.4-1.10.2
     compile "mcp.mobius.waila:Waila:1.7.1_1.11.2" // Для 1.11.2
}
Вписали? Если да, то открываем setup.bat(чем вы компилировали среду) и ждём. После успешной компиляции заходим в Eclipse и включаем перспективу "Java" как на картинке.
uc


Слева где лежат файлы мода и другое видим вкладку Referenced Library и видим там архив Waila как на картинке

uc


Потом в своём моде создаём класс WailaHandler или как-то по-другому. Создаём в классе статичный и публичный метод onWaila с аргументом IWailaRegistrar
Код:
public static void onWaila(IWailaRegistrar register) {
    
}

Потом этот в этот класс добавляем интерфейс IWailaDataProvider вот так вот:
Код:
public class WailaHandler implements IWailaDataProvider {
    ...
}

И добавляем методы, которые нас просят добавить(их выкладывать сюда не буду). Переползаем в главный класс мода и добавляем такой метод:
Код:
FMLInterModComms.sendMessage("waila", "register", WailaHandler.class.getCanonicalName() + ".onWaila");

Теперь всё работает, только мы ничего не регистрировали! Чтобы вместо обычной иконки блока был какой-то другой ItemStack в методе onWaila при помощи IWailaRegistrar вписываем registerStackProvider(inst, классБлока). И в методе getWailaStack, который сам создался, возвращаем нужный ItemStack. Вот пример:
Код:
public static void onWaila(IWailaRegistrar reg) {
    reg.registerStackProvider(new WailaHandler(), BlockLava.class);
 }
 
 @Override
 public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
    return new ItemStack(Items.LAVA_BUCKET);
 }
Таким же образом используются и другие методы и регистры. getWailaHead Это текст сверху таблицы. getWailaBody текст посередине, а getWailaTail текст в самом низу. Что насчёт getNBTData, то я не знаю как им пользоваться XD.
 
3,005
192
592
MaximPixel написал(а):
Для работы с Waila понадобится собранная рабочая среда Forge версии от 1.7.10 до 1.11.2. После того как вы посмотрели на свою собранную версию заходим в build.grandle и добавляем метод repositories. В этом методе добавляем ещё один метод maven и в этот метод записываем url = "http://mobiusstrip.eu/maven".

build.gradle*

И на 1.10+ - эффективнее работает Hwyla (копия Waila, с фиксами).
 
1,560
86
204
Doc написал(а):
И на 1.10+ - эффективнее работает Hwyla (копия Waila, с фиксами).
Я вообще не слышал ничего об этом моде. Да и Waila один из популярнейших модов на CurseFogre.


Но потом всё равно попробую использовать и его
 
699
9
53
Что писать где директория класса, пакет где он находится или чтото другое?
 
1,015
9
102
[font=Monaco, Consolas, Courier, monospace]public static void onWaila(IWailaRegistrar reg) {[/font]
[font=Monaco, Consolas, Courier, monospace]    reg.registerStackProvider(new DataHandler(), BlockLava.class);[/font]
[font=Monaco, Consolas, Courier, monospace]}[/font]
Не new DataHandler(), а new WailaHandler()


[font=Monaco, Consolas, Courier, monospace]FMLInterModComms.sendMessage("Waila", "register", "директорияКлассаWailaHandler.onWaila");[/font]
Во-первых, waila с маленькой буквы, иначе не будет работать, во-вторых, что бы не удручать новичков писать директорию, лучше сделать так:
Код:
FMLInterModComms.sendMessage("waila", "register", WailaHandler.class.getCanonicalName() + ".onWaila");
 
4,045
63
645
Народ!
Только не бейте...
Понимаю, вопрос глупый, но я действительно с этим ещё не работал...
Может мне кто-нибудь объяснить, что есть этот build.gradle, для чего он, как он работает, с чем его едят и почему его все пихают в свои сборки и на github?
:huh:
 
1,560
86
204
Minebot написал(а):
[font=Monaco, Consolas, Courier, monospace]public static void onWaila(IWailaRegistrar reg) {[/font]
[font=Monaco, Consolas, Courier, monospace]    reg.registerStackProvider(new DataHandler(), BlockLava.class);[/font]
[font=Monaco, Consolas, Courier, monospace]}[/font]
Не new DataHandler(), а new WailaHandler()


[font=Monaco, Consolas, Courier, monospace]FMLInterModComms.sendMessage("Waila", "register", "директорияКлассаWailaHandler.onWaila");[/font]
Во-первых, waila с маленькой буквы, иначе не будет работать, во-вторых, что бы не удручать новичков писать директорию, лучше сделать так:
Код:
FMLInterModComms.sendMessage("waila", "register", WailaHandler.class.getCanonicalName() + ".onWaila");
Простите за ошибки
 
Сверху