CommandHandler.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package de.Linus122.Handlers;
  2. import java.security.Permissions;
  3. import java.util.Arrays;
  4. import java.util.Locale;
  5. import java.util.logging.ConsoleHandler;
  6. import java.util.logging.Formatter;
  7. import java.util.logging.Handler;
  8. import java.util.logging.LogManager;
  9. import java.util.logging.LogRecord;
  10. import java.util.logging.SimpleFormatter;
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.OfflinePlayer;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.plugin.Plugin;
  15. import org.bukkit.plugin.PluginLogger;
  16. import org.bukkit.plugin.RegisteredServiceProvider;
  17. import de.Linus122.Telegram.Telegram;
  18. import de.Linus122.Telegram.TelegramActionListener;
  19. import de.Linus122.TelegramChat.TelegramChat;
  20. import de.Linus122.TelegramComponents.ChatMessageToMc;
  21. import de.Linus122.TelegramComponents.ChatMessageToTelegram;
  22. import net.milkbowl.vault.permission.Permission;
  23. public class CommandHandler extends ConsoleHandler implements TelegramActionListener {
  24. private Permission permissionsAdapter;
  25. private long lastChatId = -1;
  26. private long lastCommandTyped;
  27. private Telegram telegram;
  28. private Plugin plugin;
  29. public CommandHandler(Telegram telegram, Plugin plugin) {
  30. java.util.logging.Logger global = java.util.logging.Logger.getLogger("");
  31. //global.addHandler(this);
  32. LogManager.getLogManager().getLoggerNames().asIterator().forEachRemaining(c -> LogManager.getLogManager().getLogger(c).addHandler(this));
  33. //Bukkit.getLogger().addHandler(this);
  34. //Arrays.stream(Bukkit.getPluginManager().getPlugins()).forEach(k -> k.getLogger().addHandler(this));
  35. setupVault();
  36. this.telegram = telegram;
  37. this.plugin = plugin;
  38. }
  39. private void setupVault() {
  40. RegisteredServiceProvider<Permission> rsp = Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
  41. permissionsAdapter = rsp.getProvider();
  42. }
  43. @Override
  44. public void onSendToTelegram(ChatMessageToTelegram chat) {
  45. // TODO Auto-generated method stub
  46. }
  47. @Override
  48. public void onSendToMinecraft(ChatMessageToMc chatMsg) {
  49. if(permissionsAdapter == null) {
  50. // setting up vault permissions
  51. this.setupVault();
  52. }
  53. if(chatMsg.getContent().startsWith("/")) {
  54. OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(chatMsg.getUuid_sender());
  55. if(permissionsAdapter.playerHas(null, offlinePlayer, "telegramchat.console")) {
  56. lastChatId = chatMsg.getChatID_sender();
  57. lastCommandTyped = System.currentTimeMillis();
  58. Bukkit.getScheduler().runTask(this.plugin, () -> {
  59. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), chatMsg.getContent().substring(1, chatMsg.getContent().length()-1));
  60. });
  61. }
  62. }
  63. }
  64. @Override
  65. public void close() throws SecurityException {
  66. // TODO Auto-generated method stub
  67. }
  68. @Override
  69. public void flush() {
  70. // TODO Auto-generated method stub
  71. }
  72. @Override
  73. public void publish(LogRecord record) {
  74. if(lastChatId != -1) {
  75. // String s = String.format(record.getMessage(), record.getParameters());
  76. String s = this.getFormatter().format(record);
  77. telegram.sendMsg(lastChatId, s);
  78. }
  79. }
  80. }