|
1 | 1 | # Labyrinth |
2 | 2 | <img src="Labyrinth_logo.png" width="50%" height="50%" alt="A labyrinth"> |
3 | 3 |
|
| 4 | +Labyrinth is a Paper plugin for the OneLiteFeather Survival Server. It defines zones where hostile mobs and bats cannot spawn, reducing the need to light the entire labyrinth. |
4 | 5 |
|
5 | | -What is the Labyrinth? |
6 | | ---- |
7 | | -Labyrinth is the matching Paper Plugin written in Java for the Labyrinth Community Project on our Survival Server. |
8 | | -Its whole purpose at the moment is to create a zone where mobs can't spawn so that players don't need to light up the whole labyrinth |
9 | | - |
10 | | -### About Mobspawning |
11 | | -On our server there is no lighting below / above, and we don't want mobs to spawn there, also Bats are friendly but |
12 | | -Only spawn in caves or when Minecraft thinks we are in a cave, so we don't want to let them spawn too. |
13 | | ---- |
14 | | -### Permissions |
15 | | - |
16 | | -```labyrinth.setup.center``` |
17 | | -- This permission is needed to create the center of the zone. |
18 | | ---- |
19 | | -```labyrinth.setup.setradius``` |
20 | | -- This permission is needed to set the radius of the zone. |
21 | | ---- |
22 | | -```labyrinth.toggle.mobspawn``` |
23 | | -- This permission is needed to toggle mobspawning for the zone. |
24 | | ---- |
25 | | -```labyrinth.setup.createzone``` |
26 | | -- This permission is needed to create a new zone entry. |
27 | | ---- |
28 | | -```labyrinth.setup.deletezone``` |
29 | | -- This permission is needed to delete a zone |
30 | | ---- |
31 | | -### Features (zone needs to be created in this order) |
32 | | -- Create a zone |
33 | | -```/labyrinth create <zone>``` |
34 | | ---- |
35 | | -- Set Center of a zone |
36 | | -```/labyrinth center <zone>``` |
37 | | ---- |
38 | | -- Set Radius of a zone |
39 | | -```/labyrinth setradius <zone>``` |
40 | | ---- |
41 | | -- Toggle mobspawning of a zone |
42 | | -```/labyrinth toggle <zone>``` |
43 | | ---- |
44 | | -### Get rid of zones: |
45 | | -- Delete a zone |
46 | | - ```/labyrinth delete <zone>``` |
47 | | ---- |
| 6 | +## Features |
| 7 | +- Create zones and manage their center, radius, and mob spawning state. |
| 8 | +- Toggle mob spawning per zone. |
| 9 | +- Zone name validation: alphanumeric only (`A-Z`, `a-z`, `0-9`). |
48 | 10 |
|
| 11 | +## Commands |
| 12 | +- `/labyrinth create <zone>` |
| 13 | +- `/labyrinth center <zone>` |
| 14 | +- `/labyrinth setradius <zone>` |
| 15 | +- `/labyrinth toggle <zone>` |
| 16 | +- `/labyrinth delete <zone>` |
49 | 17 |
|
| 18 | +## Permissions |
| 19 | +- `labyrinth.setup.createzone` |
| 20 | +- `labyrinth.setup.center` |
| 21 | +- `labyrinth.setup.setradius` |
| 22 | +- `labyrinth.toggle.mobspawn` |
| 23 | +- `labyrinth.setup.deletezone` |
| 24 | + |
| 25 | +## Configuration |
| 26 | +- The plugin stores zones under `zones.<zone>` in `config.yml`. |
| 27 | +- Keys used internally: |
| 28 | +- `zones.<zone>.centerLocation` |
| 29 | +- `zones.<zone>.radius` |
| 30 | +- `zones.<zone>.mobspawning` |
| 31 | + |
| 32 | +## Build, Test, and Run (Developers) |
| 33 | +- `./gradlew build`: compile and run tests. |
| 34 | +- `./gradlew test`: run unit tests. |
| 35 | +- `./gradlew shadowJar`: produces `build/libs/labyrinth.jar`. |
| 36 | +- `./gradlew runServer`: starts a local Paper server for manual testing (Minecraft `1.21.11`). |
| 37 | + |
| 38 | +## Project Structure |
| 39 | +- `src/main/java/net/onelitefeather/labyrinth/`: plugin code. |
| 40 | +- `src/main/resources/`: resources (including `config.yml`). |
| 41 | +- `src/test/java/net/onelitefeather/labyrinth/`: JUnit tests (MockBukkit). |
| 42 | + |
| 43 | +## CI and Releases |
| 44 | +- Pull requests run a matrix build on Ubuntu, Windows, and macOS. |
| 45 | +- Releases run on pushes to `main`, `next`, `beta`, or `*.x` using semantic-release. |
| 46 | + |
| 47 | +## Notes |
| 48 | +- The plugin entrypoint is `net.onelitefeather.labyrinth.Labyrinth`. |
| 49 | +- If you change commands, permissions, or config keys, update this README. |
0 commit comments