初始化项目
This commit is contained in:
159
src/main/java/com/yaohun/onlinereward/AuOnlineReward.java
Normal file
159
src/main/java/com/yaohun/onlinereward/AuOnlineReward.java
Normal file
@@ -0,0 +1,159 @@
|
||||
package com.yaohun.onlinereward;
|
||||
|
||||
import com.yaohun.onlinereward.config.Config;
|
||||
import com.yaohun.onlinereward.data.PlayerData;
|
||||
import com.yaohun.onlinereward.gui.OnlineGui;
|
||||
import com.yaohun.onlinereward.listener.GuiClickListener;
|
||||
import com.yaohun.onlinereward.listener.PlayerListener;
|
||||
import com.yaohun.onlinereward.manage.PlayerManager;
|
||||
import com.yaohun.onlinereward.manage.TimeType;
|
||||
import com.yaohun.onlinereward.util.MessageUtil;
|
||||
import com.yaohun.onlinereward.util.TimeCheckUtil;
|
||||
import me.Demon.DemonPlugin.DemonAPI;
|
||||
import me.Demon.DemonPlugin.Util.DataRefreshUtil;
|
||||
import me.Demon.DemonPlugin.Util.Ranking;
|
||||
import me.Demon.DemonPlugin.settings.RefreshData;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class AuOnlineReward extends JavaPlugin {
|
||||
|
||||
private static AuOnlineReward instance;
|
||||
private static PlayerManager playerManager;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
saveDefaultConfig();
|
||||
Config.reloadConfig(this,false);
|
||||
MessageUtil.init(this);
|
||||
playerManager = new PlayerManager();
|
||||
getServer().getPluginManager().registerEvents(new GuiClickListener(playerManager), this);
|
||||
getServer().getPluginManager().registerEvents(new PlayerListener(playerManager), this);
|
||||
|
||||
DataRefreshUtil.createRefreshDataRecord("OnlineDaily");
|
||||
DataRefreshUtil.createRefreshDataRecord("OnlineMonth");
|
||||
|
||||
Bukkit.getScheduler().runTaskLater(this, this::startOnlineTimeTask, 20L * 5);
|
||||
Bukkit.getScheduler().runTaskLater(this, () -> {
|
||||
getPlayerManager().loadOnlineAllPlayer();
|
||||
}, 20L * 10);
|
||||
|
||||
}
|
||||
|
||||
public void startOnlineTimeTask() {
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> {
|
||||
RefreshData refreshData = DataRefreshUtil.getSetting("OnlineDaily");
|
||||
if(refreshData != null && !refreshData.isSameDayAsRecord()){
|
||||
refreshData.setRecordTime(System.currentTimeMillis());
|
||||
DataRefreshUtil.SaveRefreshDataRecord(refreshData);
|
||||
// 每日数据刷新处理
|
||||
getPlayerManager().clearAllPlayerData();
|
||||
return;
|
||||
}
|
||||
if(TimeCheckUtil.isMonthlySettleAccounts()){
|
||||
getPlayerManager().clearAllPlayerData();
|
||||
return;
|
||||
}
|
||||
HashMap<String, PlayerData> dataMap = getPlayerManager().getPlayerDataMap();
|
||||
if(!dataMap.isEmpty()) {
|
||||
for (PlayerData playerData : dataMap.values()) {
|
||||
playerData.updataOnlineData();
|
||||
}
|
||||
}
|
||||
}, 20L * 5, 1200L);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
getPlayerManager().saveAllPlayerData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if(args.length == 1 && args[0].equalsIgnoreCase("open")){
|
||||
OnlineGui.OpenGui((Player) sender);
|
||||
return true;
|
||||
}
|
||||
if(!sender.isOp()) {
|
||||
return true;
|
||||
}
|
||||
if(args.length==0){
|
||||
sender.sendMessage("");
|
||||
sender.sendMessage("§e------- ======= §6在线福利 §e======= -------");
|
||||
sender.sendMessage("§2/"+label+" open §f- §2打开界面");
|
||||
sender.sendMessage("§2/"+label+" topDay §f- §2获取今日在线排行");
|
||||
sender.sendMessage("§2/"+label+" info §e[玩家] §f- §2查看玩家数据");
|
||||
sender.sendMessage("§2/"+label+" dayrefresh §f- §2刷新每日数据");
|
||||
sender.sendMessage("§2/"+label+" dayrefresh §e[玩家] §f- §2刷新数据");
|
||||
sender.sendMessage("§2/"+label+" reload §f- §2重载配置文件");
|
||||
sender.sendMessage("§e------- ======= §6在线福利 §e======= -------");
|
||||
sender.sendMessage("");
|
||||
return true;
|
||||
}
|
||||
String prefix = "§f[§c在线§f] §a";
|
||||
if(args.length==1 && args[0].equalsIgnoreCase("reload")){
|
||||
MessageUtil.init(this);
|
||||
Config.reloadConfig(this,true);
|
||||
sender.sendMessage(prefix+"配置文件已重载.");
|
||||
return true;
|
||||
}
|
||||
if("dayrefresh".equalsIgnoreCase(args[0])){
|
||||
if(args.length == 1) {
|
||||
getPlayerManager().refreshLocalPlayerData(TimeType.DAILY);
|
||||
sender.sendMessage("§f[§c在线§f] §a每日数据已清理.");
|
||||
return true;
|
||||
}
|
||||
if(args.length == 2){
|
||||
String name = args[1];
|
||||
getPlayerManager().refreshLocalPlayerData(name,TimeType.DAILY);
|
||||
sender.sendMessage("§f[§c在线§f] §a玩家 §e"+name+" §a每日数据已清理.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if("info".equalsIgnoreCase(args[0]) || "look".equalsIgnoreCase(args[0])){
|
||||
String playerName = sender.getName();
|
||||
if(args.length == 2){
|
||||
playerName = args[1];
|
||||
}
|
||||
PlayerData playerData = getPlayerManager().getPlayerData(playerName);
|
||||
sender.sendMessage("§r累积在线: §b"+ playerData.totalOnline+"秒");
|
||||
sender.sendMessage("§r本月在线: §b"+ playerData.monthOnline+"秒");
|
||||
sender.sendMessage("§r今日在线: §b"+ playerData.todayOnline+"秒");
|
||||
sender.sendMessage("§r总计满勤打卡: §b"+ playerData.totalSignAmount+"次");
|
||||
sender.sendMessage("§r满勤打卡: §b"+ playerData.signAmount+"次");
|
||||
sender.sendMessage("§r最后一次上线时间: §e"+ DemonAPI.LongToStringData(playerData.offlineTime,"yyyy-MM-dd HH:mm"));
|
||||
return true;
|
||||
}
|
||||
if("top".equalsIgnoreCase(args[0]) || "topDay".equalsIgnoreCase(args[0])){
|
||||
HashMap<String,Integer> hashMap = new HashMap<>();
|
||||
for (PlayerData playerData : getPlayerManager().getPlayerDataMap().values()) {
|
||||
hashMap.put(playerData.getPlayerName(),playerData.todayOnline);
|
||||
}
|
||||
Ranking ranking = new Ranking(hashMap);
|
||||
sender.sendMessage(" ");
|
||||
sender.sendMessage("§e§l★ §a"+DemonAPI.getTime("yyyy-MM-dd")+"在线排行榜 §7(不定时更新数据)");
|
||||
for (int rank = 1; rank < 15; rank++) {
|
||||
String rankingPlayer = ranking.getRankingPlayer(rank, "name");
|
||||
String onlineTime = ranking.getRankingPlayer(rank, "value");
|
||||
sender.sendMessage("§a§l★ §7第 §e" + rank + " §7名: §e" + rankingPlayer + "§7累积在线: §e"+onlineTime+"分钟");
|
||||
}
|
||||
sender.sendMessage(" ");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static AuOnlineReward inst() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static PlayerManager getPlayerManager() {
|
||||
return playerManager;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user