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
-`gradle.properties` sets `org.gradle.parallel=false` and `org.gradle.daemon=false` — do not change these
35
+
-`snakeyaml` is pinned at 1.23 intentionally — newer versions break on Windows-encoded config files
36
+
30
37
## Architecture
31
38
32
-
### Module Structure (71 modules total)
39
+
### Module Structure
33
40
34
41
**Core Shared Modules:**
35
-
-`DynmapCoreAPI/` - Stable public API for external plugins/mods (markers, mod support, rendering)
42
+
-`DynmapCoreAPI/` - Stable public API for external plugins/mods (markers, mod support, rendering). Published to `repo.mikeprimm.com`. The `org.dynmap.renderer` package here defines `DynmapBlockState` — the central block state abstraction used everywhere.
-`web/` — Embedded Jetty 9 server with custom HTTP routing (no standard servlet container)
76
+
-`markers/impl/` — Full marker system implementation; public interface is in `DynmapCoreAPI`
77
+
-`utils/MapChunkCache` + `utils/MapIterator` — Abstract interfaces that each platform implements to feed world data into the renderer
78
+
79
+
### Platform Integration Pattern
80
+
81
+
Each platform module (Spigot `bukkit-helper-*`, Fabric, Forge) must implement:
82
+
-`MapChunkCache` — Loads and caches chunk data for a tile's required chunks
83
+
-`MapIterator` — Block-by-block iteration over the loaded chunk cache
84
+
- A platform entry point (e.g., `DynmapPlugin` for Spigot) that bootstraps `DynmapCore`
85
+
86
+
The `bukkit-helper-*` modules contain version-specific NMS code; `spigot/` delegates to the appropriate helper at runtime via reflection.
75
87
76
88
## Testing
77
89
78
-
No automated tests exist. Verification is done by:
79
-
1. Building all platforms successfully (`./gradlew setup build` AND `cd oldgradle && ./gradlew setup build`)
90
+
Unit tests exist in `DynmapCore/src/test/` (JUnit 4) covering `Matrix3D`, `Vector3D`, `IpAddressMatcher`, `DynIntHashMap`, and `BufferInputStream`. Run with `./gradlew :DynmapCore:test`.
91
+
92
+
Full verification requires:
93
+
1. Building all platforms: `./gradlew setup build` AND `cd oldgradle && ./gradlew setup build`
80
94
2. Manual testing on target Minecraft server platforms
81
95
82
-
## Storage Backends
96
+
## Critical Contribution Rules
97
+
98
+
**PRs must build and test on ALL platforms including oldgradle. Changes to DynmapCore/DynmapCoreAPI require testing on all platforms.**
0 commit comments