API

Polecenia i uprawnienia

Polecenia z typowanymi argumentami, podpoleceniami, aliasami, podpowiedziami i uprawnieniami. Gdy ktoś użyje polecenia źle, zobaczy poprawne użycie, a ty nie musisz pisać tego komunikatu.

W CraftScript

Jeden plik na polecenie, w commands/, o tej samej nazwie co polecenie:

commands/pay.craftCraftScript
command pay(to: player, amount: int) requires "eco.pay" alias "send" describe "Wysyła monety" {
    if player == null { return "Tylko dla graczy" }
    if amount <= 0 { return "&cKwota musi być dodatnia" }
    return "Wysłano {amount} monet do {to.name}"
}
commands/announce.craftCraftScript
command announce(message: text) requires "eco.admin" describe "Ogłoszenie dla wszystkich" {
    broadcast("&6[Ogłoszenie] {message}")
}

Jeśli brakuje argumentu lub nie ma on oczekiwanego typu, gracz widzi na przykład Missing <amount>. Usage: /pay <to> <amount> albo 'abc' is not a whole number.

Typ Przyjmuje
player Gracza online, z podpowiedziami
int, number Liczbę całkowitą, liczbę
bool true/false, yes/no, on/off
string Jedno słowo albo kilka w cudzysłowie
text Resztę wiersza
id Id z gry (minecraft:stone)

Dodaj ?, żeby argument był opcjonalny (target: player?).

W Kotlinie

commands/HomeCommand.ktKotlin
package com.example.homes.commands

object HomeCommand {
    private val homes = mutableMapOf<UUID, Location>()

    fun register() {
        Crafting.commands.command("home") {
            description = "Teleportuje do domu"
            alias("h")
            executes { c -> c.player.teleport(homes[c.player.uuid] ?: c.fail("&cNie ustawiono domu")) }
            sub("set") {
                executes { c -> homes[c.player.uuid] = c.player.location; c.reply("&aDom ustawiony") }
            }
            sub("of") {
                permission = "homes.others"
                player("target")
                executes { c -> c.player.teleport(homes[c.player("target").uuid] ?: c.fail("&cBrak domu")) }
            }
        }
    }
}

Argumenty: string, greedy, int, double, bool, player, identifier, każdy z optional. Wewnątrz executes: c.player (kto je wykonuje), c.player("target"), c.int("n"), c.getOrNull<Int>("n"), c.reply(…) i c.fail(…), które przerywa z komunikatem błędu.

Uprawnienia

Crafting ma wbudowane uprawnienia oparte na grupach, w config/crafting/permissions.json. Operatorzy serwera mają wszystkie.

config/crafting/permissions.jsonJSON
{
  "groups": {
    "default": ["homes.use", "eco.pay"],
    "mod": ["homes.*", "chatguard.*", "-homes.others"],
    "admin": ["*"]
  },
  "players": {
    "Steve": { "groups": ["mod"], "permissions": ["homes.others"] }
  }
}
  • * daje wszystko; homes.* wszystko, co zaczyna się od homes..
  • -permission odbiera uprawnienie. Wygrywa najbardziej szczegółowa reguła; przy remisie wygrywa odmowa.
  • Wszyscy gracze są w grupie default.
  • Poprzedzaj swoje uprawnienia id swojego moda (rubies.give), żeby nie kolidowały z uprawnieniami innych modów.

Polecenia Craftingu

Działają z gry i z konsoli serwera.

Polecenie Co robi
/crafting (lub /cf) Wersja i pomoc.
/crafting mods Wczytane mody i ich stan.
/crafting reload <id> Przeładowuje skrypt lub wtyczkę. Wymaga crafting.admin.
/crafting profile Za pierwszym razem zaczyna pomiar; za drugim pokazuje czas każdego moda.
/crafting info Czas startu, nasłuchiwacze, zadania, pamięć i zawartość.