(Java Minecraft 1.14) Как временно сохранить команду на табло игрока для дальнейшего использования?

Я пишу пакет данных для сервера, на котором играю, и хочу реализовать такую ​​функцию, как пакет данных AFK от Xisumavoid. Что он делает, так это меняет имя любого игрока AFK на серый цвет в меню вкладок, предположительно, добавляя их в команду AFK. К сожалению, на моем сервере уже есть команды, поэтому мне нужно сохранить команду, в которой находится игрок, чтобы вернуть их в нее, когда они больше не AFK. Я придумал числовой метод для достижения этой цели, поэтому прошу здесь просто найти, есть ли более простой или легкий способ сделать это, кроме моего, и предоставить метод для этого для будущих пользователей команд.

Во-первых, я даю каждой команде на сервере числовое, жестко заданное целочисленное значение от 1 до n, где n — количество команд (0 может быть неаффилированным/нет команды, и нет номер для команды AFK). Во-вторых, я установил табло, которое отслеживает текущую команду игрока. В-третьих, в функции галочки я выполняю роль всех игроков в команде 1, устанавливая их счет на табло на 1. Та же процедура для команд с 2 по n. Наконец, если игрок все еще достаточно долго, чтобы быть «AFK», я удаляю его из его команды и добавляю в команду AFK. Когда они снова ходят, я удаляю их из команды AFK и, в зависимости от их счета на табло, добавляю их в соответствующую команду (если их счет равен 1, они будут добавлены в команду один, то же самое для команд со 2 по n).

Есть способ попроще? Если нет, я добавлю сюда свои функции (-и) позже при редактировании.


Нет, нет более простого способа, ваше решение довольно близко к тому, что было бы у меня тоже сделано. Вы не можете использовать названия команд, идентификаторы или цвета каким-либо динамическим образом в командах Minecraft, поэтому вам все равно придется иметь команды для каждой команды.


Сделайте цель AFK с критерием «пройти 1 см». команда выглядит так:

/scoreboard цели добавить AFK minecraft.custom: minecraft.walk_one_cm

Сделать МЕДЛЕННЫЕ часы красного камня (не используйте повторяющийся командный блок, потому что он быстрый) что-то вроде 2 репитеров с полной задержкой рядом с 2 другими репитерами с полной задержкой в ​​противоположном направлении, очевидно связанных с пылью красного камня с обеих сторон. А затем с одной стороны вы размещаете линию красного камня, связанную с блоком импульсной команды, с помощью следующей команды

/Scoreboard Players remove @a AFK 10

Таким образом, игроки, которые движутся, всегда будут превосходить часы, снимающие очки, не позволяя им набрать 0 очков AFK, но для игроков, которые не двигаются, они могут даже получить отрицательный результат, если они останутся на месте и наступит блок повторяющихся команд (всегда активен), который обнаруживает игроков с показателем AFK 0 или меньше, вы можете разместить его где угодно, он не должен быть привязан к часам, и в нем вы пишете следующую команду:

/выполнить, если сущность @a [score = {AFK = .. 0}] запустить/игроки на табло сбрасывают @a [score = {AFK =.. 0}] AFK

Таким образом вы удаляете игроков (с показателем AFK 0 или меньше) из счетчика очков (чтобы счет не снижался, потому что счет -удаление часов), а затем вы помещаете компаратор в направлении, противоположном направлению повторяющегося командного блока, а затем размещаете импульсный командный блок, также обращенный в том же направлении, что и предыдущие компоненты, и в этом командном блоке вы делаете все, что хотите сделать с Игроки AFK. И не беспокойтесь о том, что они не отслеживаются счетчиком очков, они будут отслеживаться снова, как только они начнут двигаться, и часы снова автоматически начнут на них влиять

Надеюсь, это было полезно для вас или любой другой с такой же проблемой.

Оцените статью
Gamicon.ru
Добавить комментарий