Vault
Vault는 마인크래프트 서버에서 권한, 채팅, 경제 시스템을 위한 통합 API를 제공하는 플러그인이다. 개별 플러그인에 직접 연결하거나 의존할 필요 없이 쉽게 연동할 수 있도록 해주며, 다양한 권한 및 경제 플러그인들 간의 호환성을 보장한다. Sleaker가 개발했으며, 2011년부터 거의 모든 서버에서 필수 플러그인으로 자리잡았다.
역할
Vault는 직접적인 기능을 제공하지 않고, 다른 플러그인들 간의 다리 역할을 한다:
- 권한 시스템 통합: 다양한 권한 플러그인과의 호환성
- 경제 시스템 통합: 여러 경제 플러그인을 하나의 API로 관리
- 채팅 시스템 통합: 접두사, 접미사 등 채팅 포맷 지원
개발자들은 각 플러그인의 API를 개별적으로 학습하지 않고도 Vault API만으로 모든 호환 플러그인과 연동할 수 있다.
지원 플러그인
권한 플러그인
- LuckPerms (권장)
- PermissionsEx (PEX)
- GroupManager
- bPermissions
- zPermission
- UltraPermissions
경제 플러그인
- EssentialsX Economy
- iConomy
- BOSEconomy
- CraftConomy
- CMI Economy
- GemsEconomy
- GoldIsMoney
- Gringotts
채팅 플러그인
- EssentialsX Chat
- LuckPerms (메타데이터)
- ChatEx
- mChat
설치
Vault는 다른 플러그인의 의존성으로 작동하므로 단독 설치만으로는 효과가 없다:
- SpigotMC에서 다운로드
- plugins 폴더에 JAR 파일 넣기
- 서버 재시작
- 권한/경제/채팅 플러그인 설치
개발자 API
Maven 설정
<repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> <dependency> <groupId>com.github.MilkBowl</groupId> <artifactId>VaultAPI</artifactId> <version>1.7</version> <scope>provided</scope> </dependency>
기본 사용법
public class MyPlugin extends JavaPlugin { private static Economy econ = null; private static Permission perms = null; private static Chat chat = null; @Override public void onEnable() { if (!setupEconomy()) { getLogger().severe("Vault 경제 시스템을 찾을 수 없습니다!"); getServer().getPluginManager().disablePlugin(this); return; } setupPermissions(); setupChat(); } private boolean setupEconomy() { if (getServer().getPluginManager().getPlugin("Vault") == null) { return false; } RegisteredServiceProvider<Economy> rsp = getServer() .getServicesManager() .getRegistration(Economy.class); if (rsp == null) { return false; } econ = rsp.getProvider(); return econ != null; } // setupPermissions()와 setupChat()도 유사한 방식 }
경제 API 사용 예시
// 잔액 확인 double balance = econ.getBalance(player); // 돈 지급 EconomyResponse r = econ.depositPlayer(player, 100); if (r.transactionSuccess()) { player.sendMessage("100원을 받았습니다!"); } // 돈 차감 EconomyResponse r = econ.withdrawPlayer(player, 50); if (r.transactionSuccess()) { player.sendMessage("50원을 지불했습니다!"); } // 계좌 생성 (은행) econ.createBank("서버은행", player);
권한 API 사용 예시
// 권한 확인 if (perms.has(player, "my.permission")) { // 권한이 있을 때 } // 그룹 확인 String group = perms.getPrimaryGroup(player); // 그룹 추가 perms.playerAddGroup(player, "vip"); // 그룹 제거 perms.playerRemoveGroup(player, "default");
채팅 API 사용 예시
// 접두사 가져오기 String prefix = chat.getPlayerPrefix(player); // 접미사 설정 chat.setPlayerSuffix(player, " [VIP]"); // 그룹 접두사 가져오기 String groupPrefix = chat.getGroupPrefix(world, group);
설정
config.yml은 매우 간단하다:
# 업데이트 확인 update-check: true
VaultUnlocked
Vault의 개발이 정체되면서 VaultUnlocked라는 포크 버전이 등장했다:
- 다중 통화 지원: 여러 종류의 화폐 관리
- Folia 지원: 최신 서버 소프트웨어 호환
- BigDecimal 지원: 정밀한 화폐 계산
- 활발한 개발: 지속적인 업데이트
주의사항
- Vault는 단독으로는 아무 기능도 하지 않음
- 반드시 호환되는 권한/경제 플러그인이 필요
- plugin.yml에 depend 또는 softdepend 추가 필수
- 4년 이상 업데이트가 없지만 여전히 작동함