Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.assist.uniquelastseen;
- import java.io.File;
- import java.io.IOException;
- import java.util.concurrent.TimeUnit;
- import org.bukkit.ChatColor;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerKickEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin implements Listener {
- private File playerFile;
- private YamlConfiguration playerConfiguration;
- private String joinMessage;
- private String newJoinMessage;
- public void onEnable() {
- saveDefaultConfig();
- FileConfiguration config = getConfig();
- joinMessage = ChatColor.translateAlternateColorCodes('&', config.getString("joinMessage", "&eWelcome back, &b{player}&e. Last seen {timeday} day[s], {timehour} hour[s], {timeminute} minute[s] and {timesecond} second[s] ago."));
- newJoinMessage = ChatColor.translateAlternateColorCodes('&', config.getString("newJoinMessage", "&eWelcome, &b{player} &eto our server! We have had &b{unique} &eunique visitors."));
- playerFile = new File(getDataFolder(), "players.yml");
- if (!playerFile.exists()) {
- try {
- playerFile.createNewFile();
- getLogger().info("Created player data file.");
- } catch (IOException e) {
- getLogger().severe("Failed to create player data file. Disabling plugin...");
- getServer().getPluginManager().disablePlugin(this);
- return;
- }
- }
- playerConfiguration = YamlConfiguration.loadConfiguration(playerFile);
- getServer().getPluginManager().registerEvents(this, this);
- }
- @SuppressWarnings("deprecation")
- public void onDisable() {
- for (Player player : getServer().getOnlinePlayers()) {
- doQuit(player, false);
- }
- savePlayerFile();
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event) {
- Player player = event.getPlayer();
- if (!player.hasPlayedBefore()) {
- sendNewPlayer(event, player);
- } else {
- String id = player.getUniqueId().toString();
- ConfigurationSection section;
- if (!playerConfiguration.contains(id)) {
- section = playerConfiguration.createSection(id);
- section.set("name", player.getName());
- savePlayerFile();
- sendNewPlayer(event, player);
- } else {
- section = playerConfiguration.getConfigurationSection(player.getUniqueId().toString());
- long lastQuit = section.getLong("lastQuit");
- long seconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) - TimeUnit.MILLISECONDS.toSeconds(lastQuit);
- int day = (int) TimeUnit.SECONDS.toDays(seconds);
- long hour = TimeUnit.SECONDS.toHours(seconds) - (day * 24);
- long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60);
- long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60);
- String message = joinMessage.replace("{player}", player.getName()).replace("{timeday}", String.valueOf(day)).replace("day[s]", "day" + (day == 0 || day > 1 ? "s" : "")).replace("{timehour}", String.valueOf(hour)).replace("hour[s]", "hour" + (hour == 0 || hour > 1 ? "s" : "")).replace("{timeminute}", String.valueOf(minute)).replace("minute[s]", "minute" + (minute == 0 || minute > 1 ? "s" : "")).replace("{timesecond}", String.valueOf(second)).replace("second[s]", "second" + (second == 0 || second > 1 ? "s" : ""));
- event.setJoinMessage(message);
- }
- }
- }
- @SuppressWarnings("deprecation")
- private void sendNewPlayer(PlayerJoinEvent event, Player player) {
- int uniquePlayers = getServer().getOfflinePlayers().length + getServer().getOnlinePlayers().length;
- event.setJoinMessage(newJoinMessage.replace("{player}", player.getName()).replace("{unique}", Integer.toString(uniquePlayers)));
- }
- @EventHandler
- public void onQuit(PlayerQuitEvent event) {
- doQuit(event.getPlayer(), true);
- }
- @EventHandler
- public void onKick(PlayerKickEvent event) {
- doQuit(event.getPlayer(), true);
- }
- private void doQuit(Player player, boolean save) {
- String id = player.getUniqueId().toString();
- ConfigurationSection section;
- if (!playerConfiguration.contains(id)) {
- section = playerConfiguration.createSection(id);
- section.set("name", player.getName());
- } else {
- section = playerConfiguration.getConfigurationSection(id);
- }
- section.set("lastQuit", System.currentTimeMillis());
- if (save) {
- savePlayerFile();
- }
- }
- private void savePlayerFile() {
- try {
- playerConfiguration.save(playerFile);
- } catch (IOException e) {
- getLogger().warning("Failed to save player data file:");
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement