warzonemc / tgm-docs Goto Github PK
View Code? Open in Web Editor NEWTGM Documentation
Home Page: https://docs.warz.one
TGM Documentation
Home Page: https://docs.warz.one
The whole Objectives section which includes Infection, blitz, deathmatch, hills, monuments, etc still needs to be documented. Should include some info on what each one means and how to document it into the JSON.
We should also probably make another page(s) to document:
I have been looking into using TGM for my own Server and I found it very difficult to get all the permission nodes to apply them to my user groups. I would've thought there was a resource for this but when I asked in the contributing channel, one hasn't been made.
A page to document:
Trying to think of the best way to sort the categories - right now, it's a little bit of a tossup for certain sections. Damage Control doesn't quite fit into a "Gear" category, but some of these need to be split into actual sections instead of throwing each module into "Mechanics" (which, technically each module is)
Avicus splits it into "Core Modules" (things that every map needs to run), "Game Components" (modules that affect how a map plays), "Advanced Modules" (abstract modules with very specific uses), and "Miscellaneous Modules" (modules that don't fit into any other category).
Stratus splits it into "Gear", "Entities" (modules that affect entity behavior), and "Miscellaneous".
PGM splits it into "General", "Information" (things that are communicated to the player), "Environment" (modules that affect the world), "Format" (whether a map uses teams or individual players), "Objectives", "Mechanics" (general gameplay modules), "Gear" (inventory specific modules), and "Blocks" (modules that affect how block behavior works in the world.)"
As I see it, we should split it into "Core", "Objectives", "Inventory", "Mechanics", and "Abstract",
We should have a page/a few pages to document the basics of Minecraft and Bukkit. This could include:
We need a page to include extremely basic information, we can't assume people already know some stuff. Some info I'm thinking of would be:
All ingredients can be defined either as a string (example: "bookshelf"
) or a JSON object for matching exact items (example: {"material": "bookshelf", "displayName": "Magical books"}
)
"crafting": {
"remove": [
"crafting table"
]
},
NOTE: compass recipe is always removed
"crafting": {
"remove": "*"
},
shapeless
recipes "crafting": {
"recipes": [
{
"type": "shapeless",
"result": {
"material": "iron sword",
"displayName": "&6&lExodus"
},
"ingredients": [
"dirt"
]
}
]
},
shaped
recipes "crafting": {
"recipes": [
{
"type": "shaped",
"result": {
"material": "diamond",
"enchantments": ["power:1"]
},
"ingredients": {
"X": "dirt",
"Y": "stone"
},
"shape": [
"XY",
"YX"
]
}
]
},
furnace
, smoking
, blasting
, campfire
) "crafting": {
"recipes": [
{
"type": "campfire",
"result": {
"material": "diamond",
"lore": [
"Yes this is how diamonds are made"
]
},
"ingredient": "coal",
"experience": 0,
"cookingTime": 600
}
]
},
NOTE: experience
and cookingTime
are optional.
"crafting": {
"recipes": [
{
"type": "stonecutting",
"result": {
"material": "smooth stone slab"
},
"ingredient": "stone"
}
]
},
Example JSON:
"launchpads": [
{
"region": {"type": "cuboid", "min": "9, 29, -124", "max": "9, 29, -124"},
"delay": 2,
"motion": "-0.35, 2.25, 0.35",
"directional": false,
"teams": ["blue"]
},
{
"region": "blue-launchpad",
"delay": 2,
"motion": "-0.35, 2.25, 0.35",
"directional": false,
"teams": ["blue"]
}
]
Field name | Description | Type | Required |
---|---|---|---|
region |
Area where the player needs to stand to be launched. | Region ID or Region Object | Yes |
delay |
How long in ticks the player needs to stand to be launched. | Integer | No (Default: 0) |
directional |
Whether the launchpad should launch the player in the direction they are looking at. | Boolean | No (Default: true) |
motion |
Direction in which the player will be launched. If the directional field is set to true, this will act as a multiplier for the player's direction. |
Vector (x, y ,z) | No (Default: 1, 1, 1) |
teams |
List of teams that can use the launch pad. | List of teams | No (Default: all teams) |
Example
"countdowns": [
{
"id": "test",
"title": "Countdown 1: %countdownTimeLeft%",
"time": 5,
"color": "purple",
"style": "solid",
"visible": true,
"invert": false,
"teams": ["red", "blue"],
"onFinish": [
"say yeet",
"countdown start test1"
]
},
{
"id": "test1",
"title": "Countdown 2: %countdownTimeLeft%",
"time": 5,
"color": "green",
"style": "segmented 12",
"visible": true,
"invert": true,
"teams": ["red", "blue"],
"onFinish": [
"say yote",
"countdown start test"
]
}
],
Field | Description | Type | Required | Default |
---|---|---|---|---|
id |
ID of the countdown used to start, edit or cancel it. | String | Yes | |
time |
Duration of the countdown in seconds. | Integer | Yes | |
title |
Text displayed on the boss bar. | String | Yes | |
color |
Color for boss bar. (BLUE , GREEN , PINK , PURPLE , RED , WHITE , YELLOW ) |
String | No | PURPLE |
style |
Style for the boss bar. (SOLID , SEGMENTED_6 , SEGMENTED_10 , SEGMENTED_12 , SEGMENTED_20 ) |
String | No | SOLID |
visible |
Make the boss bar visible. | Boolean | No | true |
invert |
Make the boss bar go in the opposite direction. | Boolean | No | false |
teams |
Teams that are able to see the boss bar. | String array | No | All teams |
onFinish |
Commands that will run when the countdown ends. | String array | No |
Example:
{
"teams": [
{
"id": "cyan",
"name": "Cyan",
"color": "dark aqua",
"gamemode": "survival",
"min": 1,
"max": 40
}
]
}
Type attributes:
Attribute | Description | Value |
---|---|---|
survival |
Players have full access when interacting with the environment | String |
adventure |
Players are unable to place and destroy blocks | String |
Note that survival mode is default.
We could include creative and spectator mode, but I don't think they would be used in any manner. If we decide not to include creative and spectator mode, we could convert to boolean.
"damageControl": {
"fire": false,
"suffocation": false,
"fall": false
}
https://github.com/gitalk/gitalk - This would be useful to centralize questions on the docs (for clarifications, or other reason) and allow discussions on the modules themselves. This has many advantages over just leaving a message in #mapmaking, and hooks right in with GitHub. It is easily installable with the script and CSS import.
<link rel="stylesheet" href="//unpkg.com/gitalk/dist/gitalk.css">
<script src="//unpkg.com/docsify/lib/plugins/gitalk.min.js"></script>
<script src="//unpkg.com/gitalk/dist/gitalk.min.js"></script>
<script>
const gitalk = new Gitalk({
clientID: 'Github Application Client ID',
clientSecret: 'Github Application Client Secret',
repo: 'Github repo',
owner: 'Github repo owner',
admin: ['Github repo collaborators, only these guys can initialize github issues'],
// facebook-like distraction free mode
distractionFreeMode: false
})
</script>
Document respawn system
Refer to the respawn module ~ RespawnModule.java
display_name
- The name of the itemlore
- The subtext/description (lore) of the itemflags
under Item Attributes
hide_attributes
- Hides attributes like damagehide_destroys
- Hides what an item stack can destroyhide_enchants
- Hides what enchantments an item hashide_placed_on
- Hides what an item can be placed againsthide_potion_effects
- Hides the potion effects on an item stackhide_unbreakable
- Hides the unbreakable state"potion": {"effects": ["<effect>:<time> [amplifier]"]}
potion
- The parent containing effects attributes.effects
- The parent containing child attributes.effect
- The potion effect the player receives.time
- The amount of time a player recives an effect when consumed.amplifier
- The level (or strength) of the effect when consumed.title
- Sets the title of the book.author
- Sets who wrote the book.generation
- Sets the serialization of the book.pages
- The parent containing page attributes.Add examples on how to use the world border inside of the JSON
Refer to the world border module in TGM ~ WorldBorderModule.java
Example:
give @a arrow 1
command will be ran "time": {
"limit": 1200,
"defaultWinner": "blue",
"broadcasts": [
{
"message": "Test",
"interval": 10,
"repeat": true,
"commands": [
"give @a arrow 1"
]
}
]
},
limit
and interval
is in seconds.
List of all the gamerule IDs (Only Java Edition)
Example:
"gamerules": {
"keepInventory": true,
"doDaylightCycle": true,
"doWeatherCycle": false
},
Defaults:
ID | TGM Default value |
---|---|
keepInventory | false |
doMobSpawning | false |
doDaylightCycle | false |
commandBlockOutput | false |
logAdminCommands | false |
doWeatherCycle | false |
disableElytraMovementCheck | true |
announceAdvancements | false |
Meta regions are regions that can hold multiple regions and they will be all treated as a single region.
Examples:
"regions": [
{
"id": "meta-test",
"type": "meta",
"regions": [
{"min": "89, 9, -54", "max": "90, 9, -54"},
{"min": "89, 9, -57", "max": "90, 9, -57"}
]
}
]
"regions": [
{"id": "blue-spawn-protection", "type": "cuboid", "min": "224, 0, -43", "max": "240, oo, -65"},
{"id": "red-spawn-protection", "type": "cuboid", "min": "-1, 0, -43", "max": "15, oo, -65"},
{"id": "meta-test", "type": "meta", "regions": ["blue-spawn-protection", "red-spawn-protection"]}
]
We need to add links to some maps from the Maps repo as examples for people to base their JSONs off of. Would make it easier as they can see the whole JSON compared to only sections of it.
One example is the Core :: Spawns page:
https://gyazo.com/6a3999df61d1a776f3d24a1cf07001a7
duration
(number), amplifier
(number), ambient
(no clue what this means|true/false), and particles
(true/false) need to be documented. Default for amplifier is 1, default for ambient and particles are set to true. Duration is measured in ticks, and the whole module just applies a potion effect to the player's kit.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.