Помогите Vault API

  • Автор темы Автор темы BlazeMC
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

BlazeMC

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
AHROM
Здравствуйте,сегодня я пишу специально плагин на смену префикса в табе и в чате,но задался вопросом как использовать API Vault для установки префикса в чату?
 
Для чата же есть плагины на преф .. на табл тоже должны быть.
На чат. я использую ColorMe и ChatEx
 
chat.getPlayerPrefix(player)
chat.setPlayerPrefix(player, prefix);
Код:
package me.blazefoxpro.utils;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import me.blazefoxpro.main.Core;

public class Prefix extends Core implements CommandExecutor
{
    @SuppressWarnings("unused")
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
    {
        if (sender instanceof Player)
        {
            final Player pl = (Player)sender;
            if (!pl.hasPermission("test.prefix"))
            {
                pl.sendMessage("§7[§eRoot§7] У вас недостаточно прав.");
                return false;
            }
            if (args.length == 2)
            {
                if (!pl.hasPermission("test.set"))
                {
                    pl.sendMessage("§7[§eRoot§7] У вас недостаточно прав.");
                    return false;
                }
                if (args[0].equalsIgnoreCase("set"))
                {
                    Core.getChat().getPlayerPrefix(pl);
                    Core.getChat().setPlayerPrefix(pl, prefix);
                }
            }
        }
    }
}
Переменную prefix на какую заменить?
 
Код:
package me.blazefoxpro.utils;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import me.blazefoxpro.main.Core;

public class Prefix extends Core implements CommandExecutor
{
    @SuppressWarnings("unused")
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
    {
        if (sender instanceof Player)
        {
            final Player pl = (Player)sender;
            if (!pl.hasPermission("test.prefix"))
            {
                pl.sendMessage("§7[§eRoot§7] У вас недостаточно прав.");
                return false;
            }
            if (args.length == 2)
            {
                if (!pl.hasPermission("test.set"))
                {
                    pl.sendMessage("§7[§eRoot§7] У вас недостаточно прав.");
                    return false;
                }
                if (args[0].equalsIgnoreCase("set"))
                {
                    Core.getChat().getPlayerPrefix(pl);
                    Core.getChat().setPlayerPrefix(pl, prefix);
                }
            }
        }
    }
}
Переменную prefix на какую заменить?
Строка.
 
Люблю яву,из-за своих ошибок.Help me.
PHP:
[01:43:44] [Server thread/INFO]: GucciCheat issued server command: /prefix
[01:43:44] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'prefix' in plugin Prefix v0.1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:651) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1397) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1232) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Core.jar:git-Spigot-d21162c-82f3b02]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
    at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Core.jar:git-Spigot-d21162c-82f3b02]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at me.blazefoxpro.main.Core.onCommand(Core.java:54) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    ... 15 more
PHP:
package me.blazefoxpro.main;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.chat.Chat;
import ru.dondays.protocoltags.ProtocolTags;
import ru.dondays.protocoltags.TagSetup;

public class Core extends JavaPlugin implements Listener
{
    private static Chat chat = null;
    
    @Override
    public void onEnable()
    {
        this.getCommand("prefix").setExecutor(this);
        setupChat();
    }
    
    private boolean setupChat()
    {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
        return chat != null;
    }
    
    public static Chat getChat()
    {
        return chat;
    }
    
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
            return true;
        }
        final Player pl = (Player)sender;
        if (args.length == 0) {
            if(!sender.hasPermission("prefixer.help")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7Prefixer by §eBlazeFoxPro");
            sender.sendMessage("");
            sender.sendMessage("§e/"+lbl+" §7set - Сменить префикс.");
            sender.sendMessage("§e/"+lbl+" §7clear - Удалить префикс.");
        }
        switch (args[0].toLowerCase()) {
        case "set":
            if(!sender.hasPermission("prefixer.set")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сменили префикс.");
            chat.setPlayerPrefix(pl, args[1] + " ");
            ProtocolTags.getInstance().getTagManager().setTag(pl, args[1] + " ");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        case "clear":
            if(!sender.hasPermission("prefixer.clear")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сбросили префикс.");
            chat.setPlayerPrefix(pl, "");
            ProtocolTags.getInstance().getTagManager().setTag(pl, "");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        }
        return false;
    }
}
 
Люблю яву,из-за своих ошибок.Help me.
PHP:
[01:43:44] [Server thread/INFO]: GucciCheat issued server command: /prefix
[01:43:44] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'prefix' in plugin Prefix v0.1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:651) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1397) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1232) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Core.jar:git-Spigot-d21162c-82f3b02]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
    at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Core.jar:git-Spigot-d21162c-82f3b02]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at me.blazefoxpro.main.Core.onCommand(Core.java:54) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    ... 15 more
PHP:
package me.blazefoxpro.main;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.chat.Chat;
import ru.dondays.protocoltags.ProtocolTags;
import ru.dondays.protocoltags.TagSetup;

public class Core extends JavaPlugin implements Listener
{
    private static Chat chat = null;
   
    @Override
    public void onEnable()
    {
        this.getCommand("prefix").setExecutor(this);
        setupChat();
    }
   
    private boolean setupChat()
    {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
        return chat != null;
    }
   
    public static Chat getChat()
    {
        return chat;
    }
   
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
            return true;
        }
        final Player pl = (Player)sender;
        if (args.length == 0) {
            if(!sender.hasPermission("prefixer.help")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7Prefixer by §eBlazeFoxPro");
            sender.sendMessage("");
            sender.sendMessage("§e/"+lbl+" §7set - Сменить префикс.");
            sender.sendMessage("§e/"+lbl+" §7clear - Удалить префикс.");
        }
        switch (args[0].toLowerCase()) {
        case "set":
            if(!sender.hasPermission("prefixer.set")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сменили префикс.");
            chat.setPlayerPrefix(pl, args[1] + " ");
            ProtocolTags.getInstance().getTagManager().setTag(pl, args[1] + " ");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        case "clear":
            if(!sender.hasPermission("prefixer.clear")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сбросили префикс.");
            chat.setPlayerPrefix(pl, "");
            ProtocolTags.getInstance().getTagManager().setTag(pl, "");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        }
        return false;
    }
}
И причем тут ява?
 
Люблю яву,из-за своих ошибок.Help me.
PHP:
[01:43:44] [Server thread/INFO]: GucciCheat issued server command: /prefix
[01:43:44] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'prefix' in plugin Prefix v0.1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:651) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1397) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1232) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Core.jar:git-Spigot-d21162c-82f3b02]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
    at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Core.jar:git-Spigot-d21162c-82f3b02]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Core.jar:git-Spigot-d21162c-82f3b02]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at me.blazefoxpro.main.Core.onCommand(Core.java:54) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Core.jar:git-Spigot-d21162c-82f3b02]
    ... 15 more
PHP:
package me.blazefoxpro.main;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.chat.Chat;
import ru.dondays.protocoltags.ProtocolTags;
import ru.dondays.protocoltags.TagSetup;

public class Core extends JavaPlugin implements Listener
{
    private static Chat chat = null;
   
    @Override
    public void onEnable()
    {
        this.getCommand("prefix").setExecutor(this);
        setupChat();
    }
   
    private boolean setupChat()
    {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
        return chat != null;
    }
   
    public static Chat getChat()
    {
        return chat;
    }
   
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
            return true;
        }
        final Player pl = (Player)sender;
        if (args.length == 0) {
            if(!sender.hasPermission("prefixer.help")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7Prefixer by §eBlazeFoxPro");
            sender.sendMessage("");
            sender.sendMessage("§e/"+lbl+" §7set - Сменить префикс.");
            sender.sendMessage("§e/"+lbl+" §7clear - Удалить префикс.");
        }
        switch (args[0].toLowerCase()) {
        case "set":
            if(!sender.hasPermission("prefixer.set")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сменили префикс.");
            chat.setPlayerPrefix(pl, args[1] + " ");
            ProtocolTags.getInstance().getTagManager().setTag(pl, args[1] + " ");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        case "clear":
            if(!sender.hasPermission("prefixer.clear")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сбросили префикс.");
            chat.setPlayerPrefix(pl, "");
            ProtocolTags.getInstance().getTagManager().setTag(pl, "");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        }
        return false;
    }
}
Ты проверяешь, что в команде есть хотя бы один аргумент, но в противном случае не останавливаешь выполнение метода.
В результате при команде без аргументов у тебя выполняется строка "switch (args[0].toLowerCase()) ". Собственно, у тебя в массиве нет элемента с таким индексом - получаешь ArrayIndexOutOfBoundsException.
 
Тема закрыта.Решение проблемы
PHP:
package me.blazefoxpro.main;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.chat.Chat;
import ru.dondays.protocoltags.ProtocolTags;
import ru.dondays.protocoltags.TagSetup;

public class Core extends JavaPlugin implements Listener
{
    private static Chat chat = null;
  
    @Override
    public void onEnable()
    {
        this.getCommand("prefix").setExecutor(this);
        setupChat();
    }
  
    private boolean setupChat()
    {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
        return chat != null;
    }
  
    public static Chat getChat()
    {
        return chat;
    }
  
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
            return true;
        }
        final Player pl = (Player)sender;
        if(args.length == 0) {
            if(!sender.hasPermission("prefixer.help")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7Prefixer by §eBlazeFoxPro");
            sender.sendMessage("");
            sender.sendMessage("§e/"+lbl+" §7set - Сменить префикс.");
            sender.sendMessage("§e/"+lbl+" §7clear - Удалить префикс.");
            return false;
        }
        switch (args[0].toLowerCase()) {
        case "set":
            if(!sender.hasPermission("prefixer.set")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сменили префикс.");
            chat.setPlayerPrefix(null, pl, args[1] + " ");
            ProtocolTags.getInstance().getTagManager().setTag(pl, args[1] + " ");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        case "clear":
            if(!sender.hasPermission("prefixer.clear")) {
                sender.sendMessage("§7[§eRoot§7] У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§7[§eRoot§7] Вы успешно сбросили префикс.");
            chat.setPlayerPrefix(null, pl, "");
            ProtocolTags.getInstance().getTagManager().setTag(pl, "");
            Bukkit.getScheduler().runTaskLater(ProtocolTags.getInstance(), () -> TagSetup.setTags(pl), 2L);
            break;
        }
        return false;
    }
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх