Update PlayerRisk.java

将监听事件放到了主类
This commit is contained in:
玉玉第一名
2024-03-14 21:16:06 +08:00
committed by GitHub
parent 3175d7c25a
commit 9663389e28

View File

@@ -1,21 +1,34 @@
package com.sakurarealm.playerrisk; package com.sakurarealm.playerrisk;
import com.palmergames.bukkit.towny.event.PlayerEnterTownEvent;
import com.palmergames.bukkit.towny.event.PlayerLeaveTownEvent;
import com.sakurarealm.playerrisk.api.PlayerRiskManager; import com.sakurarealm.playerrisk.api.PlayerRiskManager;
import com.sakurarealm.playerrisk.api.PlayerRiskSettings; import com.sakurarealm.playerrisk.api.PlayerRiskSettings;
import org.apache.commons.lang.NotImplementedException;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public final class PlayerRisk extends JavaPlugin { import java.util.*;
public final class PlayerRisk extends JavaPlugin implements Listener {
//用来记录在城镇之外的玩家
Map<String,Integer> playsOutTown = new Hashtable<>();
PlayerRiskManager playerRiskManager = null; PlayerRiskManager playerRiskManager = null;
public PlayerRiskManager getPlayerRiskManager() { // public PlayerRiskManager getPlayerRiskManager() {
if (playerRiskManager == null) { // if (playerRiskManager == null) {
throw new NullPointerException("PlayerRisk plugin is not initialized."); // throw new NullPointerException("PlayerRisk plugin is not initialized.");
} // }
return playerRiskManager; // return playerRiskManager;
} // }
public void load() { public void load() {
saveDefaultConfig(); saveDefaultConfig();
@@ -29,6 +42,10 @@ public final class PlayerRisk extends JavaPlugin {
// Plugin startup logic // Plugin startup logic
load(); load();
getCommand("playerrisk").setExecutor(new CommandHandler(this)); getCommand("playerrisk").setExecutor(new CommandHandler(this));
//注册监听器
Bukkit.getPluginManager().registerEvents(this,this);
getServer().getScheduler().scheduleSyncRepeatingTask(this, this::addRiskToOutTownPlayers, 0, 1200);
} }
@Override @Override
@@ -36,4 +53,58 @@ public final class PlayerRisk extends JavaPlugin {
// Plugin shutdown logic // Plugin shutdown logic
} }
/**
* TODO: 当玩家进入城镇时, 危险度不再增加.
*
* @param event The PlayerEnterTownEvent.
*/
@EventHandler
public void onPlayerEnterTown(PlayerEnterTownEvent event) {
//当玩家进入城镇后移出map集合并且清零
Player player = event.getPlayer();
playsOutTown.remove(player.getName());
throw new NotImplementedException("Not implemented yet.");
}
/**
* TODO: 当玩家离开城镇时, 危险度开始增加.
*
* @param event The PlayerLeaveTownEvent.
*/
@EventHandler
public void onPlayerLeaveTown(PlayerLeaveTownEvent event) {
//当玩家离开城镇后,移出map集合并且清零
Player player = event.getPlayer();
playsOutTown.put(player.getName(),0);
throw new NotImplementedException("Not implemented yet.");
}
/**
* TODO: 当玩家死亡时, 危险度重置.
*
* @param event The PlayerDeathEvent.
*/
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
Player player = event.getEntity();
playsOutTown.remove(player.getName());
throw new NotImplementedException("Not implemented yet.");
}
// TODO: Add any other event handlers needed to manage player risk.
//注册主任务,一直循环给增加在城镇之外的玩家的危险度
public void addRiskToOutTownPlayers(){
for (String name : playsOutTown.keySet()){
//获取玩家当前的危险度
int playerRiskLevel = playerRiskManager.getPlayerRiskLevel(name);
//日志报告,测试用
getLogger().info(ChatColor.GREEN+name+"危险度为:"+playerRiskLevel);
//注意此处是把所有生物群系的危险度放在一起计算了,
if (playerRiskLevel < playerRiskManager.settings.getLevelMax()){
playerRiskManager.setPlayerRiskLevel(name,playerRiskLevel + 1);
}
}
}
} }