From b057239a81152b471f719990a47711f41a045c76 Mon Sep 17 00:00:00 2001 From: Aust1n46 Date: Fri, 16 Apr 2021 00:03:44 -0500 Subject: [PATCH] Refactored out public static instances that are not constants. --- .../Aust1n46/chat/MineverseChat.java | 123 +++++++----------- .../Aust1n46/chat/api/MineverseChatAPI.java | 15 +++ .../Aust1n46/chat/channel/ChatChannel.java | 8 +- .../message/IgnoreCommandExecutor.java | 4 +- .../message/MessageCommandExecutor.java | 2 +- .../Aust1n46/chat/command/mute/Mute.java | 2 +- .../Aust1n46/chat/command/mute/Unmute.java | 2 +- .../Aust1n46/chat/listeners/ChatListener.java | 4 +- .../chat/listeners/CommandListener.java | 2 +- .../chat/listeners/PacketListener.java | 13 +- .../Aust1n46/chat/utilities/Format.java | 4 +- .../Aust1n46/chat/versions/V1_7_10.java | 26 ---- .../Aust1n46/chat/versions/V1_7_9.java | 26 ---- .../Aust1n46/chat/versions/V1_8.java | 25 ---- 14 files changed, 86 insertions(+), 170 deletions(-) delete mode 100644 src/mineverse/Aust1n46/chat/versions/V1_7_10.java delete mode 100644 src/mineverse/Aust1n46/chat/versions/V1_7_9.java delete mode 100644 src/mineverse/Aust1n46/chat/versions/V1_8.java diff --git a/src/mineverse/Aust1n46/chat/MineverseChat.java b/src/mineverse/Aust1n46/chat/MineverseChat.java index b20cde9..34da5a2 100644 --- a/src/mineverse/Aust1n46/chat/MineverseChat.java +++ b/src/mineverse/Aust1n46/chat/MineverseChat.java @@ -7,7 +7,6 @@ import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; @@ -15,13 +14,10 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; -import org.bukkit.command.CommandMap; import org.bukkit.command.SimpleCommandMap; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; @@ -56,7 +52,6 @@ import mineverse.Aust1n46.chat.listeners.SignListener; import mineverse.Aust1n46.chat.localization.Localization; import mineverse.Aust1n46.chat.localization.LocalizedMessage; import mineverse.Aust1n46.chat.utilities.Format; -import mineverse.Aust1n46.chat.versions.V1_8; import mineverse.Aust1n46.chat.versions.VersionHandler; import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.permission.Permission; @@ -66,49 +61,33 @@ import net.milkbowl.vault.permission.Permission; * @author Aust1n46 */ public class MineverseChat extends JavaPlugin implements PluginMessageListener { - public static String[] playerlist; - public static String playerlist_server; - public boolean ircListen; - public static ChatMessage lastChatMessage; - public static String lastJson; - public static Method messageMethod; - public static Field posField; - public static Class chatMessageType; - private static Field commandMap; - private static Field knownCommands; - - // Misc -------------------------------- - public boolean quickchat = true; - private static final Logger log = Logger.getLogger("Minecraft"); - - @Deprecated - public static Set players = new HashSet(); - @Deprecated - public static Set onlinePlayers = new HashSet(); - - public static List networkPlayerNames = new ArrayList(); - // Plugin Messaging Channel public static final String PLUGIN_MESSAGING_CHANNEL = "venturechat:data"; // Event constants public static final boolean ASYNC = true; - public static final boolean SYNC = false; - - // Vault -------------------------------- - public static Permission permission = null; - public static Chat chat = null; - private static CommandMap cmap; - - public static final int LINE_LENGTH = 40; + public static final boolean SYNC = false; - private LogLevels curLogLevel; + public static final int LINE_LENGTH = 40; // DiscordSRV backwards compatibility @Deprecated public static ChatChannelInfo ccInfo; + + @Deprecated + public static Set players = new HashSet(); + @Deprecated + public static Set onlinePlayers = new HashSet(); + + // Vault + private static Permission permission = null; + private static Chat chat = null; - public static void main(String[] args) {} + // NMS + private static Field posField; + private static Class chatMessageType; + private static Field commandMap; + private static Field knownCommands; @Override public void onEnable() { @@ -130,12 +109,9 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { saveResource("example_config_always_up_to_date!.yml", true); } catch(Exception ex) { - log.severe(String.format("[" + String.format("VentureChat") + "]" + " - Could not load configuration!\n " + ex, getDescription().getName())); + Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&c - Could not load configuration! Something unexpected went wrong!")); } - this.setLogLevel(this.getConfig().getString("loglevel", "INFO").toUpperCase()); - ChatChannel.initialize(); - Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Checking for Vault...")); // Set up Vault if(!this.setupPermissions()) { @@ -186,17 +162,9 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { this.loadNMS(); Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Attaching to Executors")); - try { - // if(VersionHandler.is1_7_9()) cmap = V1_7_9.v1_7_9(); - // if(VersionHandler.is1_7_10()) cmap = V1_7_10.v1_7_10(); - if(VersionHandler.is1_8()) cmap = V1_8.v1_8(); - } - catch(Exception e) { - e.printStackTrace(); - } - this.quickchat = false; - if(cmap == null) { - this.quickchat = false; + //if(commandMapObj == null) { + //this.quickchat = false; + // log.info(String.format("[" + String.format("VentureChat" + "]" + // " - Unrecognized server version, Quickchat commands not // registering", @@ -204,8 +172,10 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { // log.info(String.format("[" + String.format("VentureChat" + "]" + // " - Unrecognized server version, Alias commands not registering", // getDescription().getName()))); - } - else { + //} + //else { + //this.quickchat = true; + /* * Don't run this code right now for(ChatChannel c : * ccInfo.getChannelsInfo()) { CCommand cmd = new @@ -219,7 +189,9 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { * FormatStringAll("&8[&eVentureChat&8]&e - Registering Quickchat commands" * )); */ - } + //} + + ChatChannel.initialize(false); Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord")); Bukkit.getMessenger().registerOutgoingPluginChannel(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL); @@ -320,10 +292,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } } - public static CommandMap getCommandMap() { - return cmap; - } - public static MineverseChat getInstance() { return getPlugin(MineverseChat.class); @@ -341,11 +309,19 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { private void registerPacketListeners() { ProtocolLibrary.getProtocolManager().addPacketListener(new PacketListener()); } + + public static Field getPosField() { + return posField; + } + + public static Class getChatMessageType() { + return chatMessageType; + } private void loadNMS() { try { - MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); - MineverseChat.posField.setAccessible(true); + posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); + posField.setAccessible(true); //MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethod("getString"); @@ -356,7 +332,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } if(!VersionHandler.is1_7_10() && !VersionHandler.is1_8() && !VersionHandler.is1_9() && !VersionHandler.is1_10() && !VersionHandler.is1_11()) { try { - MineverseChat.chatMessageType = getNMSClass("ChatMessageType"); + chatMessageType = getNMSClass("ChatMessageType"); } catch(Exception e) { e.printStackTrace(); @@ -393,20 +369,13 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } return(chat != null); } - - public void setLogLevel(String loglevel) { - if(LogLevels.valueOf(loglevel) != null) { - curLogLevel = LogLevels.valueOf(loglevel); - } - else { - curLogLevel = LogLevels.INFO; - } + + public static Chat getVaultChat() { + return chat; } - - public void logme(LogLevels level, String location, String logline) { - if(level.ordinal() >= curLogLevel.ordinal()) { - log.log(Level.INFO, "[VentureChat]: {0}:{1} : {2}", new Object[] { level.toString(), location, logline }); - } + + public static Permission getVaultPermission() { + return permission; } public void synchronize(MineverseChatPlayer mcp, boolean changes) { @@ -614,10 +583,10 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } } if(subchannel.equals("PlayerNames")) { - networkPlayerNames.clear(); + MineverseChatAPI.clearNetworkPlayerNames(); int playerCount = msgin.readInt(); for(int a = 0; a < playerCount; a ++) { - networkPlayerNames.add(msgin.readUTF()); + MineverseChatAPI.addNetworkPlayerName(msgin.readUTF()); } } if(subchannel.equals("Chwho")) { diff --git a/src/mineverse/Aust1n46/chat/api/MineverseChatAPI.java b/src/mineverse/Aust1n46/chat/api/MineverseChatAPI.java index 4f770fb..ec3cb0a 100644 --- a/src/mineverse/Aust1n46/chat/api/MineverseChatAPI.java +++ b/src/mineverse/Aust1n46/chat/api/MineverseChatAPI.java @@ -1,7 +1,9 @@ package mineverse.Aust1n46.chat.api; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.UUID; import org.bukkit.entity.Player; @@ -18,9 +20,22 @@ public final class MineverseChatAPI { private static HashMap playerMap = new HashMap(); private static HashMap namesMap = new HashMap(); private static HashMap onlinePlayerMap = new HashMap(); + private static List networkPlayerNames = new ArrayList(); private static HashMap bungeePlayerMap = new HashMap(); + public static List getNetworkPlayerNames() { + return networkPlayerNames; + } + + public static void clearNetworkPlayerNames() { + networkPlayerNames.clear(); + } + + public static void addNetworkPlayerName(String name) { + networkPlayerNames.add(name); + } + public static void addSynchronizedMineverseChatPlayerToMap(SynchronizedMineverseChatPlayer smcp) { bungeePlayerMap.put(smcp.getUUID(), smcp); } diff --git a/src/mineverse/Aust1n46/chat/channel/ChatChannel.java b/src/mineverse/Aust1n46/chat/channel/ChatChannel.java index 650c739..e54fdd4 100644 --- a/src/mineverse/Aust1n46/chat/channel/ChatChannel.java +++ b/src/mineverse/Aust1n46/chat/channel/ChatChannel.java @@ -23,6 +23,7 @@ public class ChatChannel { private static MineverseChat plugin = MineverseChat.getInstance(); private static ChatChannel defaultChatChannel; + private static boolean aliasesRegisteredAsCommands; @Deprecated private static ChatChannel[] channels; @@ -48,7 +49,8 @@ public class ChatChannel { /** * Read chat channels from config file and initialize channel array. */ - public static void initialize() { + public static void initialize(boolean aliasesRegisteredAsCommands) { + ChatChannel.aliasesRegisteredAsCommands = aliasesRegisteredAsCommands; ConfigurationSection cs = plugin.getConfig().getConfigurationSection("channels"); int len = (cs.getKeys(false)).size(); channels = new ChatChannel[len]; @@ -79,6 +81,10 @@ public class ChatChannel { } } } + + public static boolean areAliasesRegisteredAsCommands() { + return aliasesRegisteredAsCommands; + } /** * Get array of chat channels. diff --git a/src/mineverse/Aust1n46/chat/command/message/IgnoreCommandExecutor.java b/src/mineverse/Aust1n46/chat/command/message/IgnoreCommandExecutor.java index ba973f6..7808235 100644 --- a/src/mineverse/Aust1n46/chat/command/message/IgnoreCommandExecutor.java +++ b/src/mineverse/Aust1n46/chat/command/message/IgnoreCommandExecutor.java @@ -99,10 +99,10 @@ public class IgnoreCommandExecutor implements TabExecutor { public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) { List completions = new ArrayList<>(); - StringUtil.copyPartialMatches(args[args.length - 1], MineverseChat.networkPlayerNames, completions); + StringUtil.copyPartialMatches(args[args.length - 1], MineverseChatAPI.getNetworkPlayerNames(), completions); Collections.sort(completions); return completions; } return null; } -} \ No newline at end of file +} diff --git a/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java b/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java index aaeef4b..51c6bff 100644 --- a/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java +++ b/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java @@ -158,7 +158,7 @@ public class MessageCommandExecutor implements TabExecutor { public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) { List completions = new ArrayList<>(); - StringUtil.copyPartialMatches(args[args.length - 1], MineverseChat.networkPlayerNames, completions); + StringUtil.copyPartialMatches(args[args.length - 1], MineverseChatAPI.getNetworkPlayerNames(), completions); Collections.sort(completions); return completions; } diff --git a/src/mineverse/Aust1n46/chat/command/mute/Mute.java b/src/mineverse/Aust1n46/chat/command/mute/Mute.java index 5d5cca9..94d8776 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Mute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Mute.java @@ -175,7 +175,7 @@ public class Mute implements VentureCommand { if(ChatChannel.isChannel(args[0])) { ChatChannel chatChannelObj = ChatChannel.getChannel(args[0]); if(chatChannelObj.getBungee()) { - StringUtil.copyPartialMatches(args[1], MineverseChat.networkPlayerNames, completions); + StringUtil.copyPartialMatches(args[1], MineverseChatAPI.getNetworkPlayerNames(), completions); Collections.sort(completions); return completions; } diff --git a/src/mineverse/Aust1n46/chat/command/mute/Unmute.java b/src/mineverse/Aust1n46/chat/command/mute/Unmute.java index 25b8de6..8b33d35 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Unmute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Unmute.java @@ -80,7 +80,7 @@ public class Unmute implements VentureCommand { if(ChatChannel.isChannel(args[0])) { ChatChannel chatChannelObj = ChatChannel.getChannel(args[0]); if(chatChannelObj.getBungee()) { - StringUtil.copyPartialMatches(args[1], MineverseChat.networkPlayerNames, completions); + StringUtil.copyPartialMatches(args[1], MineverseChatAPI.getNetworkPlayerNames(), completions); Collections.sort(completions); return completions; } diff --git a/src/mineverse/Aust1n46/chat/listeners/ChatListener.java b/src/mineverse/Aust1n46/chat/listeners/ChatListener.java index 4345b94..cf73fd5 100644 --- a/src/mineverse/Aust1n46/chat/listeners/ChatListener.java +++ b/src/mineverse/Aust1n46/chat/listeners/ChatListener.java @@ -492,7 +492,7 @@ public class ChatListener implements Listener { int hash = message.hashCode(); //Create VentureChatEvent - VentureChatEvent ventureChatEvent = new VentureChatEvent(mcp, mcp.getName(), mcp.getNickname(), MineverseChat.permission.getPrimaryGroup(mcp.getPlayer()), eventChannel, recipients, recipientCount, format, chat, globalJSON, hash, bungee); + VentureChatEvent ventureChatEvent = new VentureChatEvent(mcp, mcp.getName(), mcp.getNickname(), MineverseChat.getVaultPermission().getPrimaryGroup(mcp.getPlayer()), eventChannel, recipients, recipientCount, format, chat, globalJSON, hash, bungee); //Fire event and wait for other plugin listeners to act on it Bukkit.getServer().getPluginManager().callEvent(ventureChatEvent); //Call method to send the processed chat @@ -548,7 +548,7 @@ public class ChatListener implements Listener { if(plugin.getConfig().getString("loglevel", "info").equals("debug")) { System.out.println(out.size() + " bytes size with json"); } - out.writeUTF(MineverseChat.permission.getPrimaryGroup(mcp.getPlayer())); + out.writeUTF(MineverseChat.getVaultPermission().getPrimaryGroup(mcp.getPlayer())); out.writeUTF(mcp.getNickname()); mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray()); out.close(); diff --git a/src/mineverse/Aust1n46/chat/listeners/CommandListener.java b/src/mineverse/Aust1n46/chat/listeners/CommandListener.java index fdfc254..96e4a2e 100644 --- a/src/mineverse/Aust1n46/chat/listeners/CommandListener.java +++ b/src/mineverse/Aust1n46/chat/listeners/CommandListener.java @@ -126,7 +126,7 @@ public class CommandListener implements CommandExecutor, Listener { } } - if(!plugin.quickchat) { + if(!ChatChannel.areAliasesRegisteredAsCommands()) { for(ChatChannel channel : ChatChannel.getChatChannels()) { if(!channel.hasPermission() || mcp.getPlayer().hasPermission(channel.getPermission())) { if(message.equals("/" + channel.getAlias())) { diff --git a/src/mineverse/Aust1n46/chat/listeners/PacketListener.java b/src/mineverse/Aust1n46/chat/listeners/PacketListener.java index 0ee83d7..138aab7 100644 --- a/src/mineverse/Aust1n46/chat/listeners/PacketListener.java +++ b/src/mineverse/Aust1n46/chat/listeners/PacketListener.java @@ -7,6 +7,8 @@ import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.versions.VersionHandler; +import java.lang.reflect.Field; + import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.PacketAdapter; @@ -39,23 +41,24 @@ public class PacketListener extends PacketAdapter { return; } - if(MineverseChat.posField == null) { + Field posField = MineverseChat.getPosField(); + if(posField == null) { return; } try { if(VersionHandler.is1_7_2() || VersionHandler.is1_7_10() || VersionHandler.is1_7_9()) { - if(!(((boolean) MineverseChat.posField.get(packet.getHandle())))) { + if(!(((boolean) posField.get(packet.getHandle())))) { return; } } else if(VersionHandler.is1_8() || VersionHandler.is1_9() || VersionHandler.is1_10() || VersionHandler.is1_11()){ - if(((Byte) MineverseChat.posField.get(packet.getHandle())).intValue() > 1) { + if(((Byte) posField.get(packet.getHandle())).intValue() > 1) { return; } } else { - if(((Object) MineverseChat.posField.get(packet.getHandle())) == MineverseChat.chatMessageType.getEnumConstants()[2]) { + if(((Object) posField.get(packet.getHandle())) == MineverseChat.getChatMessageType().getEnumConstants()[2]) { return; } } @@ -72,4 +75,4 @@ public class PacketListener extends PacketAdapter { int hash = message.hashCode(); mcp.addMessage(new ChatMessage(chat, message, coloredMessage, hash)); } -} \ No newline at end of file +} diff --git a/src/mineverse/Aust1n46/chat/utilities/Format.java b/src/mineverse/Aust1n46/chat/utilities/Format.java index 1e92297..f3f6913 100644 --- a/src/mineverse/Aust1n46/chat/utilities/Format.java +++ b/src/mineverse/Aust1n46/chat/utilities/Format.java @@ -73,8 +73,8 @@ public class Format { String prefix = ""; String suffix = ""; try { - prefix = FormatStringAll(MineverseChat.chat.getPlayerPrefix(sender.getPlayer())); - suffix = FormatStringAll(MineverseChat.chat.getPlayerSuffix(sender.getPlayer())); + prefix = FormatStringAll(MineverseChat.getVaultChat().getPlayerPrefix(sender.getPlayer())); + suffix = FormatStringAll(MineverseChat.getVaultChat().getPlayerSuffix(sender.getPlayer())); // Don't apply JSON if the prefix or suffix is just a color code if (suffix.isEmpty() || (suffix.length() == 2 && suffix.substring(1).matches("[0-9a-fA-F]"))) { suffix = "venturechat_no_suffix_code"; diff --git a/src/mineverse/Aust1n46/chat/versions/V1_7_10.java b/src/mineverse/Aust1n46/chat/versions/V1_7_10.java deleted file mode 100644 index 4cdb465..0000000 --- a/src/mineverse/Aust1n46/chat/versions/V1_7_10.java +++ /dev/null @@ -1,26 +0,0 @@ -package mineverse.Aust1n46.chat.versions; - -import java.lang.reflect.Field; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandMap; -//import org.bukkit.craftbukkit.v1_7_R4.CraftServer; - -//This class returns the CommandMap for Minecraft version 1.7.10 -@SuppressWarnings("unused") -public class V1_7_10 { - /*public static CommandMap v1_7_10() { - CommandMap cmap = null; - try { - if(Bukkit.getServer() instanceof CraftServer) { - final Field f = CraftServer.class.getDeclaredField("commandMap"); - f.setAccessible(true); - cmap = (CommandMap) f.get(Bukkit.getServer()); - } - } - catch(Exception e) { - e.printStackTrace(); - } - return cmap; - }*/ -} \ No newline at end of file diff --git a/src/mineverse/Aust1n46/chat/versions/V1_7_9.java b/src/mineverse/Aust1n46/chat/versions/V1_7_9.java deleted file mode 100644 index 5c8c2f1..0000000 --- a/src/mineverse/Aust1n46/chat/versions/V1_7_9.java +++ /dev/null @@ -1,26 +0,0 @@ -package mineverse.Aust1n46.chat.versions; - -import java.lang.reflect.Field; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandMap; -//import org.bukkit.craftbukkit.v1_7_R3.CraftServer; - -//This class returns the CommandMap for Minecraft version 1.7.9 -@SuppressWarnings("unused") -public class V1_7_9 { - /*public static CommandMap v1_7_9() { - CommandMap cmap = null; - try { - if(Bukkit.getServer() instanceof CraftServer) { - final Field f = CraftServer.class.getDeclaredField("commandMap"); - f.setAccessible(true); - cmap = (CommandMap) f.get(Bukkit.getServer()); - } - } - catch(Exception e) { - e.printStackTrace(); - } - return cmap; - }*/ -} \ No newline at end of file diff --git a/src/mineverse/Aust1n46/chat/versions/V1_8.java b/src/mineverse/Aust1n46/chat/versions/V1_8.java deleted file mode 100644 index 15f51b4..0000000 --- a/src/mineverse/Aust1n46/chat/versions/V1_8.java +++ /dev/null @@ -1,25 +0,0 @@ -package mineverse.Aust1n46.chat.versions; - -import java.lang.reflect.Field; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandMap; -import org.bukkit.craftbukkit.v1_8_R3.CraftServer; - -//This class returns the CommandMap for Minecraft version 1.8 -public class V1_8 { - public static CommandMap v1_8() { - CommandMap cmap = null; - try { - if(Bukkit.getServer() instanceof CraftServer) { - final Field f = CraftServer.class.getDeclaredField("commandMap"); - f.setAccessible(true); - cmap = (CommandMap) f.get(Bukkit.getServer()); - } - } - catch(Exception e) { - e.printStackTrace(); - } - return cmap; - } -} \ No newline at end of file