Una biblioteca de Quilt que maneja el bloqueo del inventario de jugadores. También se puede utilizar como mod independiente, mediante el comando /locki
.
Este mod debe instalarse tanto en el servidor como en el cliente para funcionar correctamente.
Locki representa tragamonedas usando nodos de inventario . Los nodos de inventario están estructurados como un árbol, lo que permite que los comandos o modificaciones bloqueen o desbloqueen rápidamente secciones enteras mientras conservan el control sobre unidades más finas. Los nodos de inventario se representan como una ruta separada por puntos, desde el nodo ancestro menos específico hasta el nodo hijo más específico. Por ejemplo, inventory
describe la totalidad del inventario del jugador, mientras que inventory.armor.chest
describe la ranura del peto del inventario.
Cuando un nodo de inventario se bloquea, los nodos descendientes aún se pueden desbloquear, lo que le permite excluir espacios específicos de una prohibición de acceso amplia. Por ejemplo, bloquear inventory
y luego desbloquear inventory.armor.chest
evitará que el jugador toque cualquier elemento de su inventario excepto su pechera.
Locki agrega el comando /locki
, lo que permite a los operadores de servidores y cartógrafos interactuar con la API mediante comandos.
/locki lock <node> [<targets>] [<lock>]
: bloquea los inventarios de uno o más jugadores<node>
: una ruta completa que describe un nodo de inventario conocido.[<targets>]
(opcional): si se especifica, debe ser el nombre de usuario de un jugador o un selector de objetivos. Si no se especifica, el valor predeterminado es el jugador que usa el comando. Cuando se usa en un bloque de comando, el jugador no es opcional.[<lock>]
(opcional): si se especifica, debe ser un identificador válido que haga referencia a un bloqueo registrado. Si no se especifica, el valor predeterminado es el bloqueo genérico de "comando"./locki unlock <node> [<targets>] [<lock>]
: desbloquea los inventarios de uno o más jugadores[<targets>]
(opcional): si se especifica, debe ser el nombre de usuario de un jugador o un selector de objetivos. Si no se especifica, el valor predeterminado es el jugador que usa el comando. Cuando se usa en un bloque de comando, el jugador no es opcional.[<lock>]
(opcional): Si se especifica, debe ser un identificador válido que se usó previamente como bloqueo para afectar los inventarios de los jugadores. Si no se especifica, el valor predeterminado es el bloqueo genérico de "comando". Si tiene LuckPerms instalado, los jugadores con el permiso locki.command.lock
pueden usar los comandos anteriores. Si solo otorgas locki.command.lock.self
, los jugadores solo podrán usar los comandos en sí mismos.
if ( Permissions . check ( player , "locki.access.inventory.armor.head" , true )) {
// nothing is locking the head slot
}
Para obtener una lista de nodos de inventario predeterminados, consulte DefaultInventoryNodes.java. Simplemente anteponga la ruta completa del nodo deseado con locki.access.
antes de comprobar.
Puede agregar la biblioteca insertando lo siguiente en su 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 } "
}
Luego puede agregar la versión de la biblioteca a su archivo gradle.properties
:
# Locki
locki_version = 0.x.y
# Fabric Permissions API
fpa_version = 0.1-SNAPSHOT
# Cardinal Components
cca_version = 2.x.y
Puede encontrar la versión actual de Locki en la pestaña de versiones del repositorio en Github y la última versión de CCA en el repositorio correspondiente.
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 );
}
}