Une bibliothèque Quilt gérant le verrouillage de l'inventaire des joueurs. Peut également être utilisé comme mod autonome, via la commande /locki
.
Ce mod doit être installé à la fois sur le serveur et sur le client pour fonctionner correctement.
Locki représente les emplacements à l'aide de nœuds d'inventaire . Les nœuds d'inventaire sont structurés sous forme d'arborescence, permettant aux commandes ou aux mods de verrouiller ou de déverrouiller rapidement des sections entières tout en conservant le contrôle sur des unités plus fines. Les nœuds d'inventaire sont représentés sous la forme d'un chemin séparé par des points, de l'ancêtre le moins spécifique au nœud enfant le plus spécifique. Par exemple, inventory
décrit l'intégralité de l'inventaire du joueur, tandis que inventory.armor.chest
décrit l'emplacement du plastron de l'inventaire.
Lorsqu'un nœud d'inventaire est verrouillé, les nœuds descendants peuvent toujours être déverrouillés, vous permettant d'exclure des emplacements spécifiques d'une large interdiction d'accès. Par exemple, verrouiller inventory
puis déverrouiller inventory.armor.chest
empêchera le joueur de toucher n'importe quel objet de son inventaire à l'exception de son plastron.
Locki ajoute la commande /locki
, permettant aux opérateurs de serveur et aux cartographes d'interagir avec l'API via des commandes.
/locki lock <node> [<targets>] [<lock>]
: verrouille les inventaires d'un ou plusieurs joueurs<node>
: un chemin complet décrivant un nœud d'inventaire connu.[<targets>]
(facultatif) : Si spécifié, doit être soit le nom d'utilisateur d'un joueur, soit un sélecteur de cible. Si non spécifié, c'est par défaut le joueur qui utilise la commande. Lorsqu'il est utilisé dans un bloc de commande, le joueur n'est pas facultatif.[<lock>]
(facultatif) : si spécifié, doit être un identifiant valide faisant référence à un verrou enregistré. S'il n'est pas spécifié, la valeur par défaut est le verrou générique "commande"./locki unlock <node> [<targets>] [<lock>]
: débloque les inventaires d'un ou plusieurs joueurs[<targets>]
(facultatif) : Si spécifié, doit être soit le nom d'utilisateur d'un joueur, soit un sélecteur de cible. Si non spécifié, c'est par défaut le joueur qui utilise la commande. Lorsqu'il est utilisé dans un bloc de commande, le joueur n'est pas facultatif.[<lock>]
(facultatif) : Si spécifié, doit être un identifiant valide qui a été précédemment utilisé comme verrou pour affecter les inventaires des joueurs. Si rien n'est spécifié, la valeur par défaut est le verrou générique "commande". Si LuckPerms est installé, les commandes ci-dessus peuvent être utilisées par les joueurs disposant de l'autorisation locki.command.lock
. Si vous accordez uniquement locki.command.lock.self
, les joueurs ne pourront utiliser les commandes que sur eux-mêmes.
if ( Permissions . check ( player , "locki.access.inventory.armor.head" , true )) {
// nothing is locking the head slot
}
Pour obtenir la liste des nœuds d'inventaire par défaut, consultez DefaultInventoryNodes.java. Ajoutez simplement le chemin complet du nœud souhaité avec locki.access.
avant de vérifier.
Vous pouvez ajouter la bibliothèque en insérant ce qui suit dans votre build.gradle
:
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 } "
}
Vous pouvez ensuite ajouter la version de la bibliothèque à votre fichier gradle.properties
:
# Locki
locki_version = 0.x.y
# Fabric Permissions API
fpa_version = 0.1-SNAPSHOT
# Cardinal Components
cca_version = 2.x.y
Vous pouvez trouver la version actuelle de Locki dans l'onglet versions du référentiel sur Github, et la dernière version de CCA dans le référentiel approprié.
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 );
}
}