• Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the community!

    Now, what are you waiting for? Join the community now!

✨ What's New in v1.0.5 - Complete Test Suite & Full Coverage​


Major Features Added​

1. Advanced JSON Schema Validation Keywords​

  • Implementation of remaining P1/P2 keywords across parser and validators
  • Fix for keyword detection scope and array items validation
  • Implementation of P0 draft-2020-12 gaps: propertyNames, contains, and registry sync
  • Hardening of unevaluated and dynamicRef semantics with follow-up plan
  • Advance Phase H2 with dynamicRef and unevaluated regressions
  • Complete next hardening stage for dynamic scope and content vocab
  • Start next hardening stage for unevaluated applicator coverage

2. Enhanced Documentation and User Experience​

  • Added star rating system with rate limiting (1-5 stars)
  • Improved documentation with UUID validation utility
  • Updated format-reference.md with corrected tables and examples
  • Enhanced getting-started.html and installation.html documentation
  • Added comprehensive examples for all JSON Schema features
  • Updated documentation to reflect implemented JSON Schema features
  • Removed GitHub discussions link from help-support
  • Updated help-support page with repository links

3. Cloudflare Workers Integration​

  • Complete configuration of Cloudflare Workers with KV
  • Migrate rating storage from GitHub API to Cloudflare KV
  • Allow dots in page parameter validation for .html support
  • Improve privacy by removing userAgent/referrer storage and add data retention
  • Add User-Agent header for GitHub API
  • Add debug logs to worker
  • Add feedback system with Cloudflare Workers integration

4. Bug Fixes and Stability Improvements​

  • Fix complex schema to resolve validation issues
  • Corrected FormatValidator regex patterns for RFC compliance
  • Fix: Updated worker's URL of feedback for production
  • Various documentation fixes and typo corrections
  • Reset feedbacks.json periodically for clean state

Compatibility

SoftwareVersion
Minecraft1.21+
Java21
Skript2.14+
ServerPaper/Spigot 1.21+

Dependencies


---

✨ What's New in v1.0.0 - Complete Test Suite & Full Coverage

Major Features Added

1. Complete Unit Test Suite
Comprehensive test coverage for all JSON Schema validators:

  • 324 unit tests across 22 test classes
  • 100% pass rate on all validators
  • Test classes for:
    • Array validators: MinItems, MaxItems, UniqueItems, PrefixItems, AdditionalItems
    • Object validators: MinProperties, MaxProperties, DependentRequired, DependentSchemas
    • Conditional validators: ConditionalValidator, OneOfValidator, NotValidator
    • Format validators: 21 formats (12 standard + 9 Minecraft-specific)
    • Primitive validators: Type, Enum, Numeric, String constraints
    • Misc validators: Const, ReadOnly, WriteOnly
    • Schema system: Schema, FileSchemaLoader, SchemaRefResolver

2. Documentation Updates
  • Test execution & evolution guide with detailed instructions
  • Test coverage report with comprehensive metrics
  • Updated architecture documentation with test coverage status
  • Updated schema-keywords documentation with verification status
  • Corrected code-audit-2026-03.md to reflect actual implementation

3. Bug Fixes
  • MinPropertiesValidator now handles null data correctly
  • MaxPropertiesValidator now handles null data correctly
  • ObjectValidator now handles non-Map data gracefully

---

✨ What's New in v0.5.0 - Semantic Minecraft Validation

Major Features Added

1. Semantic Validation for Minecraft Formats
Full semantic validation using real Bukkit registries when the server is running:

  • Entity validation - Validates against
    Code:
    EntityType
    registry
  • Biome validation - Validates against
    Code:
    Biome
    registry
  • Enchantment validation - Validates against
    Code:
    Enchantment
    registry
  • Particle validation - Validates against
    Code:
    Particle
    registry
  • Sound validation - Validates against
    Code:
    Sound
    registry
  • Effect validation - Validates against
    Code:
    PotionEffectType
    registry
  • Potion validation - Validates against
    Code:
    PotionType
    registry
  • Dimension validation - Validates against hardcoded list (overworld, nether, the_end)
  • Recipe validation - Validates against
    Code:
    Bukkit.getRecipe()
  • Material validation - Validates items/blocks using
    Code:
    Material.getMaterial()

2. Schema Metadata Support
Added support for JSON Schema metadata keywords:

  • Code:
    $schema
    - Schema dialect (e.g., "https://json-schema.org/draft/2020-12/schema")
  • Code:
    $id
    - Schema identifier
  • Code:
    title
    - Schema title
  • Code:
    description
    - Schema description
  • Code:
    type
    as array - Union types support (e.g., ["string", "null"])
Compatibility
SoftwareVersion
Minecraft1.21+
Java21
Skript2.14+
ServerPaper/Spigot 1.21+

Dependencies

✨ What's New in v0.5.0 - Semantic Minecraft Validation

Major Features Added

1. Semantic Validation for Minecraft Formats
Full semantic validation using real Bukkit registries when the server is running:
  • Entity validation - Validates against EntityType registry
  • Biome validation - Validates against Biome registry
  • Enchantment validation - Validates against Enchantment registry
  • Particle validation - Validates against Particle registry
  • Sound validation - Validates against Sound registry
  • Effect validation - Validates against PotionEffectType registry
  • Potion validation - Validates against PotionType registry
  • Dimension validation - Validates against hardcoded list (overworld, nether, the_end)
  • Recipe validation - Validates against Bukkit.getRecipe()
  • Material validation - Validates items/blocks using Material.getMaterial()

2. Schema Metadata Support
Added support for JSON Schema metadata keywords:
  • $schema - Schema dialect (e.g., "https://json-schema.org/draft/2020-12/schema")
  • $id - Schema identifier
  • title - Schema title
  • description - Schema description
  • type as array - Union types support (e.g., ["string", "null"])

⚠️ Important Notice
This addon was created with Artificial Intelligence assistance. Use with caution and report any bugs found.
Compatibility
SoftwareVersion
Minecraft1.21+
Java21
Skript2.14+
ServerPaper/Spigot 1.21+

✨ What's New in v0.3.5

1. Conditional Validation (oneOf, not, if/then/else)
Full JSON Schema conditional validation support:
  • oneOf — Data must match exactly ONE of the defined schemas
  • not — Data must NOT match the specified schema
  • if/then/else — Conditional validation based on conditions

2. Format Validation
12 standard formats + 13 Minecraft-specific formats:
  • Standard: email, uri, uri-reference, date-time, date, time, ipv4, ipv6, hostname, unix-time, json-pointer, relative-json-pointer
  • Minecraft: minecraft-item, minecraft-block, minecraft-entity, minecraft-attribute, minecraft-effect, minecraft-enchantment, minecraft-biome, minecraft-dimension, minecraft-particle, minecraft-sound, minecraft-potion, minecraft-recipe, minecraft-tag

3. MultipleOf Validation
Code:
json
{
  "type": "number",
  "multipleOf": 0.5
}

4. Array & Object Validation
  • minItems/maxItems/uniqueItems — Array cardinality
  • minProperties/maxProperties — Object property count

5. System Features
  • Supported Keywords Registry (39 keywords)
  • Unsupported Keyword Detection
  • Fail-Fast Mode (configurable)

Bug Fixes
  • Fixed detection of unsupported keywords in custom properties
  • Fixed validation of
    Code:
    type: number
    to accept Integer values
  • Updated to use proper Minecraft namespaced IDs (e.g.,
    Code:
    minecraft:diamond
    )

Basic Usage (Skript)
Code:
# Validate YAML
validate yaml "playerdata/myplayer.yml" using schema "schemas/player-profile.schema.json"

# Validate JSON
validate json "config/settings.json" using schema "schemas/settings.schema.json"

# Check errors
set {_errors::*} to last schema validation errors
if size of {_errors::*} is 0:
    broadcast "✓ Validation passed!"
else:
    broadcast "✗ Validation failed:"
    loop {_errors::*}:
        broadcast "- %loop-value%"

Installation
  • Download the latest release
  • Place the .jar file into your server's /plugins folder
  • Ensure Skript is already installed
  • Restart the server

Thank you for trying Schema-Validator!

Warning​


This is an early release and may contain bugs, incomplete features, or unexpected behavior. Please test thoroughly in a development environment before using on a live server.



✨ Features​


  • YAML & JSON Validation — Validate configuration files in both YAML and JSON formats against defined schemas
  • JSON Schema-Like Validation — Use JSON Schema-like structure to define expected data formats with 39+ supported keywords
  • Complex Schema Support — Nested objects, arrays, enums, required fields, patternProperties, minProperties, maxProperties, minItems, maxItems, uniqueItems
  • Schema Composition — Combine schemas using allOf, anyOf, oneOf, not for complex validation logic
  • Conditional Validation — Use if/then/else keywords for dynamic validation rules based on data values
  • Format Validation — Built-in validators for email, uri, date, time, datetime, ipv4, ipv6, uuid, and more
  • MultipleOf Validation — Numeric divisibility constraints for integer values
  • Detailed Error Reporting — Get clear error messages including: field path, expected type, actual value received
  • Native Skript Integration — Simple, easy-to-use Skript syntax for all validation operations
  • Schema References — Support for $ref to reuse schema definitions across multiple files
  • Caching System — Built-in cache to improve performance for repeated validations
  • Fail-Fast Mode — Optional strict validation that throws errors on unsupported keywords
  • Unsupported Keyword Detection — Automatic warnings when schemas contain keywords not supported by the validator



Installation​


  1. Download the latest release from the Assets section below
  2. Place the .jar file into your server's /plugins folder
  3. Ensure Skript is already installed on your server
  4. Restart the server

The plugin will create a Schema-Validator/ folder in your plugins directory with:

  • schemas/ — Place your schema files here
  • config.yml — Plugin settings



Basic Usage (Skript)​


Validate a YAML file​


code_language.skript:
validate yaml "playerdata/myplayer.yml" using schema "schemas/player-profile.schema.json"

Validate a JSON file​


code_language.skript:
validate json "config/settings.json" using schema "schemas/settings.schema.json"

Validate with oneOf (exactly one match)​


code_language.skript:
validate yaml "playerdata/player.yml" using schema "schemas/player-class.schema.json"

Validate with conditional (if/then/else)​


code_language.skript:
validate json "shop/item.json" using schema "schemas/item.schema.json"

Check for validation errors​


code_language.skript:
set {_errors::*} to last schema validation errors

if size of {_errors::*} is 0:
    broadcast "✓ Validation passed!"
else:
    broadcast "✗ Validation failed:"
    loop {_errors::*}:
        broadcast "- %loop-value%"



Schema Examples​


Simple Schema​

JSON:
{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}

Complex Schema with oneOf​

JSON:
{
  "type": "object",
  "oneOf": [
    {
      "properties": {
        "class": { "const": "warrior" }
      },
      "required": ["class", "strength"]
    },
    {
      "properties": {
        "class": { "const": "mage" }
      },
      "required": ["class", "mana"]
    }
  ]
}

Conditional Schema​

JSON:
{
  "type": "object",
  "properties": {
    "type": { "type": "string" },
    "price": { "type": "number" }
  },
  "if": {
    "properties": { "type": { "const": "premium" } }
  },
  "then": {
    "required": ["price"],
    "properties": { "price": { "minimum": 100 } }
  }
}



Bug Reports & Contributions​


Found a bug or have a feature request? Please open an issue on the GitHub repository:

GitHub Issues:
https://github.com/MaiconJh/Schema-Validator/issues

Your feedback and contributions are welcome! When reporting bugs, please include:

  • Server version (Paper/Spigot)
  • Skript version
  • Steps to reproduce the issue
  • Any relevant error logs



Credits​


Created by — MaiconJH

Powered by:



License​


This project is licensed under the MIT License.



Thank you for trying Schema-Validator!