# GriefPrevention3D v18.2.0
**Wiki:** [GriefPrevention3D Wiki](https://github.com/castledking/GriefPrevention3D/wiki)
## Features
### DatabaseDataStore now matches FlatFileDataStore feature-for-feature
`DatabaseDataStore` was missing three persisted fields that `FlatFileDataStore` has supported for some time. Database users will now get identical behaviour.
#### 3D claims (`is3d`)
The `is3d` boolean is now persisted in the `griefprevention_claimdata` table. Claims created with 3D enabled (subdivisions that respect Y boundaries) will correctly reload after a restart.
- Schema migration v7: `ALTER TABLE griefprevention_claimdata ADD COLUMN IF NOT EXISTS is3d BOOLEAN DEFAULT 0`
- `DatabaseDataStore.java`: passes `is3d` from `ResultSet` to `new Claim(…)` instead of hardcoding `false`
#### Shaped claims (`shapecorners`)
Shaped claim geometry (non-rectangular orthogonal polygons) is now serialized to a `shapecorners TEXT` column as semicolon-delimited `x,z` pairs. Existing rectangular claims are unaffected.
- Schema migration v8: `ALTER TABLE griefprevention_claimdata ADD COLUMN IF NOT EXISTS shapecorners TEXT DEFAULT ''`
- `DatabaseDataStore.java`: `serializeCornersForDb()` / `parseCornersFromDb()` helpers convert between `List<OrthogonalPoint2i>` and the DB text format
- Reads are passed to `claim.setShapedCorners()` on load
#### Modified date (`modifieddate`)
Each claim's last-modified timestamp is stored as a `BIGINT` (epoch millis). On first save after migration, existing claims without a timestamp will get the current time.
- Schema migration v9: `ALTER TABLE griefprevention_claimdata ADD COLUMN IF NOT EXISTS modifieddate BIGINT DEFAULT 0`
- `DatabaseDataStore.java`: `claim.modifiedDate` is set from `modifieddate` column on load (when > 0) and written on every save
### Technical details
| Schema version | What changed |
|---|---|
| 7 | Added `griefprevention_claimdata.is3d` |
| 8 | Added `griefprevention_claimdata.shapecorners` |
| 9 | Added `griefprevention_claimdata.modifieddate` |
| 10 | Current `latestSchemaVersion` |
All migrations use `ALTER TABLE … ADD COLUMN IF NOT EXISTS` — zero-touch upgrade for existing database users.
Optional dependencies
VaultUnlocked
Any compatible version
QuickShop-Hikari
Any compatible version
PlaceholderAPI
Any compatible version
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }