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 );
}
}