PuppetPlayers
Простая реализация фейковых «кукольных» игроков
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 13,6 тыс.
- Подписчиков на Modrinth
- 34
- версий
- 25
- Обновлён
- 16 сентября 202616 сент.
- Опубликован
- в 2025
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
О проекте
Современная, простая реализация фейковых игроков, изначально появившихся в Carpet Mod.
Есть несколько принципиальных отличий в том, как эти фейковые игроки реализованы по сравнению с оригинальной реализацией в Carpet Mod.
Этот мод можно использовать вместе с Carpet Mod — действия фейковых игроков из Carpet будут работать на этих кукольных игроках; однако рекомендуется использовать предоставляемые этим модом действия.
Цель мода — сделать поведение кукольных игроков максимально приближенным к настоящему игроку:
- Весь тик игрока выполняется в правильной фазе тика.
- Клиентский код действий игрока симулируется на сервере.
- Кукольные игроки отправляют пакеты для взаимодействия с сервером, как настоящий игрок.
- Поддержание совместимости со всеми модами.
Использование
Эта документация описывает *последнюю* версию мода, для версий до 2.0.0 смотрите старую документацию
После установки мода команда /puppet должна стать доступной операторам. Команду /puppet также можно сделать доступной всем игрокам, изменив конфиг, подробнее см. раздел о конфиге.
Мы можем заставить кукольного игрока зайти в мир одной из следующих команд:
/puppet <username> join
/puppet <username> spawn
/puppet <username> spawn at <position> facing <rotation> in <dimension> in <gamemode>
/puppet <username> shadow- Подкоманда
joinсоздаёт указанную куклу на позиции, где она вышла в прошлый раз, по сути симулируя то, как если бы игрок сам зашёл на сервер. - Подкоманда
spawnсоздаёт указанную куклу либо на заданной позиции, либо на позиции выполнившего команду, если позиция не указана. - Подкоманда
shadowзаставляет кукольного игрока зайти на место текущего онлайн-игрока.
После того как игрок зашёл в мир, мы можем заставить его выйти, выполнив следующую команду:
/puppet <player> leaveКукловодство
Игроки могут занять куклу и играть за неё, оставив своё тело в мире:
/puppet <player>Вы можете указать только кукол, чтобы управлять ими, или себя, если вы сейчас управляете куклой, что вернёт вас в ваше исходное тело. Эта функция отключена по умолчанию и должна быть включена через enable_puppeteering, см. раздел о конфиге.
Пока вы управляете куклой, для других игроков вы выглядите как кукла, и вы занимаете позицию, в которой была кукла, вместе с её инвентарём. Всё, что сделано с куклой, сохранится после того, как вы перестанете ею управлять. Однако статистика и достижения по-прежнему привязаны к вашему аккаунту. То же касается чата — сообщения всё ещё отправляются через ваш аккаунт.
Ваше исходное тело, пока вы управляете куклой, становится куклой, так что вы можете применить к нему /puppet, как и к любой другой кукле, кроме команды leave. Поскольку на сервере вы всё ещё играете со своего аккаунта, когда кто-то выполняет команду с указанием вашего имени, она будет нацелена на игрока, которым вы управляете. Например, если игрок senseiwells управляет SuperSanta и кто-то выполнит /tp senseiwells, они телепортируются к игроку SuperSanta. Исключение — команда /puppet, которая будет относиться к тому, кто носит это имя.
Если ты умрёшь во время управления марионеткой или марионетка отключится, ты перестанешь управлять ею. Если ты выйдешь из игры во время управления марионеткой, твоё исходное тело выйдет из игры, а марионетка останется в сети.
Действия
Игроки-марионетки могут выполнять действия, имитирующие поведение настоящего игрока. Некоторые действия также можно применять к настоящим игрокам.
Вот список всех доступных действий:
| Действие | Описание | Аргументы | Работает отдельно | Только для марионеток |
|---|---|---|---|---|
"minecraft:attack" | Заставляет игрока атаковать (левый клик). | <once|hold|release> | Да | Нет |
"minecraft:delay" | Добавляет задержку между цепочкой действий. | `` | Нет | Нет |
"minecraft:drop" | Заставляет игрока выбросить выбранный предмет. | <entire_stack> | Да | Нет |
"minecraft:interrupt_look_at" | Прерывает текущий взгляд на цель. | Нет | Да | Да |
"minecraft:interrupt_move_to" | Прерывает текущий поиск пути игрока. | Нет | Да | Да |
"minecraft:jump" | Заставляет игрока прыгнуть. | <once|hold|release> | Да | Да |
"minecraft:look" | Заставляет игрока посмотреть в направлении. | `` | Да | Нет |
"minecraft:look_at" | Заставляет игрока посмотреть на указанную цель. | `position <lock?>илиentity <lock?>` | Да | Да |
"minecraft:move_to" | Заставляет игрока идти к позиции или сущности. | `position <sprint?> <jump?>илиentity <sprint?> <jump?>` | Да | Да |
"minecraft:offhand" | Заставляет игрока поменять предмет со второй рукой. | Нет | Да | Нет |
"minecraft:sneak" | Заставляет игрока присесть. | `` | Да | Да |
"minecraft:sprint" | Заставляет игрока бежать. | `` | Да | Да |
"minecraft:swap_slot" | Заставляет игрока переключиться на слот. | `` | Да | Нет |
"minecraft:use" | Заставляет игрока использовать (правый клик). | <once|hold|release> | Да | Нет |
Чтобы выполнить действие, мы можем запустить его отдельно с помощью следующей команды:
/puppet <player> actions run <action> ...Это заставит игрока немедленно выполнить действие.
Например, чтобы заставить игрока удерживать атаку, нужно выполнить:
/puppet <player> actions run minecraft:attack holdМы также можем объединить несколько действий в цепочку, выполнив следующую команду:
/puppet <player> actions chain add <action> ...После добавления действий в цепочку мы можем выполнить следующие команды для управления поведением цепочки:
/puppet <player> actions chain loop <true|false> # Зацикливать ли цепочку действий бесконечно
/puppet <player> actions chain pause # Приостановить выполнение цепочки действий
/puppet <player> actions chain resume # Возобновить выполнение цепочки действий
/puppet <player> actions chain restart # Перезапустить выполнение цепочки действий (с первого действия)
/puppet <player> actions chain stop # Остановить выполнение цепочки действий (и очистить все действия)Например, чтобы заставить игрока удерживать атаку 5 секунд, затем отпустить на 2 секунды, а затем повторять, мы выполним:
/puppet <player> actions chain add minecraft:attack hold
/puppet <player> actions chain add minecraft:delay 5s
/puppet <player> actions chain add minecraft:attack release
/puppet <player> actions chain add minecraft:delay 2s
/puppet <player> actions chain loop trueКонфиг
Конфиг находится в ./config/puppet-player-config.json и по умолчанию должен выглядеть так:
{
"reload_puppet_players": true,
"respawn_puppet_players": true,
"puppet_player_death_delay": 0,
"operator_required_for_puppets": true,
"can_players_puppet_themselves": true,
"can_spawn_puppets_anywhere": true,
"can_spawn_whitelisted_players_as_puppets": true,
"enable_puppeteering": false,
"enabled_actions": "*"
}"reload_puppet_players"— Будут ли марионетки переподключаться, если сервер был остановлен, когда они были в сети"respawn_puppet_players"— Возрождать ли марионеток после их смерти; если отключено, они вместо этого покинут игру"puppet_player_death_delay"— Задержка после смерти марионетки до возрождения/выхода (определяется параметромrespawn_puppet_players)"operator_required_for_puppets"— Нужны ли игрокам права оператора для выполнения команды/puppet"can_players_puppet_themselves"— Могут ли игроки без прав оператора выполнять команду/puppetна себе"can_spawn_puppets_anywhere"— Можно ли выполнять `/puppet spawn <position?>для создания марионеток в любом месте мира (в отличие отjoin`, который создаёт их там, где они последний раз выходили из игры)"can_spawn_whitelisted_players_as_puppets"— Можно ли создавать марионеток из игроков в белом списке"enable_puppeteering"— Могут ли игроки взять управление марионеткой на себя и играть за неё"enabled_actions"— Список включённых действий, которые можно заставить выполнять марионеток;"*"для всех действий или перечислите включённые действия, например["attack", "use"]
Для сервера в режиме выживания можно использовать менее «читерскую» версию мода со следующим рекомендуемым конфигом:
{
"reload_puppet_players": true,
"respawn_puppet_players": false,
"puppet_player_death_delay": 20,
"operator_required_for_puppets": true,
"can_players_puppet_themselves": true,
"can_spawn_puppets_anywhere": false,
"can_spawn_whitelisted_players_as_puppets": false,
"enable_puppeteering": false,
"enabled_actions": ["use", "attack", "drop", "swap_slot"]
}Частые вопросы
Как установить PuppetPlayers?
Установите Fabric под свою версию Minecraft, скачайте PuppetPlayers под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть PuppetPlayers?
У PuppetPlayers есть сборки для Minecraft 1.21.5–26.3.
Нужен ли PuppetPlayers на сервере?
Ставится только на сервер; игрокам ставить не нужно