RU Разная инфа для создателей контента - DragonSurvivalTeam/DragonSurvival GitHub Wiki

WIP IN PROCESS

■ Дополнение к этой статье: https://pikabu.ru/story/dlinnopost_kak_vkatitsya_v_minecraft_s_modami_obyichnomu_yuzeru_i_ne_posedet_11359071

■ За долгое время разработки модов и модпаков, а также ведения сервера, у меня накопилось большое количество информации, которой я хотела бы поделиться с вами. Найти её было крайне сложно и, надеюсь, данный материал поможет вам совершенствоваться. Данный текст относится только к Java версия Майнкрафта.

● Терминология

■ В коммьюнити есть довольно большой хаос в плане того как и что называть, поэтому чтобы в дальнейшем избежать путаницы, сразу обозначу что лично для меня означают те или иные термины:

  • Ванилла (Vanilla) - весь контент и стиль, вложенный в изначальный Minecraft. Ваниллой может считаться только оригинальная игра без изменений.
  • Ванильный стиль (Vanilla Style) - графический и функциональный стиль модификаций, который подразумевает подражание стилю Minecraft. Иногда это словосочетание используют просто для похвалы ("Это выглядит очень ванильно!") или отображения своей позиции ("Моды не должны выделяться из стиля игры и быть ванильными", "Мод в ванильном стиле"). Из-за того что словосочетание "ванильный стиль" часто сокращают до слова "ванилла" в диалоге, в коммьюнити часто бывают споры насчёт этого. Понятие в целом очень расплывчатое и зависит от личных тараканов в голове. Хорошая статья про примеры ванильного стиля есть тут.
  • Модификация (Modification) - абсолютно любой скачанный контент, созданный для расширения функций и контента игры. Чтобы считаться модификацией, контент должен быть именно скачан вне игры и установлен. Созданное внутри игры и то что не требует дополнительной установки не является модификацией.
  • Мод (Mod) - тип модификации, который для установки помещается в папку mods. Может быть клиентским или серверным. Клиентские моды работают только на стороне клиента и не требуют добавления на сервер для работы. Для работы любого мода требуется загрузчик модов. В основном это Forge или Fabric.
  • Аддон (Addon) - тип мода, который меняет контент другого мода или дополняет его. Не работает без основного мода. В бедроке имеет другое значение и является аналогом Мода.
  • Датапак (Datapack) - тип модификации, который для установки помещается в папку datapacks. Влияет на всё связанное с датой (рецепты, дроп, структуры, достижения, теги и так далее). Некоторые моды можно настраивать только через датапаки. Работает только на стороне сервера.
  • Ресурспак (Resourcepack) - тип модификации, который для установки помещается в папку resourcepacks. Влияет на всё связанное с ассетами (язык, модели, текстуры, анимации и так далее). Работает на стороне клиента.
  • Текстурпак (Texturepack) - ресурспак, который меняет только текстуры. Работает на стороне клиента. На более старых версиях существовали только текстурпаки, а в новых появилась возможность делать ресурспаки.
  • Плагин (Plugin) - тип модификации, который для установки помещается в папку plugins. Для работы требуется установка загрузчика плагинов. В основном это Bukkit или Spigot. Моды и плагины не совместимы друг с другом и все ядра, которые пытаются соединить их, чаще всего крайне нестабильны. Если вы в здравом уме и трезвой памяти, не используйте подобные ядра.
  • Карта/Мир (Map/Saves) - тип модификации, которые для установки помещаются в папку saves. Чаще всего это карты для паркура, города, локации и другие постройки.
  • Шейдер (Shader) - тип модификации, который для установки помещается в папку shaderpacks. Требует установки OptiFine, Oculus, Embeddium или Iris. Меняет рендер и делает игру более красивой с помощью освещения, физики, отражений и прочего. Работает на стороне клиента.
  • Модпак (Modpack) - набор модификаций, объёдинённые общей темой с глубокой проработкой и квестами.
  • Подборка модов (Modpack) - более любительская версия модпака без какой-либо общей задумки и проработки. В английском языке не имеет отдельного слова. Данный термин крайне нестабилен в русскоязычном коммьюинити и не имеет общего мнения насчёт того что считать подборкой, а что модпаком. Часто это является синонимом.

■ Терминология, связанная с технической частью:

  • Багрепорт (Bugreport) - сообщение об ошибке. Обычно для этого заполняют специальную форму на гитхабе.
  • Корневая папка (Root folder) - основная папка с игрой. Например AppData\Roaming\.minecraft или Curseforge\Instances.Большинство нужных для моддинга файлов хранится тут.
  • Архиватор (File archiver) - любая программа, которая позволяет упаковывать группы файлов в один файл и открывать такие упакованные файлы. Обычно для этого используется WinRAR или 7-Zip. Формат файлов - .gz, .7z, .zip, .rar. Благодаря им также можно открывать некоторые .jar файлы.
  • Логи (Log) - файлы, отображающие часть процессов внутри игры. Позволяет анализировать появляющиеся проблемы. Создаётся в корне игры при старте игры и постоянно дополняется. Разделены на два файла - debug.log и latest.log. После закрытия игры и открытия новой сессии, превращается в архив.
  • Краш (Crash) - аварийное завершение работы игры. Не путать с дисконнектом!!! Итогом краша является создание краш файла в корне игры.
  • Дисконнект (Disconnect) - отключение от сервера без краша игры.
  • Баг (Bug) - ошибка, которая мешает играть, но не прерывает саму игру.

■ Терминология, связанная с серверной частью::

  • Сервер (Server) - игра, к которой могут подключаться другие игроки. Делится на Lan Server (локальный сервер) и Dedicaten Server (выделенный сервер).
  • Локальный сервер (Lan Server) - сервер, к которому могут подключаться игроки по локальной сети (Lan). Например, с помощью Radmin и Hamachi. Для открытия мира игрок-хост нажимает кнопку "Открыть мир для сети" после захода в мир и диктует другому игроку появившийся в чате порт для подключения. Вопреки распространённому мнению, баги локальной игры и баги выделенного сервера могут отличаться.
  • Выделенный сервер (Dedicated Server) - сервер, к которому можно подключить по белому ip или названию хоста. Для открытия такого сервера, требуется скачать специальную версию игры и установить сервер.
  • Хост (Host) - это компьютер, на котором производятся вычисления для сервера. Это может быть сторонний хостинг сайт или ваш собственный компьютер.
  • Серверная сторона (Server Side) - всё, что обрабатывает игра внутри себя. В основном связанно с процессором и RAM. Это датапаки, сервер сайд моды, плагины, крафты, действия игрока, положение объектов, взаимодействия с кнопками/блоками/энтити, расчёты и прочие сложные вещи. Всё что делается на серверной стороне влияет на всех игроков. Когда вы играете в одиночную игру, у вас одновременно работает и серверная сторона и клиентская! По сути в этот момент вы хостите игру самому себе.
  • Клиентская сторона (Client Side) - всё, что видит игрок. В основном связано с видеокартой. Это любой рендер, текстурпаки, шейдеры, анимации, гуи, язык, x-ray и другие клиент моды. Вы можете менять что угодно на клиентской стороне и это никак не повлияет на сервер, т.е. другие игроки не будут видеть ваши текстур паки, шейдеры и так далее.

● Как искать информацию?

■ Тема может показаться очевидной, но очень часто сталкиваюсь с тем, что люди не умеют банально искать информацию по модам.

■ - Где искать моды?

■ Первое о чём нужно знать - где искать эти самые моды. Основной источник модов это Curseforge. Тут содержится 90% всех модификаций на Minecraft. Ещё 10% находятся в PlanetMinecraft, Modrinth или на личных сайтах. Все остальные сайты в 99% случаев являются пиратскими и не платят никаких отчислений авторам, а также не получают их разрешение на распространение. Используйте оригинальные источники, если хотите действительно поддержать разработчиков. Авторы получают небольшие денежные отчисления за ваши скачивания, а вы получаете качественный свежий контент без риска подхватить вирусы. В последнее время распространение малваров через моды на пиратских сайтах стало слишком частым.

■ - Как узнать что добавляет мод?

■ Чаще всего вся информация о моде указана в описании на странице Curseforge или по ссылке на вики.



■ Если разработчик внезапно решил умолчать о добавляемом контенте (хтьпфу на таких разрабов), тут есть несколько способов узнать о добавляемом контенте:

  1. Поискать на Youtube.
  2. Посмотреть на Github этого мода. Кнопка "Issues" или "Source"
  3. Зайти в дискорд сервер этого мода (но если они не сочли нужным указать информацию о моде на своей странице, то не вижу смысла поощрять накруткой подписчиков таких разработчиков).
  4. Просто забросить в поисковик, но шанс найти что-то таким способом околонулевой.
  5. Если у мода есть конфиги, можно открыть их и узнать больше информации или деталей о каких-то механиках.

■ - Как быстро получить ответ на вопрос?

■ Прежде чем спрашивать у игроков или разработчика, лучше всего прибегнуть к следующей тактике, которая лично меня выручала в 98% случаях. Так вы сэкономите и своё время и время других людей:

  1. Прежде всего, внимательно проверьте наличие информации внутри игры.
  2. Откройте страницу мода на Curseforge. Найдите там ссылку на Wiki. У большинства крупных модов есть своя википедия, а мелкие полностью описывают все на своей странице.
  3. Ознакомьтесь с последними комментариями на странице CF. Возможно, кто-то недавно столкнулся с той же проблемой, что и вы.
  4. Зайдите на гитхаб мода и поищите там. Кнопка "Issues".
  5. Если вы не можете найти информацию, зайдите на дискорд-сервер этого мода и используйте поиск по ключевому слову во всех чатах. Например, вам нужно узнать что-то о полетах, напишите в поиске (ctrl+F) слова "крыло" или "летать". Желательно на английском. С большой вероятностью у кого-то уже был вопрос, похожий на ваш, и на него есть ответ. Лично я много раз пользовался этим методом и получал информацию в десятки раз быстрее, чем когда спрашиваешь и ждешь ответа сам.
  6. Не стесняйтесь пользоваться сочетанием Ctrl+F в разных приложениях и страницах. Это очень полезная функция.

■ Если вы не смогли найти ответ на свой вопрос или это связано с какими-либо багами/крашами, просто напишите свой вопрос в дискорде мода или на странице.

■ - У меня есть много текстовых файлов, как найти нужный мне пункт?

■ Предположим у вас большой модпак и вы не можете найти одну строчку в каком-то конфиге. Чтобы вручную не проверять каждый отдельный файл, есть очень быстрый способ искать информацию с помощью NotePad++.

  1. Разархивируйте свои файлы, если они находятся в zip, rar или любом другом формате.
  2. Откройте NotePad++ и перетяните туда все свои текстовые файлы (json или txt).
  3. Нажмите Ctrl+F и введите искомое слово.
  4. Нажмите "Найти все во всех открытых документах"
  5. Внизу будет отображен результат поиска. Кликните на него и перейдёте к нужному файлу.


● Как частично удалить чанки на карте мира?

■ Если у вас возникла необходимость очистить часть карты, не затрагивая постройки игроков в других частях карты, воспользуйтесь этой программой - MCA Selector.

  1. Скачайте и установите MCA Selector.
  2. Сделайте резервную копию (бэкап) своего сохранения/мира.
  3. Откройте MCA Selector и перетащите туда свой мир. Он должен начать рендерится.
  4. Левой кнопкой мыши можно выделять большие и маленькие куски карты. Приближайте и отдаляйте карту, чтобы обрезать более аккуратно.
  5. На правую кнопку мыши можно убрать выделение. Зажав кнопку, можно выделять более значительные куски.
  6. Ctrl+D чтобы удалить выбранные участки.


■ Если вы играете на сервере, у вас скорее всего будет желание перенести границы баз игроков из FTB Chunks, но увы автоматизации я не знаю. Раньше для неё был плагин, который работал с FTB Chunks, но он не работает на новых версиях. Если кто-то обновит его на новые версии, будет потрясающе! Тут тема с обсуждением.

■ Лично я для решения этой проблемы захожу на сервер, снижаю в карте FTB насыщенность до 0 (чтобы было хорошо видно границы базы) и вручную выделяю все базы в MCA Selector, а потом инвертирую выделение. Данное выделение можно сохранить, чтобы в следующий раз не начинать всё с нуля.



● Как настраивать моды?

■ Большинство модов имеет конфиги, но некоторые настройки могут требовать более высоких навыков от вас. Если вам повезло, то после первого запуска игры и входа в мир у вас появятся файлы в папке config (Instances\Play as Dragon Gothic Edition\config) и serverconfig (Instances\Play as Dragon Gothic Edition\saves\New World (2)\serverconfig). Найдите интересующий вас конфиг мода по названию и откройте его. Некоторые конфиги могут потребовать Notepad ++ для открытия и иметь необычный внешний вид.



■ Существует несколько видов конфигов:

  • Клиентские конфиги (dragonsurvival-client.toml) - конфиги, связанные с интерфейсами и прочими деталями, которые никак не влияют на глобальный геймплей. Любой игрок может отредактировать их для себя в любой момент. Сервер никак не может повлиять на эти конфиги. Находится этот конфиг в общей папке конфигов.
  • Сервер конфиги (dragonsurvival-server.toml) - более серьёзные конфиги, влияющие на конкретные механики. Обычно именно тут хранится большинство функций мода. Игрок, играющий на сервере, никак не может повлиять на эти конфиги и все игроки находятся под влиянием этих настроек. Находится этот конфиг в папке мира. Для каждого мира генерируется дефолтный конфиг! Если вы хотите чтобы во всех новых мирах использовался ваш изменённый конфиг, добавьте копию отредактированного вами файла в папку defaultconfigs. При генерации сервер конфигов, будут использованы настройки из этой папки.
  • Общие конфиги (dragonsurvival-common.toml) - тоже самое, что сервер конфиги, но хранится в папке с клиент конфигами и влияет сразу на все миры по умолчанию. Находится этот конфиг в общей папке конфигов.


● Как использовать датапаки в модпаке?

ПРЕДУПРЕЖДЕНИЕ: если вы будете использовать эту информацию для воровства чужого контента, знайте, - вам п***, гандоны! В нашем коммьюнити это крайне сильно осуждается. Я очень сильно не хотела давать эту информацию публично, но, надеюсь, подобные инструкции никогда не попадут в руки долбоёбам. Всё, выговорилась. Сорри за отвлечение, а теперь перейдём к гайду~.

■ Что делать если папки конфигов у мода не существует или хочется более глобального изменения мода? Использовать датапаки! Это намного сложнее, чем просто менять true на false, но может быть очень полезно. Предположим, что вы понимаете как работают датапаки и вы хотите изменить дроп с рыцарей из Dragon Survival.

  • Найдите jar файл мода Dragon Survival и откройте его архиватором (например 7-zip).


  • Внутри вы увидите разные папки. Перенесите папку "data" на рабочий стол или куда угодно ещё. Не делайте изменения внутри самого мода, это не безопасно!
  • Чтобы изменить дроп, вам нужно внутри этой папки удалить абсолютно всё лишнее, сохранив только data\dragonsurvival\loot_tables\entities\knight.json
  • Путь к файлу должен быть без изменений.


  • Открываем knight.json и видим всякую непонятную хрень. Давайте заменим железные ботинки на золотые и уменьшим возможную максимальную прочность.
  • Меняем "name": "minecraft:iron_boots" на "name": "minecraft:gold_boots"
  • Меняем "max": 1.0 на "max": 0.3
  • Сохраняем


  • Теперь делаем из этого датапак. Для этого превращаем нашу data папку в архив.
  • Внутрь кладём pack.mcmeta и pack.png. Первый создаётся блокнотом, а второй просто любая картинка 16х16 пикселей.
{
  "pack": {
    "pack_format": 9,
    "description": "Description of your datapack"
  }
}


  • Созданный датапак кладём в папку datapacks. Находится внутри вашего мира (Например, Instances\Play as Dragon Gothic Edition\saves\New World (2)\datapacks)
  • Если у вас есть мод OpenLoader, вы можете класть свои датапаки в конфиг этого мода (Instances\Play as Dragon Gothic Edition\config\openloader\data). Это намного удобнее, чем способ выше и работает с публикацией официальных модпаков на Curseforge.

● Как оптимизировать модпак

■ Что важно знать прежде чем, заниматься оптимизацией:

  1. НЕ ставьте рандомные моды на оптимизацию, потому что 99% из них не работает или ломает моды. Существует также огромное число модов, которые абсолютно ничего не делают и созданы для троллинга любителей устанавливать моды на оптимизацию. Среди разрабов это отдельный мем и повод для шуток.
  2. Использует этот список проверенных модов, но не ставьте больше 1-2 подобных крупных модов на оптимизацию!
  3. Не путайте между собой проблемы с клиентом (фпс, фризы, которых нет у других игроков) и проблемы с сервером (тпс, фризы, которые у всех игроков). Когда вы играете соло, у вас также присутствует сервер сторона (Server Side), просто она объединяется с клиентом (Client Side). Так что не удивляйтесь если где-то в тексте я буду писать про сервер, а вы хотели информацию про соло игру. Подробнее читайте в разделе терминологии выше.

■ Основные причины проблем с оптимизацией на модпаке:

  1. Первичная генерация мира. Когда игрок заходит в мир первый раз, его мир ещё не сгенерирован полностью и про открытии новых территорий неизбежно будут происходить фризы. Единственный способ исправить это, поставить любой мод на прегенерацию, включить его, дождаться окончания процесса (в зависимости от настроек это может занять от нескольких минут до 5-8 часов). Если вы держите сервер, а не просто играете в одиночке, вы ОБЯЗАНЫ делать прегенерацию карты своего сервера перед запуском игроков, чтобы избежать огромных просадок тпс на начальных этапах. Не недооценивайте важность этого пункта.
  2. Энтити. Любые сущности являются очень ресурсоёмкими даже в ванильной игре и очень хорошим решением в модпаке будет ограничить их количество любым способом. Лично я использую мод Incontrol, в котором можно очень тонко настроить все параметры спавна и даже креативно переписать спавн для своих нужд! Например, настроить скелетов так чтобы они появлялись только ниже определённых координат.
  3. Вилладжеры. Если вы решили первые два пункта, то в игре останется только этот источник проблем. По сравнению с любым другим ванильным мобом, житель будет кушать в 7-12 раз больше ресурсов. Это отлично видно с помощью модов Spark и Observable. Чтобы решить эту проблему нужно или полностью избавиться от жителей или уменьшить их влияние на игру с помощью мода EasyVillagers. Просто спрячьте этих засранцев в блоки и компьютеру больше не придётся обрабатывать их сложный ИИ.
  4. Проблемы совместимости модов или просто плохой код. Все остальные проблемы, которые потенциально могут у вас возникнуть, будут связаны с добавлеными модами. Их дебаг это отдельное искусство и в этом очень помогают моды Spark и Observable. Они легко и быстро показывают где скрыто большинство проблем, но не исправляют их. Чтобы исправить проблему, вам самим придётся принимать решения - удалять проблемный мод, менять конфиги, редактировать спавн, отключать конкретное энтити и так далее. В этом и состоит большая часть работы над модпаком.

● Альтернативы Optifine.

https://github.com/LambdAurora/optifine_alternatives или https://lambdaurora.dev/optifine_alternatives/

■ Oculus (old versions) or Embeddium for shaders. Не используйте Оптифайн. Он беспощадно устарел и не работает с большинством модов.

● Как узнать что является причиной краша, если логи пусты

https://visualvm.github.io/ or https://github.com/wolfpld/tracyhttps://docs.mym.li/en/latest/Knowledge_Base/debug.html

● Полезные команды

  • /setblock ~ ~ ~ minecraft:chest{LootTable:"dragonsurvival:chests/angry_cave_chest_loot"} replace - поставить сундук под собой с несгенерированным лутом из луттейбла (любого)
  • /loot replace block ~ ~ ~ container.0 loot minecraft:chests/desert_pyramid - заменить лут в блоке, на который смотришь (или для командного блока)
  • /execute in minecraft:the_end run tp 0 70 0 - телепортировать в Энд
  • /execute in minecraft:the_nether run tp 0 70 0 - телепортировать в Незер
  • /execute at BlackAures run kill @e[type=minecraft:item,distance=..172] - уничтожить предметы в радиусе
  • /kill @e[type=minecraft:cod] - убить конкретного моба
  • /kill @e[type=!minecraft:player] - убить всех, кроме игрока.
  • /summon minecraft:salmon ~ ~ ~ {PersistenceRequired: true} - призыв моба, который не будет деспавниться
  • /give @p diamond_sword{Unbreakable:1,Enchantments:[{id:sweeping,lvl:1000},{id:knockback,lvl:1000},{id:sharpness,lvl:1000},{id:looting,lvl:1000}]} - меч для креатива
  • /summon minecraft:item ~ ~1 ~ {Item:{id:"minecraft:fishing_rod",Count:1b,tag:{Unbreakable:1,Enchantments:[{lvl:5,id:"minecraft:lure"}]}}} - удочка для креатива
  • /setblock ~ ~ ~ spawner{SpawnCount:1,MaxNearbyEntities:5,SpawnRange:14,Delay:15,MinSpawnDelay:12,MaxSpawnDelay:30,RequiredPlayerRange:16,SpawnData:{entity:{id:"dragonsurvival:hunter_spearman"}}} replace - спавн мобов из модов в спавнере
  • /data get entity @e[type=horse,distance=..10,limit=1,sort=nearest] - получить все nbt теги ближайшей лошади
  • /data get entity @s - получить все nbt теги сущности
  • /give @s item_frame{EntityTag:{Invisible:1}} - невидимая рамка для предмета

World Edit

  • //replace stone_stairs ^cobblestone_stairs - замена лестниц с сохранением их позиции и даты
  • //replace "sand <air" diamond_block,iron_block,gold_block Replacing surface sand with metal blocks (накладывается только на верхнюю сторону блока)
  • //set ^[waterlogged=false] убрать все ваттерлоги (удобно использовать после команды //replace water air)

■ Как узнать id всего что лежит в сундуке:

  • Мод крафттвикер: https://www.curseforge.com/minecraft/mc-mods/crafttweaker (id 239197)
  • /crafttweaker block_info
  • Нажать пкм на сундук или любой другой контейнер
  • Вся инфа будет в чате и в файле crafttweaker.log (Папка logs)

■ Добавление игроков в одну команду и режим PVE (выкл урон по своим)

  • /team add 1 "Pve"
  • /team join 1 @a
  • /team modify 1 friendlyFire false

● Полезные ссылки