diff --git a/.classpath b/.classpath index 2c705bb..85626a7 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,16 @@ - - + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 4508b67..689fdc5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.gmail.mikeundead PvPTitles - 1.2.9d + 1.3 ${project.name} diff --git a/src/main/java/com/gmail/mikeundead/CashCommand.java b/src/main/java/com/gmail/mikeundead/CashCommand.java new file mode 100644 index 0000000..d23b53d --- /dev/null +++ b/src/main/java/com/gmail/mikeundead/CashCommand.java @@ -0,0 +1,53 @@ +package com.gmail.mikeundead; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class CashCommand implements CommandExecutor { + private final DatabaseHandler databaseHandler; + + public CashCommand(final DatabaseHandler databaseHandler) { + this.databaseHandler = databaseHandler; + } + + @Override + public boolean onCommand(final CommandSender sender, final Command cmd, final String arg, final String[] args) { + Player player = null; + if (!(sender instanceof Player)) { + return true; + } + player = (Player) sender; + if (args.length == 1) { + this.databaseHandler.LoadPlayerData(player.getName()); + this.databaseHandler.LoadConfig(); + final int point = this.databaseHandler.getPoints(); + final String strnum = args[0]; + int num = 0; + try { + num = Integer.valueOf(strnum); + } catch (final Exception e) { + sender.sendMessage("§c参数必须为数字!"); + return true; + } + if (num > point) { + sender.sendMessage("§c您的点数不足以购买!"); + return true; + } + if (!databaseHandler.getCashList().containsKey(num)) { + sender.sendMessage("§c不存在当前的物品!"); + return true; + } + databaseHandler.setPoints(point - num); + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), databaseHandler.getCashList().get(num).replace("{player}", player.getName())); + databaseHandler.SaveConfig(); + sender.sendMessage("§a兑换成功!"); + } else { + player.sendMessage(ChatColor.RED + "不正确的参数!"); + } + return true; + } +} diff --git a/src/main/java/com/gmail/mikeundead/DatabaseHandler.java b/src/main/java/com/gmail/mikeundead/DatabaseHandler.java index 16f8f15..62bac4c 100644 --- a/src/main/java/com/gmail/mikeundead/DatabaseHandler.java +++ b/src/main/java/com/gmail/mikeundead/DatabaseHandler.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import org.bukkit.ChatColor; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -17,13 +18,16 @@ public class DatabaseHandler { private int Points; private final Map rankList; private final Map reqFame; + private final Map cashList; public ChatColor PrefixColor; + private String tag; private String ptag; public DatabaseHandler(final PvPTitles pvpTitles) { - this.rankList = new HashMap(); - this.reqFame = new HashMap(); + this.rankList = new HashMap<>(); + this.reqFame = new HashMap<>(); + this.cashList = new HashMap<>(); this.pvpTitles = pvpTitles; this.SaveConfig(); } @@ -52,6 +56,13 @@ public class DatabaseHandler { } } + /** + * @return cashList + */ + public Map getCashList() { + return cashList; + } + public int getFame() { return this.Fame; } @@ -81,6 +92,15 @@ public class DatabaseHandler { this.reqFame.put(i, derp.get(i)); } this.GetPrefixColor(config.getString("PrefixColor")); + final ConfigurationSection cash = config.getConfigurationSection("Cash"); + for (final String key : cash.getKeys(false)) { + try { + final Integer num = Integer.valueOf(key); + cashList.put(num, cash.getString(key)); + } catch (final Exception e) { + pvpTitles.getLogger().warning(key + "不是一个数字 已忽略!"); + } + } tag = config.getString("Tag"); if (configList.size() != derp.size()) { this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers."); @@ -138,6 +158,9 @@ public class DatabaseHandler { config.set("PrefixColor", "green"); config.set("RankNames", Arrays.asList(ranks)); config.set("ReqFame", Arrays.asList(reqfame)); + config.set("Cash.10", "give {player} 1 1"); + config.set("Cash.20", "give {player} 1 2"); + config.set("Cash.30", "give {player} 1 3"); try { config.save(file); } catch (final IOException e) { diff --git a/src/main/java/com/gmail/mikeundead/LeaderBoardCommand.java b/src/main/java/com/gmail/mikeundead/LeaderBoardCommand.java index 58bca68..9862765 100644 --- a/src/main/java/com/gmail/mikeundead/LeaderBoardCommand.java +++ b/src/main/java/com/gmail/mikeundead/LeaderBoardCommand.java @@ -32,7 +32,7 @@ public class LeaderBoardCommand implements CommandExecutor { this.LadderCmd(player); } if (args.length > 0) { - player.sendMessage(ChatColor.RED + "Too many arguments!"); + player.sendMessage(ChatColor.RED + "过多的参数!"); } return true; } @@ -40,7 +40,7 @@ public class LeaderBoardCommand implements CommandExecutor { private void LadderCmd(final Player player) { this.SetTopTenPlayers(player); - player.sendMessage(ChatColor.AQUA + "Ladder - Top Five Players"); + player.sendMessage(ChatColor.AQUA + "天梯 - 前五的玩家"); player.sendMessage(ChatColor.AQUA + "------------------------"); final NavigableMap sortedMap = this.RankedPlayers.descendingMap(); int number = 0; diff --git a/src/main/java/com/gmail/mikeundead/PvPTitles.java b/src/main/java/com/gmail/mikeundead/PvPTitles.java index 17ff889..f5d74e2 100644 --- a/src/main/java/com/gmail/mikeundead/PvPTitles.java +++ b/src/main/java/com/gmail/mikeundead/PvPTitles.java @@ -11,6 +11,7 @@ public class PvPTitles extends JavaPlugin { private Ranks ranks; private HandlePlayerPrefix handlePlayerPrefix; private LeaderBoardCommand ladder; + private CashCommand cash; @Override public void onEnable() { @@ -20,8 +21,10 @@ public class PvPTitles extends JavaPlugin { this.rankCommand = new RankCommand(this.databaseHandler, this.ranks); this.handlePlayerPrefix = new HandlePlayerPrefix(this.databaseHandler, this.ranks, this); this.ladder = new LeaderBoardCommand(this); + this.cash = new CashCommand(databaseHandler); getServer().getPluginManager().registerEvents(handlePlayerPrefix, this); getCommand("rank").setExecutor(this.rankCommand); getCommand("ladder").setExecutor(this.ladder); + getCommand("cash").setExecutor(this.cash); } } diff --git a/src/main/java/com/gmail/mikeundead/RankCommand.java b/src/main/java/com/gmail/mikeundead/RankCommand.java index 3a479ad..8cdbe77 100644 --- a/src/main/java/com/gmail/mikeundead/RankCommand.java +++ b/src/main/java/com/gmail/mikeundead/RankCommand.java @@ -25,7 +25,7 @@ public class RankCommand implements CommandExecutor { this.HandleRankCmd(player); } if (args.length > 0) { - player.sendMessage(ChatColor.RED + "Too many arguments!"); + player.sendMessage(ChatColor.RED + "过多的参数!"); } return true; } @@ -37,16 +37,19 @@ public class RankCommand implements CommandExecutor { final String rank = this.ranks.GetRank(fame); final int rankup = this.ranks.FameToRankUp(); final String tag = this.databaseHandler.getTag(); + final int point = this.databaseHandler.getPoints(); if (rank == "") { - player.sendMessage("Rank: none"); + player.sendMessage("等级: 无"); } else { - player.sendMessage("Rank: " + rank); + player.sendMessage("等级: " + rank); } + player.sendMessage(tag + ": " + fame); + player.sendMessage("点数: " + point); if (rankup == 999999) { - player.sendMessage("You are max ranked."); + player.sendMessage("您已到达最大等级."); } else { - player.sendMessage("Rankup: " + rankup); + player.sendMessage("下一级: " + rankup); } } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 979882b..defd3e4 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -34,7 +34,7 @@ ReqFame: - 36000 - 60000 - 100000 -ReqShengwang: +Cash: 5: give {player} 1 10: give {player} 1 30: give {player} 1 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5a607a7..643fe46 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,13 +1,16 @@ name: PvPTitles main: com.gmail.mikeundead.PvPTitles -version: 1.2.9d +version: ${project.version} softdepend: [Vault] commands: rank: - description: Shows your current stats + description: 显示状态 usage: /rank ladder: - description: Shows the top 5 players + description: 显示前五名玩家 + usage: /ladder + cash: + description: 兑换物品 usage: /ladder permissions: pvptitles.rank: