Detfor

Untitled

Dec 6th, 2021
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.07 KB | None | 0 0
  1. package vegobusiness.main;
  2.  
  3. import java.util.List;
  4.  
  5. import org.bukkit.ChatColor;
  6. import org.bukkit.command.Command;
  7. import org.bukkit.command.CommandExecutor;
  8. import org.bukkit.command.CommandSender;
  9. import org.bukkit.configuration.file.FileConfiguration;
  10. import org.bukkit.entity.Player;
  11.  
  12. import com.earth2me.essentials.api.Economy;
  13. import com.earth2me.essentials.api.NoLoanPermittedException;
  14. import com.earth2me.essentials.api.UserDoesNotExistException;
  15.  
  16. public class Commands implements CommandExecutor {
  17.  
  18. private static Business plugin;
  19.  
  20. public Commands(Business plugin) {
  21. Commands.plugin = plugin;
  22. }
  23.  
  24. private Player p;
  25.  
  26. @Override
  27. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  28.  
  29. if(sender instanceof Player) this.p = (Player) sender;
  30. FileConfiguration cfg = plugin.getConfig();
  31.  
  32. if(!(sender instanceof Player) && args.length == 0);
  33. if(args.length == 0) {
  34. msgSender(p, "help");
  35. return true;
  36. }
  37.  
  38. switch(args[0]) {
  39. case "list":
  40. if(!(sender instanceof Player)) {
  41. sender.sendMessage("Эта команда только для Игроков!");
  42. return true;
  43. }
  44.  
  45. if(args.length >= 2) {
  46. String no_args_list = cfg.getString("messages.no-args-list").replace("&", "\u00a7");
  47.  
  48. int busAmount = getPlayerBus(p);
  49. if(busAmount == 0) {
  50. p.sendMessage(no_args_list);
  51. return true;
  52. }
  53.  
  54. listSender(p, busAmount);
  55. return true;
  56. }
  57.  
  58. List<String> list = cfg.getStringList("messages.list");
  59.  
  60. for(String s : list) {
  61. s = s.replace("&", "\u00a7");
  62.  
  63. int enAmount = getEnableBusAmount();
  64.  
  65. for(int x = 1; x < enAmount+1; x++) {
  66. s = s.replace("$bus" + x + "$", cfg.getString("bus-names.bus" + x));
  67. s = s.replace("$inc" + x + "$", "" + cfg.getDouble("incomes.bus" + x + ".1"));
  68. if(x == 1) continue;
  69. s = s.replace("$price" + x + "$", "" + cfg.getDouble("bus-prices.bus" + x));
  70. }
  71. p.sendMessage(s);
  72.  
  73. }
  74. return true;
  75.  
  76. case "help":
  77. msgSender(p, "help");
  78. return true;
  79.  
  80. case "upgrade":
  81. if(!(sender instanceof Player)) {
  82. sender.sendMessage("Эта команда только для Игроков!");
  83. return true;
  84. }
  85.  
  86. if(args.length < 2) {
  87. String no_args = cfg.getString("messages.no-args").replace("&", "\u00a7");
  88. p.sendMessage(no_args);
  89. return true;
  90. }
  91.  
  92. int enAmount2 = getEnableBusAmount();
  93. String invalid_up = cfg.getString("messages.invalid-up").replace("&", "\u00a7");
  94.  
  95. for(int x = 1; x != enAmount2+1; x++) {
  96.  
  97. if(args[1].length() > 2) {
  98. p.sendMessage(invalid_up);
  99. return true;
  100. }
  101.  
  102. if(Integer.valueOf(args[1]) == x) {
  103. buyUpgrade(p, "bus" + x);
  104. return true;
  105. }
  106. }
  107.  
  108. p.sendMessage(invalid_up);
  109. return true;
  110.  
  111. case "buy":
  112. if(!(sender instanceof Player)) {
  113. sender.sendMessage("Эта команда только для Игроков!");
  114. return true;
  115. }
  116.  
  117. if(args.length < 2) {
  118. String no_args = cfg.getString("messages.no-args").replace("&", "\u00a7");
  119. p.sendMessage(no_args);
  120. return true;
  121. }
  122.  
  123. int enAmount3 = getEnableBusAmount();
  124. String invalid_up2 = cfg.getString("messages.invalid-up").replace("&", "\u00a7");
  125.  
  126.  
  127. for(int x = 1; x != enAmount3+1; x++) {
  128.  
  129. if(args[1].length() > 2) {
  130. p.sendMessage(invalid_up2);
  131. return true;
  132. }
  133.  
  134. if(Integer.valueOf(args[1]) == x) {
  135. buyBus(p, x);
  136. return true;
  137. }
  138. }
  139.  
  140. String invalid_bus = cfg.getString("messages.invalid-bus").replace("&", "\u00a7");
  141. p.sendMessage(invalid_bus);
  142. return true;
  143.  
  144. case "info":
  145. if(!(sender instanceof Player)) {
  146. sender.sendMessage("Эта команда только для Игроков!");
  147. return true;
  148. }
  149.  
  150. if(args.length < 2) {
  151. String no_args = cfg.getString("messages.no-args").replace("&", "\u00a7");
  152. p.sendMessage(no_args);
  153. return true;
  154. }
  155.  
  156. int enAmount4 = getEnableBusAmount();
  157. String invalid_up3 = cfg.getString("messages.invalid-up").replace("&", "\u00a7");
  158.  
  159. for(int x = 1; x != enAmount4+1; x++) {
  160. if(args[1].length() > 2) {
  161. p.sendMessage(invalid_up3);
  162. return true;
  163. }
  164.  
  165. if(Integer.valueOf(args[1]) == x) {
  166. if(!cfg.contains("players." + p.getName() + ".bus" + x)) {
  167. String invalid_info = cfg.getString("messages.invalid-info").replace("&", "\u00a7");
  168. p.sendMessage(invalid_info);
  169. return true;
  170. }
  171.  
  172. infoSender(p, x);
  173. return true;
  174. }
  175. }
  176.  
  177. String invalid_info = cfg.getString("messages.invalid-bus").replace("&", "\u00a7");
  178. p.sendMessage(invalid_info);
  179. return true;
  180.  
  181. case "reload":
  182. if(sender instanceof Player) {
  183. if(!p.hasPermission("vegobus.admin")) return false;
  184. }
  185.  
  186. plugin.reloadConfig();
  187. sender.sendMessage(ChatColor.GREEN + "Конфиг успешно перезагружен!");
  188. return true;
  189.  
  190. case "reset":
  191. if(sender instanceof Player) {
  192. if(!p.hasPermission("levels.admin")) return false;
  193. }
  194.  
  195. String pname = args[1];
  196.  
  197. for(int x = 2; x < getEnableBusAmount()+1; x++) {
  198. cfg.set("players." + pname + ".bus" + x, null);
  199. }
  200.  
  201. cfg.set("players." + pname + ".bus1", 1);
  202. cfg.set("players." + pname + ".bus5", null);
  203. plugin.saveConfig();
  204. sender.sendMessage(ChatColor.GREEN + "Игрок успешно обнулен");
  205. return true;
  206.  
  207. case "add":
  208. if(sender instanceof Player) {
  209. if(!p.hasPermission("levels.admin")) return false;
  210. }
  211.  
  212. String plname = args[1];
  213. String bus = args[2];
  214. String lvl = args[3];
  215.  
  216. cfg.set("players." + plname + "." + bus, Integer.parseInt(lvl));
  217. plugin.saveConfig();
  218. sender.sendMessage(ChatColor.GREEN + "Игроку успешно добавлен бизнес");
  219. return true;
  220.  
  221.  
  222. case "del":
  223. if(sender instanceof Player) {
  224. if(!p.hasPermission("levels.admin")) return false;
  225. }
  226.  
  227. String playname = args[1];
  228. String busToDel = args[2];
  229.  
  230. cfg.set("players." + playname + "." + busToDel, null);
  231. plugin.saveConfig();
  232. sender.sendMessage(ChatColor.GREEN + "У игрока успешно удален бизнес");
  233.  
  234.  
  235. case "getincome":
  236. String busg = args[1]; // Business number to collect income
  237. int mintime = cfg.getInt("settings.min-time-collect"); // Minimum time in mins to collect money
  238.  
  239. if(!cfg.contains("players." + p.getName() + ".bus" + busg)) {
  240. p.sendMessage(cfg.getString("messages.no-bus"));
  241. return true;
  242. }
  243.  
  244. if(!cfg.contains("players." + p.getName() + ".lasttime" + busg)) {
  245.  
  246. cfg.set("players." + p.getName() + ".lasttime" + busg, System.currentTimeMillis() - (mintime * 60000));
  247. plugin.saveConfig();
  248.  
  249. giveIncome(p, Integer.parseInt(busg));
  250. return true;
  251. }
  252.  
  253. giveIncome(p, Integer.parseInt(busg));
  254.  
  255. // long curtime = System.currentTimeMillis();
  256. // long lasttime = cfg.getLong("players." + p.getName() + ".lasttime" + busg);
  257. //
  258. // if(curtime >= lasttime + (mintime * 60000)) {
  259. // int busLvl = cfg.getInt("players." + p.getName() + ".bus"+busg);
  260. // double busInc = cfg.getDouble("incomes.bus"+busg + "."+busLvl) * 60;
  261. // giveMoney(p.getName(), busInc);
  262. //
  263. // cfg.set("players." + p.getName() + ".lasttime" + busg, System.currentTimeMillis());
  264. // plugin.saveConfig();
  265. //
  266. // p.sendMessage(ChatColor.GREEN + "Вы забрали доход " + (int) busInc + "$ с " + cfg.getString("bus-names.bus" + busg));
  267. // } else p.sendMessage(ChatColor.RED + "Ваш бизнес еще не успел заполнить кассу! Осталось: " + (mintime - ((curtime - lasttime) / 60000)) + " минут");
  268.  
  269. return true;
  270.  
  271.  
  272. case "collectall":
  273. int mtime = cfg.getInt("settings.min-time-collect"); // Minimum time in mins to collect money
  274. double bank = 0.0;
  275. for(int x = 1; x < getEnableBusAmount()+1; x++) {
  276. if(cfg.contains("players." + p.getName() + ".bus" + x)) {
  277. if(!cfg.contains("players." + p.getName() + ".lasttime" + x)) {
  278. cfg.set("players." + p.getName() + ".lasttime" + x, System.currentTimeMillis() - (mtime * 60000));
  279. plugin.saveConfig();
  280. }
  281. bank += getIncome(p, x);
  282.  
  283. }
  284. }
  285. if(bank == 0.0) {
  286. p.sendMessage(ChatColor.RED + "Еще ни один из ваших бизнесов не успел заработать денег!");
  287. return true;
  288. }
  289.  
  290. giveMoney(p.getName(), bank / 2);
  291. p.sendMessage(ChatColor.GREEN + "Вы собрали доход со всех своих бизнесов с комиссией 50%! Зачислено: " + bank / 2);
  292. return true;
  293. }
  294.  
  295. return false;
  296. }
  297.  
  298. private double getIncome(Player p, int busNum) {
  299. FileConfiguration cfg = plugin.getConfig();
  300. int mintime = cfg.getInt("settings.min-time-collect"); // Minimum time in mins to collect money
  301. double busInc = 0.0;
  302.  
  303. long curtime = System.currentTimeMillis();
  304. long lasttime = cfg.getLong("players." + p.getName() + ".lasttime" + busNum);
  305. int passed = (int) ((curtime - lasttime) / 60000);
  306.  
  307. if(passed >= mintime) {
  308. int busLvl = cfg.getInt("players." + p.getName() + ".bus"+busNum);
  309. busInc = cfg.getDouble("incomes.bus"+busNum + "."+busLvl) * getAllowedCollectTime(p, passed);
  310. }
  311.  
  312. if(busInc > 0.0) {
  313. cfg.set("players." + p.getName() + ".lasttime" + busNum, System.currentTimeMillis());
  314. plugin.saveConfig();
  315. }
  316.  
  317. return busInc;
  318. }
  319.  
  320. private void giveIncome(Player p, int busNum) {
  321. FileConfiguration cfg = plugin.getConfig();
  322. int mintime = cfg.getInt("settings.min-time-collect"); // Minimum time in mins to collect money
  323.  
  324. long curtime = System.currentTimeMillis();
  325. long lasttime = cfg.getLong("players." + p.getName() + ".lasttime" + busNum);
  326. int passed = (int) ((curtime - lasttime) / 60000);
  327.  
  328. if(passed >= mintime) {
  329. int busLvl = cfg.getInt("players." + p.getName() + ".bus"+busNum);
  330. double busInc = cfg.getDouble("incomes.bus"+busNum + "."+busLvl) * getAllowedCollectTime(p, passed);
  331. giveMoney(p.getName(), busInc);
  332.  
  333. cfg.set("players." + p.getName() + ".lasttime" + busNum, System.currentTimeMillis());
  334. plugin.saveConfig();
  335.  
  336. p.sendMessage(ChatColor.GREEN + "Вы забрали доход " + (int) busInc + "$ с " + cfg.getString("bus-names.bus" + busNum));
  337. } else p.sendMessage(ChatColor.RED + "Ваш бизнес еще не успел заполнить кассу! Осталось: " + (mintime - passed) + " минут");
  338. }
  339.  
  340. private int getAllowedCollectTime(Player p, int passed) {
  341. FileConfiguration cfg = plugin.getConfig();
  342.  
  343. if(p.hasPermission("vegobus.maxtime2")) {
  344. if(passed < cfg.getInt("settings.max-time.maxtime2")) return passed;
  345. return cfg.getInt("settings.max-time.maxtime2");
  346. }
  347. if(p.hasPermission("vegobus.maxtime1")) {
  348. if(passed < cfg.getInt("settings.max-time.maxtime1")) return passed;
  349. return cfg.getInt("settings.max-time.maxtime1");
  350. }
  351. if(passed < cfg.getInt("default")) return passed;
  352. return cfg.getInt("default");
  353. }
  354.  
  355. private void listSender(Player p, int BusAmount) {
  356. String pname = p.getName();
  357.  
  358. double playerInc = getIncome(pname);
  359.  
  360. List<String> msg = plugin.getConfig().getStringList("messages.player-list");
  361. int enAmount5 = getEnableBusAmount();
  362.  
  363. for(String s : msg) {
  364. s = s.replace("&", "\u00a7");
  365. s = s.replace("$name$", pname);
  366. s = s.replace("$buses$", "" + BusAmount);
  367. s = s.replace("$income$", "" + playerInc);
  368.  
  369. for(int x = 1; x != enAmount5+1; x++) {
  370. String busName = plugin.getConfig().getString("bus-names.bus" + x);
  371.  
  372. if(plugin.getConfig().contains("players." + pname + ".bus" + x)) {
  373. int busLvl = plugin.getConfig().getInt("players." + pname + ".bus" + x);
  374. double inc = plugin.getConfig().getDouble("incomes." + "bus"+x + "."+busLvl);
  375.  
  376. s = s.replace("$bus"+x+"$", ChatColor.GREEN + busName);
  377. s = s.replace("$level"+x+"$", "" + busLvl);
  378. s = s.replace("$inc"+x+"$", "" + inc);
  379.  
  380. } else {
  381.  
  382. s = s.replace("$bus"+x+"$", ChatColor.RED + busName);
  383. s = s.replace("$level"+x+"$", "--");
  384. s = s.replace("$inc"+x+"$", "--");
  385. }
  386. }
  387.  
  388. p.sendMessage(s);
  389. }
  390. }
  391.  
  392. private void msgSender(Player p, String param) {
  393. String par = param;
  394. List<String> msg = plugin.getConfig().getStringList("messages." + par);
  395. for(String s : msg) {
  396. s = s.replace("&", "\u00a7");
  397. p.sendMessage(s);
  398. }
  399. }
  400.  
  401. private void infoSender(Player p, int busNum) {
  402. FileConfiguration cfg = plugin.getConfig();
  403. String bname = "ERROR";
  404.  
  405. bname = cfg.getString("bus-names.bus" + busNum);
  406.  
  407. String pname = p.getName();
  408. int busLvl = cfg.getInt("players." + pname + ".bus" + busNum);
  409. String upPrice = null;
  410. if(busLvl != 10) upPrice = cfg.getString("up-prices.bus" + busNum + "." + busLvl);
  411. double inc = cfg.getDouble("incomes.bus" + busNum + "." + busLvl);
  412.  
  413. List<String> msg = cfg.getStringList("messages.info");
  414.  
  415. for(String s : msg) {
  416. s = s.replace("&", "\u00a7").replace("$player$", pname).replace("$income$", "" + inc).replace("$name$", bname).replace("$level$", "" + busLvl);
  417.  
  418. if(upPrice != null) {
  419. s = s.replace("$upPrice$", upPrice);
  420. } else s = s.replace("$upPrice$", "--");
  421.  
  422. p.sendMessage(s);
  423. }
  424. }
  425.  
  426. public static int getBusLevel(Player p, String busName) {
  427. return plugin.getConfig().getInt("players." + p.getName() + "." + busName);
  428. }
  429.  
  430. public void buyUpgrade(Player p, String busName) {
  431. FileConfiguration cfg = plugin.getConfig();
  432.  
  433. String bname = busName;
  434. String pname = p.getName();
  435. String succes_up = cfg.getString("messages.succes-up").replace("&", "\u00a7");
  436. String on_max_lvl = cfg.getString("messages.on-max-lvl").replace("&", "\u00a7");
  437. String no_bus = cfg.getString("messages.no-bus").replace("&", "\u00a7").replace("$name$", pname);
  438. on_max_lvl = on_max_lvl.replace("$name$", cfg.getString("bus-names." + bname));
  439. no_bus = no_bus.replace("$bus$", cfg.getString("bus-names." + bname));
  440.  
  441. if(!cfg.contains("players." + pname + "." + bname)) {
  442. p.sendMessage(no_bus);
  443. return;
  444. }
  445.  
  446. int busLvl = getBusLevel(p, bname);
  447.  
  448. if(busLvl != 10) {
  449. int Cost = cfg.getInt("up-prices." + bname + "." + busLvl);
  450. if(!takeMoney(p, (double) Cost, "up", bname)) return;
  451. int newLvl = busLvl + 1;
  452. cfg.set("players." + pname + "." + bname, newLvl);
  453. succes_up = succes_up.replace("$name$", cfg.getString("bus-names." + bname));
  454. succes_up = succes_up.replace("$level$", String.valueOf(newLvl));
  455. p.sendMessage(succes_up);
  456.  
  457. } else p.sendMessage(on_max_lvl);
  458. }
  459.  
  460. public void buyBus(Player p, int busNum) {
  461. FileConfiguration cfg = plugin.getConfig();
  462.  
  463. if(cfg.getBoolean("bus-perms.bus" + busNum)) {
  464. if(!p.hasPermission("vegobus." + busNum)) {
  465. String no_perm = cfg.getString("messages.no-perm").replace("&", "\u00a7");
  466. p.sendMessage(no_perm);
  467. return;
  468. }
  469. }
  470.  
  471. String busName = "bus" + busNum;
  472. String pname = p.getName();
  473.  
  474. String already_bought = cfg.getString("messages.already-bought").replace("&", "\u00a7");
  475. String succes_buy = cfg.getString("messages.succes-buy").replace("&", "\u00a7");
  476. already_bought = already_bought.replace("$name$", cfg.getString("bus-names." + busName));
  477. succes_buy = succes_buy.replace("$name$", cfg.getString("bus-names." + busName));
  478.  
  479. if(!cfg.contains("players." + pname + "." + busName)) {
  480. int Cost = cfg.getInt("bus-prices." + busName);
  481.  
  482. if(!takeMoney(p, Cost, "buy", busName)) return;
  483. cfg.set("players." + pname + "." + busName, 1);
  484. cfg.set("players." + p.getName() + ".lasttime" + busNum, System.currentTimeMillis() - (cfg.getInt("min-time-collect") * 60000));
  485. p.sendMessage(succes_buy);
  486.  
  487. } else p.sendMessage(already_bought);
  488. }
  489.  
  490. public static int getPlayerBus(Player p) {
  491. String pname = p.getName();
  492. int busAmount = 0;
  493. int enAmount = getEnableBusAmount();
  494.  
  495. for(int x = 1; x < enAmount+1; x++) {
  496.  
  497. if(plugin.getConfig().contains("players." + pname + ".bus" + x)) {
  498. busAmount++;
  499. }
  500. }
  501.  
  502. return busAmount;
  503. }
  504.  
  505. @SuppressWarnings("deprecation")
  506. public static boolean takeMoney(Player p, double amount, String param, String busName) {
  507. String no_money_up = plugin.getConfig().getString("messages.no-money-up").replace("&", "\u00a7");
  508. String no_money_buy = plugin.getConfig().getString("messages.no-money-buy").replace("&", "\u00a7");
  509.  
  510. String name = p.getName();
  511.  
  512. try {
  513. double money = Economy.getMoney(name);
  514. if(money < amount) {
  515. String no_up = no_money_up + (int) (amount - money);
  516. no_up = no_up.replace("$name$", plugin.getConfig().getString("bus-names." + busName));
  517. String no_buy = no_money_buy + (int) (amount - money);
  518. no_buy = no_buy.replace("$name$", plugin.getConfig().getString("bus-names." + busName));
  519. if(param == "up") p.sendMessage(no_up);
  520. if(param == "buy") p.sendMessage(no_buy);
  521. return false;
  522. }
  523. Economy.setMoney(name, money - amount);
  524. return true;
  525. } catch (NoLoanPermittedException | UserDoesNotExistException e) {
  526. e.printStackTrace();
  527. }
  528. return false;
  529. }
  530.  
  531. @SuppressWarnings("deprecation")
  532. public static void giveMoney(String name, double amount) {
  533.  
  534. try {
  535. double money = Economy.getMoney(name);
  536. Economy.setMoney(name, money + amount);
  537.  
  538. } catch (NoLoanPermittedException | UserDoesNotExistException e) {
  539. e.printStackTrace();
  540. }
  541. }
  542.  
  543. public double getIncome(String name) {
  544. double inc = 0;
  545.  
  546. int enAmount = getEnableBusAmount();
  547.  
  548. for(int x = 1; x != enAmount+1; x++) {
  549. int busLvl = plugin.getConfig().getInt("players." + name + ".bus"+x);
  550. double busInc = plugin.getConfig().getDouble("incomes.bus"+x + "."+busLvl);
  551.  
  552. inc += busInc;
  553. }
  554. return inc;
  555.  
  556. }
  557.  
  558. public static int getEnableBusAmount() {
  559. int enAmount = 0;
  560.  
  561. for(int x = 1; x < 100; x++) {
  562. String busName = plugin.getConfig().getString("bus-names.bus" + x);
  563. if(busName == null) break;
  564. enAmount++;
  565. }
  566. return enAmount;
  567. }
  568. }
Advertisement
Add Comment
Please, Sign In to add comment