diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java index 6e13831e..175ca198 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java @@ -127,10 +127,10 @@ public class AdminList extends FreedomService } if (plugin.permissionHandler instanceof NMPermissionHandler || plugin.permissionHandler instanceof VaultPermissionHandler) { - FLog.debug("Using " + plugin.permissionHandler.getClass().getSimpleName() + " for AdminList#isAdmin"); - return plugin.permissionHandler.inGroup(player, ConfigEntry.PERMISSIONS_GROUPS_SENIOR.getString()); +// FLog.debug("Using " + plugin.permissionHandler.getClass().getSimpleName() + " for AdminList#isAdmin"); + return plugin.permissionHandler.inGroup(player, ConfigEntry.PERMISSIONS_GROUPS_ADMIN.getString()); } - FLog.debug("AdminList#isAdmin: Returning false because there is no permissions plugin that supports groups on the server"); +// FLog.debug("AdminList#isAdmin: Returning false because there is no permissions plugin that supports groups on the server"); return false; /*Admin admin = getAdmin(player); @@ -147,10 +147,10 @@ public class AdminList extends FreedomService } if (sender instanceof Player player && (plugin.permissionHandler instanceof NMPermissionHandler || plugin.permissionHandler instanceof VaultPermissionHandler)) { - FLog.debug("Using " + plugin.permissionHandler.getClass().getSimpleName() + " for AdminList#isSeniorAdmin"); +// FLog.debug("Using " + plugin.permissionHandler.getClass().getSimpleName() + " for AdminList#isSeniorAdmin"); return plugin.permissionHandler.inGroup(player, ConfigEntry.PERMISSIONS_GROUPS_SENIOR.getString()); } - FLog.debug("AdminList#isSeniorAdmin: Returning false because there is no permissions plugin that supports groups on the server"); +// FLog.debug("AdminList#isSeniorAdmin: Returning false because there is no permissions plugin that supports groups on the server"); return false; // return plugin.permissionHandler.hasPermission(sender, "totalfreedommod.admin"); /*Admin admin = getAdmin(sender); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java b/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java index b78555c1..2f2d5664 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java @@ -197,16 +197,15 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter protected boolean checkPermissionsSilent(String permission) { //TODO: Not bothering with BukkitTelnet now. +// FLog.debug("Using checkPermissionsSilent"); if (sender instanceof ConsoleCommandSender) { return true; } if (sender instanceof Player player) { - if (!plugin.permissionHandler.hasPermission(player, permission)) - { - return false; - } +// FLog.debug("Checking player permission for " + player.getUniqueId() + " - " + permission); + return plugin.permissionHandler.hasPermission(player, permission); } return false; } @@ -214,9 +213,11 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter @Deprecated protected void checkRank(Rank rank) { +// FLog.debug("Using checkRank"); //TODO: Not bothering with BukkitTelnet now. if (sender instanceof Player player) { +// FLog.debug("Checking player permission for " + player.getUniqueId() + " - " + this.permission); if (!plugin.permissionHandler.hasPermission(player, this.permission)) { noPerms(); @@ -430,7 +431,9 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter return true; }*/ - if (!checkPermissionsSilent(perms.permission())) + FLog.debug("Result of check perms: " + (!checkPermissionsSilent(cmd.permission))); + + if (!checkPermissionsSilent(cmd.permission)) { msg(NO_PERMISSION); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 088efa81..1be9b9d6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -76,7 +76,6 @@ public enum ConfigEntry PERMISSIONS_GROUPS_ADMIN(String.class, "permissions.groups.admin"), PERMISSIONS_GROUPS_SENIOR(String.class, "permissions.groups.senior_admin"), - PERMISSIONS_GROUPS_DEFAULT(String.class, "permissions.groups.default"), DISCORD_TOKEN(String.class, "discord.token"), DISCORD_REPORT_CHANNEL_ID(String.class, "discord.report_channel_id"), diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java index ae2a54a5..11a4c95b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java @@ -6,6 +6,7 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD; import me.totalfreedom.totalfreedommod.permissions.handler.DefaultPermissionHandler; import me.totalfreedom.totalfreedommod.permissions.handler.IPermissionHandler; +import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -28,9 +29,11 @@ public class Module_list extends HTTPDModule { if (params.get("json") != null && params.get("json").equals("true")) { + FLog.debug("Swapping to JSON View!"); final JSONObject responseObject = new JSONObject(); if (!(plugin.permissionHandler instanceof DefaultPermissionHandler)) { + FLog.debug("Displaying custom list on HTTPD!"); IPermissionHandler handler = plugin.permissionHandler; final JSONObject players = new JSONObject(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/DefaultPermissionHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/DefaultPermissionHandler.java index 8f3ce6df..cf8825ea 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/DefaultPermissionHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/DefaultPermissionHandler.java @@ -47,6 +47,12 @@ public class DefaultPermissionHandler implements IPermissionHandler throw new UnsupportedOperationException("Unable to use Bukkit's native permission system for groups!"); } + @Override + public String getPrefix(@NotNull Player player) + { + throw new UnsupportedOperationException("Unable to use Bukkit's native permission system for groups!"); + } + @Override public String[] getGroups() { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/IPermissionHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/IPermissionHandler.java index 8776fe32..bee7990b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/IPermissionHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/IPermissionHandler.java @@ -20,6 +20,7 @@ public interface IPermissionHandler String getPrimaryGroup(@NotNull Player player); + String getPrefix(@NotNull Player player); String[] getGroups(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/NMPermissionHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/NMPermissionHandler.java index 5c00a1ff..dabc5f75 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/NMPermissionHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/NMPermissionHandler.java @@ -1,6 +1,9 @@ package me.totalfreedom.totalfreedommod.permissions.handler; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FLog; import net.milkbowl.vault.permission.Permission; import nl.chimpgamer.networkmanager.api.NetworkManagerPlugin; @@ -14,6 +17,8 @@ import org.bukkit.plugin.RegisteredServiceProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; + /** * @author Taah @@ -43,20 +48,29 @@ public class NMPermissionHandler implements IPermissionHandler { if (permission == null) { + FLog.debug("Permission was null!"); return true; } PermissionPlayer permissionPlayer = this.plugin.getPermissionManager().getPermissionPlayer(player.getUniqueId()); if (permissionPlayer == null) { - FLog.debug("Unable to find permissions player in NetworkManager. Returning true."); - return true; + FLog.debug("Unable to find permissions player in NetworkManager. Returning false."); + return false; + } + if (permissionPlayer.getAllPermissions() == null) + { + FLog.debug("Screw you NetworkManager for telling me all the permissions for player is null."); + return false; } Boolean has = permissionPlayer.hasPermission(permission); if (has == null) { - FLog.debug("NetworkManager is idiotic and has a chance of returning null on a Boolean object. Returning true."); - return true; +// FLog.debug("NetworkManager is idiotic and has a chance of returning null on a Boolean object. Returning false."); + return false; } +// FLog.debug("Player has perm? " + has); +// FLog.debug("Player permissions for: " + permissionPlayer.getUuid() + "\n" + new GsonBuilder().setPrettyPrinting().create().toJson(permissionPlayer.getAllPermissions())); +// permissionPlayer.getPermissions().forEach(permission1 -> FLog.debug(String.format("%s:%s", permission1.getPermissionString(), permission1.hasExpired()))); return has; } @@ -85,6 +99,9 @@ public class NMPermissionHandler implements IPermissionHandler FLog.debug("NM Perms: Setting permission access to false, player groups are empty for '" + player.getUniqueId() + "'"); return false; } +// FLog.debug("Group Name requested for: " + player.getUniqueId() + " - " + groupName); +// FLog.debug("Player has? " + (permissionPlayer.getGroups().stream().anyMatch(group -> group.getName().equals(groupName)))); +// permissionPlayer.getGroups().forEach(group -> FLog.debug("Player group: " + group.getName())); return permissionPlayer.getGroups().stream().anyMatch(group -> group.getName().equals(groupName)); } @@ -102,13 +119,32 @@ public class NMPermissionHandler implements IPermissionHandler @Override public String getPrimaryGroup(@NotNull Player player) + { + PermissionPlayer permissionPlayer = this.plugin.getPermissionManager().getPermissionPlayer(player.getUniqueId()); + if (permissionPlayer == null || permissionPlayer.getPrimaryGroup() == null) + { + FLog.warning("NM Perms: Couldn't find player's primary group due to them not be found our list"); + return ConfigEntry.PERMISSIONS_GROUPS_DEFAULT.getString(); + } +// permissionPlayer.getGroups().forEach(group -> FLog.debug(String.format("Group for %s: %s", permissionPlayer.getUuid(), group.getName()))); +// FLog.debug(String.format("%s Primary Group: %s", permissionPlayer.getUuid(), permissionPlayer.getGroups().stream().sorted(Comparator.comparingInt(Group::getRank)).map(Group::getName).findFirst().orElse(ConfigEntry.PERMISSIONS_GROUPS_DEFAULT.getString()))); + return permissionPlayer.getGroups().stream().sorted((o1, o2) -> o1.getRank() - o2.getRank()).map(Group::getName).findFirst().orElse(ConfigEntry.PERMISSIONS_GROUPS_DEFAULT.getString()); + } + + @Override + public String getPrefix(@NotNull Player player) { PermissionPlayer permissionPlayer = this.plugin.getPermissionManager().getPermissionPlayer(player.getUniqueId()); if (permissionPlayer == null) { FLog.warning("NM Perms: Couldn't find player's primary group due to them not be found our list"); - return "default"; + return "[Error Loading Player]"; } - return this.plugin.getPermissionManager().getPermissionPlayer(player.getUniqueId()).getPrimaryGroup().getName(); + Group group = this.plugin.getPermissionManager().getGroup(getPrimaryGroup(player)); + if (group == null) + { + return "[Error Finding Group]"; + } + return group.getPrefix(null); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/VaultPermissionHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/VaultPermissionHandler.java index b09c96c6..ceaf9351 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/VaultPermissionHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/permissions/handler/VaultPermissionHandler.java @@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.permissions.handler; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.util.FLog; +import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -19,6 +20,7 @@ import org.jetbrains.annotations.Nullable; public class VaultPermissionHandler implements IPermissionHandler { private Permission permissions; + private Chat chat; public VaultPermissionHandler(TotalFreedomMod plugin) { @@ -31,14 +33,10 @@ public class VaultPermissionHandler implements IPermissionHandler plugin.permissionHandler = new DefaultPermissionHandler(); return; } - RegisteredServiceProvider rsp = Bukkit.getServicesManager().getRegistration(Permission.class); - if (rsp == null) - { - FLog.warning("Switching back to Bukkit's default permissions from Vault's due to no permission system found."); - plugin.permissionHandler = new DefaultPermissionHandler(); - return; - } - this.permissions = rsp.getProvider(); + + this.permissions = setupPerms(plugin); + this.chat = setupChat(plugin); + plugin.permissionHandler = this; } @@ -113,8 +111,42 @@ public class VaultPermissionHandler implements IPermissionHandler return this.permissions.getPrimaryGroup(player); } + @Override + public String getPrefix(@NotNull Player player) + { + if (this.chat == null) + { + return "[No Chat Plugin]"; + } + return this.chat.getPlayerPrefix(player); + } + public Permission getPermissions() { return permissions; } + + private Permission setupPerms(TotalFreedomMod plugin) + { + RegisteredServiceProvider rsp = Bukkit.getServicesManager().getRegistration(Permission.class); + if (rsp == null) + { + FLog.warning("Switching back to Bukkit's default permissions from Vault's due to no permission system found."); + plugin.permissionHandler = new DefaultPermissionHandler(); + return null; + } + return rsp.getProvider(); + } + + private Chat setupChat(TotalFreedomMod plugin) + { + RegisteredServiceProvider rsp = Bukkit.getServicesManager().getRegistration(Chat.class); + if (rsp == null) + { +// FLog.warning("Switching back to Bukkit's default permissions from Vault's due to no permission system found."); +// plugin.permissionHandler = new DefaultPermissionHandler(); + return null; + } + return rsp.getProvider(); + } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java index 9af8fe94..796e38fd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java @@ -4,6 +4,7 @@ import java.util.Objects; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.permissions.handler.DefaultPermissionHandler; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -168,7 +169,12 @@ public class RankManager extends FreedomService fPlayer.setTag(null); player.setPlayerListName(null); } - fPlayer.setTag(getTag(player, display.getColoredTag())); + if (!(plugin.permissionHandler instanceof DefaultPermissionHandler)) + { + fPlayer.setTag(getTag(player, plugin.permissionHandler.getPrefix(player))); + } else { + fPlayer.setTag(getTag(player, display.getColoredTag())); + } updatePlayerTeam(player); plugin.pem.setPermissions(player); }