Я только что создал сервер Minecraft 1.13.1 и задавался вопросом, есть ли способ дать всем команду телепортации, даже если они не работают. Если нет, могу ли я заставить их действовать, но иметь доступ только к команде телепорта?
Для телепортации требуются разрешения оператора. Невозможно разрешить телепортацию без других чит-команд (без внешних модов).
Если вы знаете всех людей на своем сервере или знаете все места, куда хотите телепортироваться, вы может иметь серию командных блоков , которые можно активировать. Вот несколько идей:
Командный блок, который телепортирует игрока к:
- определенному имени пользователя на сервере (один командный блок на игрока) .
- ближайший игрок
- случайный игрок
- конкретные координаты, такие как база или ориентир человека (один командный блок на ориентир ).
Затем вы можете разместить командный блок на базе каждого человека, который вернет его к месту появления, где они затем смогут выбрать, куда они хотят пойти. Это не так гибко, как команда/tp, но несколько командных блоков должны быть в состоянии позаботиться о большинстве сценариев, в которых игроки хотят телепортироваться.
Вы не можете предоставить доступ только команде /teleport
, но вы можете подготовить для них /trigger
использовать.
Сначала создайте три табло для координат:
/Scoreboard tasks добавить x триггерные/табло целей добавить y триггерные/табло целей добавить z триггер
Тип trigger
— это то, что позволяет устанавливать их не-OP.
Затем вы включаете их могут использовать все:
/scoreboard player enable @ ax/scoreboard player enable @ ay/Scoreboard Players enable @az
Это нужно делать в часах, потому что использование триггера автоматически отключает его для этого игрока.
Теперь игроки могут использовать такие команды, чтобы устанавливать свои координаты цели:
/trigger x/trigger x добавить 123/t rigger x set 456
Первый из них добавляет 1 к значению на табло для этого игрока, остальные должны быть очевидны.
Далее вам нужно что-то чтобы начать телепортацию. Вы можете использовать это с еще одним триггером, из которого вы постоянно проверяете, установил ли кто-то его на 1 для себя, вы можете использовать классический переименованный предмет на земле, вы можете делать это всякий раз, когда кто-то 100 раз прыгает на месте, и т. Д. все это можно найти в другом месте. Я предполагаю, что какой бы механизм вы ни использовали, проигрыватель помечает « toTeleport
«.
Теперь о самой телепортации: вы не можете просто сказать /teleport @p
и т. д., поэтому вам нужно использовать объект, координаты которого вы можете установить в NBT. Подставка для доспехов — хороший манекен:
/execute at @p [tag = toTeleport] run summon armor_stand ~ ~ ~ {Marker: 1, NoGravity: 1, NoAI: 1, Невидимый: 1, Теги: ["teleportHelper"]}
Предполагается, что любая система обнаружения, которую вы используете для инициализации телепортации, дает игроку toTeleport
тег.
И в этом весь трюк: в отличие от игроков, другие сущности можно телепортировать куда угодно, используя их тег Pos
NBT, который вы можете установить на произвольное числа с использованием /execute store
:
/execute store result entity @e [tag = teleportHelper, limit = 1] Pos [0] double Игроки на табло результатов за 1 запуск получают @p [tag = toTeleport] x/выполнение сохраняют объект результата @e [tag = teleportHelper, limit = 1] Pos [1] удваивают Табло результатов за 1 запуск получают @p [tag = toTeleport] y/выполняют магазин result entity @e [tag = teleportHelper, limit = 1] Pos [2] double 1 run scoreboard игроки получают @p [tag = toTeleport] z
Эти три команды должны быть в цепочке (предпочтительно y ваша обычная цепочка блоков команд цикла), за которой следует эта команда:
/tp @p [tag = toTeleport] @e [tag = teleportHelper, limit = 1]
Важно, чтобы вы телепортировали игрока к стойке для брони в том же тике, в котором вы установили тег Pos
, иначе кусок может выгружаться и телепортация не удалась.
Затем вы просто очистите все:
/kill @e [tag = teleportHelper]/tag remove @p [tag = toTeleport] toTeleport
Эта система должна нормально работать в многопользовательском режиме, даже если два игрока активируют ее в одно и то же время, один будет телепортирован на один игровой тик позже.
Спасибо vdvman1 в чате Eigencraft Discord, который сказал мне, что /trigger
работает с числами и что вы можете телепортироваться к удаленным объектам, если они были загружены в начале галочки.
Это оптимизированная версия вышеупомянутого с использованием функций, которые также будут лучше справляться с многопользовательской игрой, это позволит любое количество игроков, которые могут телепортироваться за один тик в свои индивидуальные пункты назначения. Написано vdvman1.
# запустить oncescoreboard цели добавить x триггерыcoreboard цели добавить y триггеры coreboard цели добавить z триггеры задачи coreboard добавить tp триггер
# запускать каждый tickexecute как @a запустить функцию tp_trigger
# tp_trigger.mcfunctionscoreboard player enable @ s проигрыватели xscoreboard включают @s проигрыватели yscoreboard включают @s zexecute, если счет @s tp совпадает с 1 .. запустить функцию tp_activate
# tp_activate. mcfunctionscoreboard игроки устанавливают @s tp 0scoreboard плееры включают работу @s tpscoreboard #current x = @s xscoreboard Players operation #current y = @s yscoreboard player operation #current z = @s ztag @s add tp_trigger_summon area_effect_cloud ~ ~ ~ {Теги: ["tp_trigger_target"]} выполнить как @e [type = area_effect_cloud, tag = tp_trigger_target, limit = 1] запустить функцию set_pos.mcfunctiontag @s remove tp_trigger_source
# set_pos.mcfunctionexecute сохранить объект результата @s Pos [0] double 1 run scoreboard игроки получают #current xexecute сохранить объект result entity @s Pos [1] double 1 run Scoreboard игроки получают #current yexecute сохранить результат объекта @s Pos [2] double 1 run Scoreboard: игроки получают #current zexecute при @s run tp @a [tag = tp_trigger_source, limit = 1] ~ ~ ~