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
Those aliases are controlled by `commands.aliases` in `plugins/1MB-EndCrystals/config.yml`. Set `commands.aliases: []` if you want no extra aliases. Changes apply after `/_endcrystals reload`.
47
+
If another plugin or the server already owns one of those names, 1MB-EndCrystals skips that alias and logs a warning while keeping `/_endcrystals` available.
48
+
38
49
## Permissions
39
50
40
-
-`1mb.endcrystals.admin`
41
-
-`1mb.endcrystals.debug`
42
-
-`1mb.endcrystals.reload`
43
-
-`1mb.endcrystals.toggle`
44
-
-`1mb.endcrystals.bypass`
51
+
-`onembendcrystals.admin`
52
+
-`onembendcrystals.debug`
53
+
-`onembendcrystals.reload`
54
+
-`onembendcrystals.toggle`
55
+
-`onembendcrystals.break`
45
56
46
-
`1mb.endcrystals.admin` grants the command permissions. `1mb.endcrystals.bypass` allows a player to break otherwise protected crystals.
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.
47
58
48
59
## Config
49
60
50
61
The plugin reads and writes its main config here:
51
62
52
-
`~/plugins/1MB-EndCrystals/config.yml`
63
+
`plugins/1MB-EndCrystals/config.yml`
64
+
65
+
Each Paper server gets its own local config folder, which is the normal Bukkit/Paper behavior.
53
66
54
-
That makes it easy to share one config across multiple local servers started by the same user account.
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.
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`.
79
+
By default the protected entity list includes armor stands, dropped items, item frames, glow item frames, paintings, display entities, leash knots, minecart variants, and boat or raft variants. Live toggle keys are listed in the config under `live-toggles`. Those settings can be changed immediately with `/_endcrystals toggle [setting] [true|false]` and also refresh when you run `/_endcrystals reload`.
80
+
81
+
## Changelog
82
+
83
+
### Legacy -> `v2.0.1` Refresh
84
+
85
+
This section summarizes the modernization work completed for the current refresh.
86
+
87
+
- Migrated the plugin to a Gradle build for Java `25`
88
+
- Retargeted the plugin for modern Paper, validated against `1.21.11` and `26.1.2`
89
+
- Standardized the shipped jar name to `1MB-EndCrystals-v2.0.1-021-v25-26.1.2.jar`
90
+
- 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
+
- Added `/_endcrystals reload`
93
+
- Added `/_endcrystals debug`
94
+
- Added live config toggles through `/_endcrystals toggle [setting] [true|false]`
95
+
- Moved command aliases into `config.yml` so they can be added or removed without editing `plugin.yml`
96
+
- Kept `/_endcrystals` as the permanent primary command
97
+
- Switched to explicit `onembendcrystals.*` permission nodes with `default: false`
98
+
- Made crystal breaking permission-driven instead of implicitly allowing ops
99
+
- Expanded protection beyond blocks to cover decorative and item entities
100
+
- Added protection for minecart and boat-style entities that were still vulnerable on the legacy path
101
+
- 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
65
104
66
105
## Build
67
106
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.
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.
69
108
70
109
Build with:
71
110
@@ -81,10 +120,10 @@ Output jar:
81
120
82
121
1. Build the jar.
83
122
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/`.
123
+
3. Start the server once so the plugin creates `plugins/1MB-EndCrystals/config.yml`.
85
124
4. Use `/_endcrystals debug` to verify runtime information.
86
125
5. Use `/_endcrystals reload` after editing the config.
87
126
88
127
## Testing Notes
89
128
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.
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.
0 commit comments