MTUtils: расширение возможностей MineTweaker для Minecraft 1.7.10
Каждый создатель модпаков или администратор сервера рано или поздно сталкивается с необходимостью тонкой настройки игрового процесса. Стандартные инструменты вроде MineTweaker позволяют менять рецепты, но что делать, если нужно изменить свойства блоков, управлять дропами в зависимости от инструмента или конвертировать типы данных прямо в скриптах? Именно для таких задач был создан MTUtils — плагин для MineTweaker, работающий на версии Minecraft 1.7.10. Он открывает доступ к десяткам новых функций, которые раньше требовали написания отдельных модов или сложных обходных путей.
Что такое MTUtils и для кого он предназначен
MTUtils — это дополнение, которое расширяет стандартный набор команд MineTweaker. Все скрипты по-прежнему размещаются в папке MineTweaker, но теперь вы можете вызывать методы, влияющие на характеристики предметов, блоков и даже на поведение дропа. Мод особенно полезен для авторов сборок, стремящихся к уникальному балансу, и для серверов с GregTech или Minechem, где требуется глубокая интеграция жидкостей и рецептов. Исходный код доступен в репозитории на GitHub, что позволяет изучить реализацию или предложить улучшения.
Работа с предметами: прочность и повреждения
Одна из самых востребованных возможностей — изменение максимальной прочности инструментов и брони. С помощью MTUtils вы можете задать любое значение урона для предмета, а также получить текущие показатели прямо в скрипте. Основные команды выглядят так:
- MTUtils.setItemMaxDamage(itemstack, damage); — устанавливает максимальную прочность.
- MTUtils.getItemMaxDamage(itemstack); — возвращает целое число (int) с текущим максимумом.
- MTUtils.getItemDamage(itemstack); — возвращает текущее значение повреждения предмета.
Эти методы позволяют динамически менять износ инструментов в зависимости от условий, создавая более реалистичную или хардкорную механику.
Управление свойствами блоков
Блоки в Minecraft обладают множеством параметров, которые редко доступны для редактирования через конфиги. MTUtils даёт полный контроль над уровнем добычи, прочностью, освещением и даже текстурой блока. Вот список доступных методов:
- MTUtils.setHarvestLevel(itemstack, String tooltip, int harvestLevel); — задаёт требуемый уровень инструмента для добычи.
- MTUtils.setBlockUnbreakable(itemstack); — делает блок неразрушимым.
- MTUtils.setHardness(itemstack, float hardness); — меняет твёрдость.
- MTUtils.setLightLevel(itemstack, float lightLevel); — регулирует уровень излучаемого света.
- MTUtils.setLightOpacity(itemstack, int lightOpacity); — управляет прозрачностью для света.
- MTUtils.setResistance(itemstack, float resistance); — устанавливает сопротивляемость взрывам.
- MTUtils.setTextureName(itemstack, String texturename); — позволяет сменить текстуру блока на лету.
Кроме того, существуют методы для получения текущих значений: getHarvestLevel, getHarvestTool и getTextureName. Последний может возвращать текстуру для конкретной стороны блока, что открывает простор для визуальных экспериментов.
Утилиты для конвертации типов данных
При написании сложных скриптов часто возникает необходимость преобразовать строку в число, форматированный текст в обычную строку или получить предмет по его названию. MTUtils содержит набор удобных функций, которые решают эти задачи без лишнего кода:
- MTUtils.getIntFromString(string); — извлекает целое число из строки.
- MTUtils.getFloatFromString(string); — аналогично для чисел с плавающей точкой.
- MTUtils.getStringFromInt(int); и getStringFromFloat(float); — обратные преобразования.
- MTUtils.getStringFromFormattedText(IFormattedText text); — конвертирует форматированный текст в обычную строку.
- MTUtils.getCrossMatch(IOreDictEntry ... oreDictEntries); — возвращает массив предметов, соответствующих нескольким словарным ключам.
- MTUtils.getIngredientFromString(String in); — получает ингредиент по строковому идентификатору.
- MTUtils.getItemStackFromString(String in); — создаёт стек предметов из строки.
Эти инструменты значительно ускоряют разработку, позволяя манипулировать данными прямо в скриптах MineTweaker. Например, можно динамически генерировать названия предметов или преобразовывать пользовательский ввод в игровые объекты.
Гибкая система дропов
Одна из самых мощных функций MTUtils — управление дропом блоков в зависимости от используемого инструмента. Вы можете задать, что при добыче дерева топором выпадает обычная древесина, а без топора — только доски. Это реализуется через методы:
- MTUtils.clearDrops(); — полностью сбрасывает таблицу дропов, создавая чистую основу для кастомизации.
- MTUtils.setBlockDrops(@Nullable IItemStack harvester, IItemStack block, IItemStack drops[], float quantiDrop[], IItemStack falseDrops[]); — задаёт дропы для конкретного блока с учётом инструмента в руке. Параметр harvester может быть null, тогда правило применяется для добычи голыми руками. Массивы drops и falseDrops позволяют определить, что выпадет при успешной добыче и что — при неудачной.
Такой подход даёт невероятную гибкость: можно создать ситуацию, когда алмазная руда при добыче киркой из определённого материала даёт дополнительные ресурсы, а при использовании неподходящего инструмента — лишь каменную крошку. Для установки мода и всех его зависимостей удобно использовать лаунчер foxygame.net, который позволяет загружать модификации прямо из меню, избавляя от ручного поиска и копирования файлов — достаточно выбрать нужный мод в каталоге, и лаунчер сам добавит его в сборку.
Интеграция с GregTech: кастомные рецепты и замена жидкостей
Для владельцев серверов с GregTech мод предлагает отдельный модуль MTUtilsGT. Он добавляет команды для работы с рецептами машин GT и позволяет массово заменять жидкости в существующих рецептах. Импорт осуществляется командой import mods.MTUtilsGT;. Все добавленные или удалённые рецепты сбрасываются при перезагрузке скриптов MineTweaker, что обеспечивает безопасное тестирование.
Чтобы получить ключ машины GregTech, используется игровая команда /MTUtils GTkey "Canner" (двойные кавычки обязательны, если название содержит пробелы). Название нечувствительно к регистру, поддерживаются регулярные выражения. Просмотреть все доступные ключи можно через /MTUtils GTKeys [1...] с опциональным указанием блока из десяти ключей.
Добавление рецепта выглядит так:
MTUtilsGT.addCustomRecipe("gt.recipe.canner", false, 128, 128, [10000], [<minecraft:cobblestone>], <liquid:soda>*500, <liquid:water>*500, [<minecraft:diamond>]);
Второй вариант вызова позволяет передавать массивы жидкостей. Если жидкости не нужны, следует использовать вызов без соответствующих параметров — передача null не сработает.
Замена жидкостей выполняется методом MTUtilsGT.addFluidInput. Первый параметр — исходная жидкость, второй — замена. При множественном маппинге можно передать массив пар. Важно помнить: повторный вызов для одной и той же жидкости добавит дублирующиеся рецепты, поэтому рекомендуется группировать все замены в один вызов.
Пример интеграции Minechem и GregTech
На серверах, где одновременно установлены Minechem и GregTech, часто возникает задача использовать жидкости из Minechem в рецептах машин GT. MTUtilsGT решает эту проблему элегантно. Сначала командой /MTUtils GTfluids можно получить список всех используемых жидкостей в рецептах GregTech. Затем одним вызовом MTUtilsGT.addFluidInput с массивом пар выполняется замена:
MTUtilsGT.addFluidInput([ [<liquid:molten.aluminium>, <liquid:element.al>], [<liquid:molten.iron>, <liquid:element.fe>], ... ]);
Такой подход добавляет все возможные рецепты с полностью заменёнными жидкостями, избегая смешанных вариантов, если использован второй формат вызова. Это значительно расширяет технологические цепочки и позволяет создавать уникальные производственные линии.
Underground Biomes Constructs API
MTUtils также предлагает API для работы с Underground Biomes Constructs. Через конфигурационный файл можно задать сопоставление блоков и текстур. Пример записи в конфиге:
[
{
"name":"exampleblock",
"nameid":"minecraft:iron_ore",
"texturepath":"minecraft:iron_ore"
}
]
Это позволяет переопределять внешний вид руд и камней из мода Underground Biomes, гармонично вписывая их в общую стилистику сборки.
Заключение
MTUtils — это незаменимый инструмент для всех, кто стремится выйти за рамки стандартных возможностей MineTweaker. Будь то точная настройка баланса, создание уникальных дроп-таблиц или глубокая интеграция GregTech с другими модами, этот плагин предоставляет чистый и документированный API. Благодаря активному сообществу и открытому исходному коду, мод продолжает развиваться, а значит, возможности кастомизации Minecraft 1.7.10 становятся практически безграничными. Если вы создаёте модпак или управляете сервером, MTUtils определённо заслуживает места в вашем наборе инструментов.