A one size fits all plugin for vanilla servers running Minecraft Beta 1.7.3
at master 92 lines 3.8 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.dao.UserNameDao; 7import dev.keii.goldenage.models.Login; 8import dev.keii.goldenage.models.User; 9import dev.keii.goldenage.models.UserName; 10import dev.keii.goldenage.utils.DateUtility; 11import dev.keii.goldenage.utils.PlayerUtility; 12import dev.keii.goldenage.utils.StringSubstitutor; 13import org.bukkit.command.Command; 14import org.bukkit.command.CommandExecutor; 15import org.bukkit.command.CommandSender; 16 17import java.time.ZoneOffset; 18import java.time.format.DateTimeFormatter; 19import java.util.HashMap; 20import java.util.List; 21import java.util.Map; 22 23@SuppressWarnings("unused") 24public class HistoryCommand implements CommandExecutor { 25 private GoldenAge plugin; 26 27 public HistoryCommand(GoldenAge plugin) { 28 this.plugin = plugin; 29 } 30 31 @Override 32 public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { 33 LoginDao loginDao = new LoginDao(this.plugin.getDatabaseUtility()); 34 UserNameDao userNameDao = new UserNameDao(this.plugin.getDatabaseUtility()); 35 UserDao userDao = new UserDao(this.plugin.getDatabaseUtility()); 36 37 if (args.length == 0) { 38 List<Login> logins = loginDao.getLogins(10); 39 sender.sendMessage(plugin.getConfig().getCommands().getHistory().getGlobalTitle()); 40 for (Login login : logins) { 41 User user = userDao.getUserById(login.getUserId()); 42 UserName userName = userNameDao.getUserNameByUser(user); 43 Map<String, Object> params = new HashMap<>(); 44 assert userName != null; 45 params.put("player", userName.getName()); 46 47 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(plugin.getConfig().getFormatters().getDate()); 48 params.put("date", formatter.format(login.getCreatedAt())); 49 50 params.put("duration", DateUtility.getHumanReadableTimeSpan(login.getCreatedAt().toEpochSecond(ZoneOffset.UTC), false)); 51 52 StringSubstitutor substitutor = new StringSubstitutor(params); 53 sender.sendMessage(substitutor.replace(plugin.getConfig().getCommands().getHistory().getGlobalRow())); 54 } 55 return true; 56 } 57 58 User user = userDao.getUserByUserName(args[0]); 59 if (user == null) { 60 sender.sendMessage(plugin.getConfig().getCommands().getHistory().getNoUser()); 61 return false; 62 } 63 64 List<Login> logins = loginDao.getLoginsByUser(user, 10); 65 66 UserName userName = userNameDao.getUserNameByUser(user); 67 Map<String, Object> params = new HashMap<>(); 68 assert userName != null; 69 params.put("player", userName.getName()); 70 71 StringSubstitutor substitutor = new StringSubstitutor(params); 72 sender.sendMessage(substitutor.replace(plugin.getConfig().getCommands().getHistory().getPlayerTitle())); 73 74 for (Login login : logins) { 75 userName = userNameDao.getUserNameByUser(user); 76 params = new HashMap<>(); 77 assert userName != null; 78 params.put("player", userName.getName()); 79 80 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(plugin.getConfig().getFormatters().getDate()); 81 params.put("date", formatter.format(login.getCreatedAt())); 82 83 params.put("duration", DateUtility.getHumanReadableTimeSpan(login.getCreatedAt().toEpochSecond(ZoneOffset.UTC), false)); 84 85 substitutor = new StringSubstitutor(params); 86 sender.sendMessage(substitutor.replace(plugin.getConfig().getCommands().getHistory().getPlayerRow())); 87 } 88 89 return true; 90 } 91 92}