/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java

https://github.com/YellowFellow/Essentials · Java · 142 lines · 120 code · 21 blank · 1 comment · 5 complexity · 4036ddb449b95c38c4164f8bd1c0c55b MD5 · raw file

  1. package com.earth2me.essentials.xmpp;
  2. import com.earth2me.essentials.IEssentials;
  3. import com.earth2me.essentials.IUser;
  4. import com.earth2me.essentials.Util;
  5. import java.util.List;
  6. import java.util.logging.Level;
  7. import java.util.logging.Logger;
  8. import org.bukkit.command.Command;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.event.Event.Priority;
  12. import org.bukkit.event.Event.Type;
  13. import org.bukkit.plugin.PluginManager;
  14. import org.bukkit.plugin.java.JavaPlugin;
  15. public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP
  16. {
  17. private static final Logger LOGGER = Logger.getLogger("Minecraft");
  18. private static EssentialsXMPP instance = null;
  19. private transient UserManager users;
  20. private transient XMPPManager xmpp;
  21. private transient IEssentials ess;
  22. public static IEssentialsXMPP getInstance()
  23. {
  24. return instance;
  25. }
  26. @Override
  27. public void onEnable()
  28. {
  29. instance = this;
  30. final PluginManager pluginManager = getServer().getPluginManager();
  31. ess = (IEssentials)pluginManager.getPlugin("Essentials");
  32. if (ess == null)
  33. {
  34. LOGGER.log(Level.SEVERE, "Failed to load Essentials before EssentialsXMPP");
  35. }
  36. final EssentialsXMPPPlayerListener playerListener = new EssentialsXMPPPlayerListener(ess);
  37. pluginManager.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Monitor, this);
  38. pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Monitor, this);
  39. pluginManager.registerEvent(Type.PLAYER_QUIT, playerListener, Priority.Monitor, this);
  40. users = new UserManager(this.getDataFolder());
  41. xmpp = new XMPPManager(this);
  42. ess.addReloadListener(users);
  43. ess.addReloadListener(xmpp);
  44. if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion()))
  45. {
  46. LOGGER.log(Level.WARNING, Util.i18n("versionMismatchAll"));
  47. }
  48. LOGGER.info(Util.format("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), "essentials team"));
  49. }
  50. @Override
  51. public void onDisable()
  52. {
  53. xmpp.disconnect();
  54. }
  55. @Override
  56. public boolean onCommand(final CommandSender sender, final Command command, final String commandLabel, final String[] args)
  57. {
  58. return ess.onCommandEssentials(sender, command, commandLabel, args, EssentialsXMPP.class.getClassLoader(), "com.earth2me.essentials.xmpp.Command", "essentials.");
  59. }
  60. @Override
  61. public void setAddress(final Player user, final String address)
  62. {
  63. final String username = user.getName().toLowerCase();
  64. instance.users.setAddress(username, address);
  65. }
  66. @Override
  67. public String getAddress(final String name)
  68. {
  69. return instance.users.getAddress(name);
  70. }
  71. @Override
  72. public IUser getUserByAddress(final String address)
  73. {
  74. String username = instance.users.getUserByAddress(address);
  75. return username == null ? null : ess.getUser(username);
  76. }
  77. @Override
  78. public boolean toggleSpy(final Player user)
  79. {
  80. final String username = user.getName().toLowerCase();
  81. final boolean spy = !instance.users.isSpy(username);
  82. instance.users.setSpy(username, spy);
  83. return spy;
  84. }
  85. @Override
  86. public String getAddress(final Player user)
  87. {
  88. return instance.users.getAddress(user.getName());
  89. }
  90. @Override
  91. public boolean sendMessage(final Player user, final String message)
  92. {
  93. return instance.xmpp.sendMessage(instance.users.getAddress(user.getName()), message);
  94. }
  95. @Override
  96. public boolean sendMessage(final String address, final String message)
  97. {
  98. return instance.xmpp.sendMessage(address, message);
  99. }
  100. @Override
  101. public List<String> getSpyUsers()
  102. {
  103. return instance.users.getSpyUsers();
  104. }
  105. @Override
  106. public void broadcastMessage(final IUser sender, final String message)
  107. {
  108. ess.broadcastMessage(sender, message);
  109. try
  110. {
  111. for (String address : getSpyUsers())
  112. {
  113. sendMessage(address, message);
  114. }
  115. }
  116. catch (Exception ex)
  117. {
  118. // Ignore exceptions
  119. }
  120. }
  121. }