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

Помогите Плагин на чат

Тема в разделе "Разработка плагинов для новичков", создана пользователем sasha2003, 8 мар 2018.

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

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

    Баллы:
    76
    Здравствуйте!

    Код:
    public static final Boolean RANGED_MODE = Boolean.valueOf(false);
        protected String messageFormat = "%prefix%player%suffix %message";
        protected String globalMessageFormat = "%prefix%player%suffix &e%message";
        protected boolean rangedMode = RANGED_MODE.booleanValue();
        protected double chatRange = 100.0D;
        protected String displayNameFormat = "%prefix%player%suffix";
        protected String optionChatRange = "chat-range";
        protected String optionMessageFormat = "message-format";
        protected String optionGlobalMessageFormat = "global-message-format";
        protected String optionRangedMode = "force-ranged-mode";
        protected String optionDisplayname = "display-name-format";
        protected String permissionChatColor = "chatmanager.chat.color";
        protected String permissionChatMagic = "chatmanager.chat.magic";
        protected String permissionChatBold = "chatmanager.chat.bold";
        protected String permissionChatStrikethrough = "chatmanager.chat.strikethrough";
        protected String permissionChatUnderline = "chatmanager.chat.underline";
        protected String permissionChatItalic = "chatmanager.chat.italic";
        private FileConfiguration config = Prison.instance.getConfig();
        
        public ChatListener() {
            this.messageFormat = config.getString("chatmanager.message-format");
            this.globalMessageFormat = config.getString("chatmanager.global-message-format");
            this.rangedMode = config.getBoolean("chatmanager.ranged-mode");
            this.chatRange = config.getDouble("chatmanager.chat-range");
            this.displayNameFormat = config.getString("chatmanager.display-name-format");
        }
        
        @EventHandler(priority = EventPriority.HIGHEST)
        public void onPlayerChat(AsyncPlayerChatEvent event) {
            if (event.isCancelled()) {
                return;
            }
            Player player = event.getPlayer();
            
            String message = this.messageFormat;
            boolean localChat = this.config.getBoolean(this.optionRangedMode);
            String chatMessage = event.getMessage();
            
            if (chatMessage.startsWith("!")) {
                localChat = false;
                chatMessage = chatMessage.substring(1);
                message = this.globalMessageFormat;
            }
            message = ChatColor.translateAlternateColorCodes('&', message);
            message = message.replace("%message", "%2$s").replace("%displayname", "%1$s");
            
            if (PrisonPlayer.getLevel(player) > 0) {
                message = message.replace("%level", "§8[§6" + PrisonPlayer.getLevel(player) + " LVL§8]");
            }
            String fractionStr = PrisonPlayer.getFaction(player).toLowerCase();
            switch (fractionStr) {
            case "niggers":
                fractionStr = "§8[Ниггер]";
                break;
            case "aziats":
                fractionStr = "§8[§eАзиат§8]";
                break;
            case "whites":
                fractionStr = "§8[§fБелый§8]";
                break;
            default:
                fractionStr = "";
            }
            
            PermissionUser user = PermissionsEx.getUser(player);
            message = message.replace("%gprefix%", user.getPrefix());
            
            message = message.replace("%fraction", fractionStr);
            message = message.replace("%name", player.getName());
            
            message = message.replace("%local", "§f(§aL§f)");
            message = message.replace("%global", "§f(§6G§f)");
            message = message.replace("<", "");
            message = message.replace(">", "");
            /*if (player.hasPermission("chat.color")) {
                message = message.replace('&', '§');
            }*/
            event.setFormat(message);
            event.setMessage(chatMessage);
            if (localChat) {
                double range = 100.0D;
                event.getRecipients().clear();
                event.getRecipients().addAll(getLocalRecipients(player, message, range));
            }
        }
        
        protected List<Player> getLocalRecipients(Player sender, String message, double range) {
            Location playerLocation = sender.getLocation();
            List<Player> recipients = new LinkedList<Player>();
            double squaredDistance = Math.pow(range, 2.0D);
            for (Player recipient : Bukkit.getServer().getOnlinePlayers()) {
                if (!recipient.getWorld().equals((Object)sender.getWorld()) || playerLocation.distanceSquared(recipient.getLocation()) > squaredDistance) continue;
                recipients.add(recipient);
            }
            return recipients;
        }
    Не работает этот код!

    Ошибка при написании в чат игры:

    Код:
    [19:50:44] [Async Chat Thread - #0/ERROR]: Could not pass event AsyncPlayerChatEvent to Prison v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at net.minecraft.server.v1_10_R1.PlayerConnection.chat(PlayerConnection.java:1280) [spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1218) [spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at net.minecraft.server.v1_10_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_161]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_161]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
    Caused by: java.util.UnknownFormatConversionException: Conversion = 'p'
        at org.bukkit.event.player.AsyncPlayerChatEvent.setFormat(AsyncPlayerChatEvent.java:100) ~[spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        at ru.taselix.taselixapi.ChatListener.onPlayerChat(ChatListener.java:105) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.10.2-R0.1-SNAPSHOT.jar:git-Spigot-de459a2-51263e9]
        ... 11 more
     
  2. bristol

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

    Баллы:
    46
    100 строку кинь
     
  3. Автор темы
    sasha2003

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

    Баллы:
    76
    message = message.replace("%local", "§f(§aL§f)");
     
  4. bristol

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

    Баллы:
    46
    Упс... 105, ошибся.
     
  5. Автор темы
    sasha2003

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

    Баллы:
    76
    Ты угараешь? Там комментарий!
     
  6. bristol

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

    Баллы:
    46
    at ru.taselix.taselixapi.ChatListener.onPlayerChat(ChatListener.java:105) ~[?:?]
    Указывает на 105
     
  7. Автор темы
    sasha2003

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

    Баллы:
    76
    event.setMessage(chatMessage);

    Перезапустил сервер
     
  8. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
  9. Автор темы
    sasha2003

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

    Баллы:
    76
    Как мне подстроить это под мой код?
     
  10. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Тут уж сам разбирайся
     
  11. Автор темы
    sasha2003

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

    Баллы:
    76
    Я просил помощи, а не того, чтобы меня отправили разбираться самому
     
  12. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    В той теме ясно дали ответ
     
  13. Автор темы
    sasha2003

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

    Баллы:
    76
    Исправил здесь message = message.replace("%message", "%s").replace("%displayname", "%s");
    и здесь message = message.replace("%name", "%s");

    Где ещё?
     
  14. alexandrage

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

    Баллы:
    173
    Куда ты полез. Низя тебе такое писать.
     
  15. iD3LSY

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

    Баллы:
    76
    Скинь свой messageFormat, который находится в конфиге.
     
  16. Автор темы
    sasha2003

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

    Баллы:
    76
    Всё, что в конфиге:

    chatmanager:
    enable: true
    message-format: <%local %prefix &f%name %fraction %level&f:> %message
    global-message-format: <%global %prefix &f%name %fraction %level&f:> &e%message
    ranged-mode: true
    chat-range: 100
     
  17. iD3LSY

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

    Баллы:
    76
    В общем, тут никакая магия не поможет. Код слишком засран :/
     
  18. Автор темы
    sasha2003

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

    Баллы:
    76
    Ок, буду пользоваться Essentials Chat тогда
     
  19. iD3LSY

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

    Баллы:
    76
    Не, ну там можно все сделать, если убрать большую часть мусора...
     
  20. bristol

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

    Баллы:
    46
    Лучше ChatEx тогда
     

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