From d35774b4019c379a1a4800a22dbd90c0415a6f26 Mon Sep 17 00:00:00 2001 From: Luck Date: Fri, 24 Jun 2016 21:02:56 +0100 Subject: [PATCH] Fix primary group not loading and Vault support with EssentialsChat --- .../me/lucko/luckperms/LPBukkitPlugin.java | 9 +- .../luckperms/vaulthooks/VaultChatHook.java | 127 ++++++++++++++++++ .../VaultPermissionHook.java} | 5 +- .../data/methods/FlatfileDatastore.java | 2 +- .../luckperms/data/methods/SQLDatastore.java | 1 + 5 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultChatHook.java rename bukkit/src/main/java/me/lucko/luckperms/{VaultHook.java => vaulthooks/VaultPermissionHook.java} (97%) diff --git a/bukkit/src/main/java/me/lucko/luckperms/LPBukkitPlugin.java b/bukkit/src/main/java/me/lucko/luckperms/LPBukkitPlugin.java index f52a15119..3dfc7f45e 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/LPBukkitPlugin.java +++ b/bukkit/src/main/java/me/lucko/luckperms/LPBukkitPlugin.java @@ -12,6 +12,9 @@ import me.lucko.luckperms.runnables.UpdateTask; import me.lucko.luckperms.users.BukkitUserManager; import me.lucko.luckperms.users.UserManager; import me.lucko.luckperms.utils.LPConfiguration; +import me.lucko.luckperms.vaulthooks.VaultChatHook; +import me.lucko.luckperms.vaulthooks.VaultPermissionHook; +import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.command.PluginCommand; @@ -84,8 +87,10 @@ public class LPBukkitPlugin extends JavaPlugin implements LuckPermsPlugin { // Provide vault support try { if (getServer().getPluginManager().isPluginEnabled("Vault")) { - getServer().getServicesManager().register(Permission.class, new VaultHook(this), this, ServicePriority.High); - getLogger().info("Registered Vault permission hook."); + final VaultPermissionHook permsHook = new VaultPermissionHook(this); + getServer().getServicesManager().register(Permission.class, permsHook, this, ServicePriority.High); + getServer().getServicesManager().register(Chat.class, new VaultChatHook(permsHook), this, ServicePriority.Lowest); + getLogger().info("Registered Vault permission & chat hook."); } else { getLogger().info("Vault not found."); } diff --git a/bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultChatHook.java b/bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultChatHook.java new file mode 100644 index 000000000..fbba67b83 --- /dev/null +++ b/bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultChatHook.java @@ -0,0 +1,127 @@ +package me.lucko.luckperms.vaulthooks; + +import net.milkbowl.vault.chat.Chat; +import net.milkbowl.vault.permission.Permission; + +/** + * Dummy class for hooking with Vault plugins that need both Chat + Perms + * This doesn't return anything useful, or change anything internally + * + * Registered on the lowest priority so other plugins can override + */ +public class VaultChatHook extends Chat { + + public VaultChatHook(Permission perms) { + super(perms); + } + + private void throwNotSupported() { + // throw new UnsupportedOperationException("LuckPerms cannot perform this operation."); + } + + public String getName() { + return "LuckPerms"; + } + + + public boolean isEnabled() { + return true; + } + + public String getPlayerPrefix(String world, String player) { + return ""; + } + + public void setPlayerPrefix(String world, String player, String prefix) { + throwNotSupported(); + } + + public String getPlayerSuffix(String world, String player) { + return ""; + } + + public void setPlayerSuffix(String world, String player, String suffix) { + throwNotSupported(); + } + + public String getGroupPrefix(String world, String group) { + return ""; + } + + public void setGroupPrefix(String world, String group, String prefix) { + throwNotSupported(); + } + + public String getGroupSuffix(String world, String group) { + return ""; + } + + public void setGroupSuffix(String world, String group, String suffix) { + throwNotSupported(); + } + + public int getPlayerInfoInteger(String world, String player, String node, int defaultValue) { + return defaultValue; + } + + public void setPlayerInfoInteger(String world, String player, String node, int value) { + throwNotSupported(); + } + + public int getGroupInfoInteger(String world, String group, String node, int defaultValue) { + return defaultValue; + } + + public void setGroupInfoInteger(String world, String group, String node, int value) { + throwNotSupported(); + } + + public double getPlayerInfoDouble(String world, String player, String node, double defaultValue) { + return defaultValue; + } + + public void setPlayerInfoDouble(String world, String player, String node, double value) { + throwNotSupported(); + } + + public double getGroupInfoDouble(String world, String group, String node, double defaultValue) { + return defaultValue; + } + + public void setGroupInfoDouble(String world, String group, String node, double value) { + throwNotSupported(); + } + + public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue) { + return defaultValue; + } + + public void setPlayerInfoBoolean(String world, String player, String node, boolean value) { + throwNotSupported(); + } + + public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue) { + return defaultValue; + } + + public void setGroupInfoBoolean(String world, String group, String node, boolean value) { + throwNotSupported(); + } + + public String getPlayerInfoString(String world, String player, String node, String defaultValue) { + return defaultValue; + } + + public void setPlayerInfoString(String world, String player, String node, String value) { + throwNotSupported(); + } + + public String getGroupInfoString(String world, String group, String node, String defaultValue) { + return defaultValue; + } + + public void setGroupInfoString(String world, String group, String node, String value) { + throwNotSupported(); + } + +} diff --git a/bukkit/src/main/java/me/lucko/luckperms/VaultHook.java b/bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultPermissionHook.java similarity index 97% rename from bukkit/src/main/java/me/lucko/luckperms/VaultHook.java rename to bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultPermissionHook.java index cc076fc52..3cd8b07d9 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/VaultHook.java +++ b/bukkit/src/main/java/me/lucko/luckperms/vaulthooks/VaultPermissionHook.java @@ -1,6 +1,7 @@ -package me.lucko.luckperms; +package me.lucko.luckperms.vaulthooks; import lombok.AllArgsConstructor; +import me.lucko.luckperms.LPBukkitPlugin; import me.lucko.luckperms.exceptions.ObjectAlreadyHasException; import me.lucko.luckperms.exceptions.ObjectLacksPermissionException; import me.lucko.luckperms.groups.Group; @@ -8,7 +9,7 @@ import me.lucko.luckperms.users.User; import net.milkbowl.vault.permission.Permission; @AllArgsConstructor -class VaultHook extends Permission { +public class VaultPermissionHook extends Permission { private final LPBukkitPlugin plugin; @Override diff --git a/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java b/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java index 295cdb99f..fcabe0caa 100644 --- a/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java +++ b/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java @@ -161,7 +161,7 @@ public class FlatfileDatastore extends Datastore { reader.nextName(); // name record reader.nextString(); // name reader.nextName(); // primaryGroup record - reader.nextString(); // primaryGroup + user.setPrimaryGroup(reader.nextString()); // primaryGroup reader.nextName(); //perms reader.beginObject(); while (reader.hasNext()) { diff --git a/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java b/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java index 1b1a8dc77..85bc9aa8b 100644 --- a/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java +++ b/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java @@ -184,6 +184,7 @@ abstract class SQLDatastore extends Datastore { }); } else { user.getNodes().putAll(gson.fromJson(resultSet.getString("perms"), NM_TYPE)); + user.setPrimaryGroup(resultSet.getString("primary_group")); } return success; }