From fb194e4a8ee4001814aab83181cd5ccb2e28765f Mon Sep 17 00:00:00 2001 From: thmsdy Date: Sat, 2 Oct 2021 14:59:26 -0500 Subject: [PATCH] Add plain broadcast --- dependency-reduced-pom.xml | 2 +- pom.xml | 2 +- src/main/java/com/fpghoti/fpchatx/FPChat.java | 6 ++ .../commands/PlainBroadcastCommand.java | 71 ++++++++++++++++ .../commands/PlainBroadcastPlayerCommand.java | 82 +++++++++++++++++++ .../commands/PlainBroadcastStaffCommand.java | 73 +++++++++++++++++ .../fpchatx/listener/PlayerListener.java | 20 ----- .../fpchatx/permission/Permission.java | 16 ++++ .../com/fpghoti/fpchatx/player/FPlayer.java | 15 ---- src/main/resources/plugin.yml | 12 +++ 10 files changed, 262 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastCommand.java create mode 100644 src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastPlayerCommand.java create mode 100644 src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastStaffCommand.java diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 684b9dd..0e37d29 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.fpghoti FPChat - 1.1.6 + 1.1.7 src/main/java diff --git a/pom.xml b/pom.xml index 8a34b46..b64c218 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.fpghoti FPChat - 1.1.6 + 1.1.7 spigot-repo diff --git a/src/main/java/com/fpghoti/fpchatx/FPChat.java b/src/main/java/com/fpghoti/fpchatx/FPChat.java index 7410e26..a327c7a 100644 --- a/src/main/java/com/fpghoti/fpchatx/FPChat.java +++ b/src/main/java/com/fpghoti/fpchatx/FPChat.java @@ -36,6 +36,9 @@ import com.fpghoti.fpchatx.command.commands.LeaveCommand; import com.fpghoti.fpchatx.command.commands.ChannelsCommand; import com.fpghoti.fpchatx.command.commands.CreateCommand; import com.fpghoti.fpchatx.command.commands.MessageCommand; +import com.fpghoti.fpchatx.command.commands.PlainBroadcastCommand; +import com.fpghoti.fpchatx.command.commands.PlainBroadcastPlayerCommand; +import com.fpghoti.fpchatx.command.commands.PlainBroadcastStaffCommand; import com.fpghoti.fpchatx.command.commands.PrefixCommand; import com.fpghoti.fpchatx.command.commands.ReloadCommand; import com.fpghoti.fpchatx.command.commands.ReplyCommand; @@ -176,6 +179,9 @@ public class FPChat extends JavaPlugin { Commands.register(new RevokeBadgeCommand(this)); Commands.register(new GiveBadgeCommand(this)); Commands.register(new PrefixCommand(this)); + Commands.register(new PlainBroadcastCommand(this)); + Commands.register(new PlainBroadcastPlayerCommand(this)); + Commands.register(new PlainBroadcastStaffCommand(this)); } public MainConfig getMainConfig() { diff --git a/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastCommand.java b/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastCommand.java new file mode 100644 index 0000000..1c14742 --- /dev/null +++ b/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastCommand.java @@ -0,0 +1,71 @@ +package com.fpghoti.fpchatx.command.commands; + +import java.util.logging.Level; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.fpghoti.fpchatx.FPChat; +import com.fpghoti.fpchatx.chat.BubbleCode; +import com.fpghoti.fpchatx.chat.HexColor; +import com.fpghoti.fpchatx.command.Commands; +import com.fpghoti.fpchatx.permission.Permission; +import com.fpghoti.fpchatx.player.FPlayer; + + +public class PlainBroadcastCommand extends Commands { + + public PlainBroadcastCommand(FPChat plugin) { + super(plugin); + name = "Plain Broadcast"; + description = "Sends a raw text broadcast to all players"; + syntax = ChatColor.GRAY + "/plainbroadcast " + ChatColor.GOLD + ""; + minArgs = 0; + maxArgs = 100000; + labels.add("plainbroadcast"); + labels.add("fpc plainbroadcast"); + labels.add("fpchat plainbroadcast"); + labels.add("ch plainbroadcast"); + labels.add("pbc"); + labels.add("fpc pbc"); + labels.add("fpchat pbc"); + labels.add("ch pbc"); + labels.add("gbc"); + labels.add("fpc gbc"); + labels.add("fpchat gbc"); + labels.add("ch gbc"); + } + + @Override + public void execute(CommandSender sender, String[] args) { + if(sender instanceof Player) { + FPlayer p = FPlayer.getPlayer((Player)sender); + if(!Permission.canPlainBroadcast(p)) { + FPlayer.errMsg(p, Permission.noPerm); + return; + } + } + + String msg = ""; + + if(args.length > 0) { + msg = args[0]; + } + + if(args.length > 1) { + for(int i = 1; i < args.length; i++) { + msg = msg + " " + args[i]; + } + } + + msg = BubbleCode.bubblecode(true, ChatColor.translateAlternateColorCodes('&', HexColor.formatHex(msg))); + + for(FPlayer p : FPlayer.getPlayers()) { + p.sendMessage(msg); + } + + plugin.log(Level.INFO, "Plain Broadcast: " + msg); + } + +} diff --git a/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastPlayerCommand.java b/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastPlayerCommand.java new file mode 100644 index 0000000..a3340ac --- /dev/null +++ b/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastPlayerCommand.java @@ -0,0 +1,82 @@ +package com.fpghoti.fpchatx.command.commands; + +import java.util.logging.Level; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.fpghoti.fpchatx.FPChat; +import com.fpghoti.fpchatx.chat.BubbleCode; +import com.fpghoti.fpchatx.chat.HexColor; +import com.fpghoti.fpchatx.command.Commands; +import com.fpghoti.fpchatx.permission.Permission; +import com.fpghoti.fpchatx.player.FPlayer; + + +public class PlainBroadcastPlayerCommand extends Commands { + + public PlainBroadcastPlayerCommand(FPChat plugin) { + super(plugin); + name = "Plain Broadcast Player"; + description = "Sends a raw text broadcast to specified player"; + syntax = ChatColor.GRAY + "/plainbroadcastplayer " + ChatColor.GOLD + " "; + minArgs = 1; + maxArgs = 100000; + labels.add("plainbroadcast player"); + labels.add("fpc plainbroadcastplayer"); + labels.add("fpchat plainbroadcastplayer"); + labels.add("ch plainbroadcastplayer"); + labels.add("pbcp"); + labels.add("fpc pbcp"); + labels.add("fpchat pbcp"); + labels.add("ch pbcp"); + labels.add("gbcp"); + labels.add("fpc gbcp"); + labels.add("fpchat gbcp"); + labels.add("ch gbcp"); + } + + @Override + public void execute(CommandSender sender, String[] args) { + if(sender instanceof Player) { + FPlayer p = FPlayer.getPlayer((Player)sender); + if(!Permission.canPlainBroadcast(p)) { + FPlayer.errMsg(p, Permission.noPerm); + return; + } + } + + String msg = ""; + + if(args.length > 1) { + msg = args[1]; + } + + if(args.length > 2) { + for(int i = 2; i < args.length; i++) { + msg = msg + " " + args[i]; + } + } + + msg = BubbleCode.bubblecode(true, ChatColor.translateAlternateColorCodes('&', HexColor.formatHex(msg))); + + for(FPlayer p : FPlayer.getPlayers()) { + if(p.getName().toLowerCase().equals(args[0].toLowerCase())) { + p.sendMessage(msg); + plugin.log(Level.INFO, "Plain Broadcast to " + p.getName() + ": "+ msg); + return; + } + } + + if(sender instanceof Player) { + FPlayer p = FPlayer.getPlayer((Player)sender); + FPlayer.errMsg(p, args[0] + " is not an online player"); + }else { + plugin.log(Level.INFO, args[0] + " is not an online player"); + } + + + } + +} diff --git a/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastStaffCommand.java b/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastStaffCommand.java new file mode 100644 index 0000000..e520c84 --- /dev/null +++ b/src/main/java/com/fpghoti/fpchatx/command/commands/PlainBroadcastStaffCommand.java @@ -0,0 +1,73 @@ +package com.fpghoti.fpchatx.command.commands; + +import java.util.logging.Level; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.fpghoti.fpchatx.FPChat; +import com.fpghoti.fpchatx.chat.BubbleCode; +import com.fpghoti.fpchatx.chat.HexColor; +import com.fpghoti.fpchatx.command.Commands; +import com.fpghoti.fpchatx.permission.Permission; +import com.fpghoti.fpchatx.player.FPlayer; + + +public class PlainBroadcastStaffCommand extends Commands { + + public PlainBroadcastStaffCommand(FPChat plugin) { + super(plugin); + name = "Plain Broadcast Staff"; + description = "Sends a raw text broadcast to all players with permissions fpchat.playerbroadcast.hearstaff and gbc.staff"; + syntax = ChatColor.GRAY + "/plainbroadcaststaff " + ChatColor.GOLD + ""; + minArgs = 0; + maxArgs = 100000; + labels.add("plainbroadcaststaff"); + labels.add("fpc plainbroadcaststaff"); + labels.add("fpchat plainbroadcaststaff"); + labels.add("ch plainbroadcaststaff"); + labels.add("pbcs"); + labels.add("fpc pbcs"); + labels.add("fpchat pbcs"); + labels.add("ch pbcs"); + labels.add("gbcs"); + labels.add("fpc gbcs"); + labels.add("fpchat gbcs"); + labels.add("ch gbcs"); + } + + @Override + public void execute(CommandSender sender, String[] args) { + if(sender instanceof Player) { + FPlayer p = FPlayer.getPlayer((Player)sender); + if(!Permission.canPlainBroadcast(p)) { + FPlayer.errMsg(p, Permission.noPerm); + return; + } + } + + String msg = ""; + + if(args.length > 0) { + msg = args[0]; + } + + if(args.length > 1) { + for(int i = 1; i < args.length; i++) { + msg = msg + " " + args[i]; + } + } + + msg = BubbleCode.bubblecode(true, ChatColor.translateAlternateColorCodes('&', HexColor.formatHex(msg))); + + for(FPlayer p : FPlayer.getPlayers()) { + if(Permission.canHearPlainStaffBroadcast(p)) { + p.sendMessage(msg); + } + } + + plugin.log(Level.INFO, "Plain Broadcast Staff: " + msg); + } + +} diff --git a/src/main/java/com/fpghoti/fpchatx/listener/PlayerListener.java b/src/main/java/com/fpghoti/fpchatx/listener/PlayerListener.java index 948c1e5..0b0249e 100644 --- a/src/main/java/com/fpghoti/fpchatx/listener/PlayerListener.java +++ b/src/main/java/com/fpghoti/fpchatx/listener/PlayerListener.java @@ -20,26 +20,6 @@ public class PlayerListener implements Listener { private boolean enabled = true; - // @EventHandler (priority = EventPriority.HIGH) - // public void onPlayerChat(AsyncPlayerChatEvent event) { - // if(enabled) { - // if (event.isCancelled()) { - // return; - // } - // Player sender = event.getPlayer(); - // FPlayer p = FPlayer.getPlayer(sender); - // if(p.toTalk() && p.getTalkChannel() != null) { - // p.setTalk(false); - // ChatChannel c = p.getTalkChannel(); - // p.setTalkChannel(null); - // p.chat(c, event.getMessage()); - // }else { - // p.chat(event.getMessage()); - // } - // event.setCancelled(true); - // } - // } - @EventHandler (priority = EventPriority.HIGH) public void onPlayerChat(AsyncPlayerChatEvent event) { if(enabled) { diff --git a/src/main/java/com/fpghoti/fpchatx/permission/Permission.java b/src/main/java/com/fpghoti/fpchatx/permission/Permission.java index 7adbd4a..6e93713 100644 --- a/src/main/java/com/fpghoti/fpchatx/permission/Permission.java +++ b/src/main/java/com/fpghoti/fpchatx/permission/Permission.java @@ -275,4 +275,20 @@ public class Permission { return false; } + public static boolean canPlainBroadcast(FPlayer p) { + return p.hasPermission("fpchat.plainbroadcast") || p.hasPermission("fpchat.plainbroadcast.*"); + } + + public static boolean canPlainPlayerBroadcast(FPlayer p) { + return p.hasPermission("fpchat.plainbroadcast.player") || p.hasPermission("fpchat.plainbroadcast.*"); + } + + public static boolean canPlainStaffBroadcast(FPlayer p) { + return p.hasPermission("fpchat.plainbroadcast.staff") || p.hasPermission("fpchat.plainbroadcast.*"); + } + + public static boolean canHearPlainStaffBroadcast(FPlayer p) { + return p.hasPermission("fpchat.plainbroadcast.hearstaff") || p.hasPermission("fpchat.plainbroadcast.*"); + } + } diff --git a/src/main/java/com/fpghoti/fpchatx/player/FPlayer.java b/src/main/java/com/fpghoti/fpchatx/player/FPlayer.java index 9a67a1c..5ff3935 100644 --- a/src/main/java/com/fpghoti/fpchatx/player/FPlayer.java +++ b/src/main/java/com/fpghoti/fpchatx/player/FPlayer.java @@ -440,21 +440,6 @@ public class FPlayer { public void chat(ChatChannel channel, String msg) { channel.sendMessage(formatChat(channel,msg), this); } - -// public void chat(String msg) { -// if(toShout) { -// toShout = false; -// ChatChannel.getShout().sendMessage(formatChat(ChatChannel.getShout(),msg), this); -// if(FPChat.getPlugin().getMainConfig().shoutCooldownEnabled()) { -// shoutCooldown = FPChat.getPlugin().getMainConfig().getShoutSeconds(); -// } -// }else if(tempspeak) { -// getPrimaryTempChannel().sendMessage(formatChat(getPrimaryTempChannel(),msg), this); -// }else { -// getPrimaryChannel().sendMessage(formatChat(msg), this); -// } -// } - public void chat(String msg) { if(toShout) { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 548d823..73d3772 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -69,4 +69,16 @@ commands: aliases: [tk] description: Set main channel usage: / channel + plainbroadcast: + aliases: [pbc,gbc] + description: Sends a plain broadcast to all players. + usage: / message + plainbroadcastplayer: + aliases: [pbcp,gbcp] + description: Sends a plain broadcast to a player. + usage: / player message + plainbroadcaststaff: + aliases: [pbcs,gbcs] + description: Sends a plain broadcast to a player with permissions fpchat.playerbroadcast.hearstaff and gbc.staff. + usage: / message