Базовые методы и переменные исполняемых файлов


Понятие параметра SCOPE.

Этот параметр используется только в методах для запуска других исполняемых файлов. Этот объект описывает новые переменные в пространстве имен запускаемого файла, где имя поля в этом объекте - имя новой переменной, а значение - соответсвенно ее значение.  Параметр SCOPE может быть не передан или иметь значение null, тогда никаких новых переменных не будет создано.

Пример:

SCOPE это объект {
    x: 2,
    
    sqr: function(a){
        return a * a;
    }
}

В исполняемом файле, который запущен с таким SCOPE появятся переменная x со значением 2 и функция sqr, возводящая число в квадрат.

В коде исполняемых файлов вне зависимости от API всегда есть набор стандартных методов и переменных, связанных со структурой мода и его файлами. Далее будут перечисленны все.

Не зависят от типа исполняемого файла:
Переменные:

  • __name__ - переменная, содержащая имя мода в виде строки, в основном используется в логах.
  • __dir__ - директория мода, которая содержит все его файлы, заканчивается на /
  • __config__ - реализация основного конфига мода (config.json), который будет визуализирован в меню настройки модов. Обычно создавать дополнительные конфиги не приходится.
  • __mod__ - java-объект самого мода, содержаший все остальные значения, техническая переменная.

Методы:

  • runCustomSource(path, SCOPE) - запускает исполняемый файл на указанном пути path (локальный путь в директории данного мода) с данным объектом SCOPE. Важно то, что этот файл должен быть описан в build.config и иметь тип custom.
  • importLib(libName, moduleName) - импортирует указанный модуль из указанной библиотеки, где libName - имя файла библиотеки без расширения, а moduleName, имя нужного модуля в библиотеке или строка "*", в последнем случае будут импортированы все модули из данной библитеки. В самих библиотеках данный метод недоступен.

Только в библиотеках:

  • registerAPIUnit(moduleName, moduleValue) - регистрирует модуль библиотеки, который далее можно будет импортировать с помощью importLib(libName, moduleName) или importLib(libName, "*"), где moduleName - имя модуля, а moduleValue - любое значение, которое вы хотите передать, обычно это объект с набором методов.

Только в лаунчере:

  • Launch(SCOPE) - запускает все основные файлы мода с данным SCOPE, если мод уже запущен, то выдаст исключение RuntimeException.