From 6a9027da6d7cd2c2c0c35f0163dc0207720708e6 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 4 Mar 2012 20:06:50 +0000 Subject: Adding starter/newbie kit to EssentialsSpawn Optimization to EssentialsSpawn join event. --- .../src/com/earth2me/essentials/IEssentials.java | 1 + .../src/com/earth2me/essentials/ISettings.java | 6 +++-- Essentials/src/com/earth2me/essentials/Kit.java | 5 ++-- .../src/com/earth2me/essentials/Settings.java | 6 +++++ .../earth2me/essentials/commands/Commandkit.java | 4 +-- Essentials/src/config.yml | 5 ++++ .../spawn/EssentialsSpawnPlayerListener.java | 31 +++++++++++++++++----- 7 files changed, 45 insertions(+), 13 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java index 20c6c300e..6b820440a 100644 --- a/Essentials/src/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/com/earth2me/essentials/IEssentials.java @@ -9,6 +9,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitScheduler; + /** * @deprecated This will be moved to the api package soon */ diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 6186736b4..ec3941cd1 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -20,6 +20,8 @@ public interface ISettings extends IConf boolean getAnnounceNewPlayers(); + String getNewPlayerKit(); + String getBackupCommand(); long getBackupInterval(); @@ -115,11 +117,11 @@ public interface ISettings extends IConf boolean warnOnSmite(); double getMaxMoney(); - + double getMinMoney(); boolean isEcoLogEnabled(); - + boolean isEcoLogUpdateEnabled(); boolean removeGodOnDisconnect(); diff --git a/Essentials/src/com/earth2me/essentials/Kit.java b/Essentials/src/com/earth2me/essentials/Kit.java index 47e5e6ac2..cf39997ea 100644 --- a/Essentials/src/com/earth2me/essentials/Kit.java +++ b/Essentials/src/com/earth2me/essentials/Kit.java @@ -63,10 +63,11 @@ public class Kit public static List getItems(final User user, final Map kit) throws Exception { - if (kit == null) { + if (kit == null) + { throw new Exception(_("kitError2")); } - + try { return (List)kit.get("items"); diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index e3992e52c..c9232f107 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -351,6 +351,12 @@ public class Settings implements ISettings return new SimpleTextInput(Util.replaceColor(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"))); } + @Override + public String getNewPlayerKit() + { + return config.getString("newbies.kit", ""); + } + @Override public String getNewbieSpawn() { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java index aee0af910..67f0fafd0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java @@ -38,7 +38,7 @@ public class Commandkit extends EssentialsCommand { throw new Exception(_("noKitPermission", "essentials.kit." + kitName)); } - + final List items = Kit.getItems(user, kit); Kit.checkTime(user, kitName, kit); @@ -47,7 +47,7 @@ public class Commandkit extends EssentialsCommand charge.isAffordableFor(user); Kit.expandItems(ess, user, items); - + charge.charge(user); user.sendMessage(_("kitGive", kitName)); diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 81d911c82..11bc38329 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -547,6 +547,11 @@ newbies: # When we spawn for the first time, which spawnpoint do we use? # Set to "none" if you want to use the spawn point of the world. spawnpoint: newbies + + # Do we want to give users anything on first join? Set to '' to disable + # This kit will be given reguardless of cost, and permissions. + #kit: '' + kit: tools # Set this to lowest, if you want Multiverse to handle the respawning # Set this to high, if you want EssentialsSpawn to handle the respawning diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index c7a17845a..ba71c176f 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -1,12 +1,13 @@ package com.earth2me.essentials.spawn; +import com.earth2me.essentials.*; 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.List; +import java.util.Locale; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; @@ -67,13 +68,14 @@ public class EssentialsSpawnPlayerListener implements Listener public void onPlayerJoin(final PlayerJoinEvent event) { - final User user = ess.getUser(event.getPlayer()); - - if (user.hasPlayedBefore()) + if (event.getPlayer().hasPlayedBefore()) { LOGGER.log(Level.FINE, "Old player join"); return; } + + final User user = ess.getUser(event.getPlayer()); + if (!"none".equalsIgnoreCase(ess.getSettings().getNewbieSpawn())) { ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user), 1L); @@ -86,6 +88,21 @@ public class EssentialsSpawnPlayerListener implements Listener ess.broadcastMessage(user, pager.getString(0)); } + final String kitName = ess.getSettings().getNewPlayerKit(); + if (!kitName.isEmpty()) + { + try + { + final Map kit = ess.getSettings().getKit(kitName.toLowerCase(Locale.ENGLISH)); + final List items = Kit.getItems(user, kit); + Kit.expandItems(ess, user, items); + } + catch (Exception ex) + { + LOGGER.log(Level.WARNING, ex.getMessage()); + } + } + LOGGER.log(Level.FINE, "New player join"); } @@ -109,7 +126,7 @@ public class EssentialsSpawnPlayerListener implements Listener try { - Location spawn = spawns.getSpawn(ess.getSettings().getNewbieSpawn()); + final Location spawn = spawns.getSpawn(ess.getSettings().getNewbieSpawn()); if (spawn != null) { user.getTeleport().now(spawn, false, TeleportCause.PLUGIN); -- cgit v1.2.3