fish-lib 0.2.3

A work-in-progress fishing game library containing the game/storage logic for a discord fishing game I'm working on.
Documentation
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "patternProperties": {
    "^[0-9]+$": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the item"
        },
        "max_count": {
          "type": "integer",
          "description": "How many instances of this item a user can own. E.g. you might have one instance of a certain type of bait, BUT the instance might be stackable and store a count, making it seem like you own multiple instances of this item. Defaults to one.",
          "min": 1
        },
        "attributes": {
          "type": "object",
          "required": [
            "components"
          ],
          "properties": {
            "components": {
              "type": "object",
              "properties": {
                "Bait": {
                  "type": "object",
                  "properties": {
                    "level": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "level"
                  ]
                },
                "Rod": {
                  "type": "object",
                  "properties": {
                    "level": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "level"
                  ]
                },
                "Purchasable": {
                  "type": "object",
                  "properties": {
                    "cost": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "cost"
                  ]
                }
              }
            }
          }
        },
        "default_properties": {
          "type": "object",
          "required": [
            "components"
          ],
          "properties": {
            "components": {
              "type": "object",
              "properties": {
                "Usage": {
                  "type": "object",
                  "properties": {
                    "times_used": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                },
                "Stackable": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "default": 1
                    }
                  }
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}