From 39f58a6c79fdad00d6d577c58946d8c321531804 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 4 Sep 2013 12:02:56 +0700 Subject: [PATCH] Added rscPermissions support. --- lib/rscPermissions.jar | Bin 0 -> 61039 bytes pom.xml | 9 +- src/net/milkbowl/vault/Vault.java | 8 + .../chat/plugins/Chat_rscPermissions.java | 211 ++++++++++++++++++ .../plugins/Permission_rscPermissions.java | 178 +++++++++++++++ 5 files changed, 405 insertions(+), 1 deletion(-) create mode 100644 lib/rscPermissions.jar create mode 100644 src/net/milkbowl/vault/chat/plugins/Chat_rscPermissions.java create mode 100644 src/net/milkbowl/vault/permission/plugins/Permission_rscPermissions.java diff --git a/lib/rscPermissions.jar b/lib/rscPermissions.jar new file mode 100644 index 0000000000000000000000000000000000000000..f319546c615fd31d099824673763c96f09f95dfb GIT binary patch literal 61039 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index f2b739a..11b6626 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ http://dev.bukkit.org/server-mods/vault/ Vault is a Permissions & Economy API to allow plugins to more easily hook into these systems without needing to hook each individual system themselves. -Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms, bPerms2, SimplyPerms, DroxPerms, zPermissions, Starburst, iConomy (4/5/6) BOSEconomy *6/7), EssentialsEcon, 3Co, MultiConomy, MineConomy, EconXP, eWallet, CurrencyCore, XPBank, CraftConomy, AEco, SDFEconomy +Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms, bPerms2, SimplyPerms, DroxPerms, zPermissions, rscPermissions, Starburst, iConomy (4/5/6) BOSEconomy *6/7), EssentialsEcon, 3Co, MultiConomy, MineConomy, EconXP, eWallet, CurrencyCore, XPBank, CraftConomy, AEco, SDFEconomy UTF-8 @@ -348,6 +348,13 @@ Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms system ${project.basedir}/lib/TotalPermissions.jar + + ru.simsonic + rscPermissions + 1.0 + system + ${project.basedir}/lib/rscPermissions.jar + diff --git a/src/net/milkbowl/vault/Vault.java b/src/net/milkbowl/vault/Vault.java index c86fc4e..43420db 100644 --- a/src/net/milkbowl/vault/Vault.java +++ b/src/net/milkbowl/vault/Vault.java @@ -36,6 +36,7 @@ import net.milkbowl.vault.chat.plugins.Chat_iChat; import net.milkbowl.vault.chat.plugins.Chat_mChat; import net.milkbowl.vault.chat.plugins.Chat_mChatSuite; import net.milkbowl.vault.chat.plugins.Chat_zPermissions; +import net.milkbowl.vault.chat.plugins.Chat_rscPermissions; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.plugins.Economy_3co; import net.milkbowl.vault.economy.plugins.Economy_AEco; @@ -76,6 +77,7 @@ import net.milkbowl.vault.permission.plugins.Permission_bPermissions; import net.milkbowl.vault.permission.plugins.Permission_bPermissions2; import net.milkbowl.vault.permission.plugins.Permission_zPermissions; import net.milkbowl.vault.permission.plugins.Permission_TotalPermissions; +import net.milkbowl.vault.permission.plugins.Permission_rscPermissions; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -195,6 +197,9 @@ public class Vault extends JavaPlugin { // Try to load Privileges hookChat("Privileges", Chat_Privileges.class, ServicePriority.Normal, "net.krinsoft.privileges.Privileges"); + + // Try to load rscPermissions + hookChat("rscPermissions", Chat_rscPermissions.class, ServicePriority.Normal, "ru.simsonic.rscPermissions.MainPluginClass"); } /** @@ -319,6 +324,9 @@ public class Vault extends JavaPlugin { //Try to load TotalPermissions hookPermission("TotalPermissions", Permission_TotalPermissions.class, ServicePriority.Normal, "net.ae97.totalpermissions.TotalPermissions"); + + // Try to load rscPermissions + hookPermission("rscPermissions", Permission_rscPermissions.class, ServicePriority.Normal, "ru.simsonic.rscPermissions.MainPluginClass"); Permission perms = new Permission_SuperPerms(this); sm.register(Permission.class, perms, this, ServicePriority.Lowest); diff --git a/src/net/milkbowl/vault/chat/plugins/Chat_rscPermissions.java b/src/net/milkbowl/vault/chat/plugins/Chat_rscPermissions.java new file mode 100644 index 0000000..75a9d40 --- /dev/null +++ b/src/net/milkbowl/vault/chat/plugins/Chat_rscPermissions.java @@ -0,0 +1,211 @@ +/* This file is part of Vault. + + Vault is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Vault is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with Vault. If not, see . + */ +package net.milkbowl.vault.chat.plugins; +import java.util.logging.Logger; +import net.milkbowl.vault.chat.Chat; +import net.milkbowl.vault.permission.Permission; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; +import org.bukkit.plugin.Plugin; +import ru.simsonic.rscPermissions.MainPluginClass; + +public class Chat_rscPermissions extends Chat +{ + private static final Logger log = Logger.getLogger("Minecraft"); + private final Plugin vault; + private ru.simsonic.rscPermissions.MainPluginClass rscp; + private ru.simsonic.rscPermissions.rscpAPI API; + public Chat_rscPermissions(Plugin plugin, Permission perm) + { + super(perm); + this.vault = plugin; + Bukkit.getServer().getPluginManager().registerEvents(new ChatServerListener(this), vault); + rscp = (ru.simsonic.rscPermissions.MainPluginClass)vault.getServer().getPluginManager().getPlugin("rscPermissions"); + } + private class ChatServerListener implements Listener + { + private final Chat_rscPermissions bridge; + public ChatServerListener(Chat_rscPermissions bridge) + { + this.bridge = bridge; + } + @EventHandler(priority = EventPriority.MONITOR) + private void onPluginEnable(PluginEnableEvent event) + { + if(bridge.rscp == null) + { + Plugin plugin = event.getPlugin(); + if(!"rscPermissions".equals(plugin.getName())) + return; + bridge.rscp = (MainPluginClass)plugin; + } + if(bridge.API == null) + bridge.API = bridge.rscp.API; + if(bridge.API.isEnabled()) + log.info(String.format("[%s][Chat] %s hooked.", + vault.getDescription().getName(), bridge.API.getName())); + } + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) + { + if(bridge.API != null) + if(event.getPlugin().getDescription().getName().equals(bridge.API.getName())) + { + log.info(String.format("[%s][Chat] %s un-hooked.", + vault.getDescription().getName(), bridge.API.getName())); + bridge.API = null; + } + } + } + @Override + public String getName() + { + return (API != null) ? API.getName() : "rscPermissions"; + } + @Override + public boolean isEnabled() + { + return (API != null) ? API.isEnabled() : false; + } + @Override + public String getPlayerPrefix(String string, String string1) + { + if(API != null) + return API.getPlayerPrefix(string, string1); + return ""; + } + @Override + public String getPlayerSuffix(String string, String string1) + { + if(API != null) + return API.getPlayerSuffix(string, string1); + return ""; + } + @Override + public String getGroupPrefix(String string, String string1) + { + if(API != null) + return API.getGroupPrefix(string, string1); + return ""; + } + @Override + public String getGroupSuffix(String string, String string1) + { + if(API != null) + return API.getGroupSuffix(string, string1); + return ""; + } + @Override + public void setPlayerPrefix(String string, String string1, String string2) + { + if(API != null) + API.setPlayerPrefix(string, string1, string2); + } + @Override + public void setPlayerSuffix(String string, String string1, String string2) + { + if(API != null) + API.setPlayerSuffix(string, string1, string2); + } + @Override + public void setGroupPrefix(String string, String string1, String string2) + { + if(API != null) + API.setGroupPrefix(string, string1, string2); + } + @Override + public void setGroupSuffix(String string, String string1, String string2) + { + if(API != null) + API.setGroupSuffix(string, string1, string2); + } + @Override + public int getPlayerInfoInteger(String string, String string1, String string2, int i) + { + return 0; + } + @Override + public void setPlayerInfoInteger(String string, String string1, String string2, int i) + { + } + @Override + public int getGroupInfoInteger(String string, String string1, String string2, int i) + { + return 0; + } + @Override + public void setGroupInfoInteger(String string, String string1, String string2, int i) + { + } + @Override + public double getPlayerInfoDouble(String string, String string1, String string2, double d) + { + return 0.0; + } + @Override + public void setPlayerInfoDouble(String string, String string1, String string2, double d) + { + } + @Override + public double getGroupInfoDouble(String string, String string1, String string2, double d) + { + return 0.0; + } + @Override + public void setGroupInfoDouble(String string, String string1, String string2, double d) + { + } + @Override + public boolean getPlayerInfoBoolean(String string, String string1, String string2, boolean bln) + { + return false; + } + @Override + public void setPlayerInfoBoolean(String string, String string1, String string2, boolean bln) + { + } + @Override + public boolean getGroupInfoBoolean(String string, String string1, String string2, boolean bln) + { + return false; + } + @Override + public void setGroupInfoBoolean(String string, String string1, String string2, boolean bln) + { + } + @Override + public String getPlayerInfoString(String string, String string1, String string2, String string3) + { + return "..."; + } + @Override + public void setPlayerInfoString(String string, String string1, String string2, String string3) + { + } + @Override + public String getGroupInfoString(String string, String string1, String string2, String string3) + { + return "..."; + } + @Override + public void setGroupInfoString(String string, String string1, String string2, String string3) + { + } +} diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_rscPermissions.java b/src/net/milkbowl/vault/permission/plugins/Permission_rscPermissions.java new file mode 100644 index 0000000..d8b3ba4 --- /dev/null +++ b/src/net/milkbowl/vault/permission/plugins/Permission_rscPermissions.java @@ -0,0 +1,178 @@ +/* This file is part of Vault. + + Vault is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Vault is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with Vault. If not, see . + */ +package net.milkbowl.vault.permission.plugins; +import net.milkbowl.vault.permission.Permission; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; +import org.bukkit.plugin.Plugin; +import ru.simsonic.rscPermissions.MainPluginClass; + +public class Permission_rscPermissions extends Permission +{ + private final Plugin vault; + private ru.simsonic.rscPermissions.MainPluginClass rscp = null; + private ru.simsonic.rscPermissions.rscpAPI API = null; + public Permission_rscPermissions(Plugin plugin) + { + super(); + this.vault = plugin; + Bukkit.getServer().getPluginManager().registerEvents(new PermissionServerListener(this), vault); + rscp = (MainPluginClass)vault.getServer().getPluginManager().getPlugin("rscPermissions"); + } + private class PermissionServerListener implements Listener + { + private final Permission_rscPermissions bridge; + public PermissionServerListener(Permission_rscPermissions bridge) + { + this.bridge = bridge; + } + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginEnable(PluginEnableEvent event) + { + if(bridge.rscp == null) + { + Plugin plugin = event.getPlugin(); + if(!"rscPermissions".equals(plugin.getName())) + return; + bridge.rscp = (MainPluginClass)plugin; + } + if(bridge.API == null) + bridge.API = bridge.rscp.API; + if(bridge.API.isEnabled()) + log.info(String.format("[%s][Permission] %s hooked.", + vault.getDescription().getName(), bridge.API.getName())); + } + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) + { + if(bridge.API != null) + if(event.getPlugin().getDescription().getName().equals(bridge.API.getName())) + { + log.info(String.format("[%s][Permission] %s un-hooked.", + vault.getDescription().getName(), bridge.API.getName())); + bridge.API = null; + } + } + } + @Override + public String getName() + { + return (API != null) ? API.getName() : "rscPermissions"; + } + @Override + public boolean isEnabled() + { + return (API != null) ? API.isEnabled() : false; + } + @Override + public boolean hasSuperPermsCompat() + { + return (API != null) ? API.hasSuperPermsCompat() : true; + } + @Override + public boolean hasGroupSupport() + { + return (API != null) ? API.hasGroupSupport() : true; + } + @Override + public boolean playerHas(String string, String string1, String string2) + { + if(API != null) + return API.playerHas(string, string1, string2); + return false; + } + @Override + public boolean playerAdd(String string, String string1, String string2) + { + if(API != null) + return API.playerAdd(string, string1, string2); + return false; + } + @Override + public boolean playerRemove(String string, String string1, String string2) + { + if(API != null) + return API.playerRemove(string, string1, string2); + return false; + } + @Override + public boolean groupHas(String string, String string1, String string2) + { + if(API != null) + return API.groupHas(string, string1, string2); + return false; + } + @Override + public boolean groupAdd(String string, String string1, String string2) + { + if(API != null) + return API.groupAdd(string, string1, string2); + return false; + } + @Override + public boolean groupRemove(String string, String string1, String string2) + { + if(API != null) + return API.groupRemove(string, string1, string2); + return false; + } + @Override + public boolean playerInGroup(String string, String string1, String string2) + { + if(API != null) + return API.playerInGroup(string, string1, string2); + return false; + } + @Override + public boolean playerAddGroup(String string, String string1, String string2) + { + if(API != null) + return API.playerAddGroup(string, string1, string2); + return false; + } + @Override + public boolean playerRemoveGroup(String string, String string1, String string2) + { + if(API != null) + return API.playerRemoveGroup(string, string1, string2); + return false; + } + @Override + public String[] getPlayerGroups(String string, String string1) + { + if(API != null) + return API.getPlayerGroups(string, string1); + return new String[] { "Default" }; + } + @Override + public String getPrimaryGroup(String string, String string1) + { + if(API != null) + return API.getPrimaryGroup(string, string1); + return "Default"; + } + @Override + public String[] getGroups() + { + if(API != null) + return API.getGroups(); + return new String[] { "Default" }; + } +}