- Баллы
- 66
- Имя в Minecraft
- JustMelon_
Добрый день, форумчане! Я пытаюсь написать свою первую API, и я попытался вынести класс Chat плагина Vault в отдельный менеджер, который содержит в себе методы получения ника игрока, префикса и т.д. Но я столкнулся с трудностями: при запуске плагина у меня появляется ошибка
Вызываю я этот метод в другом моём плагине, который использует API.
Я немного не понимаю, что я сделал не так, ведь в официальной VaultAPI регистрация проходит так же, как и у меня.
Мой VaultChatManager
Официальный метод регистрации
Гласный класс у меня выглядит так:
Все методы у меня вынесены в отдельный менеджер, код слишком большой, поэтому я загрузил его на https://pastebin.com/WFFtyssS
Пожалуйста, помогите мне исправить эту ошибку, потому что я уже не знаю, что делать. На англоязычном бакките нашёл подобную тему, но она была закрыта автором по причине "я сам понял, что не так". Заранее благодарю всех, кто прочитал всё это. Хорошего вам дня!
Код:
Cannot invoke "net.milkbowl.vault.chat.Chat.getPlayerPrefix(String, org.bukkit.OfflinePlayer)" because the return value of "ru.pandaworld.api.bukkit.modules.vault.providers.VaultChatManager.getChat()" is null
Код:
@EventHandler
public void MessageJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
String name = player.getName();
event.setJoinMessage(PandaWorldAPI.getVaultManager().getVaultPlayer(name).getPrefix() + name + ChatColor.WHITE + " вошёл в лобби!");
}
Я немного не понимаю, что я сделал не так, ведь в официальной VaultAPI регистрация проходит так же, как и у меня.
Мой VaultChatManager
Код:
package ru.pandaworld.api.bukkit.modules.vault.providers;
import net.milkbowl.vault.chat.Chat;
import org.bukkit.Bukkit;
import org.bukkit.plugin.RegisteredServiceProvider;
public final class VaultChatManager {
private final Chat chat;
public Chat getChat() {
return this.chat;
}
public VaultChatManager() {
RegisteredServiceProvider<Chat> serviceProvider = Bukkit.getServer().getServicesManager().getRegistration(Chat.class);
if (serviceProvider != null)
this.chat = serviceProvider.getProvider();
else this.chat = null;
}
}
Официальный метод регистрации
Код:
private boolean setupChat() {
RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
chat = rsp.getProvider();
return chat != null;
}
Гласный класс у меня выглядит так:
Код:
package ru.pandaworld.api.bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import ru.pandaworld.api.bukkit.modules.vault.VaultManager;
public final class PandaWorldAPI extends JavaPlugin {
@Override
public void onEnable() {
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
}
public static VaultManager getVaultManager() {
return vaultManager;
}
public static VaultManager vaultManager = new VaultManager();
}
Все методы у меня вынесены в отдельный менеджер, код слишком большой, поэтому я загрузил его на https://pastebin.com/WFFtyssS
Пожалуйста, помогите мне исправить эту ошибку, потому что я уже не знаю, что делать. На англоязычном бакките нашёл подобную тему, но она была закрыта автором по причине "я сам понял, что не так". Заранее благодарю всех, кто прочитал всё это. Хорошего вам дня!