|
1 | | -# EndCrystals |
2 | | -1MB Helper plugin |
| 1 | +# 1MB-EndCrystals |
3 | 2 |
|
4 | | -This is a helper for my server to prevent grief by players. Separate from other protection plugins, I want to make sure that end crystals we place for decoration purposes don't cause certain damage, nor that they can get griefed by other players. |
| 3 | +`1MB-EndCrystals` is a small Paper plugin for one job: let end crystals behave like end crystals, but never let them break blocks. It also optionally protects decorative crystals from players and player-fired projectiles, independent from WorldGuard or any other region plugin. |
5 | 4 |
|
6 | | -## Versions |
| 5 | +This refresh targets Java 25 and has been built for modern Paper installs, with validation intended for: |
7 | 6 |
|
8 | | -The 1.x old version got updated now to 1.16.5, which seems fine. |
| 7 | +- Paper `1.21.11` |
| 8 | +- Paper `26.1.2` |
9 | 9 |
|
10 | | -The 1.16.5 update got updated to Spigot 1.17, and has been tested. |
| 10 | +The produced jar is named: |
| 11 | + |
| 12 | +`1MB-EndCrystals-v2.0.1-021-v25-26.1.2.jar` |
| 13 | + |
| 14 | +## What It Does |
| 15 | + |
| 16 | +- Clears end crystal block damage without cancelling the whole explosion event |
| 17 | +- Optionally blocks players from breaking protected crystals |
| 18 | +- Optionally blocks player projectiles from breaking protected crystals |
| 19 | +- Keeps The End configurable so dragon-fight style gameplay can stay intact if desired |
| 20 | +- Stores config in a shared home-folder location: `~/plugins/1MB-EndCrystals/config.yml` |
| 21 | +- Supports `/_endcrystals reload` |
| 22 | +- Supports `/_endcrystals toggle <setting> [true|false]` for live boolean config toggles |
| 23 | +- Supports `/_endcrystals debug` for runtime/build/config diagnostics |
| 24 | + |
| 25 | +## Commands |
| 26 | + |
| 27 | +- `/_endcrystals debug` |
| 28 | +- `/_endcrystals reload` |
| 29 | +- `/_endcrystals toggle` |
| 30 | +- `/_endcrystals toggle protection.prevent-block-damage` |
| 31 | +- `/_endcrystals toggle debug.log-block-protection true` |
| 32 | + |
| 33 | +Aliases: |
| 34 | + |
| 35 | +- `/endcrystals` |
| 36 | +- `/ec` |
| 37 | + |
| 38 | +## Permissions |
| 39 | + |
| 40 | +- `1mb.endcrystals.admin` |
| 41 | +- `1mb.endcrystals.debug` |
| 42 | +- `1mb.endcrystals.reload` |
| 43 | +- `1mb.endcrystals.toggle` |
| 44 | +- `1mb.endcrystals.bypass` |
| 45 | + |
| 46 | +`1mb.endcrystals.admin` grants the command permissions. `1mb.endcrystals.bypass` allows a player to break otherwise protected crystals. |
| 47 | + |
| 48 | +## Config |
| 49 | + |
| 50 | +The plugin reads and writes its main config here: |
| 51 | + |
| 52 | +`~/plugins/1MB-EndCrystals/config.yml` |
| 53 | + |
| 54 | +That makes it easy to share one config across multiple local servers started by the same user account. |
| 55 | + |
| 56 | +Important defaults: |
| 57 | + |
| 58 | +- `protection.prevent-block-damage: true` |
| 59 | +- `protection.prevent-player-break: true` |
| 60 | +- `protection.prevent-projectile-break: true` |
| 61 | +- `protection.allow-player-break-in-the-end: true` |
| 62 | +- `protection.clear-explosion-yield: true` |
| 63 | + |
| 64 | +Live toggle keys are listed in the config under `live-toggles`. Those settings can be changed immediately with `/_endcrystals toggle ...` and also refresh when you run `/_endcrystals reload`. |
| 65 | + |
| 66 | +## Build |
| 67 | + |
| 68 | +If the local Paper `1.21.11` API jar is available in `servers/Server-One-Paper-1.21.11`, Gradle uses that directly for offline local builds. Otherwise it falls back to the Paper Maven repository. |
| 69 | + |
| 70 | +Build with: |
| 71 | + |
| 72 | +```bash |
| 73 | +./gradlew build |
| 74 | +``` |
| 75 | + |
| 76 | +Output jar: |
| 77 | + |
| 78 | +`build/libs/1MB-EndCrystals-v2.0.1-021-v25-26.1.2.jar` |
| 79 | + |
| 80 | +## Install |
| 81 | + |
| 82 | +1. Build the jar. |
| 83 | +2. Copy it into a Paper server's `plugins/` folder. |
| 84 | +3. Start the server once so the shared config is created under `~/plugins/1MB-EndCrystals/`. |
| 85 | +4. Use `/_endcrystals debug` to verify runtime information. |
| 86 | +5. Use `/_endcrystals reload` after editing the config. |
| 87 | + |
| 88 | +## Testing Notes |
| 89 | + |
| 90 | +The plugin is meant to be testable without WorldGuard present. If an end crystal explodes near normal blocks, the explosion should still happen but the blocks should remain intact while the plugin is enabled. |
0 commit comments