Uma biblioteca Quilt que cuida do bloqueio de inventário do jogador. Também pode ser usado como mod independente, através do comando /locki
.
Este mod deve ser instalado no servidor e no cliente para funcionar corretamente.
Locki representa slots usando nós de inventário . Os nós de inventário são estruturados como uma árvore, permitindo que comandos ou mods bloqueiem ou desbloqueiem seções inteiras rapidamente, mantendo o controle sobre unidades mais detalhadas. Os nós de inventário são representados como um caminho separado por pontos, do ancestral menos específico ao nó filho mais específico. Por exemplo, inventory
descreve todo o inventário do jogador, enquanto inventory.armor.chest
descreve o slot do peitoral do inventário.
Quando um nó de inventário é bloqueado, os nós descendentes ainda podem ser desbloqueados, permitindo excluir slots específicos de uma ampla proibição de acesso. Por exemplo, bloquear inventory
e depois desbloquear inventory.armor.chest
impedirá que o jogador toque em qualquer item do seu inventário, exceto o peitoral.
Locki adiciona o comando /locki
, permitindo que operadores de servidor e cartógrafos interajam com a API por meio de comandos.
/locki lock <node> [<targets>] [<lock>]
: bloqueia os inventários de um ou mais jogadores<node>
: um caminho completo que descreve um nó de inventário conhecido.[<targets>]
(opcional): Se especificado, deve ser o nome de usuário do jogador ou um seletor de alvo. Se não for especificado, o padrão é o jogador que usa o comando. Quando usado em um bloco de comando, player não é opcional.[<lock>]
(opcional): se especificado, deve ser um identificador válido referenciando um bloqueio registrado. Se não for especificado, o padrão é o bloqueio genérico de "comando"./locki unlock <node> [<targets>] [<lock>]
: desbloqueia os inventários de um ou mais jogadores[<targets>]
(opcional): Se especificado, deve ser o nome de usuário do jogador ou um seletor de alvo. Se não for especificado, o padrão é o jogador que usa o comando. Quando usado em um bloco de comando, player não é opcional.[<lock>]
(opcional): Se especificado, deve ser um identificador válido que foi usado anteriormente como bloqueio para afetar os inventários dos jogadores. Se não for especificado, o padrão é o bloqueio genérico de "comando". Se você tiver o LuckPerms instalado, os comandos acima podem ser usados por jogadores com a permissão locki.command.lock
. Se você conceder apenas locki.command.lock.self
, os jogadores só poderão usar os comandos neles mesmos.
if ( Permissions . check ( player , "locki.access.inventory.armor.head" , true )) {
// nothing is locking the head slot
}
Para obter uma lista de nós de inventário padrão, consulte DefaultInventoryNodes.java. Simplesmente acrescente locki.access.
antes de verificar.
Você pode adicionar a biblioteca inserindo o seguinte em seu 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 } "
}
Você pode então adicionar a versão da biblioteca ao seu arquivo gradle.properties
:
# Locki
locki_version = 0.x.y
# Fabric Permissions API
fpa_version = 0.1-SNAPSHOT
# Cardinal Components
cca_version = 2.x.y
Você pode encontrar a versão atual do Locki na guia de lançamentos do repositório no Github e a versão mais recente do CCA no repositório apropriado.
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 );
}
}