RU Разная инфа для создателей контента - DragonSurvivalTeam/DragonSurvival GitHub Wiki
■ За долгое время разработки модов и модпаков, а также ведения сервера, у меня накопилось большое количество информации, которой я хотела бы поделиться с вами. Найти её было крайне сложно и, надеюсь, данный материал поможет вам совершенствоваться. Данный текст относится только к Java версия Майнкрафта.
● Терминология
■ В коммьюнити есть довольно большой хаос в плане того как и что называть, поэтому чтобы в дальнейшем избежать путаницы, сразу обозначу что лично для меня означают те или иные термины:
- Ванилла (Vanilla) - весь функционал, контент и стиль, заложенный в чистом Майнкрафте. Ваниллой может считаться только оригинальная игра без изменений.
- Ванильный стиль (Vanilla Style) - графический и функциональный стиль модификаций, который подразумевает подражание стилю Minecraft. Иногда это словосочетание используют просто для похвалы ("Это выглядит очень ванильно!") или отображения своей позиции ("Моды не должны выделяться из стиля игры и быть ванильными", "Мод в ванильном стиле"). Из-за того что словосочетание "ванильный стиль" часто сокращают до слова "ванилла" в диалоге, в коммьюнити часто бывают споры насчёт этого. Понятие в целом очень расплывчатое и зависит от личных тараканов в голове. Хорошая статья про примеры ванильного стиля есть тут.
- Модификация (Modification) - абсолютно любой скачанный контент, созданный для расширения функций и контента игры. Чтобы считаться модификацией, контент должен быть именно скачан вне игры и установлен. Созданное внутри игры и то что не требует дополнительной установки не является модификацией.
- Мод (Mod) - тип модификации, который для установки помещается в папку mods. Может быть клиентским или серверным. Клиентские моды работают только на стороне клиента и не требуют добавления на сервер для работы. Для работы любого мода требуется загрузчик модов. В основном это Forge или Fabric. В новых версиях Neoforge.
- API / Библиотека (API/Library) - категория модов, которые не добавляют контент в игру, но используются другими модами. Без этих библиотек некоторые моды не будут работать. О том что моду требуется что-то дополнительно устанавливать обычно указано на официальной странице мода. Если проигнорировать это, то вы попросту не сможете зайти в игру, но на загрузочном экране скорее всего будет указано, какому моду чего не хватает (актуально в основном для новых версий).
- Аддон (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 или по ссылке на вики.
■ Если разработчик внезапно решил умолчать о добавляемом контенте (хтьпфу на таких разрабов), тут есть несколько способов узнать о добавляемом контенте:
- Поискать на Youtube.
- Посмотреть на Github этого мода. Кнопка "Issues" или "Source"
- Зайти в дискорд сервер этого мода (но если они не сочли нужным указать информацию о моде на своей странице, то не вижу смысла поощрять накруткой подписчиков таких разработчиков).
- Просто забросить в поисковик, но шанс найти что-то таким способом околонулевой.
- Если у мода есть конфиги, можно открыть их и узнать больше информации или деталей о каких-то механиках.
■ - Как быстро получить ответ на вопрос?
■ Прежде чем спрашивать у игроков или разработчика, лучше всего прибегнуть к следующей тактике, которая лично меня выручала в 98% случаях. Так вы сэкономите и своё время и время других людей:
- Прежде всего, внимательно проверьте наличие информации внутри игры.
- Откройте страницу мода на Curseforge. Найдите там ссылку на Wiki. У большинства крупных модов есть своя википедия, а мелкие полностью описывают все на своей странице.
- Ознакомьтесь с последними комментариями на странице CF. Возможно, кто-то недавно столкнулся с той же проблемой, что и вы.
- Зайдите на гитхаб мода и поищите там. Вкладка "Issues".
- Если вы не можете найти информацию, зайдите на дискорд-сервер этого мода и используйте поиск по ключевому слову во всех чатах. Например, вам нужно узнать что-то о полетах, напишите в поиске (ctrl+F), введите слово "крыло" или "летать". Желательно на английском. С большой вероятностью у кого-то уже был вопрос, похожий на ваш, и на него есть ответ. Лично я много раз пользовался этим методом и получал информацию в десятки раз быстрее, чем когда спрашиваешь и ждешь ответа сам.
- Не стесняйтесь пользоваться сочетанием Ctrl+F в разных приложениях и страницах. Это очень полезная функция.
■ Если вы не смогли найти ответ на свой вопрос или это связано с какими-либо багами/крашами, просто напишите свой вопрос в дискорде мода или на странице.
■ - У меня есть много текстовых файлов, как найти нужный мне пункт?
■ Предположим у вас большой модпак и вы не можете найти одну строчку в каком-то конфиге. Чтобы вручную не проверять каждый отдельный файл, есть очень быстрый способ искать информацию с помощью NotePad++.
- Разархивируйте свои файлы, если они находятся в .zip, .rar или любом другом формате.
- Откройте NotePad++ и перетяните туда все свои текстовые файлы (json или txt).
- Нажмите Ctrl+F и введите искомое слово.
- Нажмите "Найти все во всех открытых документах"
- Внизу будет отображен результат поиска. Кликните на него и перейдёте к нужному файлу.
● Как частично удалить чанки на карте мира?
■ Если у вас возникла необходимость очистить часть карты, не затрагивая постройки игроков в других частях карты, воспользуйтесь этой программой - MCA Selector.
- Скачайте и установите MCA Selector.
- Сделайте резервную копию (бэкап) своего сохранения/мира.
- Откройте MCA Selector и перетащите туда свой мир. Он должен начать рендерится.
- Левой кнопкой мыши можно выделять большие и маленькие куски карты. Приближайте и отдаляйте карту, чтобы обрезать более аккуратно.
- На правую кнопку мыши можно убрать выделение. Зажав кнопку, можно выделять более значительные куски.
- 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/dragonsurvival-server.toml) - тоже самое, что сервер конфиги, но хранится в папке с клиент конфигами и влияет сразу на все миры по умолчанию. Находится этот конфиг в общей папке конфигов.
- Датапаки - не все моды технически могут делать всё в конфигах. Зачастую большая часть настроек возможна только через датапаки.
● Как оптимизировать модпак
■ Что важно знать прежде чем, заниматься оптимизацией:
- НЕ ставьте рандомные моды на оптимизацию, потому что 99% из них не работает или ломает моды. Существует также огромное число модов, которые абсолютно ничего не делают и созданы для троллинга любителей устанавливать моды на оптимизацию. Среди разрабов это отдельный мем и повод для шуток.
- Использует этот список проверенных модов, но не ставьте больше 1-2 подобных крупных модов на оптимизацию!
- Не путайте между собой проблемы с клиентом (фпс, фризы, которых нет у других игроков) и проблемы с сервером (тпс, фризы, которые у всех игроков). Когда вы играете соло, у вас также присутствует сервер сторона (Server Side), просто она объединяется с клиентом (Client Side). Так что не удивляйтесь если где-то в тексте я буду писать про сервер, а вы хотели информацию про соло игру. Подробнее читайте в разделе терминологии выше.
■ Основные причины проблем с оптимизацией на модпаке:
- Первичная генерация мира. Когда игрок заходит в мир первый раз, его мир ещё не сгенерирован полностью и про открытии новых территорий неизбежно будут происходить фризы. Единственный способ исправить это, поставить любой мод на прегенерацию, включить его, дождаться окончания процесса (в зависимости от настроек это может занять от нескольких минут до 5-8 часов). Если вы держите сервер, а не просто играете в одиночке, вы ОБЯЗАНЫ делать прегенерацию карты своего сервера перед запуском игроков, чтобы избежать огромных просадок тпс на начальных этапах. Не недооценивайте важность этого пункта.
- Энтити. Любые сущности являются очень ресурсоёмкими даже в ванильной игре и очень хорошим решением в модпаке будет ограничить их количество любым способом. Лично я использую мод Incontrol, в котором можно очень тонко настроить все параметры спавна и даже креативно переписать спавн для своих нужд! Например, настроить скелетов так чтобы они появлялись только ниже определённых координат.
- Вилладжеры. Если вы решили первые два пункта, то в игре останется только этот источник проблем. По сравнению с любым другим ванильным мобом, житель будет кушать в 7-12 раз больше ресурсов. Это отлично видно с помощью модов Spark и Observable. Чтобы решить эту проблему нужно или полностью избавиться от жителей или уменьшить их влияние на игру с помощью мода EasyVillagers. Просто спрячьте этих засранцев в блоки и компьютеру больше не придётся обрабатывать их сложный ИИ.
- Проблемы совместимости модов или просто плохой код. Все остальные проблемы, которые потенциально могут у вас возникнуть, будут связаны с добавлеными модами. Их дебаг это отдельное искусство и в этом очень помогают моды 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/tracy ■ https://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}} - невидимая рамка для предмета
//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
● Полезные ссылки
- https://www.mcedit.net/ - сайт где можно строить не входя в майн
- https://misode.github.io/worldgen/structure-set/ - настройки спавна структур
- https://misode.github.io/worldgen/structure/ - настройка структуры
- https://misode.github.io/worldgen/processor-list/ - рандомизация блоков в структуре
- https://gist.github.com/GentlemanRevvnar/98a8f191f46d28f63592672022c41497 - гайд по паззлам
- https://jigsaw.jacobsjo.eu/?version=1_20 - предпросмотр структуры
- https://www.gamergeeks.net/apps/minecraft/mob-generator сгенерировать команду для призыва или спавнера
- https://www.curseforge.com/minecraft/mc-mods/texture-dump - мод для быстрого создания пнг всех модов модпака в одном файле. После захода игры автоматически генерируются в файле. Удобно для создания единого стиля в текстурпаке или модпаке.
- https://www.curseforge.com/minecraft/mc-mods/custom-villager-trades-forge - кастомные трейды
- https://github.com/jaquadro/NBTExplorer/releases - удобный инструмент для редактирования .nbt формата (карты, плеердата и так далее)