Eine Quilt-Bibliothek, die das Sperren des Spielerinventars verwaltet. Kann über den Befehl /locki
auch als eigenständiger Mod verwendet werden.
Dieser Mod muss sowohl auf dem Server als auch auf dem Client installiert sein, um ordnungsgemäß zu funktionieren.
Locki stellt Slots mithilfe von Inventarknoten dar. Inventarknoten sind als Baumstruktur strukturiert, sodass Befehle oder Mods ganze Abschnitte schnell sperren oder entsperren können, während die Kontrolle über feinere Einheiten erhalten bleibt. Inventarknoten werden als durch Punkte getrennter Pfad dargestellt, vom am wenigsten spezifischen Vorfahren zum spezifischsten untergeordneten Knoten. inventory
beschreibt beispielsweise das gesamte Inventar des Spielers, während inventory.armor.chest
den Brustpanzerplatz des Inventars beschreibt.
Wenn ein Inventarknoten gesperrt wird, können untergeordnete Knoten weiterhin entsperrt werden, sodass Sie bestimmte Slots von einem umfassenden Zugriffsverbot ausschließen können. Wenn Sie beispielsweise inventory
sperren und dann inventory.armor.chest
entsperren, wird der Spieler daran gehindert, Gegenstände in seinem Inventar außer seiner Brustplatte zu berühren.
Locki fügt den Befehl /locki
hinzu, der es Serverbetreibern und Kartenherstellern ermöglicht, über Befehle mit der API zu interagieren.
/locki lock <node> [<targets>] [<lock>]
: Sperrt die Inventare eines oder mehrerer Spieler<node>
: ein vollständiger Pfad, der einen bekannten Inventarknoten beschreibt.[<targets>]
(optional): Wenn angegeben, muss es entweder der Benutzername eines Spielers oder ein Zielselektor sein. Wenn nicht angegeben, wird standardmäßig der Player verwendet, der den Befehl verwendet. Bei Verwendung in einem Befehlsblock ist der Player nicht optional.[<lock>]
(optional): Wenn angegeben, muss es sich um einen gültigen Bezeichner handeln, der auf eine registrierte Sperre verweist. Wenn nicht angegeben, wird standardmäßig die generische „Befehls“-Sperre verwendet./locki unlock <node> [<targets>] [<lock>]
: schaltet die Inventare eines oder mehrerer Spieler frei[<targets>]
(optional): Wenn angegeben, muss es entweder der Benutzername eines Spielers oder ein Zielselektor sein. Wenn nicht angegeben, wird standardmäßig der Player verwendet, der den Befehl verwendet. Bei Verwendung in einem Befehlsblock ist der Player nicht optional.[<lock>]
(optional): Wenn angegeben, muss es sich um eine gültige Kennung handeln, die zuvor als Sperre verwendet wurde, um die Inventare der Spieler zu beeinflussen. Wenn keine Angabe erfolgt, wird standardmäßig die generische „Befehls“-Sperre verwendet. Wenn Sie LuckPerms installiert haben, können die oben genannten Befehle von Spielern mit der Berechtigung locki.command.lock
verwendet werden. Wenn Sie nur locki.command.lock.self
gewähren, können Spieler die Befehle nur für sich selbst verwenden.
if ( Permissions . check ( player , "locki.access.inventory.armor.head" , true )) {
// nothing is locking the head slot
}
Eine Liste der Standardinventarknoten finden Sie unter DefaultInventoryNodes.java. Stellen Sie einfach locki.access.
vor der Überprüfung.
Sie können die Bibliothek hinzufügen, indem Sie Folgendes in Ihr build.gradle
einfügen:
repositories {
maven {
name = " Ladysnake Mods "
url = " https://maven.ladysnake.org/releases "
content {
includeGroup ' io.github.ladysnake '
includeGroup ' org.ladysnake '
includeGroupByRegex ' (dev|io \ .github) \ .onyxstudios.* '
}
}
maven {
name = " Nexus Repository Manager "
url = ' https://oss.sonatype.org/content/repositories/snapshots '
}
}
dependencies {
modImplementation " org.ladysnake:locki: ${ locki_version } "
include " org.ladysnake:locki: ${ locki_version } "
// locki dependencies
include " me.lucko:fabric-permissions-api: ${ fpa_version } "
include " org.ladysnake.cardinal-components-api:cardinal-components-base: ${ cca_version } "
include " org.ladysnake.cardinal-components-api:cardinal-components-entity: ${ cca_version } "
}
Anschließend können Sie die Bibliotheksversion zu Ihrer gradle.properties
-Datei hinzufügen:
# Locki
locki_version = 0.x.y
# Fabric Permissions API
fpa_version = 0.1-SNAPSHOT
# Cardinal Components
cca_version = 2.x.y
Die aktuelle Version von Locki finden Sie auf der Registerkarte „Releases“ des Repositorys auf Github und die neueste CCA-Version im entsprechenden Repository.
public static boolean isMainHandLocked ( PlayerEntity player ) {
return InventoryKeeper . get ( player ). isLocked ( DefaultInventoryNodes . MAIN_HAND );
}
public static final InventoryLock MY_LOCK = Locki . registerLock ( "mymod" , "awesome_feature" );
public static void toggleInventoryExceptHands ( PlayerEntity player ) {
if ( MY_LOCK . isLocking ( player , DefaultInventoryNodes . INVENTORY )) {
MY_LOCK . unlockInventory ( player ); // equivalent to unlock(player, DefaultInventoryNodes.INVENTORY)
} else {
MY_LOCK . lockInventory ( player ); // equivalent to lock(player, DefaultInventoryNodes.INVENTORY)
MY_LOCK . unlock ( player , DefaultInventoryNodes . HANDS );
}
}