datapack function library
Этот датапак даёт разработчикам несколько полезных функций и совместим со всеми версиями Minecraft (кроме тех версий, где датапаки нельзя установить).
- Загрузчики
- FabricNeoForgeForgeQuilt
- Скачиваний на Modrinth
- 41 тыс.
- Подписчиков на Modrinth
- 14
- версия
- 31
- Обновлён
- 26 сентября 202626 сент.
- Опубликован
- в 2024
Коротко о моде
Нужен на сервере; в игре — по желанию
Preface
This datapack is licensed under the GNU LESSER GENERAL PUBLIC LICENSE.
This datapack provides developers with some practical functions (and some dialogs), compatible with all versions of Minecraft (except for versions that cannot install datapacks).
However, due to the large number of commands involved in the datapack, lower versions may not be able to use all functions. The applicable versions of all functions will not be specified below.
Please install the resource pack at the same time to use localized content (v3.2+). Otherwise, the datapack language will default to zh_cn.
The mod version of this datapack is packaged through Modrinth, and the content is exactly the same as the datapack version, but it is not necessarily the latest version. Please try to use the datapack version.
This datapack provides a dfl:dfl_enable function, which sets the score of the player dfl_enable in the dfl_scoreboard scoreboard item to 1, which is convenient for datapacks or mods that depend on this datapack to detect whether this datapack is loaded.
Example:
#Execute when the datapack is loaded:
scoreboard objectives add dfl_scoreboard dummy
scoreboard players set dfl_enable dfl_scoreboard 0
#If not loaded:
function dfl:dfl_enable
execute unless score dfl_enable dfl_scoreboard matches 1
#If loaded:
function dfl:dfl_enable
execute if score dfl_enable dfl_scoreboard matches 1Note: Some functions have "prerequisite functions" attached to their usage. These functions must be executed once before executing them.
**Some function usages are followed by {xx:"xx"}. These functions are macro functions. When using them, you need to pass parameters through `{:""}` (the parameters in the usage are the recommended parameters tested by the author during development, or the parameters used by the author for testing). The parameter name (such as num) is expressed as: {num} in the text. The parameter format can refer to the function usage, and special formats will be explained.**
If you encounter any problems, please click here to give feedback.
Function Description
Start
Functions in this category are recommended to be executed when the datapack is loaded (reloaded).
Disable Special Damage
Function usage: /function dfl:start/disable_special_damage
- Fall damage;
- Fire damage;
- Freeze damage;
- Drowning damage.
Fix the respawn point to 0 0
Function usage: /function dfl:start/set_world_spawn
- Set the world respawn point to 0 0 0;
- Set the respawn point radius to 0;
- At this time, the player will be fixed to respawn on the highest block at coordinate 0 0.
Enable death leaderboard
Function usage: /function dfl:start/show/enable_death_scoreboard
- Create a scoreboard item named death;
- The number of deaths will be displayed on the right side of the screen;
- The number of player deaths is sorted from high to low;
- Note: The death leaderboard will not be displayed when it is first enabled, and it will be displayed only after any player dies.
Display player health
Function usage: /function dfl:start/show/display_health_below_name
- Создать элемент таблицы очков с названием health;
- Здоровье игрока будет отображаться под ID игрока;
- Оно не будет отображаться, если расстояние немного велико (отображается только ID игрока);
- Примечание: при первом включении здоровье будет отображаться как 0, и оно отобразится только после обновления значения (например, при получении урона).
Отображение уровня опыта игрока
Использование функции: /function dfl:start/show/display_level_in_tab
- Создать элемент таблицы очков с названием level;
- Уровень опыта каждого игрока будет отображаться в Tab-баре (списке игроков);
- Примечание: при первом включении уровень опыта будет отображаться как 0, и он отобразится только после обновления значения (например, при повышении уровня).
Отображение полосы здоровья игрока
Использование функции: /function dfl:start/show/display_health_in_tab
- Создать элемент таблицы очков с названием health;
- Полоса здоровья каждого игрока будет отображаться в Tab-баре (списке игроков).
- Эффект выглядит так:
![DFL] Datapack Function Support Library (datapack function library)-Image 1
Быстрое создание новой команды
Использование функции: /function dfl:start/create_teams {team_blue:"blue",team_red:"red",prefix_blue:"blue",prefix_red:"red"}
- Создать две команды с названиями {team_blue} и {team_red};
- Цвета соответственно синий и красный;
- Отключить урон по своим для игроков в одной команде;
- Игроки могут сталкиваться только с сущностями не из своей команды;
- Префиксы имён игроков соответственно {prefix_blue}_ и {prefix_red}_.
Tick
Функции из этой категории рекомендуется выполнять каждый Tick.
Мягкий бан игрока
Использование функции: /function dfl:tick/soft_ban_player {title:"Ban Reason",subtitle:"Note"}
- Примечание: исполнителем этой функции должен быть игрок, которого нужно забанить, можно использовать команду
/execute; - Реализует мягкий бан путём постоянной телепортации игрока на 0 0 0, установки режима на приключение и постоянной выдачи игроку негативных эффектов;
- Должна выполняться каждый Tick;
- Title — {title}, subtitle — {subtitle};
- Пример:
/execute as @a[tag=ban] run function dfl:tick/soft_ban_player {title:"Ban Reason",subtitle:"Note"}.
Эффект выглядит так:
![DFL] Datapack Function Support Library (datapack function library)-Image 2
Взлёт на элитрах от маяка
Использование функции: /function dfl:tick/beacon_fly
- Когда под маяком есть железные блоки, золотые блоки, изумрудные блоки, алмазные блоки или незеритовые блоки, игрок будет телепортирован вверх (наблюдатели не телепортируются);
- Высота составляет 20, 40, 60, 80 и 100 блоков по порядку;
- Одинаковые блоки можно ставить друг на друга, чтобы увеличить высоту (максимум 400 блоков, используя четыре незеритовых блока). Если блоки разные, будет использован блок, ближайший к маяку.
Негативные эффекты в один клик
Использование функции: /function dfl:tick/apply_debuffs
Выдать исполнителю функции следующие негативные эффекты:
- slowness
- mining_fatigue
- nausea
- darkness
- hunger
- weakness
- poison
- unluck
- trial_omen
Лифт из железных блоков
Использование функции: /function dfl:tick/iron_block_elevator
- Телепортирует игрока вверх, когда он стоит между двумя железными блоками, один над другим;
- Максимальная дистанция телепортации — 6 блоков, то есть максимальное расстояние между двумя железными блоками — 5 блоков;
- Не будет телепортировать наблюдателей;
- Будет телепортировать существ и несyществующие сущности.
Очистить сущности, если их слишком много
Использование функции: /function dfl:tick/kill_excess_entities {num:"1000"}
- Очистить все сущности, кроме игроков, когда количество сущностей, кроме игроков, больше {num};
- Не будет очищать сущности с тегом need;
- Сущности с тегом need не будут учитываться в количестве сущностей здесь;
- Создать элемент таблицы очков с именем dfl_scoreboard.
- После выполнения в чате появится сообщение, эффект следующий:
![DFL] Datapack Function Support Library (datapack function library)-Image 3
Очистить сущности, если плотность сущностей слишком высокая
Использование функции: /function dfl:tick/kill_by_density {num:"50"}
Необходимая функция: /function dfl:lib/get_entity_density
- Заставить все сущности очиститься, когда количество сущностей в радиусе 10 блоков больше {num};
- Не будет убивать игроков;
- Не будет убивать жителей;
- Не будет убивать сущности с тегом need;
- Не будет оставлять следов в чате.
Minecraft слишком сложный
Использование функции: /function dfl:tick/mith
- Включить сохранение инвентаря после смерти;
- Выдать исполнителю ночное зрение;
- Выдать исполнителю свечение;
- Снять с исполнителя эффект темноты.
Отобразить количество сущностей
Использование функции: /function dfl:tick/display_entity_count
Необходимая функция: /function dfl:lib/get_entity_count
- Отображать количество сущностей в реальном времени в панели действий игрока (над панелью быстрого доступа).
- Эффект следующий:
![DFL] Datapack Function Support Library (datapack function library)-Image 4
Отключить урон по своим и столкновения между игроками
Использование функции: /function dfl:tick/disable_friendly_fire
- Добавить команду с именем dfl и добавить всех игроков в эту команду;
- Примечание: так как одна и та же сущность не может вступить в несколько команд, пожалуйста, не включайте эту функцию, если хотите использовать функцию команд игроков;
- Отключить урон по своим в команде;
- Отключить столкновения внутри команды;
- Если эта функция не запускается каждый тик, пожалуйста, убедитесь, что запускаете эту функцию один раз после присоединения каждого нового игрока.
Очистить TNT, если плотность сущностей TNT слишком высокая
Использование функции: /function dfl:tick/kill_tnt_by_density {num:"200"}
- Очистить эти сущности TNT, когда количество сущностей TNT в радиусе пяти блоков от TNT больше {num};
- Создать элемент таблицы очков с именем dfl_tntdensity.
Самоубийство для игроков без прав
Использование функции: /function dfl:tick/trigger_suicide
- Создать элемент таблицы очков с именем kill;
- Введите
/trigger kill, чтобы совершить самоубийство (эта команда не требует никаких прав).
Заменить блоки на большой площади
Использование функции: /function dfl:tick/change_block {new:"glass",old:"stone",num:"30"}
- Заменить {old} на {new} в кубе с длиной стороны {num}*2+1 с центром на исполнителе команды;
- Изменить игровое правило max_block_modifications на 2147483647.
Всегда день + всегда ясно
Использование функции: /function dfl:tick/always_sunny
- Отключить цикл дня и ночи;
- Отключить изменение погоды;
- Установить время на день;
- Установить погоду на ясную.
Очистить один предмет и выполнить команду
Использование функции: /function dfl:tick/clear_and_execute_single {namespace:"minecraft",name:"stone",run:"tp ~ 100 ~"}
- Очистить один {namespace}:{name} у всех игроков и выполнить {run};
- Примечание: в начале и конце команды в параметре run не должно быть лишних пробелов, и перед командой не должно быть слэша.
Очистить указанные предметы и выполнить команды несколько раз
Использование функции: /function dfl:tick/clear_and_execute_multiple {namespace:"minecraft",name:"sand",run:"give @s anvil"}
- Очистить все {namespace}:{name} у исполнителя функции и выполнить соответствующее количество {run} (в пределах одного тика);
- Примечание: в начале и конце команды в параметре run не должно быть лишних пробелов, а перед командой не должно быть слэша.
Поддерживать наличие предмета
Использование функции: /function dfl:tick/maintain_item_count {namespace:"minecraft",name:"slime_block",num:"64"}
- Сделать так, чтобы у исполнителя команды было ровно указанное количество {namespace}:{name}.
Платформа для самоспасения
Использование функции: /function dfl:tick/create_rescue_platform
Необходимая функция: /function dfl:lib/get_game_time
- Создать элемент таблицы очков с именем dfl_slime_marker_temp для хранения времени создания слизневой платформы;
- Создать под игроком слизневую платформу 3*3 с тегом dfl_slime и удалить тег. Слизневая платформа может покрывать только блоки воздуха;
- Блоки слизни на месте слизневой платформы будут очищены через
<элемент таблицы очков dfl_scoreboard у slime_time>тиков; - Элемент таблицы очков dfl_scoreboard у slime_time будет установлен в 200, если ему не присвоено значение, что равно 10 с;
- Выпадающие блоки слизни в пределах 2 блоков от позиции игрока в момент создания платформы будут очищены.
Преобразовать предметы в опыт
Использование функции: /function dfl:tick/convert_items_to_xp {namespace:"minecraft",name:"tnt",xp:"1"}
- Преобразовать каждый {namespace}:{name} у исполнителя функции в {xp} единиц опыта.
tpa
Использование функции: /function dfl:tick/teleport_request
Необходимая функция: /function dfl:lib/generate_player_id
- Создать элементы таблицы очков с именами tpa и tpa_enable;
- Введите `/trigger tpa set `, чтобы телепортироваться к соответствующему игроку;
- Введите
/trigger tpa_enable, чтобы разрешить другим игрокам телепортироваться к себе, это нельзя отменить (если эта команда не выполнена, все остальные игроки не смогут телепортироваться к этому игроку). Если в этой команде использовать set для установки других значений, это не даст эффекта (другим игрокам не будет разрешено телепортироваться к себе). Можно снова установить значение 1 через set, чтобы разрешить другим игрокам телепортироваться к себе; - Если игрок, к которому нужно телепортироваться, не существует или не разрешил другим игрокам телепортироваться к себе, телепортация к соответствующему игроку произойдёт после того, как соответствующему id игрока можно будет телепортироваться. В течение этого времени объект tpa всё ещё можно менять по своему усмотрению.
Автоматическая переплавка
Использование функции: /function dfl:tick/smelt_item {input_namespace:"minecraft",input:"raw_iron",fuel_namespace:"minecraft",fuel:"coal_block",output:"iron_ingot",amount:"9"}
- Потратить один {fuel_namespace}:{fuel} и несколько {input_namespace}:{input};
- Выдать исполнителю функции соответствующее количество {output} за {input_namespace}:{input};
- {input} не может содержать
:, {output} может; - Переплавка одного предмета расходует 1 единицу опыта. Если у игрока нет опыта, предмет не будет переплавлен;
- {amount} указывает количество предметов, которое может переплавить один {fuel_namespace}:{fuel}.
Автоматическая переплавка с использованием топлива
Использование функции: /function dfl:tick/coal_smelt {input_namespace:"minecraft",input:"raw_iron",output:"iron_ingot"}
- Потратить {input_namespace}:{input} и выдать исполнителю функции соответствующее количество {output};
- Переплавка одного предмета расходует 1 единицу опыта. Если у игрока нет опыта, предмет не будет переплавлен;
- Если в рюкзаке одновременно есть три поддерживаемых вида топлива, это топливо будет потрачено одновременно;
- После траты блока угля можно одновременно переплавить 9 предметов, и будет вычтено 9 единиц опыта.
Timer
Функции из этой категории рекомендуется выполнять спустя некоторое время. (Можно использовать команду /schedule)
Очистка выпавших предметов
Использование функции: /function dfl:timer/clear_items
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Очищает все выпавшие предметы и выводит количество очищенных выпавших предметов через
/tellraw; - Не очищает выпавшие предметы с тегом need.
- Эффект выглядит так:
![DFL] Datapack Function Support Library (datapack function library)-Image 5
Отображение информации о количестве сущностей
Использование функции: /function dfl:timer/display_entity_info
Необходимые функции:
/function dfl:lib/get_entity_count
/function dfl:lib/get_item_count
/function dfl:lib/non_player_entities
Эффект этой функции выглядит так:
![DFL] Datapack Function Support Library (datapack function library)-Image 6
Lib
Функции из этой категории не дают эффекта при выполнении по отдельности или не подходят под категории выше.
Принудительный выброс предметов при смерти
Использование функции: /function dfl:lib/force_death_drops
- Отключить сохранение инвентаря при смерти.
- Убить исполнителя функции.
- Включить сохранение инвентаря при смерти.
Получить количество сущностей
Использование функции: /function dfl:lib/get_entity_count
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Записывает количество сущностей в scoreboard-цель dfl_scoreboard сущности.
Получить плотность сущностей
Использование функции: /function dfl:lib/get_entity_density
- Создаёт scoreboard-цель с именем dfl_density;
- Записывает количество сущностей в радиусе 10 блоков от всех сущностей в scoreboard-цель этой сущности.
Получить количество выпавших предметов
Использование функции: /function dfl:lib/get_item_count
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Записывает количество выпавших предметов в scoreboard-цель dfl_scoreboard предмета.
Получить количество сущностей, не являющихся игроками
Использование функции: /function dfl:lib/non_player_entities
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Записывает количество сущностей, не являющихся игроками, в scoreboard-цель dfl_scoreboard other_entity.
Получить количество игровых дней
Использование функции: /function dfl:lib/get_game_day
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Записывает количество игровых дней в scoreboard-цель dfl_scoreboard day;
- Игровые дни — количество игровых дней, прошедших за цикл дня и ночи, то есть результат деления времени цикла дня и ночи на 24000 с взятием целой части частного.
Получить время суток
Использование функции: /function dfl:lib/get_day_time
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Записывает время суток в scoreboard-цель dfl_scoreboard daytime;
- Время суток — количество игровых тиков, прошедших с восхода солнца в этот день, то есть результат деления времени цикла дня и ночи на 24000 с взятием остатка.
Окружить игрока стеклом
Использование функции: /function dfl:lib/create_glass_box
- Создаёт полый стеклянный куб 5*5 в месте выполнения команды.
Получить игровое время
Использование функции: /function dfl:lib/get_game_time
- Создаёт scoreboard-цель с именем dfl_scoreboard;
- Записывает игровое время в scoreboard-цель dfl_scoreboard gametime;
- Игровое время — общее количество игровых тиков, прошедших в мире.
Получить количество игроков
Использование функции: /function dfl:lib/get_player_count
- Создать элемент таблицы очков с именем dfl_scoreboard;
- Записать количество игроков в элемент таблицы очков dfl_scoreboard игроков.
Изменить максимальное здоровье
Использование функции: /function dfl:lib/change_max_health {num:"100"}
- Установить максимальное здоровье всех игроков в {num}.
Сгенерировать UID
Использование функции: /function dfl:lib/generate_player_id
- Создать элементы таблицы очков с именами dfl_playerid и dfl_scoreboard;
- Хранить прогресс использования UID в элементе таблицы очков dfl_scoreboard игрока playerid_temp;
- Установить уникальный и неизменяемый UID для всех игроков в таблице очков dfl_playerid;
- UID — это число от 1 и выше. Игрок, вошедший на сервер раньше всех, имеет наименьшее число, и так далее;
- Если при выполнении функции на сервере находится более одного игрока, порядок генерации UID этих игроков случаен.
Определить количество предметов
Использование функции: /function dfl:lib/count_items {namespace:"minecraft",name:"stone"}
- Создать элемент таблицы очков с именем dfl_{namespace}.{name}_count;
- Записать количество {namespace}:{name} каждого игрока в соответствующие элементы таблицы очков.
Получить позицию сущности
Использование функции: /function dfl:lib/get_pos
- Создать элементы таблицы очков с именами
dfl_entity_pos_x,dfl_entity_pos_yиdfl_entity_pos_zсоответственно. - Прочитать список NBT
Posисполнителя команды и обновить очки исполнителя команды в этих элементах таблицы очков. - Используйте
/execute as @a run function dfl:lib/get_pos, чтобы записать позиции всех игроков в эти элементы таблицы очков.
Описание диалога
Текст лицензии GNU GPL
Использование диалога: /dialog show dfl:gpl
- Этот диалог содержит оригинальный текст лицензии GNU GPL v3.0.
Текст лицензии GNU LGPL
Использование диалога: /dialog show dfl:lgpl
- Этот диалог содержит оригинальный текст лицензии GNU LGPL v3.0.
Частые вопросы
Как установить datapack function library?
Установите Fabric под свою версию Minecraft, скачайте datapack function library под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть datapack function library?
У datapack function library есть сборки для Minecraft 1.13–26.3.
Нужен ли datapack function library на сервере?
Нужен на сервере; в игре — по желанию