From e2cfe94bf03790c4bbd3c832d71f412a7498ba24 Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Tue, 21 Jun 2022 19:06:14 -0400 Subject: [PATCH] Add `loadAfter` plugin setting --- plugin-schema.json | 106 ++++++++++-------- .../emu/grasscutter/plugin/PluginConfig.java | 2 + 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/plugin-schema.json b/plugin-schema.json index 4fc772416..fad282da0 100644 --- a/plugin-schema.json +++ b/plugin-schema.json @@ -1,49 +1,63 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "JSON schema for a Grasscutter Plugin", - "type": "object", - "additionalProperties": true, - "definitions": { - "plugin-name": { - "type": "string", - "pattern": "^[A-Za-z\\d_.-]+$" + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "JSON schema for a Grasscutter Plugin", + "type": "object", + "additionalProperties": true, + "definitions": { + "plugin-name": { + "type": "string", + "pattern": "^[A-Za-z\\d_.-]+$" + } + }, + "required": [ + "name", + "description", + "mainClass" + ], + "properties": { + "name": { + "description": "The unique name of plugin.", + "$ref": "#/definitions/plugin-name" + }, + "mainClass": { + "description": "The plugin's initial class file.", + "type": "string", + "pattern": "^(?!org\\.bukkit\\.)([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*$" + }, + "version": { + "description": "A plugin revision identifier.", + "type": [ + "string", + "number" + ] + }, + "description": { + "description": "Human readable plugin summary.", + "type": "string" + }, + "author": { + "description": "The plugin author.", + "type": "string" + }, + "authors": { + "description": "The plugin contributors.", + "type": "array", + "items": { + "type": "string" + } + }, + "website": { + "title": "Website", + "description": "The URL to the plugin's site", + "type": "string", + "format": "uri" + }, + "loadAfter": { + "description": "Plugins to load before this plugin.", + "type": "array", + "items": { + "type": "string" + } + } } - }, - "required": [ "name", "description", "mainClass" ], - "properties": { - "name": { - "description": "The unique name of plugin.", - "$ref": "#/definitions/plugin-name" - }, - "mainClass": { - "description": "The plugin's initial class file.", - "type": "string", - "pattern": "^(?!org\\.bukkit\\.)([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*$" - }, - "version": { - "description": "A plugin revision identifier.", - "type": [ "string", "number" ] - }, - "description": { - "description": "Human readable plugin summary.", - "type": "string" - }, - "author": { - "description": "The plugin author.", - "type": "string" - }, - "authors": { - "description": "The plugin contributors.", - "type": "array", - "items": { - "type": "string" - } - }, - "website": { - "title": "Website", - "description": "The URL to the plugin's site", - "type": "string", - "format": "uri" - } - } } \ No newline at end of file diff --git a/src/main/java/emu/grasscutter/plugin/PluginConfig.java b/src/main/java/emu/grasscutter/plugin/PluginConfig.java index 0fb07037c..e80cd6f60 100644 --- a/src/main/java/emu/grasscutter/plugin/PluginConfig.java +++ b/src/main/java/emu/grasscutter/plugin/PluginConfig.java @@ -7,11 +7,13 @@ public final class PluginConfig { public String name, description, version; public String mainClass; public String[] authors; + public String[] loadAfter; /** * Attempts to validate this config instance. * @return True if the config is valid, false otherwise. */ + @SuppressWarnings("BooleanMethodIsAlwaysInverted") public boolean validate() { return name != null && description != null && mainClass != null; }