SHOW:
|
|
- or go back to the newest paste.
| 1 | package test; | |
| 2 | ||
| 3 | import org.bukkit.Bukkit; | |
| 4 | import org.bukkit.ChatColor; | |
| 5 | import org.bukkit.OfflinePlayer; | |
| 6 | import org.bukkit.command.Command; | |
| 7 | import org.bukkit.command.CommandSender; | |
| 8 | import org.bukkit.command.ConsoleCommandSender; | |
| 9 | import org.bukkit.configuration.Configuration; | |
| 10 | import org.bukkit.configuration.ConfigurationSection; | |
| 11 | import org.bukkit.entity.Player; | |
| 12 | import org.bukkit.event.EventHandler; | |
| 13 | import org.bukkit.event.Listener; | |
| 14 | import org.bukkit.event.player.PlayerJoinEvent; | |
| 15 | import org.bukkit.plugin.java.JavaPlugin; | |
| 16 | ||
| 17 | import com.gmail.nossr50.datatypes.skills.SkillType; | |
| 18 | import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent; | |
| 19 | ||
| 20 | public class TestPlugin extends JavaPlugin implements Listener {
| |
| 21 | boolean configProblems = false; | |
| 22 | ||
| 23 | @Override | |
| 24 | - | validateConfig(getConfig()); |
| 24 | + | |
| 25 | saveDefaultConfig(); | |
| 26 | getServer().getPluginManager().registerEvents(this, this); | |
| 27 | - | private void validateConfig(ConfigurationSection config) {
|
| 27 | + | |
| 28 | if (validateConfig(getConfig())) {
| |
| 29 | getLogger().warning("### Some mistakes were found in the configuration file. ###");
| |
| 30 | getLogger().warning("### Those players' perks may not function correctly. ###");
| |
| 31 | configProblems = true; | |
| 32 | } | |
| 33 | } | |
| 34 | ||
| 35 | private boolean validateConfig(ConfigurationSection config) {
| |
| 36 | configProblems = false; | |
| 37 | ConfigurationSection playersSection = config.getConfigurationSection("players");
| |
| 38 | for (String plName : playersSection.getKeys(false)) {
| |
| 39 | OfflinePlayer op = getServer().getOfflinePlayer(plName); | |
| 40 | if (!op.hasPlayedBefore()) {
| |
| 41 | getLogger().warning(plName + " has not played on this server, but they are in the config file!"); | |
| 42 | configProblems = true; | |
| 43 | } | |
| 44 | ConfigurationSection subSection = playersSection.getConfigurationSection(plName); | |
| 45 | for (String skName : subSection.getKeys(false)) {
| |
| 46 | SkillType skilltype = SkillType.valueOf(skName); | |
| 47 | if (skilltype == null) {
| |
| 48 | - | sender.sendMessage(ChatColor.AQUA + "Reloaded mcMMO XP Perks config"); |
| 48 | + | |
| 49 | configProblems = true; | |
| 50 | } else if (!skilltype.name().toLowerCase().equals(skName)) {
| |
| 51 | getLogger().warning("Please use '" + skilltype.name().toLowerCase() + "' instead of '" + skName + "'.");
| |
| 52 | configProblems = true; | |
| 53 | } | |
| 54 | } | |
| 55 | } | |
| 56 | return configProblems; | |
| 57 | } | |
| 58 | ||
| 59 | public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
| |
| 60 | this.reloadConfig(); | |
| 61 | if (validateConfig(getConfig())) {
| |
| 62 | String message = ChatColor.AQUA + "Reloaded mcMMO XP Perks config, " + ChatColor.RED + "but some problems were found."; | |
| 63 | if (!(sender instanceof ConsoleCommandSender)) {
| |
| 64 | sender.sendMessage(message); | |
| 65 | sender.sendMessage(ChatColor.RED + "Please review the issues printed in the server console."); | |
| 66 | Bukkit.getConsoleSender().sendMessage(message); | |
| 67 | } else {
| |
| 68 | sender.sendMessage(message); | |
| 69 | sender.sendMessage(ChatColor.RED + "Please review the issues printed above."); | |
| 70 | } | |
| 71 | } else {
| |
| 72 | String message = ChatColor.AQUA + "Reloaded mcMMO XP Perks config. " + ChatColor.GREEN + "No issues found."; | |
| 73 | if (!(sender instanceof ConsoleCommandSender)) {
| |
| 74 | sender.sendMessage(message); | |
| 75 | } | |
| 76 | Bukkit.getConsoleSender().sendMessage(message); | |
| 77 | } | |
| 78 | return true; | |
| 79 | } | |
| 80 | ||
| 81 | @EventHandler | |
| 82 | public void onJoin(PlayerJoinEvent event) {
| |
| 83 | if (configProblems && event.getPlayer().isOp()) {
| |
| 84 | event.getPlayer().sendMessage(ChatColor.RED + "Some problems were found in the " + ChatColor.DARK_AQUA + "CustomMcmmoXpPerks" + ChatColor.RED + " configuration file."); | |
| 85 | event.getPlayer().sendMessage(ChatColor.RED + "Please resolve the issues and run /mcxpperks reload to reload the configuration."); | |
| 86 | } | |
| 87 | } | |
| 88 | ||
| 89 | @EventHandler | |
| 90 | public void onXp(McMMOPlayerXpGainEvent event) {
| |
| 91 | event.setRawXpGained((float) (event.getRawXpGained() * getMultiplier(event.getPlayer(), event.getSkill()))); | |
| 92 | } | |
| 93 | ||
| 94 | private double getMultiplier(Player player, SkillType skill) {
| |
| 95 | return getConfig().getDouble("players." + player.getName() + "." + skill.name().toLowerCase(), 1D);
| |
| 96 | } | |
| 97 | } |