Merge branch 'Account'

master
poopki 3 years ago
commit 38423f8df2
  1. 26
      Account.java
  2. 19
      AccountArray.java
  3. 113
      AccountEventHandler.java
  4. 40
      CustomItem_test.java
  5. 29
      Status.java
  6. 5
      UserInfo.java
  7. 2
      User_DB.java

@ -1,19 +1,33 @@
package org.poopki.duckdns.user_db;
public class Account {
private int m_Balance;
private int MAX_BALANCE = 2147483647;
public Account(int Balance){ // Account Balance 초기화
m_Balance = Balance;
}
public boolean setBalance(Long Amount){
if(Amount<MAX_BALANCE) {
m_Balance = Amount.intValue();
return true;
}else{
return false;
}
}
public int getBalance(){ return m_Balance; } //잔액 return
public void credit(int Amount){ // 입금
m_Balance +=Amount;
public boolean credit(Long Amount){ // 입금
if(m_Balance+Amount < MAX_BALANCE) {
m_Balance += Amount.intValue();
return true;
}
else{
return false;
}
}
public boolean withdraw(int Amount){ // 출금
public boolean withdraw(Long Amount){ // 출금
if(m_Balance >= Amount){
m_Balance -= Amount;
m_Balance -= Amount.intValue();
return true;
}
return false;

@ -7,12 +7,22 @@ import java.util.UUID;
public class AccountArray {
private static Map<UUID, Account> m_AccountArray = new HashMap<UUID, Account>();
public void transfer(UUID Src, UUID Des, int Amount){ // 송금 method
public int transfer(UUID Src, UUID Des, Long Amount){ // 송금 method
Account m_Src = m_AccountArray.get(Src);
Account m_Des = m_AccountArray.get(Des);
if(m_Src.withdraw(Amount)){ //인출 성공시 입금
m_Des.credit(Amount);
if(m_Des.credit(Amount))
{
return 1;
}
else{
m_Src.credit(Amount);
return 2;
}
}
else {
return 3;
}
}
@ -24,4 +34,9 @@ public class AccountArray {
public void putAccountInfo(UUID uuid, int Amount) { //AccountArray 생성
m_AccountArray.put(uuid, new Account(Amount));
}
public boolean setAccountInfo(UUID uuid, Long Amount) {
Account m_Account = m_AccountArray.get(uuid);
return m_Account.setBalance(Amount);
}
}

@ -0,0 +1,113 @@
package org.poopki.duckdns.user_db;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class AccountEventHandler implements CommandExecutor {
AccountArray m_AccountArray;
public AccountEventHandler(AccountArray AA){
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 "설정": {
if (p.isOp()) {
if (args.length > 1) {
if (args[1] != null) {
Player op = Bukkit.getPlayer(args[1]);
if (op != null) {
if (args.length > 2) {
if (isStringDouble(args[2])) {
if(m_AccountArray.setAccountInfo(op.getUniqueId(), Long.parseLong(args[2]))){
p.sendMessage(op.getName() + "님의 잔액을" + Integer.parseInt(args[2]) + "원으로 설정하였습니다.");
} else{
p.sendMessage("최대 금액 이상으로 설정할 수 없습니다.");
}
} else {
p.sendMessage("설정 금액은 숫자만 가능합니다.");
}
} else {
p.sendMessage("설정 금액을 입력해주세요.");
}
} else {
p.sendMessage("잘못된 계좌입니다.");
}
}
}else{
p.sendMessage("설정 대상이 지정되지 않았습니다.");
}
} else {
p.sendMessage("관리자만 실행 가능한 명령어입니다.");
}
break;
}
case "잔액": {
p.sendMessage("잔액: " + m_AccountArray.getAccountInfo(p.getUniqueId()) + "원");
break;
}
case "이체": {
if (args.length > 1) {
if(args.length > 2) {
Player op = Bukkit.getPlayer(args[1]);
if (op != null) {
if (isStringDouble(args[2])) {
if(p.getUniqueId() != op.getUniqueId()) {
switch(m_AccountArray.transfer(p.getUniqueId(), op.getUniqueId(), Long.parseLong(args[2])))
{
case 1: {
p.sendMessage(op.getName() + "님에게 " + Integer.parseInt(args[2]) + "원을 이체하였습니다.");
break;
}
case 2: {
p.sendMessage("잔액은 최대 금액을 초과할 수 없습니다.");
break;
}
case 3:{
p.sendMessage("잔액이 부족합니다.");
break;
}
}
} else{
p.sendMessage("자기 자신에게는 이체할 수 없습니다.");
}
} else {
p.sendMessage("이체 금액은 숫자만 가능합니다.");
}
} else {
p.sendMessage("잘못된 계좌입니다.");
}
} else {
p.sendMessage("이체 금액을 입력해주세요.");
}
} else {
p.sendMessage("이체 대상이 지정되지 않았습니다.");
}
break;
}
default: {
p.sendMessage("잘못된 명령어");
}
}
}
else{
p.sendMessage("명령어를 입력하세요(잔액 | 이체)");
}
return true;
}
}

@ -0,0 +1,40 @@
package org.poopki.duckdns.user_db;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;
import java.util.Random;
public class CustomItem_test implements CommandExecutor { //명령어 처리 클래스는 CommandExecutor 인터페이스를 상속해야 한다.
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { //명령어 실행 시
if(sender instanceof Player) { //명령어 사용자가 플레이어인 경우
Player player = (Player)sender; //명령어 사용자 객체를 플레이어 객체로 변환할 수 있음
player.sendMessage("zl존 개쩌는 테스트 명령어를 실행하셨습니다."); //사용자에게 메시지 발신
ItemStack irons = new ItemStack(Material.IRON_INGOT); //아이템을 ItemStack 객체를 생성해 만들 수 있음
ItemStack golds = new ItemStack(Material.GOLD_INGOT);
ItemStack diamonds = new ItemStack(Material.DIAMOND);
irons.setAmount(10); //아이템 갯수를 정할 수 있음
golds.setAmount(20);
diamonds.setAmount(30);
player.getInventory().addItem(irons, golds, diamonds); //플레이어의 인벤토리를 가져와 아이템을 집어넣음
return true; //true값을 반환하면 명령어가 성공한 것으로 간주
}
else if(sender instanceof ConsoleCommandSender) { //명령어 사용자가 콘솔인 경우
sender.sendMessage("콘솔에서는 이 명령어를 실행할 수 없습니다.");
return false; //false값을 반환하면 명령어가 실패한 것으로 간주
}
return false;
}
}

@ -0,0 +1,29 @@
package org.poopki.duckdns.user_db;
public class Status {
int m_HP;
int m_MP;
int m_Level;
int m_STR;
int m_DEX;
int m_INT;
int m_LUK;
int m_PATK;
int m_PDEF;
int m_MATK;
int m_MDEF;
//방어율 = (방어력 / (100 + 방어력)
//Add Equipment Class instance
public Status(int HP, int MP, int Level, int STR, int DEX, int INT, int LUK){
m_HP = HP;
m_MP = MP;
m_Level = Level;
m_STR = STR;
m_DEX = DEX;
m_INT = INT;
m_LUK = LUK;
}
}

@ -4,7 +4,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class UserInfo {
public class UserInfo extends Status {
private UUID m_UUID;
private String m_Name;
@ -15,16 +15,17 @@ public class UserInfo {
private int m_Farm;
public UserInfo(UUID uuid, String Name, int Nation, int Squad, int Farm){ //UserInfo 초기화
super(100,100,1,10,10,10,10);
m_UUID = uuid;
m_Name = Name;
m_Nation = Nation;
m_Squad = Squad;
m_Farm = Farm;
}
public void JoinNation(int Nation) { m_Nation = Nation; }
public void JoinSquad(int Squad) { m_Squad = Squad; }
public void JoinFarm(int Farm) { m_Farm = Farm; }
public String getUserName(){
return m_Name;
}

@ -24,7 +24,7 @@ public final class User_DB extends JavaPlugin implements Listener {
} catch (SQLException e) {
throw new RuntimeException(e);
}
getCommand("계좌").setExecutor(new AccountEventHandler(m_AccountArrayInstance));
getServer().getPluginManager().registerEvents(new UserJoin(m_InfoArrayInstance, m_AccountArrayInstance),this);
}

Loading…
Cancel
Save