22 lines
1.3 KiB
JSON
22 lines
1.3 KiB
JSON
{
|
|
"languages": [
|
|
"java",
|
|
"yaml",
|
|
"markdown"
|
|
],
|
|
"focus": [
|
|
"thread-safety",
|
|
"paper-chunk-ticketing",
|
|
"item-loss-prevention",
|
|
"resource-cleanup",
|
|
"performance-and-chunk-loading",
|
|
"null-safety-and-unit-tests"
|
|
],
|
|
"exclude_paths": [
|
|
"target/**",
|
|
"*.bak*",
|
|
"docs/**"
|
|
],
|
|
"instructions": "Canalhandia is a Minecraft Paper 1.21.x server plugin written in modern Java 25. Enforce these core invariants:\n1. Thread Safety: Bukkit API, World, Entity, and Inventory mutations MUST run on the main server thread. Async threads only do pure calculation or async file I/O.\n2. Item & Inventory Safety: Never discard player items. Always handle full-inventory overflow by dropping excess items at the player's location. On multi-step container placement (e.g. chests), roll back blocks if not all items fit.\n3. Lifecycle & Cleanup: All registered chunk tickets, recipes, schedulers, and I/O executors must be cleanly flushed and unloaded in onDisable() and module toggles.\n4. Chunk Loading: Never trigger synchronous chunk generation or loading inside event handlers. Always check world.isChunkLoaded() before querying blocks.\n5. Test Coverage: All domain logic, coordinates math, parsers, and pure helpers must have corresponding JUnit tests in src/test/java."
|
|
}
|