Skip to content

Commit 92e527c

Browse files
authored
Merge pull request #73 from Ben12345rocks/2.8.2
2.8.2
2 parents 75d14aa + 2a3d973 commit 92e527c

File tree

7 files changed

+154
-44
lines changed

7 files changed

+154
-44
lines changed

AdvancedCore/Resources/Rewards/ExampleAdvanced.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,4 +202,17 @@ ActionBar:
202202
Message: '&cThis is an actionbar!'
203203
# Delay until action bar goes away (in ticks)
204204
Delay: 30
205+
206+
OnlyOneLucky: false
207+
# 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.
208+
Lucky:
209+
'10':
210+
Messages:
211+
Plyaer: 'You were lucky and received an extra $100!'
212+
Money: 100
213+
'50':
214+
Messages:
215+
Plyaer: 'You were lucky and received an extra $1000!'
216+
Money: 1000
217+
205218

AdvancedCore/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.Ben12345rocks</groupId>
55
<artifactId>AdvancedCore</artifactId>
6-
<version>2.8.1</version>
6+
<version>2.8.2</version>
77
<packaging>jar</packaging>
88
<name>AdvancedCore</name>
99
<properties>

AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/Reward.java

Lines changed: 70 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.ArrayList;
99
import java.util.Date;
1010
import java.util.HashMap;
11+
import java.util.LinkedHashMap;
1112
import java.util.Map.Entry;
1213
import java.util.Set;
1314
import java.util.concurrent.ThreadLocalRandom;
@@ -43,7 +44,7 @@ public class Reward {
4344

4445
/** The reward type. */
4546
private String rewardType;
46-
47+
4748
private boolean forceOffline;
4849

4950
/** The delay enabled. */
@@ -232,9 +233,13 @@ public class Reward {
232233
private int effectRadius;
233234

234235
private ArrayList<String> javascripts;
235-
236+
236237
private ArrayList<String> priority;
237238

239+
private HashMap<Integer, String> luckyRewards;
240+
241+
private boolean onlyOneLucky;
242+
238243
/**
239244
* @return the name
240245
*/
@@ -331,8 +336,8 @@ public boolean checkDelayed(User user) {
331336
public boolean checkRandomChance() {
332337
return MiscUtils.getInstance().checkChance(getRandomChance(), 100);
333338
}
334-
335-
public void givePriorityReward(User user, final HashMap<String,String> placeholders) {
339+
340+
public void givePriorityReward(User user, final HashMap<String, String> placeholders) {
336341
for (String str : getPriority()) {
337342
Reward reward = RewardHandler.getInstance().getReward(str);
338343
if (reward.canGiveReward(user)) {
@@ -341,7 +346,7 @@ public void givePriorityReward(User user, final HashMap<String,String> placehold
341346
}
342347
}
343348
}
344-
349+
345350
public boolean canGiveReward(User user) {
346351
if (hasPermission(user)) {
347352
return true;
@@ -1093,6 +1098,32 @@ public void giveRewardReward(User user, boolean online, HashMap<String, String>
10931098
}
10941099
}
10951100

1101+
public void giveLucky(User user, HashMap<String, String> placeholders) {
1102+
HashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
1103+
for (Entry<Integer, String> entry : luckyRewards.entrySet()) {
1104+
if (MiscUtils.getInstance().checkChance(1, entry.getKey())) {
1105+
// new RewardBuilder(getConfig().getData(),
1106+
// entry.getValue()).withPlaceHolder(placeholders).send(user);
1107+
map.put(entry.getValue(), entry.getKey());
1108+
}
1109+
}
1110+
1111+
map = ArrayUtils.getInstance().sortByValuesStr(map, false);
1112+
if (map.size() > 0) {
1113+
if (isOnlyOneLucky()) {
1114+
for (Entry<String, Integer> entry : map.entrySet()) {
1115+
new RewardBuilder(getConfig().getData(), entry.getKey()).withPlaceHolder(placeholders).send(user);
1116+
return;
1117+
}
1118+
1119+
} else {
1120+
for (Entry<String, Integer> entry : map.entrySet()) {
1121+
new RewardBuilder(getConfig().getData(), entry.getKey()).withPlaceHolder(placeholders).send(user);
1122+
}
1123+
}
1124+
}
1125+
}
1126+
10961127
/**
10971128
* Give reward user.
10981129
*
@@ -1114,7 +1145,7 @@ public void giveRewardUser(User user, HashMap<String, String> phs) {
11141145
Date date = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
11151146
phs.put("CurrentDate", "" + new SimpleDateFormat("EEE, d MMM yyyy HH:mm").format(date));
11161147
final HashMap<String, String> placeholders = new HashMap<String, String>(phs);
1117-
givePriorityReward(user,placeholders);
1148+
givePriorityReward(user, placeholders);
11181149
giveRandom(user, true, placeholders);
11191150
runJavascript(user, true, placeholders);
11201151
int money = getMoneyToGive();
@@ -1132,6 +1163,7 @@ public void giveRewardUser(User user, HashMap<String, String> phs) {
11321163
sendMessage(user, money, exp, placeholders);
11331164
checkChoiceRewards(user);
11341165
sendFirework(user);
1166+
giveLucky(user, placeholders);
11351167

11361168
plugin.debug("Gave " + user.getPlayerName() + " reward " + name);
11371169

@@ -1298,7 +1330,7 @@ public void load(File folder, String reward) {
12981330

12991331
public void loadValues() {
13001332
setRewardType(getConfig().getRewardType());
1301-
1333+
13021334
forceOffline = getConfig().getForceOffline();
13031335

13041336
setDelayEnabled(getConfig().getDelayedEnabled());
@@ -1391,8 +1423,36 @@ public void loadValues() {
13911423
effectData = getConfig().getEffectData();
13921424
effectParticles = getConfig().getEffectParticles();
13931425
effectRadius = getConfig().getEffectRadius();
1394-
1426+
13951427
priority = getConfig().getPriority();
1428+
1429+
luckyRewards = new HashMap<Integer, String>();
1430+
1431+
for (String str : getConfig().getLuckyRewards()) {
1432+
if (StringUtils.getInstance().isInt(str)) {
1433+
int num = Integer.parseInt(str);
1434+
if (num > 0) {
1435+
String path = getConfig().getLuckyRewardsPath(num);
1436+
luckyRewards.put(num, path);
1437+
}
1438+
}
1439+
}
1440+
1441+
onlyOneLucky = getConfig().getOnlyOneLucky();
1442+
}
1443+
1444+
/**
1445+
* @return the luckyRewards
1446+
*/
1447+
public HashMap<Integer, String> getLuckyRewards() {
1448+
return luckyRewards;
1449+
}
1450+
1451+
/**
1452+
* @return the onlyOneLucky
1453+
*/
1454+
public boolean isOnlyOneLucky() {
1455+
return onlyOneLucky;
13961456
}
13971457

13981458
/**
@@ -1403,7 +1463,8 @@ public boolean isForceOffline() {
14031463
}
14041464

14051465
/**
1406-
* @param forceOffline the forceOffline to set
1466+
* @param forceOffline
1467+
* the forceOffline to set
14071468
*/
14081469
public void setForceOffline(boolean forceOffline) {
14091470
this.forceOffline = forceOffline;

AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Objects/RewardFileData.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,22 @@ public ArrayList<String> getFireworkColorsFadeOut() {
293293
return (ArrayList<String>) getData().getList("Firework.FadeOutColor", new ArrayList<String>());
294294
}
295295

296+
public Set<String> getLuckyRewards() {
297+
if (getData().getConfigurationSection("Lucky") != null) {
298+
return getData().getConfigurationSection("Lucky").getKeys(false);
299+
} else {
300+
return new HashSet<String>();
301+
}
302+
}
303+
304+
public boolean getOnlyOneLucky() {
305+
return getData().getBoolean("OnlyOneLucky");
306+
}
307+
308+
public String getLuckyRewardsPath(int num) {
309+
return "Lucky." + num;
310+
}
311+
296312
/**
297313
* Gets the firework enabled.
298314
*

AdvancedCore/src/com/Ben12345rocks/AdvancedCore/TimeChecker/TimeChecker.java

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import java.time.temporal.WeekFields;
77
import java.util.Locale;
88

9-
import org.bukkit.Bukkit;
10-
119
import com.Ben12345rocks.AdvancedCore.AdvancedCoreHook;
1210
import com.Ben12345rocks.AdvancedCore.Data.ServerData;
1311
import com.Ben12345rocks.AdvancedCore.Listeners.DateChangedEvent;
@@ -96,37 +94,33 @@ public boolean hasWeekChanged() {
9694
* Update.
9795
*/
9896
public void update() {
99-
Bukkit.getScheduler().runTaskAsynchronously(plugin.getPlugin(), new Runnable() {
100-
101-
@Override
102-
public void run() {
103-
boolean dayChanged = false;
104-
boolean weekChanged = false;
105-
boolean monthChanged = false;
106-
if (hasDayChanged()) {
107-
plugin.debug("Day changed");
108-
dayChanged = true;
109-
}
110-
if (hasWeekChanged()) {
111-
plugin.debug("Week Changed");
112-
weekChanged = true;
113-
}
114-
if (hasMonthChanged()) {
115-
plugin.debug("Month Changed");
116-
monthChanged = true;
117-
}
118-
119-
if (dayChanged) {
120-
forceChanged(TimeType.DAY);
121-
}
122-
if (weekChanged) {
123-
forceChanged(TimeType.WEEK);
124-
}
125-
if (monthChanged) {
126-
forceChanged(TimeType.MONTH);
127-
}
128-
}
129-
});
97+
98+
boolean dayChanged = false;
99+
boolean weekChanged = false;
100+
boolean monthChanged = false;
101+
if (hasDayChanged()) {
102+
plugin.debug("Day changed");
103+
dayChanged = true;
104+
}
105+
if (hasWeekChanged()) {
106+
plugin.debug("Week Changed");
107+
weekChanged = true;
108+
}
109+
if (hasMonthChanged()) {
110+
plugin.debug("Month Changed");
111+
monthChanged = true;
112+
}
113+
114+
if (dayChanged) {
115+
forceChanged(TimeType.DAY);
116+
}
117+
if (weekChanged) {
118+
forceChanged(TimeType.WEEK);
119+
}
120+
if (monthChanged) {
121+
forceChanged(TimeType.MONTH);
122+
}
123+
130124
}
131125

132126
public void forceChanged(TimeType time) {

AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/ArrayUtils.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,32 @@ public int compare(Entry<User, Integer> o1, Entry<User, Integer> o2) {
452452
return sortedMap;
453453
}
454454

455+
public HashMap<String, Integer> sortByValuesStr(HashMap<String, Integer> unsortMap, final boolean order) {
456+
457+
List<Entry<String, Integer>> list = new LinkedList<Entry<String, Integer>>(unsortMap.entrySet());
458+
459+
// Sorting the list based on values
460+
Collections.sort(list, new Comparator<Entry<String, Integer>>() {
461+
@Override
462+
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
463+
if (order) {
464+
return o1.getValue().compareTo(o2.getValue());
465+
} else {
466+
return o2.getValue().compareTo(o1.getValue());
467+
468+
}
469+
}
470+
});
471+
472+
// Maintaining insertion order with the help of LinkedList
473+
HashMap<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
474+
for (Entry<String, Integer> entry : list) {
475+
sortedMap.put(entry.getKey(), entry.getValue());
476+
}
477+
478+
return sortedMap;
479+
}
480+
455481
public HashMap<User, Long> sortByValuesLong(HashMap<User, Long> unsortMap, final boolean order) {
456482

457483
List<Entry<User, Long>> list = new LinkedList<Entry<User, Long>>(unsortMap.entrySet());

AdvancedCore/src/com/Ben12345rocks/AdvancedCore/Util/Misc/MiscUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public boolean checkChance(double chance, double outOf) {
6464

6565
double randomNum = ThreadLocalRandom.current().nextDouble(outOf);
6666

67-
plugin.debug("Chance: " + chance + ", RandomNum: " + randomNum);
67+
plugin.debug("Chance Required: " + chance + ", RandomNum: " + randomNum);
6868

6969
if (randomNum <= chance) {
7070
return true;

0 commit comments

Comments
 (0)