Datapack Function Library (DFL) - это не мод, а библиотека функций для датапаков Minecraft. Если вы когда-нибудь хотели добавить на сервер лифты из железных блоков, систему TPA или авто-плавку, но не хотели ставить тяжелые плагины - этот датапак для вас. По сути, это готовый набор скриптов, которые вы просто подключаете и используете.
Датапак распространяется под лицензией GNU LGPL, так что можете смело встраивать его в свои сборки. Работает на всех версиях Майнкрафт, где вообще можно установить датапак (начиная с 1.13). Правда, на совсем старых версиях некоторые функции могут не работать - слишком много команд.
Для корректного отображения текста на русском (начиная с версии 3.2+) нужно установить ресурспак. Без него язык датапака будет китайским (zh_cn).
В датапаке есть специальная функция dfl:dfl_enable, которая устанавливает счёт 1 для всех сущностей в объективе dfl_scoreboard. Это удобно для других датапаков или модов, которые зависят от DFL.
Пример проверки:
# Выполняется при загрузке датапака:
scoreboard objectives add dfl_scoreboard dummy
scoreboard players set dfl_enable dfl_scoreboard 0
# Если не загружен:
function dfl:dfl_enable
execute unless score dfl_enable dfl_scoreboard matches 1
# Если загружен:
function dfl:dfl_enable
execute if score dfl_enable dfl_scoreboard matches 1
Важный момент: у некоторых функций есть "предварительные функции" (prerequisite functions), которые нужно выполнить один раз перед использованием основной. А функции с параметрами вроде {xx:"xx"} - это макросы, им нужно передавать аргументы через {<имя_параметра>:"<значение>"}.
Эти функции лучше всего выполнять один раз при загрузке или перезагрузке датапака.
/function dfl:start/disable_special_damage
Отключает урон от падения, огня, замерзания и утопления. Полезно для мини-игр или творческих режимов.
/function dfl:start/set_world_spawn
Устанавливает точку возрождения мира на 0 0 0 с радиусом 0. Игроки будут появляться на самом высоком блоке в этих координатах.
/function dfl:start/show/enable_death_scoreboard
Создаёт объектив death и отображает количество смертей игроков справа на экране, сортируя от большего к меньшему. Правда, таблица появится только после первой смерти кого-либо.
/function dfl:start/show/display_health_below_name
Показывает здоровье игрока под его именем. На расстоянии пропадает - остаётся только ник. При первом включении будет показывать 0, пока значение не обновится (например, после получения урона).
/function dfl:start/show/display_level_in_tab
Отображает уровень опыта каждого игрока в списке игроков (Tab). Аналогично - сначала будет 0.
/function dfl:start/show/display_health_in_tab
Показывает полоску здоровья каждого игрока в Tab-меню.
/function dfl:start/create_teams {team_blue:"blue",team_red:"red",prefix_blue:"blue",prefix_red:"red"}
Создаёт две команды с указанными названиями и префиксами. Отключает friendly fire и коллизию между своими. Цвета - синий и красный.
Эти функции нужно выполнять каждый игровой тик (20 раз в секунду).
/function dfl:tick/soft_ban_player {title:"Причина бана",subtitle:"Примечание"}
Исполнителем должна быть сущность, которую нужно забанить. Реализует "мягкий" бан: постоянно телепортирует игрока на 0 0 0, переключает в режим приключения и вешает негативные эффекты.
Пример: /execute as @a[tag=ban] run function dfl:tick/soft_ban_player {title:"Нарушение правил",subtitle:"Обратитесь к админу"}
/function dfl:tick/beacon_fly
Если под маяком есть блоки железа, золота, изумрудов, алмазов или незерита - игрок телепортируется вверх. Высота зависит от материала: 20, 40, 60, 80 и 100 блоков соответственно. Одинаковые блоки можно стакать - максимальная высота 400 блоков (4 незеритовых блока). Зрители не телепортируются.
/function dfl:tick/apply_debuffs
Вешает на исполнителя кучу дебаффов: замедление, усталость от добычи, тошноту, тьму, голод, слабость, отравление, невезение и trial_omen.
/function dfl:tick/iron_block_elevator
Если игрок стоит между двумя железными блоками друг над другом - его телепортирует вверх. Максимальная дистанция - 6 блоков (то есть между блоками может быть до 5 блоков). Работает и с мобами.
/function dfl:tick/kill_excess_entities {num:"1000"}
Удаляет всех не-игроков, если их количество превышает {num}. Не трогает сущности с тегом need. После очистки выводит сообщение в чат.
/function dfl:tick/kill_by_density {num:"50"}
Предварительная функция: /function dfl:lib/get_entity_density
Удаляет сущности, если в радиусе 10 блоков их больше {num}. Не убивает игроков, жителей и сущности с тегом need. Работает без сообщений в чате.
/function dfl:tick/mith
Включает сохранение инвентаря при смерти, даёт ночное зрение, свечение (glowing) и убирает эффект тьмы.
/function dfl:tick/display_entity_count
Предварительная функция: /function dfl:lib/get_entity_count
Показывает реальное количество сущностей в action bar (над панелью быстрого доступа).
/function dfl:tick/disable_friendly_fire
Создаёт команду dfl и добавляет туда всех игроков. Отключает урон по своим и коллизию внутри команды. Если не запускать каждый тик - выполняйте после каждого нового игрока.
/function dfl:tick/kill_tnt_by_density {num:"200"}
Удаляет TNT-сущности, если в радиусе 5 блоков их больше {num}.
/function dfl:tick/trigger_✨
Создаёт объектив kill. Игроки могут написать /trigger kill, чтобы убить себя - никаких прав не нужно.
/function dfl:tick/change_block {new:"glass",old:"stone",num:"30"}
Заменяет {old} на {new} в кубе {num}*8 вокруг игрока. Меняет лимит commandModificationBlockLimit на максимальный.
/function dfl:tick/always_sunny
Отключает цикл дня и ночи, отключает смену погоды, устанавливает время на день и погоду на ясную.
/function dfl:tick/clear_and_execute_single {name:"stone",run:"tp ~ 100 ~"}
Забирает один {name} у всех игроков и выполняет {run}. В команде не должно быть лишних пробелов и слеша в начале.
/function dfl:tick/clear_and_execute_multiple {name:"sand",run:"give @s anvil"}
Забирает все {name} у исполнителя и выполняет {run} столько раз, сколько предметов было забрано (все в одном тике).
/function dfl:tick/maintain_item_count {name:"slime_block",num:"64"}
Гарантирует, что у исполнителя будет ровно указанное количество предмета.
/function dfl:tick/create_rescue_platform
Предварительная функция: /function dfl:lib/get_game_time
Создаёт платформу 3x3 из слизневых блоков под игроком с тегом dfl_slime. Блоки исчезают через заданное время (по умолчанию 200 тиков = 10 секунд). Блоки рядом с игроком при генерации очищаются.
/function dfl:tick/things_to_xp {name:"tnt",xp:"1"}
Конвертирует каждый {name} у исполнителя в {xp} очков опыта.
/function dfl:tick/tpa
Предварительная функция: /function dfl:lib/generate_player_id
Создаёт объективы tpa и tpa_enable. Игроки пишут /trigger tpa set <ID игрока> (ID виден в Tab), чтобы телепортироваться. /trigger tpa_enable разрешает телепортацию к себе (отменить нельзя). Если цель недоступна - система ждёт.
/function auto_smelt:smelt {input:"raw_iron",output:"iron_ingot"}
Потребляет {input} и выдаёт соответствующее количество {output}. Плавка одного предмета стоит 1 очко опыта. Если есть несколько видов топлива - используются все сразу. Угольный блок позволяет переплавить 9 предметов за раз (снимает 9 опыта).
Эти функции лучше запускать по расписанию через /schedule, а не каждый тик.
/function dfl:timer/clear_items
Удаляет все выброшенные предметы и выводит количество через /tellraw. Не трогает предметы с тегом need.
/function dfl:timer/display_entity_info
Предварительные функции: /function dfl:lib/get_entity_count, /function dfl:lib/get_item_count, /function dfl:lib/non_player_entities. Выводит подробную статистику по сущностям.
Эти функции либо ничего не делают сами по себе, либо используются как вспомогательные.
/function dfl:lib/force_death_drops
Отключает keepInventory, убивает исполнителя, включает keepInventory обратно.
В датапаке есть два диалога с текстом лицензий GNU GPL v3.0 и GNU LGPL v3.0. Используются через /dialog show dfl:gpl или /dialog show dfl:lgpl. Полезно, если нужно быстро показать текст лицензии в игре.
В целом, Datapack Function Library - это швейцарский нож для создателей датапаков. Если вы делаете карту или мини-игру на ванильном Minecraft - этот датапак сэкономит вам кучу времени. Просто подключите его как зависимость и вызывайте готовые функции.

Библиотека функций для создателей датапаков в Майнкрафт. Набор готовых механик: от мягкого бана и лифтов до авто-плавки и TPA. Совместима со всеми версиями, где работают датапаки.