Skip to content

Commit 8802780

Browse files
committed
Release 0.8.3
# Conflicts: # pom.xml
2 parents 4caeee6 + 15655b8 commit 8802780

File tree

19 files changed

+402
-108
lines changed

19 files changed

+402
-108
lines changed

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@ Add-on for BentoBox to provide challenges for any BentoBox GameMode.
77
## Where to find
88

99
Currently Challenges Addon is in **Beta stage**, so it may or may not contain bugs... a lot of bugs. Also it means, that some features are not working or implemented.
10-
Latest official **Beta Release is 0.8.1**, and you can download it from [Release tab](https://github.com/BentoBoxWorld/Challenges/releases)
11-
But it will work with BentoBox 1.6.x and BentoBox 1.7.x.
10+
Latest official **Beta Release is 0.8.3**, and you can download it from [Release tab](https://github.com/BentoBoxWorld/Challenges/releases)
11+
But it will work with BentoBox 1.14.
1212

13-
Latest development builds will be based on **Minecraft 1.14.4** and **BentoBox 1.8.0**.
13+
Latest development builds will be based on **Minecraft 1.16.1** and **BentoBox 1.14.0**.
1414
**Nightly builds** are available in [Jenkins Server](https://ci.codemc.org/job/BentoBoxWorld/job/Challenges/lastStableBuild/).
1515

16-
Be aware that 0.8.0 stores data differently than it is in 0.7.5 and below. It will be necessary to migrate data via command `/[gamemode_admin] challenges migrate`.
17-
1816
If you like this addon but something is missing or is not working as you want, you can always submit an [Issue request](https://github.com/BentoBoxWorld/Challenges/issues) or get a support in Discord [BentoBox ![icon](https://avatars2.githubusercontent.com/u/41555324?s=15&v=4)](https://discord.bentobox.world)
1917

2018
## Translations
@@ -38,12 +36,12 @@ There exist also Web Library, where users can download public challenges. It is
3836

3937
## Compatibility
4038

41-
- [x] BentoBox - 1.6.x and 1.7.x versions
39+
- [x] BentoBox - 1.14 versions
4240
- [x] BSkyBlock
4341
- [x] AcidIsland
4442
- [x] SkyGrid
4543
- [x] CaveBlock
4644

4745
## Information
4846

49-
More information can be found in [Wiki Pages](https://github.com/BentoBoxWorld/Challenges/wiki).
47+
More information can be found in [Wiki Pages](https://docs.bentobox.world/addons/Challenges/).

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@
3535
<java.version>1.8</java.version>
3636
<powermock.version>2.0.2</powermock.version>
3737
<!-- More visible way how to change dependency versions -->
38-
<spigot.version>1.14.4-R0.1-SNAPSHOT</spigot.version>
39-
<bentobox.version>1.7.0</bentobox.version>
38+
<spigot.version>1.15.2-R0.1-SNAPSHOT</spigot.version>
39+
<bentobox.version>1.14.0</bentobox.version>
4040
<level.version>1.6.0</level.version>
4141
<vault.version>1.7</vault.version>
4242
<!-- Revision variable removes warning about dynamic version -->
4343
<revision>${build.version}-SNAPSHOT</revision>
4444
<!-- This allows to change between versions and snapshots. -->
45-
<build.version>0.8.2</build.version>
45+
<build.version>0.8.3</build.version>
4646
<build.number>-LOCAL</build.number>
4747
</properties>
4848

src/main/java/world/bentobox/challenges/ChallengesAddon.java

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ public void onEnable() {
179179
CHALLENGES_ISLAND_PROTECTION.addGameModeAddon(gameModeAddon);
180180

181181
this.registerPlaceholders(gameModeAddon);
182+
183+
// TODO: this is old placeholders. Remove when backward compatibility ends.
184+
this.registerPlaceholdersOld(gameModeAddon);
182185
}
183186
});
184187

@@ -283,7 +286,14 @@ public void onDisable() {
283286
if (this.hooked) {
284287
this.challengesManager.save();
285288
}
289+
}
286290

291+
292+
/**
293+
* This method saves addon settings into file.
294+
*/
295+
public void saveSettings()
296+
{
287297
if (this.settings != null)
288298
{
289299
new Config<>(this, Settings.class).saveConfigObject(this.settings);
@@ -320,6 +330,93 @@ private boolean isInCompatibleDatabase()
320330
* @param gameModeAddon GameMode addon where placeholders must be hooked in.
321331
*/
322332
private void registerPlaceholders(GameModeAddon gameModeAddon)
333+
{
334+
final String addonName = this.getDescription().getName().toLowerCase();
335+
final World world = gameModeAddon.getOverWorld();
336+
337+
// Number of completions for all challenges placeholder
338+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
339+
addonName + "_total_completion_count",
340+
user -> String.valueOf(this.challengesManager.getTotalChallengeCompletionCount(user, world)));
341+
342+
// Completed challenge count placeholder
343+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
344+
addonName + "_completed_count",
345+
user -> String.valueOf(this.challengesManager.getCompletedChallengeCount(user, world)));
346+
347+
// Uncompleted challenge count placeholder
348+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
349+
addonName + "_uncompleted_count",
350+
user -> String.valueOf(this.challengesManager.getChallengeCount(world) -
351+
this.challengesManager.getCompletedChallengeCount(user, world)));
352+
353+
// Completed challenge level count placeholder
354+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
355+
addonName + "_completed_level_count",
356+
user -> String.valueOf(this.challengesManager.getCompletedLevelCount(user, world)));
357+
358+
// Uncompleted challenge level count placeholder
359+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
360+
addonName + "_uncompleted_level_count",
361+
user -> String.valueOf(this.challengesManager.getLevelCount(world) -
362+
this.challengesManager.getCompletedLevelCount(user, world)));
363+
364+
// Unlocked challenge level count placeholder
365+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
366+
addonName + "_unlocked_level_count",
367+
user -> String.valueOf(this.challengesManager.getLevelCount(world) -
368+
this.challengesManager.getUnlockedLevelCount(user, world)));
369+
370+
// Locked challenge level count placeholder
371+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
372+
addonName + "_locked_level_count",
373+
user -> String.valueOf(this.challengesManager.getLevelCount(world) -
374+
this.challengesManager.getUnlockedLevelCount(user, world)));
375+
376+
// Latest challenge level name placeholder
377+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
378+
addonName + "_latest_level_name",
379+
user -> {
380+
ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world);
381+
return level != null ? level.getFriendlyName() : "";
382+
});
383+
384+
// Latest challenge level id placeholder
385+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
386+
addonName + "_latest_level_id",
387+
user -> {
388+
ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world);
389+
return level != null ? level.getUniqueId() : "";
390+
});
391+
392+
// Completed challenge count in latest level
393+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
394+
addonName + "_latest_level_completed_count",
395+
user -> {
396+
ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world);
397+
return String.valueOf(level != null ?
398+
this.challengesManager.getLevelCompletedChallengeCount(user, world, level) : 0);
399+
});
400+
401+
// Uncompleted challenge count in latest level
402+
this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon,
403+
addonName + "_latest_level_uncompleted_count",
404+
user -> {
405+
ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world);
406+
return String.valueOf(level != null ?
407+
level.getChallenges().size() - this.challengesManager.getLevelCompletedChallengeCount(user, world, level) : 0);
408+
});
409+
}
410+
411+
412+
/**
413+
* This method registers placeholders into GameMode addon.
414+
* @param gameModeAddon GameMode addon where placeholders must be hooked in.
415+
* @since 0.8.1
416+
* @deprecated remove after 0.9.0
417+
*/
418+
@Deprecated
419+
private void registerPlaceholdersOld(GameModeAddon gameModeAddon)
323420
{
324421
final String gameMode = gameModeAddon.getDescription().getName().toLowerCase();
325422
final World world = gameModeAddon.getOverWorld();

src/main/java/world/bentobox/challenges/ChallengesImportManager.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ public boolean loadDefaultChallenges(User user, World world)
126126
return false;
127127
}
128128

129-
this.addon.getChallengesManager().save();
129+
this.addon.getChallengesManager().saveChallenges();
130+
this.addon.getChallengesManager().saveLevels();
130131

131132
if (removeAtEnd)
132133
{
@@ -203,7 +204,8 @@ public boolean loadDownloadedChallenges(User user, World world, String downloadS
203204
return false;
204205
}
205206

206-
this.addon.getChallengesManager().save();
207+
this.addon.getChallengesManager().saveChallenges();
208+
this.addon.getChallengesManager().saveLevels();
207209

208210
return true;
209211
}

0 commit comments

Comments
 (0)