API
Команды и права
Команды с типизированными аргументами, подкомандами, псевдонимами, подсказками и правами. Когда кто-то использует команду неправильно, он видит правильный синтаксис, и тебе не нужно писать это сообщение.
На CraftScript
Один файл на команду, в commands/, с тем же именем, что и у команды:
command pay(to: player, amount: int) requires "eco.pay" alias "send" describe "Отправить монеты" {
if player == null { return "Только для игроков" }
if amount <= 0 { return "&cСумма должна быть положительной" }
return "Отправлено {amount} монет игроку {to.name}"
}command announce(message: text) requires "eco.admin" describe "Объявить всем" {
broadcast("&6[Объявление] {message}")
}Если аргумента не хватает или у него не тот тип, игрок видит, например, Missing <amount>. Usage: /pay <to> <amount> или 'abc' is not a whole number.
| Тип | Принимает |
|---|---|
player |
Игрока в сети, с подсказками |
int, number |
Целое число, число |
bool |
true/false, yes/no, on/off |
string |
Одно слово или несколько в кавычках |
text |
Остаток строки |
id |
Игровой id (minecraft:stone) |
Добавь ?, чтобы сделать аргумент необязательным (target: player?).
На Kotlin
package com.example.homes.commands
object HomeCommand {
private val homes = mutableMapOf<UUID, Location>()
fun register() {
Crafting.commands.command("home") {
description = "Телепортироваться домой"
alias("h")
executes { c -> c.player.teleport(homes[c.player.uuid] ?: c.fail("&cДом не задан")) }
sub("set") {
executes { c -> homes[c.player.uuid] = c.player.location; c.reply("&aДом задан") }
}
sub("of") {
permission = "homes.others"
player("target")
executes { c -> c.player.teleport(homes[c.player("target").uuid] ?: c.fail("&cДома нет")) }
}
}
}
}Аргументы: string, greedy, int, double, bool, player, identifier, каждый с optional. Внутри executes: c.player (кто её запускает), c.player("target"), c.int("n"), c.getOrNull<Int>("n"), c.reply(…) и c.fail(…), который останавливает выполнение с сообщением об ошибке.
Права
В Crafting есть права на основе групп, в config/crafting/permissions.json. У операторов сервера есть все права.
{
"groups": {
"default": ["homes.use", "eco.pay"],
"mod": ["homes.*", "chatguard.*", "-homes.others"],
"admin": ["*"]
},
"players": {
"Steve": { "groups": ["mod"], "permissions": ["homes.others"] }
}
}*даёт всё;homes.*— всё, что начинается сhomes..-permissionзапрещает право. Побеждает самое конкретное правило; при равенстве побеждает запрет.- Все игроки входят в группу
default. - Начинай свои права с id своего мода (
rubies.give), чтобы они не пересекались с правами других модов.
Команды Crafting
Они работают из игры и из консоли сервера.
| Команда | Что делает |
|---|---|
/crafting (или /cf) |
Версия и справка. |
/crafting mods |
Загруженные моды и их состояние. |
/crafting reload <id> |
Перезагружает скрипт или плагин. Требует crafting.admin. |
/crafting profile |
В первый раз начинает измерение; во второй — показывает время каждого мода. |
/crafting info |
Время запуска, слушатели, задачи, память и контент. |