Advertisement
Drakia

Untitled

Mar 27th, 2011
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.75 KB | None | 0 0
  1. //================================================================
  2. // AdminChat v1.3 - Build #531
  3. // March, 2011 - Coded by Infernus, many thanks to MadMonkeyCo!
  4. // Thanks to loads of ideas from BindMind!
  5. //================================================================
  6.  
  7. package me.Infernus.AdminChat;
  8.  
  9. import com.nijiko.permissions.PermissionHandler;
  10. import com.nijikokun.bukkit.Permissions.Permissions;
  11. import java.io.File;
  12. import java.util.HashMap;
  13. import java.util.logging.Logger;
  14. import org.bukkit.ChatColor;
  15. import org.bukkit.command.Command;
  16. import org.bukkit.command.CommandSender;
  17. import org.bukkit.entity.Player;
  18. import org.bukkit.event.Event;
  19. import org.bukkit.event.player.PlayerChatEvent;
  20. import org.bukkit.plugin.Plugin;
  21. import org.bukkit.plugin.PluginManager;
  22. import org.bukkit.plugin.java.JavaPlugin;
  23.  
  24. public class AChatPlugin extends JavaPlugin {
  25.     private final AChatPlayerListener playerListener = new AChatPlayerListener(this);
  26.     public final HashMap<Player, String> AdminchatUsers = new HashMap<Player, String>();
  27.     private static final Logger log = Logger.getLogger("Minecraft");
  28.     public static String directory = "AdminChat" + File.separator;
  29.     public PermissionHandler Permissions;
  30.     public static AChatSettings Settings;
  31.     public org.bukkit.ChatColor MyColor;
  32.     private String Color, Channel;
  33.     private boolean bUsePermissions;
  34.    
  35.     //------------------------------------
  36.     // Startup
  37.     //------------------------------------
  38.  
  39.     public void onEnable() {
  40.         PluginManager PM = getServer().getPluginManager();
  41.         PM.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Highest, this);
  42.         log.info("[AdminChat] Version 1.3 is enabled.");
  43.         loadSettings();
  44.         setupPermissions();
  45.     }
  46.  
  47.     public void onDisable() {
  48.         log.info("[AdminChat] Is DISABLED!");
  49.     }
  50.    
  51.     //------------------------------------
  52.     // Commands
  53.     //------------------------------------
  54.    
  55.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
  56.         String Message = "";
  57.        
  58.         if(commandLabel.equalsIgnoreCase("a")) {
  59.             if(args.length == 0) {
  60.                 return true;
  61.             }
  62.            
  63.             if(args.length == 1) {
  64.                 if(args[0].equalsIgnoreCase("on")) {
  65.                     if(canWriteAdminChat((Player)sender)) {
  66.                         turnOn((Player)sender);
  67.                         return true;
  68.                     } else {
  69.                         sender.sendMessage(ChatColor.RED + "You are not allowed to use " + MyColor + Channel + ChatColor.RED + "!");
  70.                         return true;
  71.                     }
  72.                 } else if(args[0].equalsIgnoreCase("off")) {
  73.                     if(canWriteAdminChat((Player)sender)) {
  74.                         turnOff((Player)sender);
  75.                         return true;
  76.                     } else {
  77.                         sender.sendMessage(ChatColor.RED + "You are not allowed to use "+ MyColor + Channel + ChatColor.RED + "!");
  78.                         return true;
  79.                     }
  80.                 }
  81.             } else if(args.length == 2) {
  82.                 if(args[0].equalsIgnoreCase("setColor")) {
  83.                     if(canModifyAdminChat((Player)sender)) {
  84.                         setColor((Player)sender, args[1]);
  85.                         return true;
  86.                     } else {
  87.                         sender.sendMessage(ChatColor.RED + "You are not allowed to modify "+ MyColor + Channel + ChatColor.RED + "!");
  88.                         return true;
  89.                     }
  90.                 }
  91.             }
  92.            
  93.             if(args[0].equalsIgnoreCase("setChannelName")) {
  94.                 if(canModifyAdminChat((Player)sender)) {
  95.                     Settings.setString("channel", args[1]);
  96.                     Channel = args[1];
  97.                     sender.sendMessage(ChatColor.GREEN + "Successfully changed channel name to " + args[1]);
  98.                     return true;
  99.                 } else {
  100.                     sender.sendMessage(ChatColor.RED + "You are not allowed to modify "+ MyColor + Channel + ChatColor.RED + "!");
  101.                     return true;
  102.                 }
  103.             }
  104.            
  105.             //Since it got here, it didn't contain any commands.
  106.            
  107.             if(!canWriteAdminChat((Player)sender)) {
  108.                 sender.sendMessage(ChatColor.RED + "You are not allowed to use "+ MyColor + Channel + ChatColor.RED + "!");
  109.                 return true;
  110.             }
  111.            
  112.             for(int i = 0; i<args.length; i++) {
  113.                 Message += " " + args[i];
  114.             }
  115.            
  116.             //AdminMessage((Player)sender, Message);
  117.             PlayerChatEvent event = new PlayerChatEvent(Event.Type.PLAYER_CHAT, (Player)sender, Message);
  118.             getServer().getPluginManager().callEvent(event);
  119.             if (!isInAdminchat((Player)sender)) {
  120.                 String msg = String.format(event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage());
  121.                 AdminMessage((Player)sender, msg);
  122.             }
  123.             return true;
  124.         }
  125.        
  126.         return false;
  127.     }
  128.    
  129.     //------------------------------------
  130.     // Permissions stuff
  131.     //------------------------------------
  132.    
  133.     private void setupPermissions() {
  134.         Plugin test = this.getServer().getPluginManager().getPlugin("Permissions");
  135.  
  136.         if (this.Permissions == null) {
  137.             if (test != null) {
  138.                 this.Permissions = ((Permissions)test).getHandler();
  139.                 bUsePermissions = true;
  140.             } else {
  141.                 log.info("[AdminChat] Permissions not running, all OPs will be able to send and receive " + Channel + " messages.");
  142.                 bUsePermissions = false;
  143.             }
  144.         }
  145.     }
  146.    
  147.     public boolean canWriteAdminChat(Player p) {
  148.         if(bUsePermissions)
  149.             if(Permissions.has(p, "AdminChat.everything") || Permissions.has(p, "AdminChat.use") || Permissions.has(p, "AdminChat.write"))
  150.                 return Permissions.has(p, "AdminChat.use");
  151.        
  152.         return p.isOp();
  153.     }
  154.    
  155.     public boolean canReceiveAdminChat(Player p) {
  156.         if(bUsePermissions)
  157.             if(Permissions.has(p, "AdminChat.everything") || Permissions.has(p, "AdminChat.use") || Permissions.has(p, "AdminChat.receive"))
  158.                     return true;
  159.        
  160.         return p.isOp();
  161.     }
  162.    
  163.     public boolean canModifyAdminChat(Player p) {
  164.         if(bUsePermissions)
  165.             if(Permissions.has(p, "AdminChat.everything") || Permissions.has(p, "AdminChat.modify"))
  166.                 return true;
  167.        
  168.         return p.isOp();
  169.     }
  170.    
  171.     public void AdminMessage(Player player, String Message) {
  172.         for(Player p : getServer().getOnlinePlayers()) {
  173.             if(canReceiveAdminChat(p)) {
  174.                 p.sendMessage("<" + player.getDisplayName() + "> " + MyColor + Channel + ":" + Message);
  175.                 log.info("<" + player.getDisplayName() + "> " + Channel + ":" + Message);
  176.             }
  177.         }
  178.     }
  179.    
  180.     //------------------------------------
  181.     // Color stuff
  182.     //------------------------------------
  183.    
  184.     public void loadSettings() {
  185.         (new File(directory)).mkdir();
  186.    
  187.         Settings = new AChatSettings(directory + "config.yml");
  188.         Color = Settings.getString("color");
  189.         Channel = Settings.getString("channel");
  190.        
  191.         if(Color.equalsIgnoreCase("red")) {
  192.             MyColor = ChatColor.RED;
  193.         } else if(Color.equalsIgnoreCase("darkred")) {
  194.             MyColor = ChatColor.DARK_RED;
  195.         } else if(Color.equalsIgnoreCase("yellow")) {
  196.             MyColor = ChatColor.YELLOW;
  197.         } else if(Color.equalsIgnoreCase("gold")) {
  198.             MyColor = ChatColor.GOLD;
  199.         } else if(Color.equalsIgnoreCase("green")) {
  200.             MyColor = ChatColor.GREEN;
  201.         } else if(Color.equalsIgnoreCase("darkgreen")) {
  202.             MyColor = ChatColor.DARK_GREEN;
  203.         } else if(Color.equalsIgnoreCase("aqua")) {
  204.             MyColor = ChatColor.AQUA;
  205.         } else if(Color.equalsIgnoreCase("darkaqua")) {
  206.             MyColor = ChatColor.DARK_AQUA;
  207.         } else if(Color.equalsIgnoreCase("blue")) {
  208.             MyColor = ChatColor.BLUE;
  209.         } else if(Color.equalsIgnoreCase("darkblue")) {
  210.             MyColor = ChatColor.DARK_BLUE;
  211.         } else if(Color.equalsIgnoreCase("lightpurple")) {
  212.             MyColor = ChatColor.LIGHT_PURPLE;
  213.         } else if(Color.equalsIgnoreCase("darkpurple")) {
  214.             MyColor = ChatColor.DARK_PURPLE;
  215.         } else if(Color.equalsIgnoreCase("gray")) {
  216.             MyColor = ChatColor.GRAY;
  217.         } else if(Color.equalsIgnoreCase("white")) {
  218.             MyColor = ChatColor.WHITE;
  219.         } else if(Color.equalsIgnoreCase("black")) {
  220.             MyColor = ChatColor.BLACK;
  221.         } else if(Color.equalsIgnoreCase("darkgray")) {
  222.             MyColor = ChatColor.DARK_GRAY;
  223.         } else {
  224.             log.info("[AdminChat] Unsupported color for " + Color + ", resetting color to default (yellow).");
  225.             MyColor = ChatColor.YELLOW;
  226.             Color = "yellow";
  227.             Settings.setString("color", "yellow");
  228.         }
  229.        
  230.         if(Channel == "") {
  231.             log.info("[AdminChat] No channel name was specified, resetting channel name to default ('Adminchat').");
  232.             Channel = "Adminchat";
  233.             Settings.setString("channel", "Adminchat");
  234.         }
  235.        
  236.         log.info("[AdminChat] Using color '" + Color + "' as for Adminchat.");
  237.         log.info("[AdminChat] Using channel name '" + Channel + "' for Adminchat.");
  238.     }
  239.    
  240.     public void setColor(Player sender, String Color) {
  241.         if(Color.equalsIgnoreCase("red")) {
  242.             MyColor = ChatColor.RED;
  243.         } else if(Color.equalsIgnoreCase("darkred")) {
  244.             MyColor = ChatColor.DARK_RED;
  245.         } else if(Color.equalsIgnoreCase("yellow")) {
  246.             MyColor = ChatColor.YELLOW;
  247.         } else if(Color.equalsIgnoreCase("gold")) {
  248.             MyColor = ChatColor.GOLD;
  249.         } else if(Color.equalsIgnoreCase("green")) {
  250.             MyColor = ChatColor.GREEN;
  251.         } else if(Color.equalsIgnoreCase("darkgreen")) {
  252.             MyColor = ChatColor.DARK_GREEN;
  253.         } else if(Color.equalsIgnoreCase("aqua")) {
  254.             MyColor = ChatColor.AQUA;
  255.         } else if(Color.equalsIgnoreCase("darkaqua")) {
  256.             MyColor = ChatColor.DARK_AQUA;
  257.         } else if(Color.equalsIgnoreCase("blue")) {
  258.             MyColor = ChatColor.BLUE;
  259.         } else if(Color.equalsIgnoreCase("darkblue")) {
  260.             MyColor = ChatColor.DARK_BLUE;
  261.         } else if(Color.equalsIgnoreCase("lightpurple")) {
  262.             MyColor = ChatColor.LIGHT_PURPLE;
  263.         } else if(Color.equalsIgnoreCase("darkpurple")) {
  264.             MyColor = ChatColor.DARK_PURPLE;
  265.         } else if(Color.equalsIgnoreCase("gray")) {
  266.             MyColor = ChatColor.GRAY;
  267.         } else if(Color.equalsIgnoreCase("white")) {
  268.             MyColor = ChatColor.WHITE;
  269.         } else if(Color.equalsIgnoreCase("black")) {
  270.             MyColor = ChatColor.BLACK;
  271.         } else if(Color.equalsIgnoreCase("darkgray")) {
  272.             MyColor = ChatColor.DARK_GRAY;
  273.         } else {
  274.             sender.sendMessage(ChatColor.RED + "The color you specified is unsupported!");
  275.             return;
  276.         }
  277.        
  278.         Settings.setString("color", Color);
  279.         sender.sendMessage(ChatColor.GREEN + "Successfully changed Adminchat color to " + MyColor + Color + ChatColor.GREEN + ".");
  280.     }
  281.    
  282.     //------------------------------------
  283.     // On/Off options
  284.     //------------------------------------
  285.    
  286.      public boolean isInAdminchat(Player player) {
  287.          return this.AdminchatUsers.containsKey(player);
  288.      }
  289.      
  290.      public void turnOn(Player player) {
  291.          if (!isInAdminchat(player)) {
  292.              this.AdminchatUsers.put(player, null);
  293.              player.sendMessage(ChatColor.GREEN + "You have switched to Adminchat chat mode");
  294.          } else {
  295.              player.sendMessage(ChatColor.RED + "You are already in Adminchat chat mode!");
  296.          }
  297.      }
  298.      
  299.      public void turnOff(Player player) {
  300.          if (isInAdminchat(player)) {
  301.              this.AdminchatUsers.remove(player);
  302.              player.sendMessage(ChatColor.GREEN + "You have switched to normal chat mode");
  303.          } else {
  304.              player.sendMessage(ChatColor.RED + "You are not in Adminchat chat mode!");
  305.          }
  306.      }
  307. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement