package org.poopki.duckdns.user_db.Array; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.poopki.duckdns.user_db.UserInfoArray; import java.util.UUID; public class SquadEventHandler implements CommandExecutor { SquadArray m_SquadArray; UserInfoArray m_UserInfoArray; AccountArray m_AccountArray; UUID ZERO_UUID = new UUID(0,0); public SquadEventHandler(UserInfoArray UIA, SquadArray GA, AccountArray AA){ m_SquadArray = GA; m_UserInfoArray = UIA; m_AccountArray = AA; } public static boolean isStringDouble(String s) { try { Double.parseDouble(s); return true; } catch (NumberFormatException e) { return false; } } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player p = (Player) sender; if (args.length != 0) { switch (args[0]) { case "생성":{ UUID tempUUID = UUID.randomUUID(); if(!m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad").equals(ZERO_UUID)){ p.sendMessage("이미 분대를 소유중"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad")); return false; } if(!m_SquadArray.CreateGroup(tempUUID, args[1], p.getUniqueId())){ p.sendMessage("이미 존재하는 분대 이름"); return false; } m_UserInfoArray.setUserGroupUUID("Squad",p.getUniqueId(), tempUUID); m_AccountArray.putAccountInfo(tempUUID,0); for (UUID key: m_UserInfoArray.getKeySet()){ p.sendMessage("------------"+p.getUniqueId()); p.sendMessage(""+m_UserInfoArray.getUserGroupUUID(key,"Squad")); } p.sendMessage(args[1]+"분대이 생성되었습니다."); p.sendMessage("분대 멤버 목록: "); for (String Name: m_SquadArray.GetGroupMembersName(tempUUID)){ p.sendMessage(Name); } p.sendMessage("분대 목록:"); for (String Name: m_SquadArray.GetGroupNameList()){ p.sendMessage(Name); } break; } case "가입":{ p.sendMessage("플레이어 UUID:"+p.getUniqueId()+" 분대 UUID:"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad")); p.sendMessage("ZERO UUID:"+ZERO_UUID); if(!m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad").equals(ZERO_UUID)){ p.sendMessage("이미 가입한 분대가 존재"); return false; } else{ p.sendMessage("가입 완료"); m_SquadArray.SignUpGroup("Squad",m_SquadArray.m_GroupNameList.get(args[1]),p.getUniqueId()); p.sendMessage("분대 멤버 목록: "); for (String Name: m_SquadArray.GetGroupMembersName(m_SquadArray.m_GroupNameList.get(args[1]))){ p.sendMessage(Name); } p.sendMessage("분대 목록:"); for (String Name: m_SquadArray.GetGroupNameList()){ p.sendMessage(Name); } } break; } case "초대":{ p.sendMessage("초대 테스트"); break; } case "강퇴":{ p.sendMessage("강퇴 테스트"+args[1]); if(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad").equals(ZERO_UUID)){ p.sendMessage("가입한 분대이 없습니다."+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad")); return false; } if(!m_SquadArray.isOwner(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad"), p.getUniqueId())){ p.sendMessage("분대장만 사용 가능한 명령어"+ p.getUniqueId()); } if (args.length < 1) { p.sendMessage("강퇴할 대상을 지정"); return false; } UUID op = m_UserInfoArray.getUserUUID(args[1]); if (op == null) { p.sendMessage("잘못된 대상"); return false; } if(!m_SquadArray.isGroupMember(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad"),op)) { p.sendMessage("분대에 가입되지 않은 유저"); return false; } m_SquadArray.ExpulsionGroupPlayer("Squad", m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad"), op); break; } case "탈퇴": { if(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad").equals(ZERO_UUID)){ p.sendMessage("가입한 분대이 없습니다."+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad")); return false; } else{ p.sendMessage("탈퇴 플레이어 UUID:"+p.getUniqueId()+" 분대 UUID:"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Squad")); m_SquadArray.ExpulsionGroupPlayer("Squad",m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),"Squad"),p.getUniqueId()); } break; } case "이름":{ //p.sendMessage("현재 파티 이름"+m_SquadArray.GetGroupName(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),"Squad"))); p.sendMessage("현재 파티 이름"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),"Squad")); p.sendMessage(""+m_SquadArray.getKeySet()); break; } case "정보": { p.sendMessage("분대 이름:"); for (String Name: m_SquadArray.GetGroupNameList()){ p.sendMessage("분대 이름:"); p.sendMessage(Name); p.sendMessage("인원 목록"); for (String Name2: m_SquadArray.GetGroupMembersName(m_SquadArray.m_GroupNameList.get(Name))) { p.sendMessage(Name2); } p.sendMessage("계좌 잔액:"+m_AccountArray.getAccountInfo(m_SquadArray.m_GroupNameList.get(Name))); } break; } case "계좌설정":{ if (!p.isOp()) { p.sendMessage("관리자만 실행 가능한 명령어입니다."); return false; } if (args.length < 1) { p.sendMessage("설정 대상이 지정되지 않았습니다."); return false; } if (args[1] == null) { p.sendMessage("설정 대상이 지정되지 않았습니다."); return false; } UUID op = m_SquadArray.m_GroupNameList.get(args[1]); if (op == null) { p.sendMessage("잘못된 계좌입니다."); return false; } if (args.length < 2) { p.sendMessage("설정 금액을 입력해주세요."); return false; } if (!isStringDouble(args[2])) { p.sendMessage("설정 금액은 숫자만 가능합니다."); return false; } if(m_AccountArray.getAccountInfo(op)+Long.parseLong(args[2])>2147483647){ p.sendMessage("최대 금액 이상으로 설정할 수 없습니다."); return false; } m_AccountArray.setAccountInfo(op, Long.parseLong(args[2])); p.sendMessage(args[1] + "님의 잔액을 " + Integer.parseInt(args[2]) + "원으로 설정하였습니다."); break; } case "입금": { if (args.length < 1) { p.sendMessage("이체 대상이 지정되지 않았습니다."); return false; } if (args[1] == null) { p.sendMessage("이체 대상이 지정되지 않았습니다."); return false; } UUID op = m_SquadArray.m_GroupNameList.get(args[1]); if (op == null) { p.sendMessage("잘못된 계좌입니다."); return false; } if (args.length < 2) { p.sendMessage("이체 금액을 입력해주세요."); return false; } if (!isStringDouble(args[2])) { p.sendMessage("이체 금액은 숫자만 가능합니다."); return false; } if(p.getUniqueId() == op) { p.sendMessage("자기 자신에게는 이체할 수 없습니다."); return false; } switch(m_AccountArray.transfer(p.getUniqueId(), op, Long.parseLong(args[2]))) { case 1: { p.sendMessage(args[1] + "분대에 " + Integer.parseInt(args[2]) + "원을 이체하였습니다."); break; } case 2: { p.sendMessage("잔액은 최대 금액을 초과할 수 없습니다."); break; } case 3:{ p.sendMessage("잔액이 부족합니다."); break; } } break; } case "출금": { if (args.length < 1) { p.sendMessage("출금 대상이 지정되지 않았습니다."); return false; } if (args[1] == null) { p.sendMessage("출금 대상이 지정되지 않았습니다."); return false; } UUID op = m_SquadArray.m_GroupNameList.get(args[1]); if (op == null) { p.sendMessage("잘못된 계좌입니다."); return false; } if (args.length < 2) { p.sendMessage("출금 금액을 입력해주세요."); return false; } if (!isStringDouble(args[2])) { p.sendMessage("출금 금액은 숫자만 가능합니다."); return false; } if(p.getUniqueId() == op) { p.sendMessage("자기 자신에게는 출금할 수 없습니다."); return false; } switch(m_AccountArray.transfer(op, p.getUniqueId(), Long.parseLong(args[2]))) { case 1: { p.sendMessage(args[1] + "분대에 " + Integer.parseInt(args[2]) + "원을 출금하였습니다."); break; } case 2: { p.sendMessage("잔액은 최대 금액을 초과할 수 없습니다."); break; } case 3:{ p.sendMessage("잔액이 부족합니다."); break; } } break; } case "잔액": { p.sendMessage("==잔액: " + m_AccountArray.getAccountInfo(m_SquadArray.GetUUID(args[1]))+ "원=="); break; } default: { p.sendMessage("잘못된 명령어"); } } } return true; } }