플레이어 인벤토리 잠금을 처리하는 Quilt 라이브러리입니다. /locki
명령을 통해 독립형 모드로도 사용할 수 있습니다.
이 모드가 제대로 작동하려면 서버와 클라이언트 모두에 설치되어야 합니다.
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 );
}
}