Lesson Format

The following is used to format lessons:

Lesson Information JSON —> lessonSchema.json

{
    "subject": "CLASS SUBJECT ie: TRANSFIGURATION",
    "year": [1-7],
    "numberOfLessons": [1 -> Integer.MAX_VALUE],
    "professor": { NPC-DATA-OBJECT } //Not including NPC-DATA-OBJECT in documentation.
}

Lesson File

{
    "information": { INFORMATION-OBJECT },
    "sections": [ { LESSON-SECTIONS-OBJECT } ],
    "homework": { HOMEWORK-OBJECT }

}

INFORMATION-OBJECT

{
    "title": "CLASS TITLE",
    "type": "LECTURE",
    "subject": "CLASS SUBJECT ie: TRANSFIGURATION",
    "year": [1-7],
    "examQuestionCount":
}

HOMEWORK-OBJECT

{
    "type": "WRITTEN",
    "description": "WORDS ABOUT HOMEWORK REQUIREMENTS"
}

LESSON-SECTIONS-OBJECT

{
    "lecture": [{LECTURE-OBJECT}],
    "spellsLearning": [{SPELLS-OBJECT}],
    "spellsQuiz": [{SPELLS-OBJECT}],
    "potionIngredientsLearning": [{POTION-INGREDIENTS-OBJECT}],
    "potionIngredientsTest": [{POTION-INGREDIENTS-OBJECT}],
    "potionsLearning": [{POTION-OBJECT}],
    "potionsQuiz": [{POTION-OBJECT}],
    "questions": [{QUESTION-OBJECT}],
    "giveItems": [{GIVE-ITEMS-OBJECT}],
    "questTask": [{QUEST-TASK-OBJECT}]
}

LECTURE-OBJECT

{
    "words": ["words", "that", "exist"],
    "speed": 250,
    "speaker": "Acool Name"
}

SPELLS-OBJECT

{
    "intro": "optional string",
    "spellname": "UPPER_UNDERSCORE_SPELL_NAME",
    "description: "A cool description",
    "reward": 1,
    "delay": [1-INTEGER.MAX_VALUE], //Used for spell quiz delay in seconds.
    "speed": 250,
    "amount": 1 //Amount required to cast to move on.
}

POTION-INGREDIENTS-OBJECT

{
    "outcome": "potion in potions cookbook to make"
}

POTION-OBJECT

{
    "outcome": "potion in potions cookbook to make",
    "time": [1->Integer.MAX_VALUE], //Used for potion quiz time, in minutes.
    "reward": 3,
    "speed": 250
}

QUESTION-OBJECT

{
    "question": "A really awesome question?",
    "options": [{OPTION-OBJECT}],
    "answers": ["This", "Is", "for", "Single-answer"],
    "type": "SINGLE_ANSWER or MULTIPLE",
    "pause": integer in seconds,
    "points" integer points reward,
    "showAnswer": true/false
}

OPTION-OBJECT

{
    "choice": "The choice",
    "answer": true/false
}

GIVE-ITEMS-OBJECT

{
    "itemReference": "item-register-api item id.",
    "title": "display name used.",
    "material": "Material to use from Spigot.",
    "lore": ["lore","for","item"]
}

QUEST-TASK-OBJECT

{
    "taskMetadata": [{TASK-METADATA}],
    "points": integer for points for above tasks.
}

TASK-METADATA

{
    "taskInformationLine": "Information about task from professor",
    "taskNotCompleteLine": "Line professor will repeat til task is done",
    "taskName": "Name of the task.",
    "taskType": "The Task type from Quests",
    "target": "Whatever object, npc, block, etc needs to be targetted. Matches Quest target.",
    "locations": [{LOCATION-METADATA}],
    "classroomSpecificTask": [{CLASSROOM-SPECIFIC}],
    "questTaskNotCompleteLine": "Quest's task not complete line which we dont really use in classrooms.",
    "targetItems": [{TARGET-QUEST-ITEMS}],
    "optional": {
                    "key": "value",
                    "key2": "value2"
                },
    "turnInOnFinish": true/false,
    "amountRequired": integer for how many times to complete this task.
}

LOCATION-METADATA

{
    "world": "world name",
    "x": 0.0,
    "y": 0.0,
    "z": 0.0,
    "yaw": 0.0f,
    "pitch": 0.0f,
    "node: "node name",
    "message": "Message attached to this location."
}

CLASSROOM-SPECIFIC

{
    "worldGuardRegion": "region for the specific classroom",
    "locations": [{LOCATION-METADATA}],
    "target": "Target for this specific classroom specific task."
}

TARGET-QUEST-ITEMS

{
    "itemRegistryPlugin": "plugin for the item you search for.",
    "itemRegistryID": "id for the item. If these two slots are filled, rest are ignored.",
    "amount": integer amount,
    "title": "Display name",
    "lore": ["lore","for","item"],
    "material": "Spigot Material type.",
    "loreContains": "Check on if the lore contains something."
    "description": "Item description.",
    "unbreakable": if the item must be unbreakable. true/false,
    "customModelData": integer for custom model data field

}