Locki
v0.13.0
处理玩家库存锁定的 Quilt 库。也可以通过/locki
命令用作独立 mod。
该mod必须安装在服务器和客户端上才能正常工作。
Locki 表示使用库存节点的插槽。库存节点的结构为树状,允许命令或模组快速锁定或解锁整个部分,同时保留对更精细单元的控制。库存节点表示为点分隔的路径,从最不特定的祖先到最特定的子节点。例如, inventory
描述了玩家的全部库存,而inventory.armor.chest
则描述了库存的胸甲槽位。
当清单节点被锁定时,后代节点仍然可以解锁,从而允许您从广泛的访问禁令中排除特定插槽。例如,锁定inventory
然后解锁inventory.armor.chest
将阻止玩家触摸库存中除胸甲之外的任何物品。
Locki 添加了/locki
命令,允许服务器操作员和地图制作者通过命令与 API 进行交互。
/locki lock <node> [<targets>] [<lock>]
:锁定一名或多名玩家的物品栏<node>
:描述已知库存节点的完整路径。[<targets>]
(可选):如果指定,则必须是玩家的用户名或目标选择器。如果未指定,则默认为使用该命令的玩家。当在命令块中使用时,玩家不是可选的。[<lock>]
(可选):如果指定,则必须是引用已注册锁的有效标识符。如果未指定,则默认为通用“命令”锁。/locki unlock <node> [<targets>] [<lock>]
:解锁一名或多名玩家的物品栏[<targets>]
(可选):如果指定,则必须是玩家的用户名或目标选择器。如果未指定,则默认为使用该命令的玩家。当在命令块中使用时,玩家不是可选的。[<lock>]
(可选):如果指定,则必须是之前用作影响玩家库存的锁的有效标识符。如果未指定,则默认为通用“命令”锁。 如果您安装了LuckPerms,则具有locki.command.lock
权限的玩家可以使用上述命令。如果您只授予locki.command.lock.self
,玩家将只能对自己使用命令。
if ( Permissions . check ( player , "locki.access.inventory.armor.head" , true )) {
// nothing is locking the head slot
}
有关默认清单节点的列表,请参阅 DefaultInventoryNodes.java。只需在所需节点的完整路径前面加上locki.access.
检查之前。
您可以通过在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 } "
}
然后,您可以将库版本添加到gradle.properties
文件中:
# Locki
locki_version = 0.x.y
# Fabric Permissions API
fpa_version = 0.1-SNAPSHOT
# Cardinal Components
cca_version = 2.x.y
您可以在 Github 上存储库的发布选项卡中找到 Locki 的当前版本,并在相应的存储库中找到最新的 CCA 版本。
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 );
}
}