MinerCommand.java (2986B)
1 package me.night.nullvalkyrie.commands; 2 3 import me.night.nullvalkyrie.database.MinerDataManager; 4 import me.night.nullvalkyrie.entities.miners.CryptoMiner; 5 import me.night.nullvalkyrie.entities.miners.MinerType; 6 import me.night.nullvalkyrie.ui.inventory.Miner; 7 import org.bukkit.ChatColor; 8 import org.bukkit.command.CommandSender; 9 import org.bukkit.entity.Player; 10 import org.bukkit.util.StringUtil; 11 12 import java.util.*; 13 14 15 public class MinerCommand extends Command { 16 17 public MinerCommand() { 18 super("miner", new String[]{"miners"}, "Miners", ""); 19 } 20 21 @Override 22 public void onCommand(CommandSender sender, String[] args) { 23 if (sender instanceof Player player) { 24 if (args.length == 0) { 25 player.sendMessage(ChatColor.RED + "Invalid command"); 26 return; 27 } 28 if (args[0].equalsIgnoreCase("list")) { 29 new Miner().UI(player); 30 } else if (args[0].equalsIgnoreCase("new")) { 31 String name = args[2]; 32 MinerType type = MinerType.getByName(args[1]); 33 int level = 20; 34 double rate = 0.4; 35 long time = System.currentTimeMillis(); 36 assert type != null; 37 MinerDataManager.setMiner(name, type, level, rate, true, time, player.getLocation()); 38 CryptoMiner miner = new CryptoMiner(name, type, level, rate, time, player.getLocation()); 39 miner.spawn(player); 40 } else if (args[0].equalsIgnoreCase("claim")) { 41 MinerDataManager.setLastClaim(args[1]); 42 player.sendMessage(ChatColor.GREEN + "Claimed"); 43 int seconds = (int) (new Date().getTime() - MinerDataManager.getLastClaim(1)) / 1000; 44 CryptoMiner.generate(50, seconds); 45 } 46 } 47 } 48 49 @Override 50 public List<String> onTabComplete(CommandSender sender, String[] args) { 51 if (args.length == 1) { 52 List<String> cc = List.of("new", "claim", "list"); 53 return StringUtil.copyPartialMatches(args[0], cc, new ArrayList<>()); 54 } else if (args.length == 2) { 55 if (args[0].equalsIgnoreCase("new")) { 56 List<String> choices = new ArrayList<>(); 57 for (MinerType type : MinerType.values()) { 58 choices.add(type.getName()); 59 } 60 return StringUtil.copyPartialMatches(args[1], choices, new ArrayList<>()); 61 } else if (args[0].equalsIgnoreCase("claim")) { 62 List<String> choices = new ArrayList<>(); 63 for (CryptoMiner miner : MinerDataManager.getMiners().values()) { 64 choices.add(miner.getName()); 65 } 66 return StringUtil.copyPartialMatches(args[1], choices, new ArrayList<>()); 67 } 68 } 69 return new ArrayList<>(); 70 } 71 }