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

Решено /tellraw в essentials 1.12

Тема в разделе "Помощь", создана пользователем 777Sergey777, 28 авг 2017.

Статус темы:
Закрыта.
  1. Автор темы
    777Sergey777

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

    Баллы:
    66
    Привет, хочу добавить кнопки принятия телепорта к себе на сервер.
    Банально, в файле messages_ru.properties нашел нужную строку, заменил текст командой, но в чат летит сообщение с командой.
    Вот с этой, если что:
    Код:
    /tellraw @p ["",{"text":"          [","color":"gray","clickEvent":{"action":"run_command","value":"/tpyes"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Нажми, чтобы принять","color":"yellow"}]}}},{"text":"При","color":"green","clickEvent":{"action":"run_command","value":"/tpaccept"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Нажми, чтобы принять","color":"yellow"}]}}},{"text":"нять","color":"green","clickEvent":{"action":"run_command","value":"/tpaccept"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Нажми, чтобы принять","color":"yellow"}]}}},{"text":"]     ","color":"gray"},{"text":"     [","color":"gray"},{"text":"Отклонить","color":"red","clickEvent":{"action":"run_command","value":"/tpno"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Нажми, чтобы отклонить","color":"yellow"}]}}},{"text":"]     ","color":"gray"}]
    Ничего в java не понимаю. Писать сам не умею, разве что некоторые слова в .class переводить.
    Ежели кто-нибудь знает, как это реализовать, напишите, буду рад помощи)
     
  2. Автор темы
    777Sergey777

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

    Баллы:
    66
    UP! Актуально
     
  3. InterWall

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

    Баллы:
    173
    Файлы с сообщениями (в нормалтных плагинах по крайней мере) все строки воспринимают как строки, а не исполняемые команды. И выводят они это в чат тоже при помощи функции. Так что заменой выводимого сообщения на команду, которую плагин должен выполнить, ничего не получишь. Нужно по другому.
     
  4. Автор темы
    777Sergey777

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

    Баллы:
    66
    Это то понятно, вот, .class файла с командой /tpa

    Код:
    package com.earth2me.essentials.commands;
    
    import com.earth2me.essentials.I18n;
    import com.earth2me.essentials.ISettings;
    import com.earth2me.essentials.User;
    import net.ess3.api.IEssentials;
    import org.bukkit.Server;
    import org.bukkit.World;
    
    public class Commandtpa
      extends EssentialsCommand
    {
      public Commandtpa()
      {
        super("tpa");
      }
     
      public void run(Server server, User user, String commandLabel, String[] args)
        throws Exception
      {
        if (args.length < 1) {
          throw new NotEnoughArgumentsException();
        }
        User player = getPlayer(server, user, args, 0);
        if (user.getName().equalsIgnoreCase(player.getName())) {
          throw new NotEnoughArgumentsException();
        }
        if (!player.isTeleportEnabled()) {
          throw new Exception(I18n.tl("teleportDisabled", new Object[] { player.getDisplayName() }));
        }
        if ((user.getWorld() != player.getWorld()) && (this.ess.getSettings().isWorldTeleportPermissions()) && (!user.isAuthorized("essentials.worlds." + player.getWorld().getName()))) {
          throw new Exception(I18n.tl("noPerm", new Object[] { "essentials.worlds." + player.getWorld().getName() }));
        }
        if (!player.isIgnoredPlayer(user))
        {
          player.requestTeleport(user, false);
          player.sendMessage(I18n.tl("teleportRequest", new Object[] { user.getDisplayName() }));
          player.sendMessage(I18n.tl("typeTpaccept", new Object[0]));
          player.sendMessage(I18n.tl("typeTpdeny", new Object[0]));
          if (this.ess.getSettings().getTpaAcceptCancellation() != 0L) {
            player.sendMessage(I18n.tl("teleportRequestTimeoutInfo", new Object[] { Long.valueOf(this.ess.getSettings().getTpaAcceptCancellation()) }));
          }
        }
        user.sendMessage(I18n.tl("requestSent", new Object[] { player.getDisplayName() }));
      }
    }
    
    Ничего не понимаю в java.
    Пробовал менять строчку:
    "player.sendMessage(I18n.tl("typeTpaccept", new Object[0]));"
    На: "player.runCommand(I18n.tl("Та самая команда /tellraw", new Object[0]));"
    Не помогает :3
     
    Последнее редактирование: 29 авг 2017
  5. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Никак, очевидно же, это можно сделать лишь переписав код
     
Статус темы:
Закрыта.

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