A one size fits all plugin for vanilla servers running Minecraft Beta 1.7.3
at master 76 lines 2.7 kB view raw
1package dev.keii.goldenage.commands; 2 3import dev.keii.goldenage.GoldenAge; 4import dev.keii.goldenage.dao.LoginDao; 5import dev.keii.goldenage.dao.UserDao; 6import dev.keii.goldenage.models.Login; 7import dev.keii.goldenage.models.User; 8import dev.keii.goldenage.utils.DateUtility; 9import dev.keii.goldenage.utils.StringSubstitutor; 10import org.bukkit.Bukkit; 11import org.bukkit.command.Command; 12import org.bukkit.command.CommandExecutor; 13import org.bukkit.command.CommandSender; 14import org.bukkit.entity.Player; 15 16import java.time.ZoneOffset; 17import java.util.Arrays; 18import java.util.HashMap; 19import java.util.Map; 20 21@SuppressWarnings("unused") 22public class SeenCommand implements CommandExecutor { 23 private GoldenAge plugin; 24 25 public SeenCommand(GoldenAge plugin) { 26 this.plugin = plugin; 27 } 28 29 @Override 30 public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { 31 if (args.length == 0) { 32 sender.sendMessage(plugin.getConfig().getErrors().getInsufficientArguments()); 33 return false; 34 } 35 36 UserDao userDao = new UserDao(plugin.getDatabaseUtility()); 37 User user = userDao.getUserByUserName(args[0]); 38 39 if (user == null) { 40 sender.sendMessage(plugin.getConfig().getCommands().getSeen().getNoUser()); 41 return true; 42 } 43 44 LoginDao loginDao = new LoginDao(plugin.getDatabaseUtility()); 45 Login login = loginDao.getLatestLoginByUser(user); 46 47 if (login == null) { 48 sender.sendMessage(plugin.getConfig().getCommands().getSeen().getNoUser()); 49 return true; 50 } 51 52 Map<String, Object> params = new HashMap<>(); 53 params.put("player", args[0]); 54 55 if (Arrays.stream(Bukkit.getOnlinePlayers()).anyMatch((Player player) -> player.getDisplayName().equalsIgnoreCase(args[0]))) { 56 StringSubstitutor substitutor = new StringSubstitutor(params); 57 sender.sendMessage(substitutor.replace(plugin.getConfig().getCommands().getSeen().getSuccessOnline())); 58 return true; 59 } 60 61 String ago = DateUtility.getHumanReadableTimeSpan(login.getCreatedAt().toEpochSecond(ZoneOffset.UTC), false); 62 63 if (ago.equals("now")) { 64 StringSubstitutor substitutor = new StringSubstitutor(params); 65 sender.sendMessage(substitutor.replace(plugin.getConfig().getCommands().getSeen().getSuccessNow())); 66 } else { 67 params.put("duration", ago); 68 69 StringSubstitutor substitutor = new StringSubstitutor(params); 70 sender.sendMessage(substitutor.replace(plugin.getConfig().getCommands().getSeen().getSuccessDuration())); 71 } 72 73 return true; 74 } 75 76}