|
|
|
package org.poopki.duckdns.user_db.Array;
|
|
|
|
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
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 NationEventHandler implements CommandExecutor {
|
|
|
|
|
|
|
|
NationArray m_NationArray;
|
|
|
|
UserInfoArray m_UserInfoArray;
|
|
|
|
AccountArray m_AccountArray;
|
|
|
|
UUID ZERO_UUID = new UUID(0,0);
|
|
|
|
public NationEventHandler(UserInfoArray UIA, NationArray GA, AccountArray AA){
|
|
|
|
m_NationArray = 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(), "Nation").equals(ZERO_UUID)){
|
|
|
|
p.sendMessage("이미 국가을 소유중"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"));
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!m_NationArray.CreateGroup(tempUUID, args[1], p.getUniqueId())){
|
|
|
|
p.sendMessage("이미 존재하는 국가 이름");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_UserInfoArray.setUserGroupUUID("Nation",p.getUniqueId(), tempUUID);
|
|
|
|
m_AccountArray.putAccountInfo(tempUUID,0);
|
|
|
|
|
|
|
|
for (UUID key: m_UserInfoArray.getKeySet()){
|
|
|
|
p.sendMessage("------------"+p.getUniqueId());
|
|
|
|
p.sendMessage(""+m_UserInfoArray.getUserGroupUUID(key,"Nation"));
|
|
|
|
}
|
|
|
|
|
|
|
|
p.sendMessage(args[1]+"국가이 생성되었습니다.");
|
|
|
|
p.sendMessage("국가 멤버 목록: ");
|
|
|
|
|
|
|
|
for (String Name: m_NationArray.GetGroupMembersName(tempUUID)){
|
|
|
|
p.sendMessage(Name);
|
|
|
|
}
|
|
|
|
|
|
|
|
p.sendMessage("국가 목록:");
|
|
|
|
|
|
|
|
for (String Name: m_NationArray.GetGroupNameList()){
|
|
|
|
p.sendMessage(Name);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
case "가입":{
|
|
|
|
p.sendMessage("플레이어 UUID:"+p.getUniqueId()+" 국가 UUID:"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"));
|
|
|
|
p.sendMessage("ZERO UUID:"+ZERO_UUID);
|
|
|
|
if(!m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation").equals(ZERO_UUID)){
|
|
|
|
p.sendMessage("이미 가입한 국가가 존재");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
p.sendMessage("가입 완료");
|
|
|
|
m_NationArray.SignUpGroup("Nation",m_NationArray.m_GroupNameList.get(args[1]),p.getUniqueId());
|
|
|
|
p.sendMessage("국가 멤버 목록: ");
|
|
|
|
for (String Name: m_NationArray.GetGroupMembersName(m_NationArray.m_GroupNameList.get(args[1]))){
|
|
|
|
p.sendMessage(Name);
|
|
|
|
}
|
|
|
|
p.sendMessage("국가 목록:");
|
|
|
|
for (String Name: m_NationArray.GetGroupNameList()){
|
|
|
|
p.sendMessage(Name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
case "초대":{
|
|
|
|
p.sendMessage("초대 테스트");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
case "강퇴":{
|
|
|
|
p.sendMessage("강퇴 테스트"+args[1]);
|
|
|
|
if(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation").equals(ZERO_UUID)){
|
|
|
|
p.sendMessage("가입한 국가이 없습니다."+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"));
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!m_NationArray.isOwner(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"), 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_NationArray.isGroupMember(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"),op)) {
|
|
|
|
p.sendMessage("국가에 가입되지 않은 유저");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_NationArray.ExpulsionGroupPlayer("Nation", m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"), op);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "탈퇴": {
|
|
|
|
if(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation").equals(ZERO_UUID)){
|
|
|
|
p.sendMessage("가입한 국가이 없습니다."+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"));
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
p.sendMessage("탈퇴 플레이어 UUID:"+p.getUniqueId()+" 국가 UUID:"+m_UserInfoArray.getUserGroupUUID(p.getUniqueId(), "Nation"));
|
|
|
|
m_NationArray.ExpulsionGroupPlayer("Nation",m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),"Nation"),p.getUniqueId());
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "이름":{
|
|
|
|
p.sendMessage("현재 파티 이름"+m_NationArray.GetGroupName(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),"Nation")));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "정보": {
|
|
|
|
for (String Name: m_NationArray.GetGroupNameList()){
|
|
|
|
p.sendMessage("국가 이름:");
|
|
|
|
p.sendMessage(Name);
|
|
|
|
p.sendMessage("인원 목록");
|
|
|
|
for (String Name2: m_NationArray.GetGroupMembersName(m_NationArray.m_GroupNameList.get(Name))) {
|
|
|
|
p.sendMessage(Name2);
|
|
|
|
}
|
|
|
|
p.sendMessage("계좌 잔액:"+m_AccountArray.getAccountInfo(m_NationArray.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_NationArray.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_NationArray.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_NationArray.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_NationArray.GetUUID(args[1]))+ "원==");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default: {
|
|
|
|
p.sendMessage("잘못된 명령어");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|