From 87e926490923439eda2d298ab27b7094e95b157b Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Sat, 2 Nov 2019 19:39:33 +0100 Subject: [PATCH] Move doc to wiki pages --- .gitignore | 1 - doc/Usercontent.md | 282 --------------------------------------------- 2 files changed, 283 deletions(-) delete mode 100644 doc/Usercontent.md diff --git a/.gitignore b/.gitignore index 400d559..5bae765 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ !/src/ !/gradle/ !/run/config/worldhandler/usercontent/ -!/doc/ !build.gradle !curseforge.html !gradlew diff --git a/doc/Usercontent.md b/doc/Usercontent.md deleted file mode 100644 index 5a33a7b..0000000 --- a/doc/Usercontent.md +++ /dev/null @@ -1,282 +0,0 @@ -# Usercontent Reference # - -The World Handler provides the ability to be extended with custom tabs configured with json files. - -# Setup # - -The World Handler only loads usercontent files from `../.minecraft/config/worldhandler/usercontent/`. -To add a custom GUI a new folder is required with a json file inside it named exactly the same as the folder. -That name indicates the id of the usercontent and may only consist of the characters `0-9` `a-z` `-_:`. -Additionally a javascript file can be created inside the folder with exactly the same name as the folder. - -Example setup for a custom GUI with id `example`: - -`../.minecraft/config/worldhandler/usercontent/example/example.json` -`../.minecraft/config/worldhandler/usercontent/example/example.js` - -An example GUI can be found [here](../run/config/worldhandler/usercontent/) - -# Index # - -Content: A single GUI of the World Handler i.e. the main page -Category: A collection of contents that are grouped together and are displayed in tabs next to each other -Elements: A structure of buttons simplifying the creation of larger menus - -## General Structure ## - -``` -{ - "model": { - "commands": [ - #See commands - ] - }, - "gui": { - "title": "", #The title of the gui - "tab": { - "title": "", #The title of the tab - "category": "", #The category where the tab should be clickable in (See reference/category-ids) - "category_index": 0, #The index of the tab (left: 0, right: last tab index) - "active_content": "" #The id of the active content (See reference/content-ids) - }, - "buttons": [ - #See buttons - ], - "elements": [ - #See elements - ], - "texts": [ - #See texts - ] - } -} -``` - -## Commands ## - -All commands that should be modifiable, executable or visible by the command syntax need to be modeled - -``` -{ - "name": "", #The root of the command - "syntax": [ - { - "name": "", #Placeholder text for the argument - "type": "", #Type of the argument (See table below for available types) - "required": true #Whethter or not this argument is required in order to complete the command - } - ], - "visible": { - #See widget-states - } -} -``` - -Argument types | Comment ------------------------ | ----------------------------------------------------------------------------------------------------------- -byte | Default java byte -short | Default java short -int | Default java integer -float | Default java float -double | Default java double -long | Default java long -boolean | Default java boolean -string | Default java string -greedy_string | String that can be read across whitespaces. (usually in quotes) -resource_location | Minecraft resource location. Example:` namespace:resource` -item_resource_location | Resource location with attached nbt. Example: `namespace:resource{"nbt":"example"}` -block_resource_location | Item resource location with attached block tag. Example: `namespace:resource[state=example]` -nbt | Minecraft data structure. Example: `{"nbt":"example"}` -coordinate_int | An integer that can either be absolute or relative in a global (prefix: `~`) or local (prefix: `^`) context -coordinate_double | A double that can either be absolute or relative in a global (prefix: `~`) or local (prefix: `^`) context -target_selector | Filter for entities. This implementation only supports `@e` with arguments. Example: `@e[type=player]` -player | Username of the player that will be automatically set by the system - -## Buttons ## - -``` -{ - "text": "", #Optional - "type": "", #See table below for available types - "dimensions": { - "x": 0, - "y": 0, - "width": 114, - "height": 20 - }, - "action": { - #See action - }, - "attributes": { - "id": "", - "item": "", #Resource location - "icon": "", #See reference/icon-ids for available ids - "visible": { - #See widget-states - }, - "enabled": { - #See widget-states - } - } -} -``` - -Button type | Description | Actions | Required attributes | Optional Attributes -------------|---------------------------------------------- | -------------------------------------- | ------------------- | ------------------- -button | Simple button | open, set, run, back, back_to_game, js | - | tooltip -textfield | Simple textfield | set, js | id | - -item_button | Button with an item instead of text | open, set, run, back, back_to_game, js | item | - -icon_button | Button with an icon instead of text | open, set, run, back, back_to_game, js | icon | tooltip -list_button | Button with the option to cycle through items | set, js | items | - -slider | Simple slider | set, js | id, min, max | start - -## Elements ## - -``` -"type": "", #See table below for available types -"dimensions": { - "x": 0, - "y": 0, - "width": 114, - "height": 20 -}, -"attributes": { - "id": "", - "length": 1, - "items": [ - { - "id": "", - "translation": "" #Translation key or string value - } - ] -} -``` - -Element type | Description | Required attributes | Optional Attributes ------------- | ------------------------------------------------------------------------------------------------------------ | ------------------- | ------------------- -page_list | Creates column of buttons with `length` options to choose from and two buttons for navigating left and right | id, length, items | - - -## Text ## - -``` -{ - "text": "", - "x": 0, - "y": 0, - "color": 2039583 #Color of the text (red << 16 + green << 8 + blue) -} -``` - -## Action ## - -``` -"action": { - "type": "", #See table below for available types - "attributes": { - "function": "", #Name of the js function - "command": 0, #Index of the command inside the json file - "index": 0, #Argument index - "value": "" - } -} -``` - -Action type | Description | Required attributes | Optional Attributes ------------- | ------------------------------------------------------------------------------------------------------ | ------------------- | ------------------- -open | Opens the content associated with `value` | value | - -set | Sets the argument `index` of command `command` to `value` or the value provided by the system | index, command | value -run | Runs the command from `value` | value | - -back | Goes back to the previous content | - | - -back_to_game | Closes the GUI | - | - -js | Invokes the javascript function `function` (with argument `value`) | function | value - -## Widget states ## - -There are two widget states: `visible` and `enabled` -This structure is optional. - -``` -"visible": { - "type": "", - "bool": true - "function": "" #Name of the js function -} -``` - -State type | Description | Required attributes | Optional Attributes ----------- | ----------------------------------------------------------------- | ------------------- | ------------------- -bool | The state will be determined by the value of the `bool` attribute | bool | - -js | Invokes the javascript function `function` and uses the result | function | - - -## JavaScript API ## - -The JavaScript interpreter comes with an instance of `UsercontentAPI` available for reference with `api` - -Example: `api.addChatMessage("Hello World")` - -Function | Description ----------------------------------------------------------------- | ------------------------------------------------------------------- -String getValue(String id) | returns the value stored by a button or element with id `id` -String getCommandArgument(int command, int index) | returns the argument at index `index` of command `command` -void setCommandArgument(int command, int index, String object) | sets the argument at index `index` of command `command` to `object` -void addChatMessage(Object object) | prints the object to the ingame chat - -### ActionHelper ### - -Example: -``` -var ActionHelper = Java.type('exopandora.worldhandler.helper.ActionHelper'); -ActionHelper.displayGui(); -``` - -Function | Description -------------------------- | ---------------------------------------------------------------------------- -void backToGame() | Closes the GUI -void back(String id) | Tries to open the back content of content with id `id` -void open(String id) | Tries to open the content with id `id` -void timeDawn() | Sets the time to dawn -void timeNoon() | Sets the time to noon -void timeSunset() | Sets the time to sunset -void timeMidnight() | Sets the time to midnight -void weatherClear() | Sets the weather to clear -void weatherRain() | Sets the weather to rain -void weatherThunder() | Sets the weather to thunder -void difficultyPeaceful() | Sets the difficulty to peaceful -void difficultyEasy() | Sets the difficulty to easy -void difficultyNormal() | Sets the difficulty to normal -void difficultyHard() | Sets the difficulty to hard -void gamemodeSurvival() | Sets the gamemode to survival -void gamemodeCreative() | Sets the gamemode to creative -void gamemodeAdventure() | Sets the gamemode to adventure -void gamemodeSpectator() | Sets the gamemode to spectator -void displayGui() | Tries to open the World Handler GUI (same as pressing the activation button) - -## Reference ## - -Content ids | Category ids | Icon ids ---------------------- | ------------ | ------------------- -main | main | weather_sun -containers | entities | weather_rain -multiplayer | items | weather_storm -summon | blocks | difficulty_peaceful -custom_item | world | difficulty_easy -enchantment | player | difficulty_normal -edit_blocks | scoreboard | difficulty_hard -sign_editor | | time_dawn -note_editor | | time_noon -world | | time_sunset -gamerules | | time_midnight -recipes | | gamemode_survival -player | | gamemode_creative -experience | | gamemode_adventure -advancements | | gamemode_spectator -scoreboard_objectives | | butcher -scoreboard_teams | | potion -scoreboard_players | | achievements -change_world | | home -continue | | settings -potions | | reload -butcher | | -butcher_settings | | -settings | | -