Взаимодействие модов в папке mods

Версия Minecraft
1.12.2
API
Forge
Всем привет! Недавно я решил сделать сборку модов, для того, чтобы моды создавали поменьше конфликтов решил написать мод, решающий эти конфликты. Теперь хочу узнать, как моды в папке mods взаимодействуют между собой. Если есть какая статья, относящаяся к этой теме - буду не против, если скинете её. Если потратите время и объясните, буду вообще благодарен. В интернете ничего на эту тему не нашёл, нейросеть выдала что-то странное(а потом удалила ответ)
 
Решение
вот насчёт этого у меня и вопрос. Можно ли менять айдишники предметов извне, например через ещё один мод?
Нет. И даже если сделаешь так (через какой-нибудь ASM, не знаю, вдруг сможешь) делать так крайне нежелательно. На id предмета могут быть завязаны механики самого мода или других модов.
Более подробно обо всём этом ниже.

Ну и как сказал об этом человек выше, тут нет никакой проблемы, чтобы её исправлять.

К тому же как тогда работают аддоны, они ведь не содержат файлов мода-источника внутри себя?
Аддоны "ссылаются" к коду ориг. мода, поскольку все моды как-бы существуют внутри одной среды. Благодаря Forge (или других ModLoader'ов на более новых версиях).
До Forge и прочих ModLoader'ов установка нескольких модов...
как моды в папке mods взаимодействуют между собой
Никак
моды создавали поменьше конфликтов
Я так понимаю, ты пропишешь:
if(hasConflict) fixConflict();?
И код сам поймет какой мод конфликтует с другим абстрактным модом и по какой причине? Забавно
Ну а если без иронии, то представь ситуацию.
Ты написал модик на валюту для игрока, соответственно, каждая эмеральдка из руды, эквивалентна 20 у.е валюты. При подбирании эмеральда ты его очищаешь в инвентаре, а на счет игрока зачисляешь 20 единиц валюты. Потом думаешь, ля, хочу Custom NPC накатить, но вот незадача - нпс требует эмеральд, но ты его отдать не можешь - все эмеральды конвертировались в валюту, а Custom NPC не умеет с ней работать. Что надо сделать? Пральна, пропатчить Custom NPC так, чтобы он мог с твоей валютой работать так же, если бы у тебя был эмеральд в инвентаре.
Так же и с конфликтами, некоторые моды могут использовать одни и те же NBT-теги в итемстаке, из-за чего может вывалиться ошибка неправильной работы с переменной, либо ее конкретного отсутствия, либо же одинаковые блоки, или еще что-то.
Это фиксится только ковырянием самих модов, по логам узнавать, где возникает ошибка, курить сорсы модов и править.
Сам же майн (имею в виду фордж) исключает конфликты путем правильного распределения ИДшников для блоков, для итемов, для существ (первое шо пришло в голову), автоматически решая большинство проблем. Но, это не панацея, и в некоторых случаях надо ковыряться самому в модах
 
вот насчёт этого у меня и вопрос. Можно ли менять айдишники предметов извне, например через ещё один мод? К тому же как тогда работают аддоны, они ведь не содержат файлов мода-источника внутри себя? Тогда как мне импортировать этот мод так, чтобы можно было использовать его классы внутри моего мода? Через modid?
 
Зачем вообще нужен modid?
Чтобы могли существовать, например, предметы с одинаковыми идентификаторами. Например, в многих модах есть предмет с id copper_ingot.
Можно ли менять айдишники предметов извне, например через ещё один мод?
Зачем?

Из вопроса непонятно какую проблему требуется решить. Какие моды друг с другом конфликтуют и в каким местах?
 
вот насчёт этого у меня и вопрос. Можно ли менять айдишники предметов извне, например через ещё один мод?
Нет. И даже если сделаешь так (через какой-нибудь ASM, не знаю, вдруг сможешь) делать так крайне нежелательно. На id предмета могут быть завязаны механики самого мода или других модов.
Более подробно обо всём этом ниже.

Ну и как сказал об этом человек выше, тут нет никакой проблемы, чтобы её исправлять.

К тому же как тогда работают аддоны, они ведь не содержат файлов мода-источника внутри себя?
Аддоны "ссылаются" к коду ориг. мода, поскольку все моды как-бы существуют внутри одной среды. Благодаря Forge (или других ModLoader'ов на более новых версиях).
До Forge и прочих ModLoader'ов установка нескольких модов вообще была невозможна (либо сопровождалась огромной тучей багов, крашей и прочих нестабильностей).

Тогда как мне импортировать этот мод так, чтобы можно было использовать его классы внутри моего мода?
Десяток тем на форуме по созданию аддонов, уж что-то понять оттуда можно.
Если коротенько: код мода подключается как библиотека в ForgeGradle, благодаря чему ты можешь обращаться к коду мода в своём аддоне.

просто я в целом не очень понимаю системы взаимодействия майнкрафта с модами в forge. Зачем вообще нужен modid?
Modid нужен для различия предметов с одинаковым id.

Представим в голове картинку:
Есть в IC2 медь. И в Immersive Engineering тоже есть медь. Слиток меди и там, и там именуется просто: copper_ingot. Тогда как отличить предмет из IC2 и II? Для этого и существует разделение при помощи Resource Location - "modid:item_id" (формально иначе выглядит, но т.к. ты новенький в моддинге и понимания работы майна у тебя нет, мне кажется, что подобного объяснения вполне хватит). В реальности, конечно, у них "item_id" отличается, как мне помнится, но такие ситуации сплошь и рядом.
Окей, но почему тогда не регистрировать просто "minecraft:copper_ingot", это просто уберёт все эти ваши конфликты? А вот нет - конфликтов станет только больше. Если на предмете, который используется только в крафтах это объяснить трудно, то вот используемые предметы становятся головной болью.

Положим, что у нас есть магический мод А и такой же магический мод Б. В моде А можно создавать заклинания при помощи палочки "wand" прямо во время боя. Мод Б же предлагает тебе сначала создать заклинания, а затем загрузить их в палочку "wand". Что тогда должна делать палочка - открывать интерфейс для создания заклинания или пулять подготовленное заклинание?
Вот тут и выступает форма записи id предмета в виде "modid:item_id", которая решает вышеописанные проблемы.


Ну и теперь касательно того, как всё это работает в сборках.
Даже при наличии подобного id, в некоторых местах остались формы записи id в виде цифры (-11, 403, 1432 и т.д.) - как правило, это измерения. (с 1.13 подобное исчезло, кстати)
Во избежания конфликтов любой разраб мода создаёт соотв. строку в конфиг файле. Рекомендую сначала изучить их, перед созданием мода-исправлятора, вдруг половину проблем можно решить изменение конфигов.
 
просто я в целом не очень понимаю системы взаимодействия майнкрафта с модами в forge. Зачем вообще нужен modid?
Регистрация ресурсов мода, идентификация мода.
Например, благодаря наличию ID у модов работает защита от дурака: forge будет сильно ругаться, если обнаружиться два и более файлов одного и того же мода с разными именами. Это не позволит загрузиться моду повторно (зарегистрировать предметы/блоки ещё раз и т.д.), создав ещё более количество проблем.
 
Назад
Сверху