You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+28-14Lines changed: 28 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,15 +20,15 @@ The produced jar is named:
20
20
- Optionally blocks player projectiles from breaking protected crystals
21
21
- Keeps The End configurable so dragon-fight style gameplay can stay intact if desired
22
22
- Uses the normal Paper plugin data folder: `plugins/1MB-EndCrystals/config.yml`
23
-
-Migrates the misplaced legacy home-folder config into the correct server-local folder on first startup
23
+
-Uses locale-ready message files in `plugins/1MB-EndCrystals/Translations/`
24
24
- Supports `/_endcrystals reload`
25
25
- Supports `/_endcrystals toggle [setting] [true|false]` for live boolean config toggles
26
26
- Supports `/_endcrystals debug` for runtime/build/config diagnostics
27
27
- Supports configurable command aliases from `config.yml`
28
28
- Uses MiniMessage formatting for plugin output
29
-
-Uses strict permission nodes with op not automatically bypassing protection
29
+
-Keeps protection enabled by default while admin and break access stay permission-driven
30
30
- Targets Java `25` and modern Paper builds
31
-
- Builds with Gradle from a fresh clone without requiring any private `/servers/` test setup
31
+
- Builds with Gradle from a fresh clone
32
32
33
33
## Commands
34
34
@@ -54,20 +54,23 @@ If another plugin or the server already owns one of those names, 1MB-EndCrystals
54
54
-`onembendcrystals.toggle`
55
55
-`onembendcrystals.break`
56
56
57
-
All of these permissions default to `false`, so being op alone does not grant them. `onembendcrystals.admin` grants the command permissions. `onembendcrystals.break`allows a player to break otherwise protected crystals.
57
+
Protection is enabled by default through the config values under `protection.*`. By default, regular players and ops are both blocked from breaking protected crystals or using the management commands. `onembendcrystals.break`must be granted explicitly to allow a player to break otherwise protected crystals, and `onembendcrystals.admin` or the individual command nodes must be granted explicitly to allow management access.
58
58
59
59
## Config
60
60
61
61
The plugin reads and writes its main config here:
62
62
63
63
`plugins/1MB-EndCrystals/config.yml`
64
64
65
-
Each Paper server gets its own local config folder, which is the normal Bukkit/Paper behavior.
65
+
Locale files live here:
66
66
67
-
If you are upgrading from an older build that wrote to `~/plugins/1MB-EndCrystals/config.yml`, the plugin will copy that legacy file into the server-local plugin folder on first startup if the new server-local config does not already exist.
Each Paper server gets its own local config and translation folder, which is the normal Bukkit/Paper behavior.
68
70
69
71
Important defaults:
70
72
73
+
-`translations.locale: Locale_EN`
71
74
-`commands.aliases: [endcrystals, ec]`
72
75
-`protection.prevent-block-damage: true`
73
76
-`protection.prevent-player-break: true`
@@ -88,23 +91,21 @@ This section summarizes the modernization work completed for the current refresh
88
91
- Retargeted the plugin for modern Paper, validated against `1.21.11` and `26.1.2`
89
92
- Standardized the shipped jar name to `1MB-EndCrystals-v2.0.1-021-v25-26.1.2.jar`
90
93
- Reworked config storage to use the active server's `plugins/1MB-EndCrystals/config.yml`
91
-
- Added one-time migration support for the old misplaced `~/plugins/1MB-EndCrystals/config.yml`
92
94
- Added `/_endcrystals reload`
93
95
- Added `/_endcrystals debug`
94
96
- Added live config toggles through `/_endcrystals toggle [setting] [true|false]`
95
97
- Moved command aliases into `config.yml` so they can be added or removed without editing `plugin.yml`
96
98
- Kept `/_endcrystals` as the permanent primary command
97
-
-Switched to explicit `onembendcrystals.*` permission nodes with `default: false`
99
+
-Kept protection enabled by default while moving admin and crystal-break access onto explicit `onembendcrystals.*` permission nodes
98
100
- Made crystal breaking permission-driven instead of implicitly allowing ops
99
101
- Expanded protection beyond blocks to cover decorative and item entities
100
102
- Added protection for minecart and boat-style entities that were still vulnerable on the legacy path
101
103
- Improved debug output to show build/runtime info, config path, permissions, live toggles, and active commands
102
-
- Moved plugin messages into config and formatted output with MiniMessage
103
-
- Updated docs so public builds do not depend on any private local `/servers/` test directory
104
+
- Split plugin messages into locale files under `Translations/` and formatted output with MiniMessage
104
105
105
106
## Build
106
107
107
-
The public build does not depend on any local `servers/` directory. A normal checkout builds against the Paper API from the Paper Maven repository, and any repo-local test servers are strictly optional private development tooling.
108
+
A normal checkout builds against the Paper API from the Paper Maven repository.
108
109
109
110
Build with:
110
111
@@ -120,10 +121,23 @@ Output jar:
120
121
121
122
1. Build the jar.
122
123
2. Copy it into a Paper server's `plugins/` folder.
123
-
3. Start the server once so the plugin creates `plugins/1MB-EndCrystals/config.yml`.
124
-
4. Use `/_endcrystals debug` to verify runtime information.
124
+
3. Start the server once so the plugin creates `plugins/1MB-EndCrystals/config.yml` and `plugins/1MB-EndCrystals/Translations/Locale_EN.yml`.
125
+
4. Use `/_endcrystals debug` to verify runtime information, including the active locale file.
125
126
5. Use `/_endcrystals reload` after editing the config.
126
127
128
+
## Support
129
+
130
+
If you run into a bug, want to request a feature, or need help using the plugin, please use the [GitHub Issues](https://github.com/mrfdev/EndCrystals/issues) section for this repository.
131
+
132
+
## Credits
133
+
134
+
- mrfloris ([GitHub: `mrfdev`](https://github.com/mrfdev)) for the original plugin, project direction, and the v2 refresh goals
135
+
- OpenAI for helping modernize and ship the v2 update
136
+
137
+
## License
138
+
139
+
This project is licensed under the MIT License. See [LICENSE](LICENSE) for the full text.
140
+
127
141
## Testing Notes
128
142
129
-
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. Any `/servers/` directory used in development is for private local testing only and is not part of the public build flow.
143
+
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.
messages.put("command-usage", yaml.getString("messages.command-usage", "<yellow>Use <white>/_endcrystals debug</white>, <white>reload</white>, or <white>toggle [setting] [true|false]</white>.</yellow>"));
92
-
messages.put("player-break-blocked", yaml.getString("messages.player-break-blocked", "<red>These end crystals are protected.</red>"));
88
+
messages.put("no-permission", localeYaml.getString("messages.no-permission", "<red>You do not have permission to do that.</red>"));
89
+
messages.put("reloaded", localeYaml.getString("messages.reloaded", "<green>Configuration reloaded from <white>%path%</white>.</green>"));
90
+
messages.put("toggle-updated", localeYaml.getString("messages.toggle-updated", "<green><white>%setting%</white> is now <white>%value%</white>.</green>"));
0 commit comments