26 октября, 2014

minecraft 1.6.4 сборка, косяки

Предыстория, есть две сборки, старая и новая. Старая работает, новая - нет. В новой переименованы файлы модификаций в папочке mods. Видел такой прием в одной из сборок, выглядит аккуратнее, чем дефолтные имена. Вылезло пару косяков.

Первый, есть три файла:
 1_lib_CodeChickenCore 0.9.0.9.jar
 2_client_NotEnoughItems 1.6.1.9.jar
Client_NEIPlugins-1.1.0.6.jar

Вот в таком порядке они работают.  когда были без приписок 1_, 2_ - то грузились в обратном порядке и ничего не работало. Это можно списать на косяк forge mod loader, но с большинством остальных модов таких проблем не было. Благо ошибка была понятной, у неи одна зависимость, у плагинов зависимость от неи.

Второй косяк посложнее. Есть мод mod_OpenComputers-MC1.6.4-1.3.6.561-universal.jar - годный мод добавляющий сложные компьютеры, кушающие энергию, а не простые коробки делающиеся из ерунды, как computercraft. В целом та же луа, роботы, все такое. Так вот, файлы переименованы, запускаю клиент и получаю вот это:

cpw.mods.fml.common.LoaderException: java.lang.NoSuchFieldError: instance
Caused by: java.lang.NoSuchFieldError: instance
    at li.cil.oc.common.Proxy.preInit(Proxy.scala:50)
    at li.cil.oc.client.Proxy.preInit(Proxy.scala:25)
    at li.cil.oc.OpenComputers$.preInit(OpenComputers.scala:47)
    at li.cil.oc.OpenComputers.preInit(OpenComputers.scala)

и еще вагон не важного, как обычно. Методом убрать моды\добавить моды в папку выяснилось что свинину подсовывает мод universal electricity и resonant engine. Вообще задумка сделать фреймворк для работы с электричеством универсально хорошая, но во-первых уже есть industrial craft или наконец rf из thermal expansion. Во-вторых эти моды написаны отвратительно. Конкретно на этот раз, open computers находит эти моды и считает что у нас есть Universal electricity, подгружает модуль и роняет весь клиент.

Выяснилось, что если убрать lib_Resonant-Engine-1.2.0.349-universal.jar вместе с lib_Universal-Electricity-3.1.0.115-core.jar , либо же просто переименовать первый из двух в дефолтное Resonant-Engine-1.2.0.349-universal.jar , то все начинает работать.

 Может показаться что я зря гоню на universal electricity, и в данном случае дело вроде как не в нем. Изначально сборка планировалась под 1.7.2\1.7.10 ветку и началась как раз с этих модов. На них же и закончилась, потому что версия скачанная с офсайта роняла сервер. Товарищ выяснил что они забыли при сборке положить декларацию, на которую ориентируется сервер и естественно ничего не оттестировали. Под 1.6.4 проблемы были с resonant induction - контентным модом от тех же авторов и mekanism - модом под это же электричество и официально одобренном. В итоге пришлось выпилить оба. Это кстати причина почему практически нигде кроме сборки voltz не используется эта ветка модов, а используется industrial craft. Помирить их между собой в принципе можно, они не особо друг другу мешают, но вот стабильность такой сборки под вопросом.

Конкретно механизм на прошлом тесте увел сервер в состояние постоянной перезагрузки из-за того, что длинный провод прокинутый через десяток чанков выгружался, а мод не обрабатывает нормально, нормальное для игры явление. Я уже не говорю про веселые и недопиленные майнинг лазеры из этого же мода, которые при использовании также роняют сервер. И еще там есть шахтерский агрегат - digital miner. Запитываем ветряком, ставим и говорим выкопать всю алмазную руду на площади в 64х64. Минут через 5 забираем примерно 40 блоков этой руды. По сравнению с этим карьеры из buildcraft'а выглядят эталоном сбалансированности, они эти 40 блоков будут копать сутки реалтайма и выкопают еще 200+к блоков побочного продукта.