ห้องสมุด Quilt จัดการการล็อคสินค้าคงคลังของผู้เล่น สามารถใช้เป็น mod แบบสแตนด์อโลนได้โดยใช้คำสั่ง /locki
ต้องติดตั้ง 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
คุณสามารถค้นหา Locki เวอร์ชันปัจจุบันได้ในแท็บเผยแพร่ของที่เก็บบน Github และเวอร์ชัน 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 );
}
}