Cleanup broadcast, allow limited keywords in.

This commit is contained in:
KHobbits 2013-06-16 01:07:16 +01:00
parent f5986194aa
commit aa6d85eacc
11 changed files with 59 additions and 30 deletions

View file

@ -31,6 +31,9 @@ import com.earth2me.essentials.register.payment.Methods;
import com.earth2me.essentials.signs.SignBlockListener; import com.earth2me.essentials.signs.SignBlockListener;
import com.earth2me.essentials.signs.SignEntityListener; import com.earth2me.essentials.signs.SignEntityListener;
import com.earth2me.essentials.signs.SignPlayerListener; import com.earth2me.essentials.signs.SignPlayerListener;
import com.earth2me.essentials.textreader.IText;
import com.earth2me.essentials.textreader.KeywordReplacer;
import com.earth2me.essentials.textreader.SimpleTextInput;
import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.DateUtil;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
@ -613,6 +616,12 @@ public class Essentials extends JavaPlugin implements IEssentials
return paymentMethod; return paymentMethod;
} }
@Override
public int broadcastMessage(final String message)
{
return broadcastMessage(null, null, message);
}
@Override @Override
public int broadcastMessage(final IUser sender, final String message) public int broadcastMessage(final IUser sender, final String message)
{ {
@ -620,21 +629,20 @@ public class Essentials extends JavaPlugin implements IEssentials
} }
@Override @Override
public int broadcastMessage(final CommandSender sender, final String permission, final String message) public int broadcastMessage(final String permission, final String message)
{ {
return broadcastMessage(null, permission, message); return broadcastMessage(null, permission, message);
} }
private int broadcastMessage(final IUser sender, final String permission, final String message) private int broadcastMessage(final IUser sender, final String permission, final String message)
{ {
if (sender == null && permission == null)
{
return getServer().broadcastMessage(message);
}
if (sender != null && sender.isHidden()) if (sender != null && sender.isHidden())
{ {
return 0; return 0;
} }
final IText input = new SimpleTextInput(message);
final Player[] players = getServer().getOnlinePlayers(); final Player[] players = getServer().getOnlinePlayers();
for (Player player : players) for (Player player : players)
@ -643,7 +651,11 @@ public class Essentials extends JavaPlugin implements IEssentials
if ((permission == null && (sender == null || !user.isIgnoredPlayer(sender))) if ((permission == null && (sender == null || !user.isIgnoredPlayer(sender)))
|| (permission != null && user.isAuthorized(permission))) || (permission != null && user.isAuthorized(permission)))
{ {
player.sendMessage(message); final IText output = new KeywordReplacer(input, player, this, false);
for (String messageText : output.getLines())
{
player.sendMessage(messageText);
}
} }
} }

View file

@ -30,9 +30,11 @@ public interface IEssentials extends Plugin
World getWorld(String name); World getWorld(String name);
int broadcastMessage(String message);
int broadcastMessage(IUser sender, String message); int broadcastMessage(IUser sender, String message);
int broadcastMessage(CommandSender sender, String permission, String message); int broadcastMessage(String permission, String message);
ISettings getSettings(); ISettings getSettings();

View file

@ -75,6 +75,6 @@ public class Commandban extends EssentialsCommand
sender.sendMessage(_("userUnknown", user.getName())); sender.sendMessage(_("userUnknown", user.getName()));
} }
ess.broadcastMessage(sender, "essentials.ban.notify", _("playerBanned", senderName, user.getName(), banReason)); ess.broadcastMessage("essentials.ban.notify", _("playerBanned", senderName, user.getName(), banReason));
} }
} }

View file

@ -53,6 +53,6 @@ public class Commandbanip extends EssentialsCommand
ess.getServer().banIP(ipAddress); ess.getServer().banIP(ipAddress);
server.getLogger().log(Level.INFO, _("playerBanIpAddress", senderName, ipAddress)); server.getLogger().log(Level.INFO, _("playerBanIpAddress", senderName, ipAddress));
ess.broadcastMessage(sender, "essentials.ban.notify", _("playerBanIpAddress", senderName, ipAddress)); ess.broadcastMessage("essentials.ban.notify", _("playerBanIpAddress", senderName, ipAddress));
} }
} }

View file

@ -17,22 +17,22 @@ public class Commandbroadcast extends EssentialsCommand
@Override @Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{ {
if (args.length < 1) sendBroadcast(user.getDisplayName(), args);
{
throw new NotEnoughArgumentsException();
}
ess.broadcastMessage(null, _("broadcast", FormatUtil.replaceFormat(getFinalArg(args, 0)), user.getDisplayName()));
} }
@Override @Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
sendBroadcast(sender.getName(), args);
}
private void sendBroadcast(final String name, final String[] args) throws NotEnoughArgumentsException
{ {
if (args.length < 1) if (args.length < 1)
{ {
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
} }
ess.broadcastMessage(null, _("broadcast", FormatUtil.replaceFormat(getFinalArg(args, 0)), sender.getName())); ess.broadcastMessage(_("broadcast", FormatUtil.replaceFormat(getFinalArg(args, 0)), name));
} }
} }

View file

@ -47,6 +47,6 @@ public class Commandkick extends EssentialsCommand
final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME; final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, _("playerKicked", senderName, target.getName(), kickReason)); server.getLogger().log(Level.INFO, _("playerKicked", senderName, target.getName(), kickReason));
ess.broadcastMessage(sender, "essentials.kick.notify", _("playerKicked", senderName, target.getName(), kickReason)); ess.broadcastMessage("essentials.kick.notify", _("playerKicked", senderName, target.getName(), kickReason));
} }
} }

View file

@ -54,7 +54,7 @@ public class Commandmute extends EssentialsCommand
sender.sendMessage(_("mutedPlayer", player.getDisplayName())); sender.sendMessage(_("mutedPlayer", player.getDisplayName()));
player.sendMessage(_("playerMuted")); player.sendMessage(_("playerMuted"));
} }
ess.broadcastMessage(sender, "essentials.mute.notify", _("muteNotify", sender.getName(), player.getName())); ess.broadcastMessage("essentials.mute.notify", _("muteNotify", sender.getName(), player.getName()));
} }
else else
{ {

View file

@ -60,6 +60,6 @@ public class Commandtempban extends EssentialsCommand
user.setBanned(true); user.setBanned(true);
user.kickPlayer(banReason); user.kickPlayer(banReason);
ess.broadcastMessage(sender, "essentials.ban.notify", _("playerBanned", senderName, user.getName(), banReason)); ess.broadcastMessage("essentials.ban.notify", _("playerBanned", senderName, user.getName(), banReason));
} }
} }

View file

@ -46,6 +46,6 @@ public class Commandunban extends EssentialsCommand
final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME; final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, _("playerUnbanned", senderName, name)); server.getLogger().log(Level.INFO, _("playerUnbanned", senderName, name));
ess.broadcastMessage(sender, "essentials.ban.notify", _("playerUnbanned", senderName, name)); ess.broadcastMessage("essentials.ban.notify", _("playerUnbanned", senderName, name));
} }
} }

View file

@ -52,6 +52,6 @@ public class Commandunbanip extends EssentialsCommand
final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME; final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, _("playerUnbanIpAddress", senderName, ipAddress)); server.getLogger().log(Level.INFO, _("playerUnbanIpAddress", senderName, ipAddress));
ess.broadcastMessage(sender, "essentials.ban.notify", _("playerUnbanIpAddress", senderName, ipAddress)); ess.broadcastMessage("essentials.ban.notify", _("playerUnbanIpAddress", senderName, ipAddress));
} }
} }

View file

@ -20,12 +20,23 @@ public class KeywordReplacer implements IText
private final transient IText input; private final transient IText input;
private final transient List<String> replaced; private final transient List<String> replaced;
private final transient IEssentials ess; private final transient IEssentials ess;
private final transient boolean extended;
public KeywordReplacer(final IText input, final CommandSender sender, final IEssentials ess) public KeywordReplacer(final IText input, final CommandSender sender, final IEssentials ess)
{ {
this.input = input; this.input = input;
this.replaced = new ArrayList<String>(this.input.getLines().size()); this.replaced = new ArrayList<String>(this.input.getLines().size());
this.ess = ess; this.ess = ess;
this.extended = true;
replaceKeywords(sender);
}
public KeywordReplacer(final IText input, final CommandSender sender, final IEssentials ess, final boolean extended)
{
this.input = input;
this.replaced = new ArrayList<String>(this.input.getLines().size());
this.ess = ess;
this.extended = extended;
replaceKeywords(sender); replaceKeywords(sender);
} }
@ -34,15 +45,13 @@ public class KeywordReplacer implements IText
String displayName, ipAddress, balance, mails, world; String displayName, ipAddress, balance, mails, world;
String worlds, online, unique, playerlist, date, time; String worlds, online, unique, playerlist, date, time;
String worldTime12, worldTime24, worldDate, plugins; String worldTime12, worldTime24, worldDate, plugins;
String userName, address, version; String userName, version;
if (sender instanceof Player) if (sender instanceof Player)
{ {
final User user = ess.getUser(sender); final User user = ess.getUser(sender);
user.setDisplayNick(); user.setDisplayNick();
displayName = user.getDisplayName(); displayName = user.getDisplayName();
userName = user.getName();
ipAddress = user.getAddress() == null || user.getAddress().getAddress() == null ? "" : user.getAddress().getAddress().toString(); ipAddress = user.getAddress() == null || user.getAddress().getAddress() == null ? "" : user.getAddress().getAddress().toString();
address = user.getAddress() == null ? "" : user.getAddress().toString();
balance = NumberUtil.displayCurrency(user.getMoney(), ess); balance = NumberUtil.displayCurrency(user.getMoney(), ess);
mails = Integer.toString(user.getMails().size()); mails = Integer.toString(user.getMails().size());
world = user.getLocation() == null || user.getLocation().getWorld() == null ? "" : user.getLocation().getWorld().getName(); world = user.getLocation() == null || user.getLocation().getWorld() == null ? "" : user.getLocation().getWorld().getName();
@ -55,6 +64,7 @@ public class KeywordReplacer implements IText
displayName = ipAddress = balance = mails = world = worldTime12 = worldTime24 = worldDate = ""; displayName = ipAddress = balance = mails = world = worldTime12 = worldTime24 = worldDate = "";
} }
userName = sender.getName();
int playerHidden = 0; int playerHidden = 0;
for (Player p : ess.getServer().getOnlinePlayers()) for (Player p : ess.getServer().getOnlinePlayers())
{ {
@ -114,9 +124,7 @@ public class KeywordReplacer implements IText
line = line.replace("{PLAYER}", displayName); line = line.replace("{PLAYER}", displayName);
line = line.replace("{DISPLAYNAME}", displayName); line = line.replace("{DISPLAYNAME}", displayName);
line = line.replace("{USERNAME}", displayName); line = line.replace("{USERNAME}", userName);
line = line.replace("{IP}", ipAddress);
line = line.replace("{ADDRESS}", ipAddress);
line = line.replace("{BALANCE}", balance); line = line.replace("{BALANCE}", balance);
line = line.replace("{MAILS}", mails); line = line.replace("{MAILS}", mails);
line = line.replace("{WORLD}", world); line = line.replace("{WORLD}", world);
@ -129,8 +137,15 @@ public class KeywordReplacer implements IText
line = line.replace("{WORLDTIME12}", worldTime12); line = line.replace("{WORLDTIME12}", worldTime12);
line = line.replace("{WORLDTIME24}", worldTime24); line = line.replace("{WORLDTIME24}", worldTime24);
line = line.replace("{WORLDDATE}", worldDate); line = line.replace("{WORLDDATE}", worldDate);
line = line.replace("{PLUGINS}", plugins);
line = line.replace("{VERSION}", version); if (extended)
{
line = line.replace("{IP}", ipAddress);
line = line.replace("{ADDRESS}", ipAddress);
line = line.replace("{PLUGINS}", plugins);
line = line.replace("{VERSION}", version);
}
replaced.add(line); replaced.add(line);
} }
} }