From 8809a33c4e63b4a67db7604854c3416451903e57 Mon Sep 17 00:00:00 2001 From: Zrips Date: Mon, 22 Jan 2018 13:12:23 +0200 Subject: [PATCH] Options options options options for furnace and brewing stands defaults values and save behavior option to remove different percentage after player reaches max level --- src/main/java/com/gamingmesh/jobs/Jobs.java | 5 +- .../gamingmesh/jobs/config/ConfigManager.java | 4 +- .../jobs/config/GeneralConfigManager.java | 46 +++- .../gamingmesh/jobs/config/ShopManager.java | 2 +- .../gamingmesh/jobs/container/JobsPlayer.java | 21 +- .../java/com/gamingmesh/jobs/dao/JobsDAO.java | 2 +- .../jobs/stuff/FurnaceBrewingHandling.java | 201 +++++++++--------- 7 files changed, 171 insertions(+), 110 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index 5197546b..f3147802 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -782,7 +782,6 @@ public class Jobs extends JavaPlugin { YmlMaker jobShopItems = new YmlMaker(this, "shopItems.yml"); jobShopItems.saveDefaultConfig(); - FurnaceBrewingHandling.load(); setPermissionHandler(new PermissionHandler(this)); setJobsClassloader(); @@ -834,12 +833,16 @@ public class Jobs extends JavaPlugin { dao.loadBlockProtection(); getExplore().load(); + FurnaceBrewingHandling.load(); + String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] Plugin has been enabled succesfully."); ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); console.sendMessage(message); lManager.reload(); cManager.fillCommands(); + + } catch (Exception e) { System.out.println("There was some issues when starting plugin. Please contact dev about this. Plugin will be disabled."); e.printStackTrace(); diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index d8f21ccb..c634ebe3 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -764,12 +764,12 @@ public class ConfigManager { quests.add(quest); } catch (Exception e) { - Jobs.getPluginLogger().warning("Cant load " + one + " quest for " + jobName); + Jobs.consoleMsg("&c[Jobs] Cant load " + one + " quest for " + jobName); e.printStackTrace(); } } - Jobs.getPluginLogger().warning("Loaded " + quests.size() + " quests for " + jobName); + Jobs.consoleMsg("&e[Jobs] Loaded " + quests.size() + " quests for " + jobName); job.setQuests(quests); } job.setMaxDailyQuests(jobSection.getInt("maxDailyQuests", 1)); diff --git a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java index e0a75052..9c9969be 100644 --- a/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/GeneralConfigManager.java @@ -70,7 +70,7 @@ public class GeneralConfigManager { public boolean PaymentMethodsPoints; public boolean PaymentMethodsExp; public int getSelectionTooldID; - + private int ResetTimeHour; private int ResetTimeMinute; @@ -86,6 +86,9 @@ public class GeneralConfigManager { public Double TreeFellerMultiplier, gigaDrillMultiplier, superBreakerMultiplier; public String localeString = "EN"; + private boolean FurnacesReassign, BrewingStandsReassign; + private int FurnacesMaxDefault, BrewingStandsMaxDefault; + public boolean useBlockProtection; public int BlockProtectionDays; @@ -102,7 +105,7 @@ public class GeneralConfigManager { public ItemStack guiBackButton; public ItemStack guiFiller; - public Integer levelLossPercentage, SoundLevelupVolume, SoundLevelupPitch, SoundTitleChangeVolume, + public Integer levelLossPercentageFromMax, levelLossPercentage, SoundLevelupVolume, SoundLevelupPitch, SoundTitleChangeVolume, SoundTitleChangePitch, ToplistInScoreboardInterval; public double MinimumOveralPaymentLimit; public double MinimumOveralPointsLimit; @@ -725,6 +728,25 @@ public class GeneralConfigManager { "Set to 0 if you want to disable timer"); CowMilkingTimer = c.get("Economy.MilkingCow.Timer", 30) * 1000; + c.getW().addComment("ExploitProtections.Furnaces.Reassign", + "When enabled, players interacted furnaces will be saved into file and will be reassigned after restart to keep giving out money", + "Players will no longer need to click on furnace to get paid from it after server restart"); + FurnacesReassign = c.get("ExploitProtections.Furnaces.Reassign", true); + c.getW().addComment("ExploitProtections.Furnaces.MaxDefaultAvailable", + "Defines max avaible furnaces each player can have to get paid from", + "This can be ovveriden with jobs.maxfurnaces.[amount] permission node"); + FurnacesMaxDefault = c.get("ExploitProtections.Furnaces.MaxDefaultAvailable", 20); + + c.getW().addComment("ExploitProtections.BrewingStands.Reassign", + "When enabled, players interacted brewing stands will be saved into file and will be reassigned after restart to keep giving out money", + "Players will no longer need to click on brewing stand to get paid from it after server restart"); + BrewingStandsReassign = c.get("ExploitProtections.BrewingStands.Reassign", true); + c.getW().addComment("ExploitProtections.BrewingStands.MaxDefaultAvailable", + "Defines max avaible brewing stands each player can have to get paid from", + "Set to 0 if you want to disable this limitation", + "This can be ovveriden with jobs.maxbrewingstands.[amount] permission node"); + BrewingStandsMaxDefault = c.get("ExploitProtections.BrewingStands.MaxDefaultAvailable", 20); + c.getW().addComment("ExploitProtections.General.PlaceAndBreakProtection", "Enable blocks protection, like ore, from exploiting by placing and destroying same block again and again.", "Modify restrictedBlocks.yml for blocks you want to protect"); @@ -783,6 +805,10 @@ public class GeneralConfigManager { "You can fix players level if hes job level is at max level"); levelLossPercentage = c.get("old-job.level-loss-percentage", 30); fixAtMaxLevel = c.get("old-job.fix-at-max-level", true); + c.getW().addComment("old-job.level-loss-from-max-level", + "Percentage to loose when leaving job at max level", + "Only works when fix-at-max-level is set to false"); + levelLossPercentageFromMax = c.get("old-job.level-loss-from-max-level", levelLossPercentage); c.getW().addComment("ActionBars.Messages.EnabledByDefault", "When this set to true player will see action bar messages by default"); ActionBarsMessageByDefault = c.get("ActionBars.Messages.EnabledByDefault", true); @@ -892,4 +918,20 @@ public class GeneralConfigManager { public void setResetTimeMinute(int resetTimeMinute) { ResetTimeMinute = resetTimeMinute; } + + public boolean isFurnacesReassign() { + return FurnacesReassign; + } + + public boolean isBrewingStandsReassign() { + return BrewingStandsReassign; + } + + public int getFurnacesMaxDefault() { + return FurnacesMaxDefault; + } + + public int getBrewingStandsMaxDefault() { + return BrewingStandsMaxDefault; + } } diff --git a/src/main/java/com/gamingmesh/jobs/config/ShopManager.java b/src/main/java/com/gamingmesh/jobs/config/ShopManager.java index f7240b58..565832b9 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ShopManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ShopManager.java @@ -478,7 +478,7 @@ public class ShopManager { } if (!list.isEmpty()) - Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[Jobs] " + list.size() + " shop items loaded!"); + Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[Jobs] Loaded " + list.size() + " shop items!"); return; } diff --git a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java index 02cd1d03..e8576ba0 100644 --- a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java +++ b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java @@ -421,8 +421,16 @@ public class JobsPlayer { Job job = jp.getJob(); int maxLevel = this.getMaxJobLevelAllowed(job); - if (Jobs.getGCManager().fixAtMaxLevel && jp.getLevel() == maxLevel) - level = jp.getLevel(); + if (jp.getLevel() == maxLevel) { + if (Jobs.getGCManager().fixAtMaxLevel) { + level = jp.getLevel(); + } else { + level = jp.getLevel(); + level = (int) ((level - (level * (Jobs.getGCManager().levelLossPercentageFromMax / 100.0)))); + if (level < 1) + level = 1; + } + } return level; } @@ -436,7 +444,14 @@ public class JobsPlayer { exp = max.doubleValue(); if (exp > 0) { - exp = (exp - (exp * (Jobs.getGCManager().levelLossPercentage / 100.0))); + Job job = jp.getJob(); + int maxLevel = this.getMaxJobLevelAllowed(job); + if (jp.getLevel() == maxLevel) { + if (!Jobs.getGCManager().fixAtMaxLevel) + exp = (exp - (exp * (Jobs.getGCManager().levelLossPercentageFromMax / 100.0))); + } else { + exp = (exp - (exp * (Jobs.getGCManager().levelLossPercentage / 100.0))); + } } return exp.intValue(); } diff --git a/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java b/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java index bff0ee64..7939b36c 100644 --- a/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java +++ b/src/main/java/com/gamingmesh/jobs/dao/JobsDAO.java @@ -1827,7 +1827,7 @@ public abstract class JobsDAO { Jobs.getBpManager().timer += System.currentTimeMillis() - t; } if (i > 0) { - String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] loaded " + i + " block protection entries. " + Jobs.getBpManager().timer); + String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] Loaded " + i + " block protection entries. " + Jobs.getBpManager().timer); Bukkit.getServer().getConsoleSender().sendMessage(message); } } catch (SQLException e) { diff --git a/src/main/java/com/gamingmesh/jobs/stuff/FurnaceBrewingHandling.java b/src/main/java/com/gamingmesh/jobs/stuff/FurnaceBrewingHandling.java index 719fbf43..cf4edc08 100644 --- a/src/main/java/com/gamingmesh/jobs/stuff/FurnaceBrewingHandling.java +++ b/src/main/java/com/gamingmesh/jobs/stuff/FurnaceBrewingHandling.java @@ -7,7 +7,6 @@ import java.util.List; import java.util.Map.Entry; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.configuration.ConfigurationSection; @@ -35,80 +34,88 @@ public class FurnaceBrewingHandling { FileConfiguration config = f.getConfig(); - if (config.contains("Furnace")) { - ConfigurationSection section = config.getConfigurationSection("Furnace"); + int totalf = 0; + int totalb = 0; - try { - for (String one : section.getKeys(false)) { - String value = section.getString(one); - List ls = new ArrayList(); - if (value.contains(";")) - ls.addAll(Arrays.asList(value.split(";"))); - else - ls.add(value); - UUID uuid = UUID.fromString(one); + if (Jobs.getGCManager().isFurnacesReassign()) + if (config.contains("Furnace")) { + ConfigurationSection section = config.getConfigurationSection("Furnace"); - if (uuid == null) - continue; - List blist = new ArrayList(); - for (String oneL : ls) { - blockLoc bl = new blockLoc(oneL); - Block block = bl.getBlock(); - if (block == null) + try { + for (String one : section.getKeys(false)) { + String value = section.getString(one); + List ls = new ArrayList(); + if (value.contains(";")) + ls.addAll(Arrays.asList(value.split(";"))); + else + ls.add(value); + UUID uuid = UUID.fromString(one); + + if (uuid == null) + continue; + List blist = new ArrayList(); + for (String oneL : ls) { + blockLoc bl = new blockLoc(oneL); + Block block = bl.getBlock(); + if (block == null) + continue; + + block.removeMetadata(JobsPaymentListener.furnaceOwnerMetadata, Jobs.getInstance()); + block.setMetadata(JobsPaymentListener.furnaceOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), one)); + + blist.add(bl); + } + if (!blist.isEmpty()) { + furnaceMap.put(uuid, blist); + totalf += blist.size(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + if (Jobs.getGCManager().isBrewingStandsReassign()) + if (config.contains("Brewing")) { + ConfigurationSection section = config.getConfigurationSection("Brewing"); + + try { + for (String one : section.getKeys(false)) { + String value = section.getString(one); + List ls = new ArrayList(); + if (value.contains(";")) + ls.addAll(Arrays.asList(value.split(";"))); + else + ls.add(value); + UUID uuid = UUID.fromString(one); + + if (uuid == null) continue; - block.removeMetadata(JobsPaymentListener.furnaceOwnerMetadata, Jobs.getInstance()); - block.setMetadata(JobsPaymentListener.furnaceOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), one)); + List blist = new ArrayList(); + for (String oneL : ls) { + blockLoc bl = new blockLoc(oneL); + Block block = bl.getBlock(); + if (block == null) + continue; - Debug.D("set meta " + block.getLocation().toString() + " " + one); + block.removeMetadata(JobsPaymentListener.brewingOwnerMetadata, Jobs.getInstance()); + block.setMetadata(JobsPaymentListener.brewingOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), one)); - blist.add(bl); - } - if (!blist.isEmpty()) { - Debug.D("adding furnace " + uuid.toString() + " " + blist.size()); - furnaceMap.put(uuid, blist); + blist.add(bl); + } + if (!blist.isEmpty()) { + brewingMap.put(uuid, blist); + totalb += blist.size(); + } } + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); } - } - if (config.contains("Brewing")) { - ConfigurationSection section = config.getConfigurationSection("Brewing"); - - try { - for (String one : section.getKeys(false)) { - String value = section.getString(one); - List ls = new ArrayList(); - if (value.contains(";")) - ls.addAll(Arrays.asList(value.split(";"))); - else - ls.add(value); - UUID uuid = UUID.fromString(one); - - if (uuid == null) - continue; - - List blist = new ArrayList(); - for (String oneL : ls) { - blockLoc bl = new blockLoc(oneL); - Block block = bl.getBlock(); - if (block == null) - continue; - - block.removeMetadata(JobsPaymentListener.brewingOwnerMetadata, Jobs.getInstance()); - block.setMetadata(JobsPaymentListener.brewingOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), one)); - - blist.add(bl); - } - if (!blist.isEmpty()) - brewingMap.put(uuid, blist); - } - } catch (Exception e) { - e.printStackTrace(); - } - } + if (totalf > 0 || totalb > 0) + Jobs.consoleMsg("&e[Jobs] Loaded " + totalf + " furnaces and " + totalb + " brewing stands for reassigning"); } public static void save() { @@ -120,38 +127,38 @@ public class FurnaceBrewingHandling { f.saveDefaultConfig(); FileConfiguration config = f.getConfig(); - for (Entry> one : furnaceMap.entrySet()) { + if (Jobs.getGCManager().isFurnacesReassign()) + for (Entry> one : furnaceMap.entrySet()) { - String full = ""; + String full = ""; - for (blockLoc oneL : one.getValue()) { + for (blockLoc oneL : one.getValue()) { + if (!full.isEmpty()) + full += ";"; + + full += oneL.toString(); + } + if (!full.isEmpty()) { + config.set("Furnace." + one.getKey().toString(), full); + } + } + + if (Jobs.getGCManager().isBrewingStandsReassign()) + for (Entry> one : brewingMap.entrySet()) { + + String full = ""; + + for (blockLoc oneL : one.getValue()) { + + if (!full.isEmpty()) + full += ";"; + + full += oneL.toString(); + } if (!full.isEmpty()) - full += ";"; - - full += oneL.toString(); + config.set("Brewing." + one.getKey().toString(), full); } - if (!full.isEmpty()) { - config.set("Furnace." + one.getKey().toString(), full); - } - } - - for (Entry> one : brewingMap.entrySet()) { - - String full = ""; - - Debug.D("saving brewing stands " + one.getValue().size()); - - for (blockLoc oneL : one.getValue()) { - - if (!full.isEmpty()) - full += ";"; - - full += oneL.toString(); - } - if (!full.isEmpty()) - config.set("Brewing." + one.getKey().toString(), full); - } f.saveConfig(); @@ -237,7 +244,7 @@ public class FurnaceBrewingHandling { Double maxV = Jobs.getPermissionManager().getMaxPermission(Jobs.getPlayerManager().getJobsPlayer(player), "jobs.maxfurnaces"); if (maxV == null) - maxV = 0D; + maxV = (double) Jobs.getGCManager().getFurnacesMaxDefault(); int max = maxV.intValue(); @@ -267,9 +274,6 @@ public class FurnaceBrewingHandling { block.setMetadata(JobsPaymentListener.furnaceOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), player.getUniqueId().toString())); -// if (max == 0) -// return true; - List ls = furnaceMap.get(player.getUniqueId()); if (ls == null) ls = new ArrayList(); @@ -288,7 +292,7 @@ public class FurnaceBrewingHandling { Double maxV = Jobs.getPermissionManager().getMaxPermission(Jobs.getPlayerManager().getJobsPlayer(player), "jobs.maxbrewingstands"); if (maxV == null) - maxV = 0D; + maxV = (double) Jobs.getGCManager().getBrewingStandsMaxDefault(); int max = maxV.intValue(); @@ -318,9 +322,6 @@ public class FurnaceBrewingHandling { block.setMetadata(JobsPaymentListener.brewingOwnerMetadata, new FixedMetadataValue(Jobs.getInstance(), player.getUniqueId().toString())); -// if (max == 0) -// return true; - List ls = brewingMap.get(player.getUniqueId()); if (ls == null) ls = new ArrayList();