plugin-schema.json 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. {
  2. "$schema": "http://json-schema.org/draft-07/schema#",
  3. "title": "JSON schema for a Grasscutter Plugin",
  4. "type": "object",
  5. "additionalProperties": true,
  6. "definitions": {
  7. "plugin-name": {
  8. "type": "string",
  9. "pattern": "^[A-Za-z\\d_.-]+$"
  10. }
  11. },
  12. "required": [
  13. "name",
  14. "description",
  15. "mainClass",
  16. "api"
  17. ],
  18. "properties": {
  19. "name": {
  20. "description": "The unique name of plugin.",
  21. "$ref": "#/definitions/plugin-name"
  22. },
  23. "mainClass": {
  24. "description": "The plugin's initial class file.",
  25. "type": "string",
  26. "pattern": "^(?!org\\.bukkit\\.)([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*$"
  27. },
  28. "version": {
  29. "description": "A plugin revision identifier.",
  30. "type": [
  31. "string",
  32. "number"
  33. ]
  34. },
  35. "api": {
  36. "description": "The API revision the plugin is using.",
  37. "type": "number"
  38. },
  39. "description": {
  40. "description": "Human readable plugin summary.",
  41. "type": "string"
  42. },
  43. "author": {
  44. "description": "The plugin author.",
  45. "type": "string"
  46. },
  47. "authors": {
  48. "description": "The plugin contributors.",
  49. "type": "array",
  50. "items": {
  51. "type": "string"
  52. }
  53. },
  54. "website": {
  55. "title": "Website",
  56. "description": "The URL to the plugin's site",
  57. "type": "string",
  58. "format": "uri"
  59. },
  60. "loadAfter": {
  61. "description": "Plugins to load before this plugin.",
  62. "type": "array",
  63. "items": {
  64. "type": "string"
  65. }
  66. }
  67. }
  68. }