NullValkyrie

Minecraft 1.19 multipurpose plugin for spigot servers with a lot of features where most modern servers have.
git clone https://codeberg.org/night0721/NullValkyrie
Log | Files | Refs | README | LICENSE

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 }