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 |
Час запуску, слухачі, завдання, пам’ять і вміст. |