Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.20 KB | None | 0 0
  1. package me.weiking1021.mc.economy.vaulthook;
  2.  
  3. import java.text.DecimalFormat;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import org.bukkit.OfflinePlayer;
  8.  
  9. import me.weiking1021.mc.economy.WeiEconomy;
  10. import me.weiking1021.mc.economy.WeiEconomyVar;
  11. import me.weiking1021.mc.economy.bank.WeiEconomyBank;
  12. import me.weiking1021.mc.economy.bank.WeiEconomyBankManager;
  13. import me.weiking1021.mc.economy.playerdata.PlayerVaultDataManager;
  14. import me.weiking1021.mc.economy.weivalue.EconomyValue;
  15. import me.weiking1021.mc.essential.player.data.EssentialPlayerData;
  16. import me.weiking1021.mc.essential.value.WeiValueParameter;
  17. import net.milkbowl.vault.economy.Economy;
  18. import net.milkbowl.vault.economy.EconomyResponse;
  19. import net.milkbowl.vault.economy.EconomyResponse.ResponseType;
  20.  
  21. public class Economy_WeiEconomy implements Economy {
  22.  
  23. // 錯誤訊息
  24. private static final String error_message = "資料錯誤";
  25.  
  26. @Override
  27. // 確認是否插件正常
  28. public boolean isEnabled() {
  29.  
  30. // 回傳正常
  31. return true;
  32. }
  33.  
  34. @Override
  35. // 格式化金錢的格式
  36. public String format(double balance) {
  37.  
  38. // 格式化數字
  39. String str = new DecimalFormat("0.00").format(balance);
  40.  
  41. // 替換格式並回傳
  42. return WeiEconomyVar.money_format.replace("{MONEY}", str)
  43. .replace("{MONEY_NAME}", WeiEconomyVar.money_name);
  44. }
  45.  
  46. @Override
  47. // 小數點後的位數
  48. public int fractionalDigits() {
  49.  
  50. // 回傳
  51. return 2;
  52. }
  53.  
  54. @Override
  55. // 所有金錢銀行名稱
  56. public List<String> getBanks() {
  57.  
  58. // 回傳
  59. return new ArrayList<>(WeiEconomyBankManager.getEconomyBankList());
  60. }
  61.  
  62. @Override
  63. // 取得名稱
  64. public String getName() {
  65.  
  66. // 回傳
  67. return WeiEconomy.getInstance().getName();
  68. }
  69.  
  70. @Override
  71. // 是否支援多銀行帳戶
  72. public boolean hasBankSupport() {
  73.  
  74. // 回傳說支援
  75. return true;
  76. }
  77.  
  78. @Override
  79. // 取得某銀行的金錢餘額
  80. public EconomyResponse bankBalance(String bank_name) {
  81.  
  82. // 取得銀行資料
  83. WeiEconomyBank economy_bank = WeiEconomyBankManager.getEconomyBank(bank_name);
  84.  
  85. // 如果值為空
  86. if (economy_bank == null) {
  87.  
  88. // 回傳錯誤
  89. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  90. }
  91.  
  92. // 回傳結果
  93. return new EconomyResponse(0, economy_bank.getBalance(), ResponseType.SUCCESS, null);
  94. }
  95.  
  96. @Override
  97. // 判斷該銀行是否有一定的金額
  98. public EconomyResponse bankHas(String bank_name, double required_balance) {
  99.  
  100. // 取得銀行資料
  101. WeiEconomyBank economy_bank = WeiEconomyBankManager.getEconomyBank(bank_name);
  102.  
  103. // 如果值為空
  104. if (economy_bank == null) {
  105.  
  106. // 回傳錯誤
  107. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  108. }
  109.  
  110. // 取得銀行的金錢
  111. double balance = economy_bank.getBalance();
  112.  
  113. // 判斷結果
  114. ResponseType type = ResponseType.FAILURE;
  115.  
  116. // 判斷是否足夠
  117. if (balance >= required_balance) {
  118.  
  119. // 如果足夠就把結果設為成功
  120. type = ResponseType.SUCCESS;
  121. }
  122.  
  123. // 回傳結果
  124. return new EconomyResponse(0, balance, type, null);
  125. }
  126.  
  127. @Override
  128. // 對銀行存錢
  129. public EconomyResponse bankDeposit(String bank_name, double balance_deposit) {
  130.  
  131. // 取得銀行資料
  132. WeiEconomyBank economy_bank = WeiEconomyBankManager.getEconomyBank(bank_name);
  133.  
  134. // 如果值為空
  135. if (economy_bank == null) {
  136.  
  137. // 回傳錯誤
  138. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  139. }
  140.  
  141. // 回傳結果
  142. return new EconomyResponse(balance_deposit, economy_bank.deposit(balance_deposit), ResponseType.SUCCESS, null);
  143. }
  144.  
  145. @Override
  146. // 對銀行提錢
  147. public EconomyResponse bankWithdraw(String bank_name, double balance_withdraw) {
  148.  
  149. // 取得銀行資料
  150. WeiEconomyBank economy_bank = WeiEconomyBankManager.getEconomyBank(bank_name);
  151.  
  152. // 如果值為空
  153. if (economy_bank == null) {
  154.  
  155. // 回傳錯誤
  156. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  157. }
  158.  
  159. // 回傳結果
  160. return new EconomyResponse(balance_withdraw, economy_bank.withdraw(balance_withdraw), ResponseType.SUCCESS, null);
  161. }
  162.  
  163. @Override
  164. // 建立銀行
  165. public EconomyResponse createBank(String bank_name, String player_name) {
  166.  
  167. // 創建銀行
  168. boolean result = WeiEconomyBankManager.createBank(bank_name, player_name);
  169.  
  170. // 如果沒有創建成功
  171. if (!result) {
  172.  
  173. // 回傳錯誤
  174. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  175. }
  176.  
  177. // 創建銀行
  178. return new EconomyResponse(0, 0, ResponseType.SUCCESS, null);
  179. }
  180.  
  181. @Override
  182. // 建立銀行
  183. public EconomyResponse createBank(String bank_name, OfflinePlayer offline_player) {
  184.  
  185. // 取得玩家名稱
  186. String player_name = offline_player.getName();
  187.  
  188. // 回傳透過名稱創建的結果
  189. return createBank(bank_name, player_name);
  190. }
  191.  
  192. @Override
  193. // 移除銀行
  194. public EconomyResponse deleteBank(String bank_name) {
  195.  
  196. // 移除銀行
  197. boolean result = WeiEconomyBankManager.removeBank(bank_name);
  198.  
  199. // 如果沒有創建成功
  200. if (!result) {
  201.  
  202. // 回傳錯誤
  203. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  204. }
  205.  
  206. // 回傳結果
  207. return new EconomyResponse(0, 0, ResponseType.SUCCESS, null);
  208. }
  209.  
  210. @Override
  211. // 判斷某玩家是否為某銀行的成員
  212. public EconomyResponse isBankMember(String bank_name, String player_name) {
  213.  
  214. // 取得銀行
  215. WeiEconomyBank economy_bank = WeiEconomyBankManager.getEconomyBank(bank_name);
  216.  
  217. // 如果沒有抓到銀行
  218. if (economy_bank == null) {
  219.  
  220. // 回傳錯誤
  221. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  222. }
  223.  
  224. // 取得玩家資料
  225. EssentialPlayerData player_data = PlayerVaultDataManager.getPlayerDataByName(player_name);
  226.  
  227. // 如果沒有抓到玩家資料
  228. if (player_data == null) {
  229.  
  230. // 回傳錯誤
  231. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  232. }
  233.  
  234. // 判斷結果
  235. boolean result = economy_bank.getMemberUUIDList().contains(player_data.getDataUUID());
  236.  
  237. // 回傳結果
  238. return new EconomyResponse(0, 0, (result ? ResponseType.SUCCESS : ResponseType.FAILURE), null);
  239. }
  240.  
  241. @Override
  242. // 判斷某玩家是否為某銀行的成員
  243. public EconomyResponse isBankMember(String bank_name, OfflinePlayer offline_player) {
  244.  
  245. // 回傳判斷結果
  246. return isBankMember(bank_name, offline_player.getName());
  247. }
  248.  
  249. @Override
  250. // 判斷某玩家是否為某銀行的擁有者
  251. public EconomyResponse isBankOwner(String bank_name, String player_name) {
  252.  
  253. // 取得銀行
  254. WeiEconomyBank economy_bank = WeiEconomyBankManager.getEconomyBank(bank_name);
  255.  
  256. // 如果沒有抓到銀行
  257. if (economy_bank == null) {
  258.  
  259. // 回傳錯誤
  260. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  261. }
  262.  
  263. // 取得玩家資料
  264. EssentialPlayerData player_data = PlayerVaultDataManager.getPlayerDataByName(player_name);
  265.  
  266. // 如果沒有抓到玩家資料
  267. if (player_data == null) {
  268.  
  269. // 回傳錯誤
  270. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  271. }
  272.  
  273. // 判斷結果
  274. boolean result = economy_bank.getOwnerUUID().equals(player_data.getDataUUID());
  275.  
  276. // 回傳結果
  277. return new EconomyResponse(0, 0, (result ? ResponseType.SUCCESS : ResponseType.FAILURE), null);
  278. }
  279.  
  280. @Override
  281. // 判斷某玩家是否為某銀行的擁有者
  282. public EconomyResponse isBankOwner(String bank_name, OfflinePlayer offline_player) {
  283.  
  284. // 回傳判斷結果
  285. return isBankOwner(bank_name, offline_player.getName());
  286. }
  287.  
  288. @Override
  289. // 創建玩家帳戶
  290. public boolean createPlayerAccount(String player_name) {
  291.  
  292. // 回傳創建結果
  293. return PlayerVaultDataManager.createPlayerEconomyValue(player_name, null) != null;
  294. }
  295.  
  296. @Override
  297. // 創建玩家帳戶
  298. public boolean createPlayerAccount(OfflinePlayer offline_player) {
  299.  
  300. // 回傳執行結果
  301. return createPlayerAccount(offline_player.getName());
  302. }
  303.  
  304. @Override
  305. // 創建玩家世界帳戶
  306. public boolean createPlayerAccount(String player_name, String world_name) {
  307.  
  308. // 回傳創建結果
  309. return PlayerVaultDataManager.createPlayerEconomyValue(player_name, world_name) != null;
  310. }
  311.  
  312. @Override
  313. // 創建玩家世界帳戶
  314. public boolean createPlayerAccount(OfflinePlayer offline_player, String world_name) {
  315.  
  316. // 回傳執行結果
  317. return createPlayerAccount(offline_player.getName(), world_name);
  318. }
  319.  
  320. @Override
  321. // 取得貨幣名稱
  322. public String currencyNamePlural() {
  323.  
  324. // 回傳名稱
  325. return WeiEconomyVar.money_name;
  326. }
  327.  
  328. @Override
  329. // 取得貨幣名稱
  330. public String currencyNameSingular() {
  331.  
  332. // 回傳名稱
  333. return WeiEconomyVar.money_name;
  334. }
  335.  
  336. @Override
  337. // 存錢到玩家的戶頭中
  338. public EconomyResponse depositPlayer(String player_name, double balance_deposit) {
  339.  
  340. // 取得金錢資料
  341. EconomyValue bank_value = PlayerVaultDataManager.getPlayerEconomyValue(player_name, null);
  342.  
  343. // 增加一定的值
  344. boolean result = bank_value.resume(new WeiValueParameter(balance_deposit));
  345.  
  346. // 判斷處理的結果
  347. if (!result) {
  348.  
  349. // 回傳錯誤
  350. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  351. }
  352.  
  353. // 回傳成功執行
  354. return new EconomyResponse(balance_deposit, bank_value.getData(), ResponseType.SUCCESS, null);
  355. }
  356.  
  357. @Override
  358. // 存錢到玩家的戶頭中
  359. public EconomyResponse depositPlayer(OfflinePlayer offline_player, double balance_deposit) {
  360.  
  361. // 回傳執行結果
  362. return depositPlayer(offline_player.getName(), balance_deposit);
  363. }
  364.  
  365. @Override
  366. // 存錢到玩家的戶頭中
  367. public EconomyResponse depositPlayer(String player_name, String world_name, double balance_deposit) {
  368.  
  369. // 取得金錢資料
  370. EconomyValue bank_value = PlayerVaultDataManager.getPlayerEconomyValue(player_name, world_name);
  371.  
  372. // 增加一定的值
  373. boolean result = bank_value.resume(new WeiValueParameter(balance_deposit));
  374.  
  375. // 判斷處理的結果
  376. if (!result) {
  377.  
  378. // 回傳錯誤
  379. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  380. }
  381.  
  382. // 回傳成功執行
  383. return new EconomyResponse(balance_deposit, bank_value.getData(), ResponseType.SUCCESS, null);
  384. }
  385.  
  386. @Override
  387. // 對玩家戶頭存錢
  388. public EconomyResponse depositPlayer(OfflinePlayer offline_player, String world_name, double balance_deposit) {
  389.  
  390. // 回傳執行結果
  391. return depositPlayer(offline_player.getName(), world_name, balance_deposit);
  392. }
  393.  
  394. @Override
  395. // 對玩家戶頭提錢
  396. public EconomyResponse withdrawPlayer(String player_name, double balance_withdraw) {
  397.  
  398. // 取得金錢資料
  399. EconomyValue bank_value = PlayerVaultDataManager.getPlayerEconomyValue(player_name, null);
  400.  
  401. // 增加一定的值
  402. boolean result = bank_value.consume(new WeiValueParameter(balance_withdraw));
  403.  
  404. // 判斷處理的結果
  405. if (!result) {
  406.  
  407. // 回傳錯誤
  408. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  409. }
  410.  
  411. // 回傳成功執行
  412. return new EconomyResponse(balance_withdraw, bank_value.getData(), ResponseType.SUCCESS, null);
  413. }
  414.  
  415. @Override
  416. // 對玩家戶頭提錢
  417. public EconomyResponse withdrawPlayer(OfflinePlayer offline_player, double balance_withdraw) {
  418.  
  419. // 回傳執行結果
  420. return withdrawPlayer(offline_player.getName(), balance_withdraw);
  421. }
  422.  
  423. @Override
  424. // 對指定玩家戶頭提錢
  425. public EconomyResponse withdrawPlayer(String player_name, String world_name, double balance_withdraw) {
  426.  
  427. // 取得金錢資料
  428. EconomyValue bank_value = PlayerVaultDataManager.getPlayerEconomyValue(player_name, world_name);
  429.  
  430. // 增加一定的值
  431. boolean result = bank_value.consume(new WeiValueParameter(balance_withdraw));
  432.  
  433. // 判斷處理的結果
  434. if (!result) {
  435.  
  436. // 回傳錯誤
  437. return new EconomyResponse(0, 0, ResponseType.FAILURE, error_message);
  438. }
  439.  
  440. // 回傳成功執行
  441. return new EconomyResponse(balance_withdraw, bank_value.getData(), ResponseType.SUCCESS, null);
  442. }
  443.  
  444. @Override
  445. // 對指定玩家戶頭提錢
  446. public EconomyResponse withdrawPlayer(OfflinePlayer offline_player, String world_name, double balance_withdraw) {
  447.  
  448. // 回傳執行結果
  449. return withdrawPlayer(offline_player.getName(), world_name, balance_withdraw);
  450. }
  451.  
  452. @Override
  453. // 取得玩家的金錢
  454. public double getBalance(String player_name) {
  455.  
  456. // 取得金錢資料
  457. EconomyValue bank_value = PlayerVaultDataManager.getPlayerEconomyValue(player_name, null);
  458.  
  459. // 回傳
  460. return bank_value.getData();
  461. }
  462.  
  463. @Override
  464. // 取得玩家的金錢
  465. public double getBalance(OfflinePlayer offline_player) {
  466.  
  467. // 回傳執行結果
  468. return getBalance(offline_player.getName());
  469. }
  470.  
  471. @Override
  472. // 取得玩家指定世界的金錢
  473. public double getBalance(String player_name, String world_name) {
  474.  
  475. // 取得金錢資料
  476. EconomyValue bank_value = PlayerVaultDataManager.getPlayerEconomyValue(player_name, world_name);
  477.  
  478. // 回傳
  479. return bank_value.getData();
  480. }
  481.  
  482. @Override
  483. // 取得玩家指定世界的金錢
  484. public double getBalance(OfflinePlayer offline_player, String world_name) {
  485.  
  486. // 回傳結果
  487. return getBalance(offline_player.getName(), world_name);
  488. }
  489.  
  490. @Override
  491. // 判斷是否玩家有指定的金錢數量
  492. public boolean has(String player_name, double required_balance) {
  493.  
  494. // 回傳判斷結果
  495. return getBalance(player_name) >= required_balance;
  496. }
  497.  
  498. @Override
  499. // 判斷是否玩家有指定的金錢數量
  500. public boolean has(OfflinePlayer offline_player, double require_balance) {
  501.  
  502. // 回傳結果
  503. return has(offline_player.getName(), require_balance);
  504. }
  505.  
  506. @Override
  507. // 判斷是否玩家某世界有指定的金錢數量
  508. public boolean has(String player_name, String world_name, double required_balance) {
  509.  
  510. // 回傳判斷結果
  511. return getBalance(player_name, world_name) >= required_balance;
  512. }
  513.  
  514. @Override
  515. // 判斷是否玩家某世界有指定的金錢數量
  516. public boolean has(OfflinePlayer offline_player, String world_name, double required_balance) {
  517.  
  518. // 回傳結果
  519. return has(offline_player.getName(), world_name, required_balance);
  520. }
  521.  
  522. @Override
  523. // 判斷某玩家是否有金錢帳戶
  524. public boolean hasAccount(String player_name) {
  525.  
  526. // 回傳判斷結果
  527. return PlayerVaultDataManager.hasPlayerEconomyValue(player_name, null);
  528. }
  529.  
  530. @Override
  531. // 判斷該玩家是否有世界金錢帳戶
  532. public boolean hasAccount(OfflinePlayer offline_player) {
  533.  
  534. // 回傳判斷結果
  535. return hasAccount(offline_player.getName());
  536. }
  537.  
  538. @Override
  539. // 判斷該玩家是否有世界金錢帳戶
  540. public boolean hasAccount(String player_name, String world_name) {
  541.  
  542. // 回傳判斷結果
  543. return PlayerVaultDataManager.hasPlayerEconomyValue(player_name, world_name);
  544. }
  545.  
  546. @Override
  547. // 判斷該玩家是否有世界金錢帳戶
  548. public boolean hasAccount(OfflinePlayer offline_player, String world_name) {
  549.  
  550. // 回傳判斷結果
  551. return hasAccount(offline_player.getName(), world_name);
  552. }
  553. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement