Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //================================================================
- // AdminChat v1.3 - Build #531
- // March, 2011 - Coded by Infernus, many thanks to MadMonkeyCo!
- // Thanks to loads of ideas from BindMind!
- //================================================================
- package me.Infernus.AdminChat;
- import com.nijiko.permissions.PermissionHandler;
- import com.nijikokun.bukkit.Permissions.Permissions;
- import java.io.File;
- import java.util.HashMap;
- import java.util.logging.Logger;
- import org.bukkit.ChatColor;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.Event;
- import org.bukkit.event.player.PlayerChatEvent;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.plugin.PluginManager;
- import org.bukkit.plugin.java.JavaPlugin;
- public class AChatPlugin extends JavaPlugin {
- private final AChatPlayerListener playerListener = new AChatPlayerListener(this);
- public final HashMap<Player, String> AdminchatUsers = new HashMap<Player, String>();
- private static final Logger log = Logger.getLogger("Minecraft");
- public static String directory = "AdminChat" + File.separator;
- public PermissionHandler Permissions;
- public static AChatSettings Settings;
- public org.bukkit.ChatColor MyColor;
- private String Color, Channel;
- private boolean bUsePermissions;
- //------------------------------------
- // Startup
- //------------------------------------
- public void onEnable() {
- PluginManager PM = getServer().getPluginManager();
- PM.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Highest, this);
- log.info("[AdminChat] Version 1.3 is enabled.");
- loadSettings();
- setupPermissions();
- }
- public void onDisable() {
- log.info("[AdminChat] Is DISABLED!");
- }
- //------------------------------------
- // Commands
- //------------------------------------
- public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
- String Message = "";
- if(commandLabel.equalsIgnoreCase("a")) {
- if(args.length == 0) {
- return true;
- }
- if(args.length == 1) {
- if(args[0].equalsIgnoreCase("on")) {
- if(canWriteAdminChat((Player)sender)) {
- turnOn((Player)sender);
- return true;
- } else {
- sender.sendMessage(ChatColor.RED + "You are not allowed to use " + MyColor + Channel + ChatColor.RED + "!");
- return true;
- }
- } else if(args[0].equalsIgnoreCase("off")) {
- if(canWriteAdminChat((Player)sender)) {
- turnOff((Player)sender);
- return true;
- } else {
- sender.sendMessage(ChatColor.RED + "You are not allowed to use "+ MyColor + Channel + ChatColor.RED + "!");
- return true;
- }
- }
- } else if(args.length == 2) {
- if(args[0].equalsIgnoreCase("setColor")) {
- if(canModifyAdminChat((Player)sender)) {
- setColor((Player)sender, args[1]);
- return true;
- } else {
- sender.sendMessage(ChatColor.RED + "You are not allowed to modify "+ MyColor + Channel + ChatColor.RED + "!");
- return true;
- }
- }
- }
- if(args[0].equalsIgnoreCase("setChannelName")) {
- if(canModifyAdminChat((Player)sender)) {
- Settings.setString("channel", args[1]);
- Channel = args[1];
- sender.sendMessage(ChatColor.GREEN + "Successfully changed channel name to " + args[1]);
- return true;
- } else {
- sender.sendMessage(ChatColor.RED + "You are not allowed to modify "+ MyColor + Channel + ChatColor.RED + "!");
- return true;
- }
- }
- //Since it got here, it didn't contain any commands.
- if(!canWriteAdminChat((Player)sender)) {
- sender.sendMessage(ChatColor.RED + "You are not allowed to use "+ MyColor + Channel + ChatColor.RED + "!");
- return true;
- }
- for(int i = 0; i<args.length; i++) {
- Message += " " + args[i];
- }
- //AdminMessage((Player)sender, Message);
- PlayerChatEvent event = new PlayerChatEvent(Event.Type.PLAYER_CHAT, (Player)sender, Message);
- getServer().getPluginManager().callEvent(event);
- if (!isInAdminchat((Player)sender)) {
- String msg = String.format(event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage());
- AdminMessage((Player)sender, msg);
- }
- return true;
- }
- return false;
- }
- //------------------------------------
- // Permissions stuff
- //------------------------------------
- private void setupPermissions() {
- Plugin test = this.getServer().getPluginManager().getPlugin("Permissions");
- if (this.Permissions == null) {
- if (test != null) {
- this.Permissions = ((Permissions)test).getHandler();
- bUsePermissions = true;
- } else {
- log.info("[AdminChat] Permissions not running, all OPs will be able to send and receive " + Channel + " messages.");
- bUsePermissions = false;
- }
- }
- }
- public boolean canWriteAdminChat(Player p) {
- if(bUsePermissions)
- if(Permissions.has(p, "AdminChat.everything") || Permissions.has(p, "AdminChat.use") || Permissions.has(p, "AdminChat.write"))
- return Permissions.has(p, "AdminChat.use");
- return p.isOp();
- }
- public boolean canReceiveAdminChat(Player p) {
- if(bUsePermissions)
- if(Permissions.has(p, "AdminChat.everything") || Permissions.has(p, "AdminChat.use") || Permissions.has(p, "AdminChat.receive"))
- return true;
- return p.isOp();
- }
- public boolean canModifyAdminChat(Player p) {
- if(bUsePermissions)
- if(Permissions.has(p, "AdminChat.everything") || Permissions.has(p, "AdminChat.modify"))
- return true;
- return p.isOp();
- }
- public void AdminMessage(Player player, String Message) {
- for(Player p : getServer().getOnlinePlayers()) {
- if(canReceiveAdminChat(p)) {
- p.sendMessage("<" + player.getDisplayName() + "> " + MyColor + Channel + ":" + Message);
- log.info("<" + player.getDisplayName() + "> " + Channel + ":" + Message);
- }
- }
- }
- //------------------------------------
- // Color stuff
- //------------------------------------
- public void loadSettings() {
- (new File(directory)).mkdir();
- Settings = new AChatSettings(directory + "config.yml");
- Color = Settings.getString("color");
- Channel = Settings.getString("channel");
- if(Color.equalsIgnoreCase("red")) {
- MyColor = ChatColor.RED;
- } else if(Color.equalsIgnoreCase("darkred")) {
- MyColor = ChatColor.DARK_RED;
- } else if(Color.equalsIgnoreCase("yellow")) {
- MyColor = ChatColor.YELLOW;
- } else if(Color.equalsIgnoreCase("gold")) {
- MyColor = ChatColor.GOLD;
- } else if(Color.equalsIgnoreCase("green")) {
- MyColor = ChatColor.GREEN;
- } else if(Color.equalsIgnoreCase("darkgreen")) {
- MyColor = ChatColor.DARK_GREEN;
- } else if(Color.equalsIgnoreCase("aqua")) {
- MyColor = ChatColor.AQUA;
- } else if(Color.equalsIgnoreCase("darkaqua")) {
- MyColor = ChatColor.DARK_AQUA;
- } else if(Color.equalsIgnoreCase("blue")) {
- MyColor = ChatColor.BLUE;
- } else if(Color.equalsIgnoreCase("darkblue")) {
- MyColor = ChatColor.DARK_BLUE;
- } else if(Color.equalsIgnoreCase("lightpurple")) {
- MyColor = ChatColor.LIGHT_PURPLE;
- } else if(Color.equalsIgnoreCase("darkpurple")) {
- MyColor = ChatColor.DARK_PURPLE;
- } else if(Color.equalsIgnoreCase("gray")) {
- MyColor = ChatColor.GRAY;
- } else if(Color.equalsIgnoreCase("white")) {
- MyColor = ChatColor.WHITE;
- } else if(Color.equalsIgnoreCase("black")) {
- MyColor = ChatColor.BLACK;
- } else if(Color.equalsIgnoreCase("darkgray")) {
- MyColor = ChatColor.DARK_GRAY;
- } else {
- log.info("[AdminChat] Unsupported color for " + Color + ", resetting color to default (yellow).");
- MyColor = ChatColor.YELLOW;
- Color = "yellow";
- Settings.setString("color", "yellow");
- }
- if(Channel == "") {
- log.info("[AdminChat] No channel name was specified, resetting channel name to default ('Adminchat').");
- Channel = "Adminchat";
- Settings.setString("channel", "Adminchat");
- }
- log.info("[AdminChat] Using color '" + Color + "' as for Adminchat.");
- log.info("[AdminChat] Using channel name '" + Channel + "' for Adminchat.");
- }
- public void setColor(Player sender, String Color) {
- if(Color.equalsIgnoreCase("red")) {
- MyColor = ChatColor.RED;
- } else if(Color.equalsIgnoreCase("darkred")) {
- MyColor = ChatColor.DARK_RED;
- } else if(Color.equalsIgnoreCase("yellow")) {
- MyColor = ChatColor.YELLOW;
- } else if(Color.equalsIgnoreCase("gold")) {
- MyColor = ChatColor.GOLD;
- } else if(Color.equalsIgnoreCase("green")) {
- MyColor = ChatColor.GREEN;
- } else if(Color.equalsIgnoreCase("darkgreen")) {
- MyColor = ChatColor.DARK_GREEN;
- } else if(Color.equalsIgnoreCase("aqua")) {
- MyColor = ChatColor.AQUA;
- } else if(Color.equalsIgnoreCase("darkaqua")) {
- MyColor = ChatColor.DARK_AQUA;
- } else if(Color.equalsIgnoreCase("blue")) {
- MyColor = ChatColor.BLUE;
- } else if(Color.equalsIgnoreCase("darkblue")) {
- MyColor = ChatColor.DARK_BLUE;
- } else if(Color.equalsIgnoreCase("lightpurple")) {
- MyColor = ChatColor.LIGHT_PURPLE;
- } else if(Color.equalsIgnoreCase("darkpurple")) {
- MyColor = ChatColor.DARK_PURPLE;
- } else if(Color.equalsIgnoreCase("gray")) {
- MyColor = ChatColor.GRAY;
- } else if(Color.equalsIgnoreCase("white")) {
- MyColor = ChatColor.WHITE;
- } else if(Color.equalsIgnoreCase("black")) {
- MyColor = ChatColor.BLACK;
- } else if(Color.equalsIgnoreCase("darkgray")) {
- MyColor = ChatColor.DARK_GRAY;
- } else {
- sender.sendMessage(ChatColor.RED + "The color you specified is unsupported!");
- return;
- }
- Settings.setString("color", Color);
- sender.sendMessage(ChatColor.GREEN + "Successfully changed Adminchat color to " + MyColor + Color + ChatColor.GREEN + ".");
- }
- //------------------------------------
- // On/Off options
- //------------------------------------
- public boolean isInAdminchat(Player player) {
- return this.AdminchatUsers.containsKey(player);
- }
- public void turnOn(Player player) {
- if (!isInAdminchat(player)) {
- this.AdminchatUsers.put(player, null);
- player.sendMessage(ChatColor.GREEN + "You have switched to Adminchat chat mode");
- } else {
- player.sendMessage(ChatColor.RED + "You are already in Adminchat chat mode!");
- }
- }
- public void turnOff(Player player) {
- if (isInAdminchat(player)) {
- this.AdminchatUsers.remove(player);
- player.sendMessage(ChatColor.GREEN + "You have switched to normal chat mode");
- } else {
- player.sendMessage(ChatColor.RED + "You are not in Adminchat chat mode!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement