/src/net/milkbowl/vault/chat/plugins/Chat_zPermissions.java

https://gitlab.com/MineYourMind/Vault · Java · 245 lines · 190 code · 39 blank · 16 comment · 30 complexity · 2a244cb61511ef6a5c48cbf43fa86c38 MD5 · raw file

  1. /* This file is part of Vault.
  2. Vault is free software: you can redistribute it and/or modify
  3. it under the terms of the GNU Lesser General Public License as published by
  4. the Free Software Foundation, either version 3 of the License, or
  5. (at your option) any later version.
  6. Vault is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. GNU Lesser General Public License for more details.
  10. You should have received a copy of the GNU Lesser General Public License
  11. along with Vault. If not, see <http://www.gnu.org/licenses/>.
  12. */
  13. package net.milkbowl.vault.chat.plugins;
  14. import net.milkbowl.vault.chat.Chat;
  15. import net.milkbowl.vault.permission.Permission;
  16. import org.bukkit.Bukkit;
  17. import org.bukkit.event.EventHandler;
  18. import org.bukkit.event.EventPriority;
  19. import org.bukkit.event.Listener;
  20. import org.bukkit.event.server.PluginDisableEvent;
  21. import org.bukkit.event.server.PluginEnableEvent;
  22. import org.bukkit.plugin.Plugin;
  23. import org.tyrannyofheaven.bukkit.zPermissions.ZPermissionsService;
  24. import java.util.logging.Logger;
  25. public class Chat_zPermissions extends Chat {
  26. private static final Logger log = Logger.getLogger("Minecraft");
  27. private final String name = "zPermissions";
  28. private final Plugin plugin;
  29. private ZPermissionsService service;
  30. public Chat_zPermissions(Plugin plugin, Permission perms) {
  31. super(perms);
  32. this.plugin = plugin;
  33. Bukkit.getServer().getPluginManager().registerEvents(new PermissionServerListener(), plugin);
  34. // Load service in case it was loaded before
  35. if (service == null) {
  36. service = plugin.getServer().getServicesManager().load(ZPermissionsService.class);
  37. if (service != null)
  38. log.info(String.format("[%s][Chat] %s hooked.", plugin.getDescription().getName(), name));
  39. }
  40. }
  41. public class PermissionServerListener implements Listener {
  42. @EventHandler(priority = EventPriority.MONITOR)
  43. public void onPluginEnable(PluginEnableEvent event) {
  44. if (service == null && event.getPlugin().getDescription().getName().equals("zPermissions")) {
  45. service = plugin.getServer().getServicesManager().load(ZPermissionsService.class);
  46. if (service != null)
  47. log.info(String.format("[%s][Chat] %s hooked.", plugin.getDescription().getName(), name));
  48. }
  49. }
  50. @EventHandler(priority = EventPriority.MONITOR)
  51. public void onPluginDisable(PluginDisableEvent event) {
  52. if (service != null) {
  53. if (event.getPlugin().getDescription().getName().equals("zPermissions")) {
  54. service = null;
  55. log.info(String.format("[%s][Chat] %s un-hooked.", plugin.getDescription().getName(), name));
  56. }
  57. }
  58. }
  59. }
  60. @Override
  61. public String getName() {
  62. return name;
  63. }
  64. @Override
  65. public boolean isEnabled() {
  66. return service != null;
  67. }
  68. @Override
  69. public String getPlayerPrefix(String world, String player) {
  70. return getPlayerInfoString(world, player, "prefix", "");
  71. }
  72. @Override
  73. public void setPlayerPrefix(String world, String player, String prefix) {
  74. setPlayerInfoString(world, player, "prefix", prefix);
  75. }
  76. @Override
  77. public String getPlayerSuffix(String world, String player) {
  78. return getPlayerInfoString(world, player, "suffix", "");
  79. }
  80. @Override
  81. public void setPlayerSuffix(String world, String player, String suffix) {
  82. setPlayerInfoString(world, player, "suffix", suffix);
  83. }
  84. @Override
  85. public String getGroupPrefix(String world, String group) {
  86. return getGroupInfoString(world, group, "prefix", "");
  87. }
  88. @Override
  89. public void setGroupPrefix(String world, String group, String prefix) {
  90. setGroupInfoString(world, group, "prefix", prefix);
  91. }
  92. @Override
  93. public String getGroupSuffix(String world, String group) {
  94. return getGroupInfoString(world, group, "suffix", "");
  95. }
  96. @Override
  97. public void setGroupSuffix(String world, String group, String suffix) {
  98. setGroupInfoString(world, group, "suffix", suffix);
  99. }
  100. @Override
  101. public int getPlayerInfoInteger(String world, String player, String node, int defaultValue) {
  102. Integer result = service.getPlayerMetadata(player, node, Integer.class);
  103. if (result == null)
  104. return defaultValue;
  105. else
  106. return result;
  107. }
  108. @Override
  109. public void setPlayerInfoInteger(String world, String player, String node, int value) {
  110. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions player " + player + " metadata setint " + node + " " + value);
  111. }
  112. @Override
  113. public int getGroupInfoInteger(String world, String group, String node, int defaultValue) {
  114. Integer result = service.getGroupMetadata(group, node, Integer.class);
  115. if (result == null)
  116. return defaultValue;
  117. else
  118. return result;
  119. }
  120. @Override
  121. public void setGroupInfoInteger(String world, String group, String node, int value) {
  122. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions group " + group + " metadata setint " + node + " " + value);
  123. }
  124. @Override
  125. public double getPlayerInfoDouble(String world, String player, String node, double defaultValue) {
  126. Double result = service.getPlayerMetadata(player, node, Double.class);
  127. if (result == null)
  128. return defaultValue;
  129. else
  130. return result;
  131. }
  132. @Override
  133. public void setPlayerInfoDouble(String world, String player, String node, double value) {
  134. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions player " + player + " metadata setreal " + node + " " + value);
  135. }
  136. @Override
  137. public double getGroupInfoDouble(String world, String group, String node, double defaultValue) {
  138. Double result = service.getGroupMetadata(group, node, Double.class);
  139. if (result == null)
  140. return defaultValue;
  141. else
  142. return result;
  143. }
  144. @Override
  145. public void setGroupInfoDouble(String world, String group, String node, double value) {
  146. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions group " + group + " metadata setreal " + node + " " + value);
  147. }
  148. @Override
  149. public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue) {
  150. Boolean result = service.getPlayerMetadata(player, node, Boolean.class);
  151. if (result == null)
  152. return defaultValue;
  153. else
  154. return result;
  155. }
  156. @Override
  157. public void setPlayerInfoBoolean(String world, String player, String node, boolean value) {
  158. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions player " + player + " metadata setbool " + node + " " + value);
  159. }
  160. @Override
  161. public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue) {
  162. Boolean result = service.getGroupMetadata(group, node, Boolean.class);
  163. if (result == null)
  164. return defaultValue;
  165. else
  166. return result;
  167. }
  168. @Override
  169. public void setGroupInfoBoolean(String world, String group, String node, boolean value) {
  170. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions group " + group + " metadata setbool " + node + " " + value);
  171. }
  172. @Override
  173. public String getPlayerInfoString(String world, String player, String node, String defaultValue) {
  174. String result = service.getPlayerMetadata(player, node, String.class);
  175. if (result == null)
  176. return defaultValue;
  177. else
  178. return result;
  179. }
  180. @Override
  181. public void setPlayerInfoString(String world, String player, String node, String value) {
  182. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions player " + player + " metadata set " + node + " " + quote(value));
  183. }
  184. @Override
  185. public String getGroupInfoString(String world, String group, String node, String defaultValue) {
  186. String result = service.getGroupMetadata(group, node, String.class);
  187. if (result == null)
  188. return defaultValue;
  189. else
  190. return result;
  191. }
  192. @Override
  193. public void setGroupInfoString(String world, String group, String node, String value) {
  194. plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "permissions group " + group + " metadata set " + node + " " + quote(value));
  195. }
  196. private String quote(String input) {
  197. input = input.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\"");
  198. if (input.matches(".*\\s.*"))
  199. return "\"" + input + "\""; // Enclose in quotes
  200. else
  201. return input;
  202. }
  203. }