Perpustakaan Quilt yang menangani penguncian inventaris pemain. Dapat juga digunakan sebagai mod mandiri, melalui perintah /locki
.
Mod ini harus diinstal di server dan klien agar berfungsi dengan baik.
Locki mewakili slot menggunakan node inventaris . Node inventaris disusun sebagai pohon, memungkinkan perintah atau mod mengunci atau membuka kunci seluruh bagian dengan cepat sambil tetap mempertahankan kontrol atas unit yang lebih halus. Node inventaris direpresentasikan sebagai jalur yang dipisahkan titik, dari nenek moyang yang paling tidak spesifik ke simpul anak yang paling spesifik. Misalnya inventory
mendeskripsikan keseluruhan inventaris pemain, sedangkan inventory.armor.chest
mendeskripsikan slot chestplate pada inventaris.
Saat node inventaris terkunci, node turunannya masih dapat dibuka kuncinya, sehingga Anda dapat mengecualikan slot tertentu dari larangan akses luas. Misalnya, mengunci inventory
lalu membuka inventory.armor.chest
akan mencegah pemain menyentuh item apa pun di inventarisnya kecuali chestplatenya.
Locki menambahkan perintah /locki
, memungkinkan operator server dan pembuat peta berinteraksi dengan API melalui perintah.
/locki lock <node> [<targets>] [<lock>]
: mengunci inventaris satu atau lebih pemain<node>
: jalur lengkap yang menjelaskan node inventaris yang diketahui.[<targets>]
(opsional): Jika ditentukan, harus berupa nama pengguna pemain atau pemilih target. Jika tidak ditentukan, defaultnya adalah pemutar yang menggunakan perintah. Saat digunakan di blok perintah, player bukanlah opsional.[<lock>]
(opsional): Jika ditentukan, harus berupa pengidentifikasi valid yang merujuk pada kunci terdaftar. Jika tidak ditentukan, defaultnya adalah kunci "perintah" umum./locki unlock <node> [<targets>] [<lock>]
: membuka inventaris satu atau lebih pemain[<targets>]
(opsional): Jika ditentukan, harus berupa nama pengguna pemain atau pemilih target. Jika tidak ditentukan, defaultnya adalah pemutar yang menggunakan perintah. Saat digunakan di blok perintah, player bukanlah opsional.[<lock>]
(opsional): Jika ditentukan, harus berupa pengenal valid yang sebelumnya digunakan sebagai kunci untuk memengaruhi inventaris pemain. Jika tidak ditentukan, defaultnya adalah kunci "perintah" generik. Jika Anda sudah menginstal LuckPerms, perintah di atas dapat digunakan oleh pemain dengan izin locki.command.lock
. Jika Anda hanya memberikan locki.command.lock.self
, pemain hanya akan dapat menggunakan perintah tersebut pada dirinya sendiri.
if ( Permissions . check ( player , "locki.access.inventory.armor.head" , true )) {
// nothing is locking the head slot
}
Untuk daftar node inventaris default, lihat DefaultInventoryNodes.java. Cukup tambahkan path lengkap node yang diinginkan dengan locki.access.
sebelum memeriksa.
Anda dapat menambahkan perpustakaan dengan memasukkan yang berikut ini ke build.gradle
Anda :
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 } "
}
Anda kemudian dapat menambahkan versi perpustakaan ke file gradle.properties
Anda:
# Locki
locki_version = 0.x.y
# Fabric Permissions API
fpa_version = 0.1-SNAPSHOT
# Cardinal Components
cca_version = 2.x.y
Anda dapat menemukan versi Locki saat ini di tab rilis repositori di Github, dan versi CCA terbaru di repositori yang sesuai.
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 );
}
}