From 8164571920482c974fb535a2905129df84315a08 Mon Sep 17 00:00:00 2001 From: LOOHP Date: Sun, 9 Aug 2020 17:45:33 +0800 Subject: [PATCH] Fixed error while checking permissions --- pom.xml | 4 +-- src/com/loohp/limbo/DeclareCommands.java | 3 +- .../limbo/Permissions/PermissionsManager.java | 31 +++++++++++-------- .../loohp/limbo/Plugins/PluginManager.java | 4 +-- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index add617a..0411e5d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 Limbo Limbo - 0.2.2-ALPHA + 0.2.3-ALPHA src @@ -91,4 +91,4 @@ 1.8 - + \ No newline at end of file diff --git a/src/com/loohp/limbo/DeclareCommands.java b/src/com/loohp/limbo/DeclareCommands.java index c2553f6..6d63c28 100644 --- a/src/com/loohp/limbo/DeclareCommands.java +++ b/src/com/loohp/limbo/DeclareCommands.java @@ -2,6 +2,7 @@ package com.loohp.limbo; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; +import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; @@ -11,7 +12,7 @@ import com.loohp.limbo.Utils.DataTypeIO; public class DeclareCommands { - public static PacketPlayOutDeclareCommands getDeclareCommandsPacket(CommandSender sender) throws Exception { + public static PacketPlayOutDeclareCommands getDeclareCommandsPacket(CommandSender sender) throws IOException { List commands = Limbo.getInstance().getPluginManager().getTabOptions(sender, new String[0]); if (commands.isEmpty()) { diff --git a/src/com/loohp/limbo/Permissions/PermissionsManager.java b/src/com/loohp/limbo/Permissions/PermissionsManager.java index 0378bda..724f87e 100644 --- a/src/com/loohp/limbo/Permissions/PermissionsManager.java +++ b/src/com/loohp/limbo/Permissions/PermissionsManager.java @@ -25,18 +25,23 @@ public class PermissionsManager { @SuppressWarnings("unchecked") public void loadDefaultPermissionFile(File file) throws FileNotFoundException { FileConfiguration config = new FileConfiguration(file); - for (Object obj : config.get("groups", Map.class).keySet()) { - String key = (String) obj; - List nodes = new ArrayList<>(); - nodes.addAll(config.get("groups." + key, List.class)); - permissions.put(key, nodes); - } - for (Object obj : config.get("players", Map.class).keySet()) { - String key = (String) obj; - List groups = new ArrayList<>(); - groups.addAll(config.get("players." + key, List.class)); - users.put(key, groups); - } + permissions.put("default", new ArrayList<>()); + try { + for (Object obj : config.get("groups", Map.class).keySet()) { + String key = (String) obj; + List nodes = new ArrayList<>(); + nodes.addAll(config.get("groups." + key, List.class)); + permissions.put(key, nodes); + } + } catch (Exception e) {} + try { + for (Object obj : config.get("players", Map.class).keySet()) { + String key = (String) obj; + List groups = new ArrayList<>(); + groups.addAll(config.get("players." + key, List.class)); + users.put(key, groups); + } + } catch (Exception e) {} } public boolean hasPermission(CommandSender sender, String permission) { @@ -44,7 +49,7 @@ public class PermissionsManager { return true; } else if (sender instanceof Player) { Player player = (Player) sender; - if (users.get(player.getName()).stream().anyMatch(each -> permissions.get(each).stream().anyMatch(node -> node.equalsIgnoreCase(permission)))) { + if (users.get(player.getName()) != null && users.get(player.getName()).stream().anyMatch(each -> permissions.get(each).stream().anyMatch(node -> node.equalsIgnoreCase(permission)))) { return true; } else { return permissions.get("default").stream().anyMatch(node -> node.equalsIgnoreCase(permission)); diff --git a/src/com/loohp/limbo/Plugins/PluginManager.java b/src/com/loohp/limbo/Plugins/PluginManager.java index b52e1a7..3882008 100644 --- a/src/com/loohp/limbo/Plugins/PluginManager.java +++ b/src/com/loohp/limbo/Plugins/PluginManager.java @@ -94,14 +94,14 @@ public class PluginManager { } } - public List getTabOptions(CommandSender sender, String[] args) throws Exception { + public List getTabOptions(CommandSender sender, String[] args) { List options = new ArrayList<>(); for (Executor entry : executors) { if (entry.tab.isPresent()) { try { options.addAll(entry.tab.get().tabComplete(sender, args)); } catch (Exception e) { - System.err.println("Error while passing tab completion \"" + args[0] + "\" to the plugin \"" + entry.plugin.getName() + "\""); + System.err.println("Error while passing tab completion to the plugin \"" + entry.plugin.getName() + "\""); e.printStackTrace(); } }