From 945ae71480c1810d3e59e8b8557371be2fb251ba Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 18 Feb 2012 21:09:18 +0000 Subject: [PATCH] Adding full keyword support for newb join message. Also adding {ADDRESS} and {USERNAME} as new keywords. --- .../com/earth2me/essentials/ISettings.java | 19 +++++----- .../src/com/earth2me/essentials/Settings.java | 32 ++++++++--------- .../textreader/KeywordReplacer.java | 8 ++++- .../textreader/SimpleTextInput.java | 35 +++++++++++++++++++ .../textreader/SimpleTextPager.java | 31 ++++++++++++++++ Essentials/src/info.txt | 3 ++ .../spawn/EssentialsSpawnPlayerListener.java | 7 +++- 7 files changed, 105 insertions(+), 30 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java create mode 100644 Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 560eb6f79..c29cc5b1a 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -2,6 +2,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; +import com.earth2me.essentials.textreader.IText; import java.text.MessageFormat; import java.util.List; import java.util.Map; @@ -14,9 +15,7 @@ public interface ISettings extends IConf { boolean areSignsDisabled(); - String format(String format, IUser user); - - String getAnnounceNewPlayerFormat(IUser user); + IText getAnnounceNewPlayerFormat(); boolean getAnnounceNewPlayers(); @@ -35,7 +34,7 @@ public interface ISettings extends IConf String getCurrencySymbol(); int getOversizedStackSize(); - + int getDefaultStackSize(); double getHealCooldown(); @@ -101,7 +100,7 @@ public interface ISettings extends IConf boolean isTradeInStacks(int id); List itemSpawnBlacklist(); - + List enabledSigns(); boolean permissionBasedItemSpawn(); @@ -143,18 +142,18 @@ public interface ISettings extends IConf public void setDebug(boolean debug); Set getNoGodWorlds(); - + boolean getUpdateBedAtDaytime(); - + boolean getRepairEnchanted(); - + boolean getIsWorldTeleportPermissions(); - + boolean registerBackInListener(); boolean getDisableItemPickupWhileAfk(); EventPriority getRespawnPriority(); - + long getTpaAcceptCancellation(); } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 6b81753b6..3307945f2 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -4,6 +4,10 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.signs.Signs; +import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.textreader.KeywordReplacer; +import com.earth2me.essentials.textreader.SimpleTextInput; +import com.earth2me.essentials.textreader.SimpleTextPager; import java.io.File; import java.text.MessageFormat; import java.util.*; @@ -324,15 +328,9 @@ public class Settings implements ISettings } @Override - public String getAnnounceNewPlayerFormat(IUser user) + public IText getAnnounceNewPlayerFormat() { - return format(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"), user); - } - - @Override - public String format(String format, IUser user) - { - return format.replace('&', '§').replace("§§", "&").replace("{PLAYER}", user.getDisplayName()).replace("{DISPLAYNAME}", user.getDisplayName()).replace("{GROUP}", user.getGroup()).replace("{USERNAME}", user.getName()).replace("{ADDRESS}", user.getAddress().toString()); + return new SimpleTextInput(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!")); } @Override @@ -362,19 +360,19 @@ public class Settings implements ISettings itemSpawnBl = getItemSpawnBlacklist(); chatFormats.clear(); } - private List itemSpawnBl = new ArrayList(); - + @Override public List itemSpawnBlacklist() { return itemSpawnBl; } - + private List getItemSpawnBlacklist() { final List epItemSpwn = new ArrayList(); - if (ess.getItemDb() == null) { + if (ess.getItemDb() == null) + { logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded."); return epItemSpwn; } @@ -384,7 +382,7 @@ public class Settings implements ISettings if (itemName.isEmpty()) { continue; - } + } try { final ItemStack iStack = ess.getItemDb().get(itemName); @@ -397,19 +395,18 @@ public class Settings implements ISettings } return epItemSpwn; } - private List enabledSigns = new ArrayList(); - + @Override public List enabledSigns() { return enabledSigns; } - + private List getEnabledSigns() { List newSigns = new ArrayList(); - + for (String signName : config.getStringList("enabledSigns", null)) { signName = signName.trim().toUpperCase(Locale.ENGLISH); @@ -604,7 +601,6 @@ public class Settings implements ISettings { return config.getBoolean("death-messages", true); } - private Set noGodWorlds = new HashSet(); @Override diff --git a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java index a7aab67ba..4c4e3364b 100644 --- a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java +++ b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java @@ -33,12 +33,14 @@ public class KeywordReplacer implements IText String displayName, ipAddress, balance, mails, world; String worlds, online, unique, playerlist, date, time; String worldTime12, worldTime24, worldDate, plugins; - String version; + String userName, address, version; if (sender instanceof Player) { final User user = ess.getUser(sender); displayName = user.getDisplayName(); + userName = user.getName(); ipAddress = user.getAddress().getAddress().toString(); + address = user.getAddress().toString(); balance = Double.toString(user.getMoney()); mails = Integer.toString(user.getMails().size()); world = user.getLocation().getWorld().getName(); @@ -107,8 +109,12 @@ public class KeywordReplacer implements IText for (int i = 0; i < input.getLines().size(); i++) { String line = input.getLines().get(i); + line = line.replace("{PLAYER}", displayName); + line = line.replace("{DISPLAYNAME}", displayName); + line = line.replace("{USERNAME}", displayName); line = line.replace("{IP}", ipAddress); + line = line.replace("{ADDRESS}", ipAddress); line = line.replace("{BALANCE}", balance); line = line.replace("{MAILS}", mails); line = line.replace("{WORLD}", world); diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java new file mode 100644 index 000000000..a9f9e1480 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java @@ -0,0 +1,35 @@ +package com.earth2me.essentials.textreader; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + + +public class SimpleTextInput implements IText +{ + private final transient List lines = new ArrayList(); + + public SimpleTextInput (final String input) { + lines.add(input); + } + + @Override + public List getLines() + { + return lines; + } + + @Override + public List getChapters() + { + return Collections.emptyList(); + } + + @Override + public Map getBookmarks() + { + return Collections.emptyMap(); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java new file mode 100644 index 000000000..ea1b787d5 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java @@ -0,0 +1,31 @@ +package com.earth2me.essentials.textreader; + +import org.bukkit.command.CommandSender; + + +public class SimpleTextPager +{ + private final transient IText text; + + public SimpleTextPager(final IText text) + { + this.text = text; + } + + public void showPage(final CommandSender sender) + { + for (String line : text.getLines()) + { + sender.sendMessage(line); + } + } + + public String getString(int line) + { + if (text.getLines().size() < line) + { + return null; + } + return text.getLines().get(line); + } +} diff --git a/Essentials/src/info.txt b/Essentials/src/info.txt index e05843dcb..694093bbf 100644 --- a/Essentials/src/info.txt +++ b/Essentials/src/info.txt @@ -25,7 +25,9 @@ Minecraft colors: #Tags PLAYER: {PLAYER} +USERNAME: {PLAYER} IP: {IP} +ADDRESS: {ADDRESS} BALANCE: {BALANCE} MAILS: {MAILS} WORLD: {WORLD} @@ -39,3 +41,4 @@ WORLDTIME12: {WORLDTIME12} WORLDTIME24: {WORLDTIME24} WORLDDATE: {WORLDDATE} PLUGINS: {PLUGINS} +VERSION: {VERSION} \ No newline at end of file diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index b68b4e350..083fd66a5 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -4,6 +4,9 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.OfflinePlayer; import com.earth2me.essentials.User; +import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.textreader.KeywordReplacer; +import com.earth2me.essentials.textreader.SimpleTextPager; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; @@ -73,7 +76,9 @@ public class EssentialsSpawnPlayerListener implements Listener if (ess.getSettings().getAnnounceNewPlayers()) { - ess.broadcastMessage(user, ess.getSettings().getAnnounceNewPlayerFormat(user)); + final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user, ess); + final SimpleTextPager pager = new SimpleTextPager(output); + ess.broadcastMessage(user, pager.getString(0)); } LOGGER.log(Level.FINE, "New player join");