1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Работа с ActionBar

Тема в разделе "Разработка плагинов для новичков", создана пользователем Artem99z, 28 июн 2016.

  1. Автор темы
    Artem99z

    Artem99z Активный участник Пользователь

    Баллы:
    88
    Skype:
    Artemuidak
    Имя в Minecraft:
    ReDcTiOn
    У меня плагин выводит название региона в ActionBar`e, как сделать так, чтобы по определенной команде плагин отключался для игрока?

    Использую Spigot 1.10
     
  2. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Создай для каждого игрока переменную,игрок пишет команду для него эта переменная становится false.Если эта переменная равна false ,то не выводи название региона.
     
  3. Автор темы
    Artem99z

    Artem99z Активный участник Пользователь

    Баллы:
    88
    Skype:
    Artemuidak
    Имя в Minecraft:
    ReDcTiOn
    Можно пример кода?
     
  4. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Я не знаю твой код, не знаю как выводишь.Я просто дал идею как это можно реализовать.
     
  5. Автор темы
    Artem99z

    Artem99z Активный участник Пользователь

    Баллы:
    88
    Skype:
    Artemuidak
    Имя в Minecraft:
    ReDcTiOn
    По твоим словам, у меня выводится такая картинка: При заходе на сервер, в файл записывайте ник игрока со значение true "player: true", при написание команды, в файле это значение меняется.
     
  6. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Именно так
     
  7. Автор темы
    Artem99z

    Artem99z Активный участник Пользователь

    Баллы:
    88
    Skype:
    Artemuidak
    Имя в Minecraft:
    ReDcTiOn
    Если я вывожу текст в ActionBar вот так:
    Код:
        public static void sendAction(Player player, String msg)
        {
            if(player.hasPermission("regionname.use"))
            {   
            CraftPlayer p = (CraftPlayer) player;
            IChatBaseComponent cbc = IChatBaseComponent.ChatSerializer.a((String) ("{\"text\": \"" + msg + "\"}"));
            PacketPlayOutChat ppoc = new PacketPlayOutChat(cbc, (byte) 2);
            p.getHandle().playerConnection.sendPacket((Packet<?>) ppoc);
            }
        }
    как сделать наоборот? отключение этой функции.
     
  8. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Ну, во-первых, для таких вещей лучше делать рефлексию.
     
  9. Автор темы
    Artem99z

    Artem99z Активный участник Пользователь

    Баллы:
    88
    Skype:
    Artemuidak
    Имя в Minecraft:
    ReDcTiOn
    Можно подробнее? я новичок в этом :)
     
  10. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Туториалов я тут, увы, писать не собираюсь. Гуглите.
     
  11. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Не лучше. Что прямое использование, что рефлексия - всё нормально.
     
  12. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    С ней ты не будешь зависеть от версии. Что уже +.
    Но вот её быстродействие оставляет желать лучшего.
     
  13. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Вообще то в лбом случае тебе придётся ручками обновлять плагин до на следующую версию. Потому что могут быть баги, могут быть исправления.
    Если плагин уже готов, то да - рефлексия будет лучше. Но лично мне не так уж и трудно уделить пару минут для написания новой реализации под nms.
     
  14. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Кому как :)
    А по теме, делайте проверку в вашем же евенте на какое-либо событие.
    Скажем создайте аррайлист с плеерами и при определённой команде, добавляйте туда нужного игрока. В евенте проверяйте, есть ли игрок в листе, и если есть - отменяйте / возвращайте евент.

    Если это - дикий костыль, то увы. Ничего лучше придумать не могу.
     
    Последнее редактирование: 3 июл 2016
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    У меня тоже появился подобный плаг, но он не требует каких либо прав. Регион показывается когда игрок перешел в новый регион, потом надпись изчезает.


    P.s по поводу рефлесий, я юзаю шедулер раз в n сек, так что потеря скорости в пару миллисекунд, не играет никакой роли.
     

Поделиться этой страницей