From 7f461910aa60c3223be6fc0fbd653fc3480a0144 Mon Sep 17 00:00:00 2001 From: Zrips Date: Thu, 31 Aug 2017 14:11:50 +0300 Subject: [PATCH] Jobs price editor ingame --- src/main/java/com/gamingmesh/jobs/Jobs.java | 24 +++ .../jobs/commands/list/editjobs.java | 165 +++++++++--------- .../jobs/config/LanguageManager.java | 30 +++- .../com/gamingmesh/jobs/stuff/PageInfo.java | 80 +++++++++ 4 files changed, 210 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/gamingmesh/jobs/stuff/PageInfo.java diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index 85057bb7..d128163b 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -1256,4 +1256,28 @@ public class Jobs extends JavaPlugin { } else ((CommandSender) sender).sendMessage(ChatColor.translateAlternateColorCodes('&', msg)); } + + public void ShowPagination(CommandSender sender, int pageCount, int CurrentPage, String cmd) { + if (!(sender instanceof Player)) + return; + if (!cmd.startsWith("/")) + cmd = "/" + cmd; +// String separator = Jobs.getLanguage().getMessage("command.help.output.fliperSimbols"); + + if (pageCount == 1) + return; + + int NextPage = CurrentPage + 1; + NextPage = CurrentPage < pageCount ? NextPage : CurrentPage; + int Prevpage = CurrentPage - 1; + Prevpage = CurrentPage > 1 ? Prevpage : CurrentPage; + + RawMessage rm = new RawMessage(); + rm.add((CurrentPage > 1 ? Jobs.getLanguage().getMessage("command.help.output.prev") : Jobs.getLanguage().getMessage("command.help.output.prevOff")), CurrentPage > 1 ? "<<<" : null, CurrentPage > 1 + ? cmd + " " + Prevpage : null); + rm.add(pageCount > CurrentPage ? Jobs.getLanguage().getMessage("command.help.output.next") : Jobs.getLanguage().getMessage("command.help.output.nextOff"), pageCount > CurrentPage ? ">>>" : null, + pageCount > CurrentPage ? cmd + " " + NextPage : null); + if (pageCount != 0) + rm.show(sender); + } } diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/editjobs.java b/src/main/java/com/gamingmesh/jobs/commands/list/editjobs.java index 2d7c1347..06676380 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/editjobs.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/editjobs.java @@ -18,12 +18,12 @@ import com.gamingmesh.jobs.container.CurrencyType; import com.gamingmesh.jobs.container.Job; import com.gamingmesh.jobs.container.JobInfo; import com.gamingmesh.jobs.stuff.ChatColor; +import com.gamingmesh.jobs.stuff.PageInfo; import com.gamingmesh.jobs.stuff.RawMessage; import com.gamingmesh.jobs.stuff.Util; public class editjobs implements Cmd { - // [jobName] [add/del/edit] @Override @JobCommand(475) public boolean perform(Jobs plugin, CommandSender sender, String[] args) { @@ -38,89 +38,83 @@ public class editjobs implements Cmd { switch (args[0]) { case "list": - if (args.length == 1) { - showPath(player, null, null, null); - for (Job one : Jobs.getJobs()) { RawMessage rm = new RawMessage(); - rm.add(" -> [" + one.getChatColor() + one.getName() + "&r]", one.getName(), "jobs editjobs list " + one.getName()); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.jobs", "%jobname%", one.getChatColor() + one.getName()), one.getName(), "jobs editjobs list " + one.getName()); rm.show(sender); } Util.getJobsEditorMap().remove(player.getUniqueId()); - return true; } if (args.length == 2) { - Job job = Jobs.getJob(args[1]); - if (job == null) return false; - showPath(player, job, null, null); - for (ActionType oneI : ActionType.values()) { - List action = job.getJobInfo(oneI); - if (action == null || action.isEmpty()) continue; - RawMessage rm = new RawMessage(); - rm.add(" -> &e[&6" + oneI.getName() + "&e]", oneI.getName(), "jobs editjobs list " + job.getName() + " " + oneI.getName()); - rm.show(sender); - - } - Util.getJobsEditorMap().remove(player.getUniqueId()); - - return true; - } - - if (args.length == 3) { - - Job job = Jobs.getJob(args[1]); - - if (job == null) - return false; - - ActionType actionT = ActionType.getByName(args[2]); - - if (actionT == null) - return false; - - List action = job.getJobInfo(actionT); - - if (action == null || action.isEmpty()) - return false; - - showPath(player, job, actionT, null); - - for (JobInfo one : action) { - - String materialName = one.getName().toLowerCase().replace('_', ' '); - materialName = Character.toUpperCase(materialName.charAt(0)) + materialName.substring(1); - materialName = Jobs.getNameTranslatorManager().Translate(materialName, one); - materialName = org.bukkit.ChatColor.translateAlternateColorCodes('&', materialName); - - RawMessage rm = new RawMessage(); - rm.add(" -> &e[&6" + materialName + "&e] ", one.getName(), "jobs editjobs list " + job.getName() + " " + actionT.getName() + " " + one.getName()); - rm.add("&c[X]", "Remove", "jobs editjobs remove " + job.getName() + " " + actionT.getName() + " " + one.getName()); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.actions", "%actionname%", oneI.getName()), oneI.getName(), "jobs editjobs list " + job.getName() + " " + oneI.getName() + + " 1"); rm.show(sender); } - - RawMessage rm = new RawMessage(); - rm.add(" -> &e[&2+&e]", "&eAdd new", "jobs editjobs add " + job.getName() + " " + actionT.getName()); - rm.show(sender); Util.getJobsEditorMap().remove(player.getUniqueId()); - return true; } if (args.length == 4) { + Integer page = null; + try { + page = Integer.parseInt(args[3]); + } catch (Exception e) { + } + + if (page != null) { + Job job = Jobs.getJob(args[1]); + if (job == null) + return false; + ActionType actionT = ActionType.getByName(args[2]); + if (actionT == null) + return false; + List action = job.getJobInfo(actionT); + if (action == null || action.isEmpty()) + return false; + showPath(player, job, actionT, null); + PageInfo pi = new PageInfo(15, action.size(), page); + for (JobInfo one : action) { + + if (!pi.isEntryOk()) + continue; + + String materialName = one.getName().toLowerCase().replace('_', ' '); + materialName = Character.toUpperCase(materialName.charAt(0)) + materialName.substring(1); + materialName = Jobs.getNameTranslatorManager().Translate(materialName, one); + materialName = org.bukkit.ChatColor.translateAlternateColorCodes('&', materialName); + + RawMessage rm = new RawMessage(); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.material", "%materialname%", materialName), one.getName(), "jobs editjobs list " + job.getName() + " " + actionT + .getName() + " " + one.getName()); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.materialRemove"), "&cRemove", "jobs editjobs remove " + job.getName() + " " + actionT.getName() + " " + one + .getName()); + rm.show(sender); + } + + RawMessage rm = new RawMessage(); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.materialAdd"), "&eAdd new", "jobs editjobs add " + job.getName() + " " + actionT.getName()); + rm.show(sender); + Util.getJobsEditorMap().remove(player.getUniqueId()); + + Jobs.getInstance().ShowPagination(sender, pi.getTotalPages(), page, "jobs editjobs list " + job.getName() + " " + actionT.getName()); + + return true; + } + Job job = Jobs.getJob(args[1]); if (job == null) @@ -151,16 +145,19 @@ public class editjobs implements Cmd { showPath(player, job, actionT, jInfo); RawMessage rm = new RawMessage(); - rm.add(" -> &eMoney: &6" + jInfo.getBaseIncome(), jInfo.getBaseIncome() + "", "jobs editjobs modify " + job.getName() + " " + actionT.getName() + " " + jInfo.getName() + " money "); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.money", "%amount%", jInfo.getBaseIncome()), "&e" + jInfo.getBaseIncome(), "jobs editjobs modify " + job.getName() + " " + + actionT.getName() + " " + jInfo.getName() + " money "); rm.show(sender); rm = new RawMessage(); - rm.add(" -> &ePoints: &6" + jInfo.getBasePoints(), jInfo.getBasePoints() + "", "jobs editjobs modify " + job.getName() + " " + actionT.getName() + " " + jInfo.getName() + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.points", "%amount%", jInfo.getBasePoints()), "&e" + jInfo.getBasePoints(), "jobs editjobs modify " + job.getName() + " " + + actionT.getName() + " " + jInfo.getName() + " points "); rm.show(sender); rm = new RawMessage(); - rm.add(" -> &eExp: &6" + jInfo.getBaseXp(), jInfo.getBaseXp() + "", "jobs editjobs modify " + job.getName() + " " + actionT.getName() + " " + jInfo.getName() + " exp "); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.exp", "%amount%", jInfo.getBaseXp()), "&e" + jInfo.getBaseXp(), "jobs editjobs modify " + job.getName() + " " + actionT + .getName() + " " + jInfo.getName() + " exp "); rm.show(sender); Util.getJobsEditorMap().remove(player.getUniqueId()); @@ -205,7 +202,7 @@ public class editjobs implements Cmd { Util.getJobsEditorMap().put(player.getUniqueId(), "jobs editjobs modify " + job.getName() + " " + actionT.getName() + " " + jInfo.getName() + " " + type.getName() + " "); - sender.sendMessage(ChatColor.GOLD + "Enter new value"); + sender.sendMessage(Jobs.getLanguage().getMessage("command.editjobs.help.modify.newValue")); return true; } @@ -252,8 +249,6 @@ public class editjobs implements Cmd { return false; } - sender.sendMessage("Set new value " + job.getName() + " " + actionT.getName() + " " + jInfo.getName() + " " + type.getName() + " " + value); - String sType = null; switch (type) { case EXP: @@ -310,7 +305,6 @@ public class editjobs implements Cmd { } if (jInfo == null) { - player.sendMessage("Cant find this one"); return true; } @@ -318,7 +312,8 @@ public class editjobs implements Cmd { Jobs.getConfigManager().changeJobsSettings(jInfo.getConfigPath(), null); - sender.sendMessage("Removed"); + player.performCommand("jobs editjobs list " + job.getName() + " " + actionT.getName() + " 1"); + Util.getJobsEditorMap().remove(player.getUniqueId()); return true; @@ -345,12 +340,14 @@ public class editjobs implements Cmd { return false; RawMessage rm = new RawMessage(); - rm.add("&eEnter new name or press"); - rm.add(" &6HAND ", "Press to grab info from item in your hand", "jobs editjobs add " + job.getName() + " " + actionT.getName() + " hand"); - rm.add("&eor"); - rm.add(" &6LOOKING AT", "Press to grab info from block you are looking", "jobs editjobs add " + job.getName() + " " + actionT.getName() + " looking"); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.modify.enter")); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.modify.hand"), Jobs.getLanguage().getMessage("command.editjobs.help.modify.handHover"), "jobs editjobs add " + job.getName() + + " " + actionT.getName() + " hand"); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.modify.or")); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.modify.look"), Jobs.getLanguage().getMessage("command.editjobs.help.modify.lookHover"), "jobs editjobs add " + job.getName() + + " " + actionT.getName() + " looking"); rm.show(sender); - + Util.getJobsEditorMap().put(player.getUniqueId(), "jobs editjobs add " + job.getName() + " " + actionT.getName() + " "); return true; @@ -414,8 +411,8 @@ public class editjobs implements Cmd { if (matId != null) { material = Material.getMaterial(matId); if (material != null) { - player.sendMessage("Job " + job.getName() + " " + actionT.getName() + " is using ID: " + key + "!"); - player.sendMessage("Please use the Material name instead: " + material.toString() + "!"); + player.sendMessage(ChatColor.GOLD + "Job " + job.getName() + " " + actionT.getName() + " is using ID: " + key + "!"); + player.sendMessage(ChatColor.GOLD + "Please use the Material name instead: " + material.toString() + "!"); } } } @@ -446,16 +443,16 @@ public class editjobs implements Cmd { if (actionT == ActionType.BREAK || actionT == ActionType.PLACE) { if (!material.isBlock()) { - player.sendMessage("Job " + job.getName() + " has an invalid " + actionT.getName() + " type property: " + key + player.sendMessage(ChatColor.GOLD + "Job " + job.getName() + " has an invalid " + actionT.getName() + " type property: " + key + "! Material must be a block!"); break; } } if (material == Material.REDSTONE_ORE && actionT == ActionType.BREAK) { - player.sendMessage("Job " + job.getName() + " is using REDSTONE_ORE instead of GLOWING_REDSTONE_ORE."); - player.sendMessage("Automatically changing block to GLOWING_REDSTONE_ORE. Please update your configuration."); - player.sendMessage("In vanilla minecraft, REDSTONE_ORE changes to GLOWING_REDSTONE_ORE when interacted with."); - player.sendMessage("In the future, Jobs using REDSTONE_ORE instead of GLOWING_REDSTONE_ORE may fail to work correctly."); + player.sendMessage(ChatColor.GOLD + "Job " + job.getName() + " is using REDSTONE_ORE instead of GLOWING_REDSTONE_ORE."); + player.sendMessage(ChatColor.GOLD + "Automatically changing block to GLOWING_REDSTONE_ORE. Please update your configuration."); + player.sendMessage(ChatColor.GOLD + "In vanilla minecraft, REDSTONE_ORE changes to GLOWING_REDSTONE_ORE when interacted with."); + player.sendMessage(ChatColor.GOLD + "In the future, Jobs using REDSTONE_ORE instead of GLOWING_REDSTONE_ORE may fail to work correctly."); material = Material.GLOWING_REDSTONE_ORE; } @@ -532,7 +529,7 @@ public class editjobs implements Cmd { try { amount = Integer.valueOf(myKey); } catch (NumberFormatException e) { - player.sendMessage("Job " + job.getName() + " has an invalid " + actionT.getName() + " type property: " + key + "!"); + player.sendMessage(ChatColor.GOLD + "Job " + job.getName() + " has an invalid " + actionT.getName() + " type property: " + key + "!"); break; } Jobs.getExplore().setExploreEnabled(); @@ -542,7 +539,7 @@ public class editjobs implements Cmd { } if (type == null) { - player.sendMessage("Job " + job.getName() + " has an invalid " + actionT.getName() + " type property: " + key + "!"); + player.sendMessage(ChatColor.GOLD + "Job " + job.getName() + " has an invalid " + actionT.getName() + " type property: " + key + "!"); break; } @@ -571,7 +568,7 @@ public class editjobs implements Cmd { Jobs.getConfigManager().changeJobsSettings(jInfo.getConfigPath() + "/income", 0); Jobs.getConfigManager().changeJobsSettings(jInfo.getConfigPath() + "/points", 0); Jobs.getConfigManager().changeJobsSettings(jInfo.getConfigPath() + "/experience", 0); - + Util.getJobsEditorMap().remove(player.getUniqueId()); return true; @@ -583,22 +580,22 @@ public class editjobs implements Cmd { return true; } - private void showPath(Player player, Job job, ActionType action, JobInfo jInfo) { + private static void showPath(Player player, Job job, ActionType action, JobInfo jInfo) { RawMessage rm = new RawMessage(); - rm.add("&eJobs:", "&eJob list", "jobs editjobs"); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.job"), "&eJob list", "jobs editjobs"); rm.show(player); if (job != null) { rm = new RawMessage(); - rm.add(" -> [" + job.getChatColor() + job.getName() + "&r]", job.getName(), "jobs editjobs list " + job.getName()); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.jobs", "%jobname%", job.getChatColor() + job.getName()), job.getName(), "jobs editjobs list " + job.getName()); rm.show(player); } if (action != null && job != null) { rm = new RawMessage(); - rm.add(" -> &e[&6" + action.getName() + "&e]", action.getName(), "jobs editjobs list " + job.getName() + " " + action.getName()); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.actions", "%actionname%", action.getName()), action.getName(), "jobs editjobs list " + job.getName() + " " + action.getName() + " 1"); rm.show(player); } @@ -610,7 +607,7 @@ public class editjobs implements Cmd { materialName = Jobs.getNameTranslatorManager().Translate(materialName, jInfo); materialName = org.bukkit.ChatColor.translateAlternateColorCodes('&', materialName); - rm.add(" -> &e[&6" + jInfo.getName() + "&e]", jInfo.getName(), "jobs editjobs list " + job.getName() + " " + action.getName() + " " + materialName); + rm.add(Jobs.getLanguage().getMessage("command.editjobs.help.list.material", "%materialname%", jInfo.getName()), jInfo.getName(), "jobs editjobs list " + job.getName() + " " + action.getName() + " " + materialName); rm.show(player); } } diff --git a/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java b/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java index b9bbca01..39f28796 100644 --- a/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/LanguageManager.java @@ -5,8 +5,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Locale; - import org.bukkit.configuration.file.YamlConfiguration; import com.gamingmesh.jobs.Jobs; import com.gamingmesh.jobs.container.LocaleReader; @@ -58,13 +56,13 @@ public class LanguageManager { for (String lang : languages) { File f = new File(plugin.getDataFolder(), "locale" + File.separator + "messages_" + lang + ".yml"); - + // Fail safe if file get corrupted and being created with corrupted data, we need to recreate it if ((f.length() / 1024) > 1024) { f.delete(); f = new File(plugin.getDataFolder(), "locale" + File.separator + "messages_" + lang + ".yml"); } - + YamlConfiguration config = YamlConfiguration.loadConfiguration(f); CommentedYamlConfiguration writer = new CommentedYamlConfiguration(); @@ -169,8 +167,11 @@ public class LanguageManager { c.get("command.help.output.usage", "Usage: %usage%"); c.get("command.help.output.title", "&e-------&e ======= &6Jobs &e======= &e-------"); c.get("command.help.output.page", "&e-----&e ====== Page &6[1] &eof &6[2] &e====== &e-----"); + c.get("command.help.output.fliperSimbols", "&e----------"); c.get("command.help.output.prev", "&e--- <<<<< &6Prev page &e|"); + c.get("command.help.output.prevOff", "&7--- <<<<< Prev page &e|"); c.get("command.help.output.next", "&e|&6 Next Page &e>>>> ---"); + c.get("command.help.output.nextOff", "&e|&7 Next Page >>>> ---"); c.get("command.points.help.info", "Shows how much points player have."); c.get("command.points.help.args", "[playername]"); @@ -185,6 +186,25 @@ public class LanguageManager { c.get("command.editpoints.output.add", "&ePlayer (&6%playername%&e) got aditinal &6%amount% &epoints. Now he has &6%total%"); c.get("command.editpoints.output.take", "&ePlayer (&6%playername%&e) lost &6%amount% &epoints. Now he has &6%total%"); + c.get("command.editjobs.help.info", "Edit current jobs."); + c.get("command.editjobs.help.args", ""); + c.get("command.editjobs.help.list.job", "&eJobs:"); + c.get("command.editjobs.help.list.jobs", " -> [&e%jobname%&r]"); + c.get("command.editjobs.help.list.actions", " -> [&e%actionname%&r]"); + c.get("command.editjobs.help.list.material", " -> [&e%materialname%&r] "); + c.get("command.editjobs.help.list.materialRemove", "&c[X]"); + c.get("command.editjobs.help.list.materialAdd", " -> &e[&2+&e]"); + c.get("command.editjobs.help.list.money", " -> &eMoney: &6%amount%"); + c.get("command.editjobs.help.list.exp", " -> &ePoints: &6%amount%"); + c.get("command.editjobs.help.list.points", " -> &eExp: &6%amount%"); + c.get("command.editjobs.help.modify.newValue", "&eEnter new value"); + c.get("command.editjobs.help.modify.enter", "&eEnter new name or press "); + c.get("command.editjobs.help.modify.hand", "&6HAND "); + c.get("command.editjobs.help.modify.handHover", "&6Press to grab info from item in your hand"); + c.get("command.editjobs.help.modify.or", "&eor "); + c.get("command.editjobs.help.modify.look", "&6LOOKING AT"); + c.get("command.editjobs.help.modify.lookHover", "&6Press to grab info from block you are looking"); + c.get("command.blockinfo.help.info", "Shows block information you looking at."); c.get("command.blockinfo.help.args", ""); c.get("command.blockinfo.output.name", " &eBlock name: &6%blockname%"); @@ -415,7 +435,7 @@ public class LanguageManager { c.get("command.promote.help.args", "[playername] [jobname] [levels]"); Jobs.getGCManager().commandArgs.put("promote", Arrays.asList("[playername]", "[jobname]", "[levels]")); c.get("command.promote.output.target", "You have been promoted %levelsgained% levels in %jobname%."); - + c.get("command.exp.help.info", "Change the player exp for job."); c.get("command.exp.help.args", "[playername] [jobname] [set/add/take] [amount]"); Jobs.getGCManager().commandArgs.put("exp", Arrays.asList("[playername]", "[jobname]", "take%%set%%add")); diff --git a/src/main/java/com/gamingmesh/jobs/stuff/PageInfo.java b/src/main/java/com/gamingmesh/jobs/stuff/PageInfo.java new file mode 100644 index 00000000..a874c3c2 --- /dev/null +++ b/src/main/java/com/gamingmesh/jobs/stuff/PageInfo.java @@ -0,0 +1,80 @@ +package com.gamingmesh.jobs.stuff; + +public class PageInfo { + + private int totalEntries = 0; + private int totalPages = 0; + private int start = 0; + private int end = 0; + private int currentPage = 0; + + private int currentEntry = 0; + + private int perPage = 6; + + public PageInfo(int perPage, int totalEntries, int currentPage) { + this.perPage = perPage; + this.totalEntries = totalEntries; + this.currentPage = currentPage; + calculate(); + } + + public int getPositionForOutput() { + return currentEntry; + } + + public int getPositionForOutput(int place) { + return this.start + place + 1; + } + + private void calculate() { + this.start = (this.currentPage - 1) * this.perPage; + this.end = this.start + this.perPage - 1; + if (this.end + 1 > this.totalEntries) + this.end = this.totalEntries - 1; + this.totalPages = (int) Math.ceil((double) this.totalEntries / (double) this.perPage); + } + + public boolean isInRange(int place) { + if (place >= start && place <= end) + return true; + return false; + } + + public boolean isEntryOk() { + currentEntry++; + return currentEntry - 1 >= start && currentEntry - 1 <= end; + } + + public boolean isPageOk() { + return isPageOk(this.currentPage); + } + + public boolean isPageOk(int page) { + if (this.totalPages < page) + return false; + if (page < 1) + return false; + return true; + } + + public int getStart() { + return start; + } + + public int getEnd() { + return end; + } + + public int getTotalPages() { + return totalPages; + } + + public int getCurrentPage() { + return currentPage; + } + + public int getTotalEntries() { + return totalEntries; + } +}