Skip to content

Commit ae7969d

Browse files
authored
Merge pull request #369 from BentoBoxWorld/develop
Release 2.21.0
2 parents c7831cb + 65d21f2 commit ae7969d

File tree

12 files changed

+588
-167
lines changed

12 files changed

+588
-167
lines changed

README.md

Lines changed: 81 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,123 @@
1-
# Level
1+
# 🌟 Level Add-on for BentoBox
22
[![Build Status](https://ci.codemc.org/buildStatus/icon?job=BentoBoxWorld/Level)](https://ci.codemc.org/job/BentoBoxWorld/job/Level/)[
33
![Bugs](https://sonarcloud.io/api/project_badges/measure?project=BentoBoxWorld_Level&metric=bugs)](https://sonarcloud.io/dashboard?id=BentoBoxWorld_Level)
44
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=BentoBoxWorld_Level&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=BentoBoxWorld_Level)
55
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=BentoBoxWorld_Level&metric=ncloc)](https://sonarcloud.io/dashboard?id=BentoBoxWorld_Level)
66

7-
## About
7+
## 🔍 What is Level?
88

9-
Add-on for BentoBox to calculate island levels for BentoBox game modes like BSkyBlock and AcidIsland. It counts blocks and assigns a value to them.
10-
Players gain levels by accumulating points and can lose levels too if their points go down. This add-on will work
11-
for game modes listed in the config.yml.
9+
**Level** is the ultimate competition booster for your BentoBox server! Designed for game modes like **BSkyBlock**, **AcidIsland**, and more, this powerful add-on turns your island into a battleground of **block-by-block domination**.
1210

13-
Full documentation for Level can be found at [docs.bentobox.world](https://docs.bentobox.world/en/latest/addons/Level/).
11+
Every block you place counts toward your **island level**—and every block you lose could cost you your spot in the rankings. Whether you're aiming for the top ten or just flexing your creative builds, **Level** adds stakes, strategy, and excitement to your sky-high journey.
1412

15-
Official download releases are at [download.bentobox.world](download.bentobox.world).
13+
📘 [Full Documentation](https://docs.bentobox.world/en/latest/addons/Level/)
14+
📦 [Official Downloads](https://download.bentobox.world)
1615

17-
## How to use
16+
---
1817

19-
1. Place the level addon jar in the addons folder of the BentoBox plugin
20-
2. Restart the server
21-
3. The addon will create a data folder and inside the folder will be a config.yml
22-
4. Edit the config.yml how you want. The config specifies how much blocks are worth (see below)
23-
5. Restart the server if you make a change
18+
## 🚀 Getting Started
2419

25-
## Upgrading
20+
Ready to level up? Here's how to launch **Level** on your server:
2621

27-
1. Read the release notes carefully, but you may have to delete the old config.yml to use a new one.
22+
1. Drop the **Level** add-on `.jar` into your BentoBox `addons` folder.
23+
2. Restart your server and let the magic happen.
24+
3. A new `Level` data folder and `config.yml` will be created.
25+
4. Open `config.yml` and customize block values, settings, and behavior to suit your game mode.
26+
5. Restart your server again to apply changes.
2827

29-
## Permissions
30-
Permissions are given automatically to players as listed below for BSkyBlock, AcidIsland and CaveBlock. If your permissions plugin strips permissions then you may have to allocate these manually. Note that if a player doesn't have the `intopten` permission, they will not be listed in the top ten.
28+
Now you’re all set—go build something worth leveling for! 🏗️
29+
30+
---
31+
32+
## 🔄 Upgrading
33+
34+
When updating, always read the **release notes**!
35+
Some updates might require a fresh `config.yml`, so make backups and review changes carefully.
36+
37+
---
38+
39+
## 🛡️ Permissions
40+
41+
**Level** integrates directly with your permissions plugin, giving players the tools to compete while letting admins keep control.
42+
43+
Default permissions for **BSkyBlock**, **AcidIsland**, and **CaveBlock**:
3144

3245
```
3346
permissions:
34-
bskyblock.intopten:
35-
description: Player is in the top ten.
47+
bskyblock.intopten: # Show up in top 10
3648
default: true
37-
bskyblock.island.level:
38-
description: Player can use level command
49+
bskyblock.island.level: # Use /is level
3950
default: true
40-
bskyblock.island.top:
41-
description: Player can use top ten command
51+
bskyblock.island.top: # Use /is top
4252
default: true
43-
bskyblock.island.value:
44-
description: Player can use value command
53+
bskyblock.island.value: # Use /is value
4554
default: true
46-
bskyblock.admin.level:
47-
description: Player can use admin level command
55+
bskyblock.admin.level: # Admin access to /is level
4856
default: true
49-
bskyblock.admin.topten:
50-
description: Player can use admin top ten command
57+
bskyblock.admin.topten: # Admin access to /is topten
5158
default: true
5259
```
5360

54-
## Config.yml
61+
⚠️ Players need `intopten` to appear in the leaderboard!
5562

56-
The config.yml has the following sections:
63+
---
5764

58-
* Game Mode Addon configuration
59-
* General settings
60-
* Limits
61-
* Block values
62-
* Per-world block values
65+
## ⚙️ Configuration: Make It Yours
6366

64-
### Game Mode Addon configuration
67+
The `config.yml` file gives you total control over how leveling works. Here's a breakdown of what you can tweak:
6568

66-
This section allows you to list which game mode add-ons Level should hook into. Use BentoBox's version command to list the official add-on name.
69+
### 🎮 Game Mode Hook
70+
Tell Level which BentoBox game modes it should connect to.
6771

68-
### General Settings
72+
### ⚙️ General Settings
73+
- **Underwater Block Multiplier** – Give bonus points for blocks below sea level.
74+
- **Level Cost** – Set how many points are needed to gain 1 island level.
75+
- **Level Wait** – Add a cooldown between level scans.
76+
- **Death Penalty** – Punish deaths with level loss.
77+
- **Sum Team Deaths** – Choose whether to track team deaths or just the leader's.
78+
- **Reset on Island Reset / Team Join** – Wipe the death count when teams change or islands are reset.
6979

70-
This section defines a number of overall settings for the add-on.
80+
### 🚫 Block Limits
81+
Cap the number of specific blocks that count toward level (e.g., only 200 DIAMOND_BLOCKs count).
82+
83+
Format:
84+
```
85+
DIAMOND_BLOCK: 200
86+
```
7187

72-
* Underwater block multiplier - default value = 1. If this value is > 1 then blocks below sea level will have a greater value.
73-
* Level cost - Value of one island level. Default 100. Minimum value is 1.
74-
* Level wait - Cool down between level requests in seconds
75-
* Death penalty - How many block values a player will lose per death. Default value of 100 means that for every death, the player will lose 1 level (if levelcost is 100)
76-
* Sum Team Deaths - if true, all the team member deaths are summed. If false, only the leader's deaths counts.
77-
* Max deaths - If player dies more than this, it doesn't count anymore.
78-
* Reset deaths on island reset
79-
* Reset deaths on team join
88+
### 💎 Block Values
89+
Assign point values to blocks to reward rare or hard-to-get materials.
8090

81-
### Limits
82-
This section lists the limits for any particular block. Blocks over this amount are not counted. This limit applies to all game modes and is not world-specific.
83-
Format is MATERIAL: value
91+
Format:
92+
```
93+
STONE: 1
94+
DIAMOND_BLOCK: 100
95+
```
8496

85-
### Block values
86-
This section lists the value of a block in all game modes (worlds). To specific world-specific values, use the next section. Value must be an integer. Any blocks not listed will have a value of 0. AIR is always zero.
87-
Format is MATERIAL: value.
97+
Blocks not listed are worth **0**. `AIR` is always ignored.
8898

89-
### World-specific block values
90-
List any blocks that have a different value in a specific world. If a block is not listed, the default value will be used from the blocks section.
91-
Prefix with world name. The values will apply to the associated nether and the end if they exist. Example:
99+
### 🌍 World-Specific Values
100+
Customize block values for individual worlds or game modes.
92101

93-
```
102+
Example:
103+
```yaml
94104
worlds:
95105
AcidIsland_world:
96106
SAND: 0
97107
SANDSTONE: 0
98108
ICE: 0
99109
```
100110
101-
In this example, AcidIsland will use the same values as BSkyBlock for all blocks except for sand, sandstone and ice.
111+
In this setup, **AcidIsland** disables points for sand-based blocks while using default values for everything else.
112+
113+
---
114+
115+
## 🏁 Final Words
116+
117+
**Level** isn’t just a numbers game—it’s a **challenge**, a **competition**, and a **celebration** of creativity.
118+
Whether you're climbing the ranks or just making your mark, Level brings out the best in your builds.
119+
120+
💡 Need help or want to contribute? Join the community at [bentobox.world](https://bentobox.world) and show us what your island is made of!
121+
122+
Now go get that top spot. 🌌
123+
— The BentoBox Team

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
<!-- Non-minecraft related dependencies -->
5555
<powermock.version>2.0.9</powermock.version>
5656
<!-- More visible way how to change dependency versions -->
57-
<spigot.version>1.21.3-R0.1-SNAPSHOT</spigot.version>
58-
<bentobox.version>3.3.1-SNAPSHOT</bentobox.version>
57+
<spigot.version>1.21.5-R0.1-SNAPSHOT</spigot.version>
58+
<bentobox.version>3.3.1</bentobox.version>
5959
<!-- Warps addon version -->
6060
<warps.version>1.12.0</warps.version>
6161
<!-- Visit addon version -->
@@ -67,7 +67,7 @@
6767
<!-- Do not change unless you want different name for local builds. -->
6868
<build.number>-LOCAL</build.number>
6969
<!-- This allows to change between versions. -->
70-
<build.version>2.20.0</build.version>
70+
<build.version>2.21.0</build.version>
7171
<sonar.projectKey>BentoBoxWorld_Level</sonar.projectKey>
7272
<sonar.organization>bentobox-world</sonar.organization>
7373
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
@@ -247,14 +247,14 @@
247247
<dependency>
248248
<groupId>com.craftaro</groupId>
249249
<artifactId>UltimateStacker-API</artifactId>
250-
<version>1.0.0-20240329.173606-35</version>
250+
<version>1.0.0-SNAPSHOT</version>
251251
<scope>provided</scope>
252252
</dependency>
253253
<!-- ItemsAdder -->
254254
<dependency>
255255
<groupId>dev.lone</groupId>
256256
<artifactId>api-itemsadder</artifactId>
257-
<version>4.0.2-beta-release-11</version>
257+
<version>4.0.10</version>
258258
<scope>provided</scope>
259259
</dependency>
260260
</dependencies>

src/main/java/world/bentobox/level/Level.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import world.bentobox.level.commands.AdminSetInitialLevelCommand;
2727
import world.bentobox.level.commands.AdminStatsCommand;
2828
import world.bentobox.level.commands.AdminTopCommand;
29+
import world.bentobox.level.commands.IslandDetailCommand;
2930
import world.bentobox.level.commands.IslandLevelCommand;
3031
import world.bentobox.level.commands.IslandTopCommand;
3132
import world.bentobox.level.commands.IslandValueCommand;
@@ -34,7 +35,6 @@
3435
import world.bentobox.level.listeners.IslandActivitiesListeners;
3536
import world.bentobox.level.listeners.JoinLeaveListener;
3637
import world.bentobox.level.listeners.MigrationListener;
37-
import world.bentobox.level.objects.LevelsData;
3838
import world.bentobox.level.requests.LevelRequestHandler;
3939
import world.bentobox.level.requests.TopTenRequestHandler;
4040
import world.bentobox.visit.VisitAddon;
@@ -249,6 +249,7 @@ private void registerCommands(GameModeAddon gm) {
249249
new IslandLevelCommand(this, playerCmd);
250250
new IslandTopCommand(this, playerCmd);
251251
new IslandValueCommand(this, playerCmd);
252+
new IslandDetailCommand(this, playerCmd);
252253
});
253254
}
254255

@@ -482,7 +483,7 @@ public Warp getWarpHook() {
482483
}
483484

484485
public boolean isItemsAdder() {
485-
return getPlugin().getHooks().getHook("ItemsAdder").isPresent();
486+
return !getSettings().isDisableItemsAdder() && getPlugin().getHooks().getHook("ItemsAdder").isPresent();
486487
}
487488

488489
}

0 commit comments

Comments
 (0)