Detfor

Untitled

Dec 8th, 2021
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.68 KB | None | 0 0
  1. package net.vegogame.businessv;
  2.  
  3. import net.milkbowl.vault.economy.Economy;
  4. import org.bukkit.configuration.file.FileConfiguration;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.event.EventHandler;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.event.player.PlayerJoinEvent;
  9.  
  10. public class BusHandler implements Listener {
  11.  
  12. private static BusinessV plugin = BusinessV.getPlugin(BusinessV.class);
  13. private static FileConfiguration cfg = plugin.getConfig();
  14.  
  15. //Получить общий доход/мин
  16. public static double getTotalIncome(Player p) {
  17. double inc = 0.0;
  18.  
  19. for(int num = 1; num < getEnableBusAmount() + 1; num++) {
  20. if(Storage.has(p, num)) inc += Storage.getBusIncome(p, num);
  21. }
  22.  
  23. return inc;
  24. }
  25.  
  26. public static long getPassedTime(Player p, int num) {
  27. return (System.currentTimeMillis() - Storage.getLastTime(p, num)) / 60000;
  28. }
  29.  
  30. //Получить кассу бизнеса, если прошло больше минимального порога времени
  31. public static double getIncome(Player p, int num) {
  32. int mintime = cfg.getInt("settings.min-time-collect"); // Минимальное время, спустя которое можно собрать кассу
  33. double busInc = 0.0;
  34.  
  35. long curtime = System.currentTimeMillis();
  36. long lasttime = Storage.getLastTime(p, num);
  37. int passed = (int) (curtime - lasttime) / 60000;
  38.  
  39. if(passed >= mintime) {
  40. busInc = Storage.getBusIncome(p, num) * getAllowedTime(p, passed); //Умножить доход/мин на кол-во прошедших минут, не заходящее за рамки max-time
  41. }
  42. return busInc;
  43. }
  44.  
  45. //Забрать кассу с определённого бизнеса
  46. public static void giveIncome(Player p, int num) {
  47. double inc = getIncome(p, num);
  48.  
  49. if(inc > 0.0) {
  50. giveMoney(p, inc);
  51. Storage.setLastTime(p, num);
  52. String collect_succes = cfg.getString("messages.collect-succes").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num)).replace("$inc$", "" + inc);
  53.  
  54. p.sendMessage(collect_succes);
  55. } else {
  56. int mintime = cfg.getInt("settings.min-time-collect");
  57. long passed = getPassedTime(p, num);
  58. String collect_fail = cfg.getString("messages.collect-fail").replace("&", "\u00a7").replace("$time$", "" + (mintime - passed));
  59.  
  60. p.sendMessage(collect_fail);
  61. }
  62. }
  63.  
  64. //Получить позволительное кол-во минут, чтобы умножить на него доход/мин
  65. private static int getAllowedTime(Player p, int passed) {
  66. for(int i = 4; i > 0; i--) {
  67. if(p.hasPermission("busv.time" + i)) {
  68. int max = cfg.getInt("settings.max-time.time" + i); //Макс. время накопления кассы
  69.  
  70. if(passed < max) return passed;
  71. return max;
  72. }
  73. }
  74. int max = cfg.getInt("settings.max-time.default");
  75.  
  76. if(passed < max) return passed;
  77. return max;
  78. }
  79.  
  80. //Проветси операцию улучшения бизнеса
  81. public static void buyUpgrade(Player p, int num) {
  82. String on_max_lvl = cfg.getString("messages.on-max-lvl").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num));
  83. String no_bus = cfg.getString("messages.no-bus").replace("&", "\u00a7");
  84.  
  85. if(!Storage.has(p, num)) {
  86. p.sendMessage(no_bus);
  87. return;
  88. }
  89.  
  90. int busLvl = Storage.getBusLevel(p, num);
  91. String succes_up = cfg.getString("messages.succes-up").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num)).replace("$level$", "" + (busLvl + 1));
  92.  
  93. if(busLvl != 10) {
  94. int price = Storage.getUpgradePrice(p, num);
  95. if(!takeMoney(p, price, "up", num)) return;
  96.  
  97. Storage.upgradeBus(p, num);
  98. p.sendMessage(succes_up);
  99.  
  100. } else p.sendMessage(on_max_lvl);
  101. }
  102.  
  103. //Провести операцию приобретения
  104. public static void buyBus(Player p, int num) {
  105. if(!p.hasPermission("busv." + num)) {
  106. String no_perm = cfg.getString("messages.no-perm").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num));
  107. p.sendMessage(no_perm);
  108. return;
  109. }
  110. String already_bought = cfg.getString("messages.already-bought").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num));
  111. String succes_buy = cfg.getString("messages.succes-buy").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num));
  112.  
  113. if(!Storage.has(p, num)) {
  114. int price = Storage.getPurchasePrice(num);
  115.  
  116. if(!takeMoney(p, price, "buy", num)) return;
  117. Storage.addBus(p, num);
  118. p.sendMessage(succes_buy);
  119. } else p.sendMessage(already_bought);
  120. }
  121.  
  122. //Получить кол-во купленных игроком бизнесов
  123. public static int getPlayerBusNum(Player p) {
  124. int busAmount = 0;
  125. int enAmount = 13;
  126.  
  127. for(int x = 1; x < enAmount+1; x++) {
  128. if(Storage.has(p, x)) busAmount++;
  129. }
  130. return busAmount;
  131. }
  132.  
  133. //Снять у игрока сумму денег, если таковая имеется
  134. public static boolean takeMoney(Player p, double amount, String param, int num) {
  135. Economy ec = BusinessV.getEconomy();
  136. String no_money_up = cfg.getString("messages.no-money-up").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num));
  137. String no_money_buy = cfg.getString("messages.no-money-buy").replace("&", "\u00a7").replace("$name$", Storage.getBusName(num));
  138.  
  139. if(!ec.has(p, amount)) {
  140. if(param == "up") p.sendMessage(no_money_up + (int) (amount - ec.getBalance(p)));
  141. if(param == "buy") p.sendMessage(no_money_buy + (int) (amount - ec.getBalance(p)));
  142. return false;
  143. }
  144.  
  145. ec.withdrawPlayer(p, amount);
  146. return true;
  147. }
  148.  
  149. //Выдать игроку сумму денег
  150. public static void giveMoney(Player p, double amount) {
  151. Economy ec = BusinessV.getEconomy();
  152. ec.depositPlayer(p, amount);
  153. }
  154.  
  155. //Получить кол-во действующих бизнесов
  156. public static int getEnableBusAmount() {
  157. return 13;
  158. }
  159.  
  160. @EventHandler
  161. public void onJoin(PlayerJoinEvent e) {
  162. Storage.addPlayer(e.getPlayer());
  163. }
  164. }
  165.  
Advertisement
Add Comment
Please, Sign In to add comment