From 054607907889823f30f59df8e42761809400d156 Mon Sep 17 00:00:00 2001 From: Ben12345rocks Date: Mon, 10 Jul 2017 10:00:40 -0400 Subject: [PATCH 1/6] Bug fix --- .../AdvancedCore/TimeChecker/TimeChecker.java | 60 +++++++++---------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/TimeChecker/TimeChecker.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/TimeChecker/TimeChecker.java index 9398c6d609..029b7f7ef5 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/TimeChecker/TimeChecker.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/TimeChecker/TimeChecker.java @@ -6,8 +6,6 @@ import java.time.temporal.WeekFields; import java.util.Locale; -import org.bukkit.Bukkit; - import com.Ben12345rocks.AdvancedCore.AdvancedCoreHook; import com.Ben12345rocks.AdvancedCore.Data.ServerData; import com.Ben12345rocks.AdvancedCore.Listeners.DateChangedEvent; @@ -96,37 +94,33 @@ public boolean hasWeekChanged() { * Update. */ public void update() { - Bukkit.getScheduler().runTaskAsynchronously(plugin.getPlugin(), new Runnable() { - - @Override - public void run() { - boolean dayChanged = false; - boolean weekChanged = false; - boolean monthChanged = false; - if (hasDayChanged()) { - plugin.debug("Day changed"); - dayChanged = true; - } - if (hasWeekChanged()) { - plugin.debug("Week Changed"); - weekChanged = true; - } - if (hasMonthChanged()) { - plugin.debug("Month Changed"); - monthChanged = true; - } - - if (dayChanged) { - forceChanged(TimeType.DAY); - } - if (weekChanged) { - forceChanged(TimeType.WEEK); - } - if (monthChanged) { - forceChanged(TimeType.MONTH); - } - } - }); + + boolean dayChanged = false; + boolean weekChanged = false; + boolean monthChanged = false; + if (hasDayChanged()) { + plugin.debug("Day changed"); + dayChanged = true; + } + if (hasWeekChanged()) { + plugin.debug("Week Changed"); + weekChanged = true; + } + if (hasMonthChanged()) { + plugin.debug("Month Changed"); + monthChanged = true; + } + + if (dayChanged) { + forceChanged(TimeType.DAY); + } + if (weekChanged) { + forceChanged(TimeType.WEEK); + } + if (monthChanged) { + forceChanged(TimeType.MONTH); + } + } public void forceChanged(TimeType time) { From 20233c474a4c60bd5ff784ac6678a22e1b6b52a9 Mon Sep 17 00:00:00 2001 From: Ben12345rocks Date: Mon, 10 Jul 2017 10:20:42 -0400 Subject: [PATCH 2/6] Add lucky rewards --- .../Resources/Rewards/ExampleAdvanced.yml | 12 ++++++ .../AdvancedCore/Objects/Reward.java | 42 +++++++++++++++---- .../AdvancedCore/Objects/RewardFileData.java | 8 ++++ .../AdvancedCore/Util/Misc/MiscUtils.java | 2 +- 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml b/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml index 75a773a265..e1abc1ecc6 100644 --- a/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml +++ b/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml @@ -202,4 +202,16 @@ ActionBar: Message: '&cThis is an actionbar!' # Delay until action bar goes away (in ticks) Delay: 30 + +# The example below would give a 1 in 10 chance of receiving an extra $100, and a 1 in 50 chance of an extra $1000. +Lucky: + '10': + Messages: + Plyaer: 'You were lucky and received an extra $100!' + Money: 100 + '50': + Messages: + Plyaer: 'You were lucky and received an extra $1000!' + Money: 1000 + \ No newline at end of file diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java index 5bbaf47237..3a89644943 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java @@ -43,7 +43,7 @@ public class Reward { /** The reward type. */ private String rewardType; - + private boolean forceOffline; /** The delay enabled. */ @@ -232,9 +232,11 @@ public class Reward { private int effectRadius; private ArrayList javascripts; - + private ArrayList priority; + private HashMap luckyRewards; + /** * @return the name */ @@ -331,8 +333,8 @@ public boolean checkDelayed(User user) { public boolean checkRandomChance() { return MiscUtils.getInstance().checkChance(getRandomChance(), 100); } - - public void givePriorityReward(User user, final HashMap placeholders) { + + public void givePriorityReward(User user, final HashMap placeholders) { for (String str : getPriority()) { Reward reward = RewardHandler.getInstance().getReward(str); if (reward.canGiveReward(user)) { @@ -341,7 +343,7 @@ public void givePriorityReward(User user, final HashMap placehold } } } - + public boolean canGiveReward(User user) { if (hasPermission(user)) { return true; @@ -1093,6 +1095,14 @@ public void giveRewardReward(User user, boolean online, HashMap } } + public void giveLucky(User user, HashMap placeholders) { + for (Entry entry : luckyRewards.entrySet()) { + if (MiscUtils.getInstance().checkChance(1 / entry.getKey(), entry.getKey())) { + new RewardBuilder(getConfig().getData(), entry.getValue()).withPlaceHolder(placeholders).send(user); + } + } + } + /** * Give reward user. * @@ -1114,7 +1124,7 @@ public void giveRewardUser(User user, HashMap phs) { Date date = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant()); phs.put("CurrentDate", "" + new SimpleDateFormat("EEE, d MMM yyyy HH:mm").format(date)); final HashMap placeholders = new HashMap(phs); - givePriorityReward(user,placeholders); + givePriorityReward(user, placeholders); giveRandom(user, true, placeholders); runJavascript(user, true, placeholders); int money = getMoneyToGive(); @@ -1132,6 +1142,7 @@ public void giveRewardUser(User user, HashMap phs) { sendMessage(user, money, exp, placeholders); checkChoiceRewards(user); sendFirework(user); + giveLucky(user, placeholders); plugin.debug("Gave " + user.getPlayerName() + " reward " + name); @@ -1298,7 +1309,7 @@ public void load(File folder, String reward) { public void loadValues() { setRewardType(getConfig().getRewardType()); - + forceOffline = getConfig().getForceOffline(); setDelayEnabled(getConfig().getDelayedEnabled()); @@ -1391,8 +1402,20 @@ public void loadValues() { effectData = getConfig().getEffectData(); effectParticles = getConfig().getEffectParticles(); effectRadius = getConfig().getEffectRadius(); - + priority = getConfig().getPriority(); + + luckyRewards = new HashMap(); + + for (String str : getConfig().getLuckyRewards()) { + if (StringUtils.getInstance().isInt(str)) { + int num = Integer.parseInt(str); + if (num > 0) { + String path = getConfig().getLuckyRewardsPath(num); + luckyRewards.put(num, path); + } + } + } } /** @@ -1403,7 +1426,8 @@ public boolean isForceOffline() { } /** - * @param forceOffline the forceOffline to set + * @param forceOffline + * the forceOffline to set */ public void setForceOffline(boolean forceOffline) { this.forceOffline = forceOffline; diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java index 1935753911..8e0e4963fd 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java @@ -293,6 +293,14 @@ public ArrayList getFireworkColorsFadeOut() { return (ArrayList) getData().getList("Firework.FadeOutColor", new ArrayList()); } + public Set getLuckyRewards() { + return getData().getConfigurationSection("Lucky").getKeys(false); + } + + public String getLuckyRewardsPath(int num) { + return "Lucky." + num; + } + /** * Gets the firework enabled. * diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/MiscUtils.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/MiscUtils.java index 569b3e1c01..cc95cab585 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/MiscUtils.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/MiscUtils.java @@ -64,7 +64,7 @@ public boolean checkChance(double chance, double outOf) { double randomNum = ThreadLocalRandom.current().nextDouble(outOf); - plugin.debug("Chance: " + chance + ", RandomNum: " + randomNum); + plugin.debug("Chance Required: " + chance + ", RandomNum: " + randomNum); if (randomNum <= chance) { return true; From 1a9c780aecdd467a2b24c44779ecdec5325eb8ba Mon Sep 17 00:00:00 2001 From: Ben12345rocks Date: Mon, 10 Jul 2017 10:26:12 -0400 Subject: [PATCH 3/6] Bug fix --- .../Ben12345rocks/AdvancedCore/Objects/RewardFileData.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java index 8e0e4963fd..6102db9bd6 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java @@ -294,7 +294,11 @@ public ArrayList getFireworkColorsFadeOut() { } public Set getLuckyRewards() { - return getData().getConfigurationSection("Lucky").getKeys(false); + if (getData().getConfigurationSection("Lucky") != null) { + return getData().getConfigurationSection("Lucky").getKeys(false); + } else { + return new HashSet(); + } } public String getLuckyRewardsPath(int num) { From a84ef1f8c99830f61b05cec8c315b9fc5226145c Mon Sep 17 00:00:00 2001 From: Ben12345rocks Date: Mon, 10 Jul 2017 10:52:55 -0400 Subject: [PATCH 4/6] Bug fix --- .../src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java index 3a89644943..93297aebd1 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java @@ -1097,7 +1097,7 @@ public void giveRewardReward(User user, boolean online, HashMap public void giveLucky(User user, HashMap placeholders) { for (Entry entry : luckyRewards.entrySet()) { - if (MiscUtils.getInstance().checkChance(1 / entry.getKey(), entry.getKey())) { + if (MiscUtils.getInstance().checkChance(1, entry.getKey())) { new RewardBuilder(getConfig().getData(), entry.getValue()).withPlaceHolder(placeholders).send(user); } } From dd0b6c330cf83af55a14d1f36e4db01fa25f1f99 Mon Sep 17 00:00:00 2001 From: Ben12345rocks Date: Mon, 10 Jul 2017 11:38:53 -0400 Subject: [PATCH 5/6] Add ability to give only the highest lucky --- .../Resources/Rewards/ExampleAdvanced.yml | 1 + .../AdvancedCore/Objects/Reward.java | 39 ++++++++++++++++++- .../AdvancedCore/Objects/RewardFileData.java | 4 ++ .../AdvancedCore/Util/Misc/ArrayUtils.java | 26 +++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml b/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml index e1abc1ecc6..45c77e2948 100644 --- a/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml +++ b/AdvancedCore/Resources/Rewards/ExampleAdvanced.yml @@ -203,6 +203,7 @@ ActionBar: # Delay until action bar goes away (in ticks) Delay: 30 +OnlyOneLucky: false # The example below would give a 1 in 10 chance of receiving an extra $100, and a 1 in 50 chance of an extra $1000. Lucky: '10': diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java index 93297aebd1..4038d2c2a1 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ThreadLocalRandom; @@ -237,6 +238,8 @@ public class Reward { private HashMap luckyRewards; + private boolean onlyOneLucky; + /** * @return the name */ @@ -1096,9 +1099,27 @@ public void giveRewardReward(User user, boolean online, HashMap } public void giveLucky(User user, HashMap placeholders) { + HashMap map = new LinkedHashMap(); for (Entry entry : luckyRewards.entrySet()) { if (MiscUtils.getInstance().checkChance(1, entry.getKey())) { - new RewardBuilder(getConfig().getData(), entry.getValue()).withPlaceHolder(placeholders).send(user); + // new RewardBuilder(getConfig().getData(), + // entry.getValue()).withPlaceHolder(placeholders).send(user); + map.put(entry.getValue(), entry.getKey()); + } + } + + map = ArrayUtils.getInstance().sortByValuesStr(map, false); + if (map.size() > 0) { + if (isOnlyOneLucky()) { + for (Entry entry : map.entrySet()) { + new RewardBuilder(getConfig().getData(), entry.getKey()).withPlaceHolder(placeholders).send(user); + return; + } + + } else { + for (Entry entry : map.entrySet()) { + new RewardBuilder(getConfig().getData(), entry.getKey()).withPlaceHolder(placeholders).send(user); + } } } } @@ -1416,6 +1437,22 @@ public void loadValues() { } } } + + onlyOneLucky = getConfig().getOnlyOneLucky(); + } + + /** + * @return the luckyRewards + */ + public HashMap getLuckyRewards() { + return luckyRewards; + } + + /** + * @return the onlyOneLucky + */ + public boolean isOnlyOneLucky() { + return onlyOneLucky; } /** diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java index 6102db9bd6..86fb937576 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java @@ -300,6 +300,10 @@ public Set getLuckyRewards() { return new HashSet(); } } + + public boolean getOnlyOneLucky() { + return getData().getBoolean("OnlyOneLucky"); + } public String getLuckyRewardsPath(int num) { return "Lucky." + num; diff --git a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/ArrayUtils.java b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/ArrayUtils.java index 21c81f18cd..a924e08a5e 100644 --- a/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/ArrayUtils.java +++ b/AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/ArrayUtils.java @@ -452,6 +452,32 @@ public int compare(Entry o1, Entry o2) { return sortedMap; } + public HashMap sortByValuesStr(HashMap unsortMap, final boolean order) { + + List> list = new LinkedList>(unsortMap.entrySet()); + + // Sorting the list based on values + Collections.sort(list, new Comparator>() { + @Override + public int compare(Entry o1, Entry o2) { + if (order) { + return o1.getValue().compareTo(o2.getValue()); + } else { + return o2.getValue().compareTo(o1.getValue()); + + } + } + }); + + // Maintaining insertion order with the help of LinkedList + HashMap sortedMap = new LinkedHashMap(); + for (Entry entry : list) { + sortedMap.put(entry.getKey(), entry.getValue()); + } + + return sortedMap; + } + public HashMap sortByValuesLong(HashMap unsortMap, final boolean order) { List> list = new LinkedList>(unsortMap.entrySet()); From 2a3d97349c44ce9bbf88feec7f6b6c389735839f Mon Sep 17 00:00:00 2001 From: Ben12345rocks Date: Tue, 11 Jul 2017 10:34:17 -0400 Subject: [PATCH 6/6] Update version number --- AdvancedCore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AdvancedCore/pom.xml b/AdvancedCore/pom.xml index fa7e538c89..6c3facd0f5 100644 --- a/AdvancedCore/pom.xml +++ b/AdvancedCore/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.Ben12345rocks AdvancedCore - 2.8.1 + 2.8.2 jar AdvancedCore