Initial commit
This commit is contained in:
30
src/main/java/com/sakurarealm/playerrisk/CommandHandler.java
Normal file
30
src/main/java/com/sakurarealm/playerrisk/CommandHandler.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.sakurarealm.playerrisk;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class CommandHandler implements CommandExecutor {
|
||||
|
||||
private final PlayerRisk plugin;
|
||||
|
||||
public CommandHandler(PlayerRisk plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
|
||||
if (args.length == 0 || !sender.hasPermission("playerrisk.admin")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
plugin.load();
|
||||
sender.sendMessage("&aPlayerRisk plugin reloaded!");
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
37
src/main/java/com/sakurarealm/playerrisk/Listener.java
Normal file
37
src/main/java/com/sakurarealm/playerrisk/Listener.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package com.sakurarealm.playerrisk;
|
||||
|
||||
import com.palmergames.bukkit.towny.event.PlayerEnterTownEvent;
|
||||
import com.palmergames.bukkit.towny.event.PlayerLeaveTownEvent;
|
||||
import org.apache.commons.lang.NotImplementedException;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
|
||||
public class Listener implements org.bukkit.event.Listener {
|
||||
/**
|
||||
* TODO: 当玩家进入城镇时, 危险度不再增加.
|
||||
*
|
||||
* @param event The PlayerEnterTownEvent.
|
||||
*/
|
||||
public void onPlayerEnterTown(PlayerEnterTownEvent event) {
|
||||
throw new NotImplementedException("Not implemented yet.");
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: 当玩家离开城镇时, 危险度开始增加.
|
||||
*
|
||||
* @param event The PlayerLeaveTownEvent.
|
||||
*/
|
||||
public void onPlayerLeaveTown(PlayerLeaveTownEvent event) {
|
||||
throw new NotImplementedException("Not implemented yet.");
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: 当玩家死亡时, 危险度重置.
|
||||
*
|
||||
* @param event The PlayerDeathEvent.
|
||||
*/
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
throw new NotImplementedException("Not implemented yet.");
|
||||
}
|
||||
|
||||
// TODO: Add any other event handlers needed to manage player risk.
|
||||
}
|
||||
39
src/main/java/com/sakurarealm/playerrisk/PlayerRisk.java
Normal file
39
src/main/java/com/sakurarealm/playerrisk/PlayerRisk.java
Normal file
@@ -0,0 +1,39 @@
|
||||
package com.sakurarealm.playerrisk;
|
||||
|
||||
import com.sakurarealm.playerrisk.api.PlayerRiskManager;
|
||||
import com.sakurarealm.playerrisk.api.PlayerRiskSettings;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class PlayerRisk extends JavaPlugin {
|
||||
|
||||
PlayerRiskManager playerRiskManager = null;
|
||||
|
||||
public PlayerRiskManager getPlayerRiskManager() {
|
||||
if (playerRiskManager == null) {
|
||||
throw new NullPointerException("PlayerRisk plugin is not initialized.");
|
||||
}
|
||||
return playerRiskManager;
|
||||
}
|
||||
|
||||
public void load() {
|
||||
saveDefaultConfig();
|
||||
FileConfiguration config = getConfig();
|
||||
ConfigurationSection settingsSection = config.getConfigurationSection("settings");
|
||||
playerRiskManager = new PlayerRiskManager(this, new PlayerRiskSettings(settingsSection));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// Plugin startup logic
|
||||
load();
|
||||
getCommand("playerrisk").setExecutor(new CommandHandler(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
// Plugin shutdown logic
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.sakurarealm.playerrisk.api;
|
||||
|
||||
import com.sakurarealm.playerrisk.Listener;
|
||||
import com.sakurarealm.playerrisk.PlayerRisk;
|
||||
import com.sakurarealm.playerrisk.hook.PlaceHolderAPIHook;
|
||||
import org.apache.commons.lang.NotImplementedException;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 危机度区间为0~level_max级,每次离开安全区(城镇),重置危险等级:每待n秒会使危机等级(变量)提升1点,
|
||||
* 但开始计算时玩家在的每一个每种生物群系最多使危机等级提升10 (如上限level_max是50的话, 玩家至少进入5个不同的生物群系才能达到上限),
|
||||
* 玩家每次死亡重生或回到安全区,会重置当前危机等级。
|
||||
* 所有变量见config.yml
|
||||
* <a href="https://drawrealm.feishu.cn/wiki/ZqTQwSQNyiZUIWkHCRgcuAcYn3f?chunked=false">...</a>
|
||||
*/
|
||||
public class PlayerRiskManager {
|
||||
|
||||
private final PlayerRisk plugin;
|
||||
|
||||
// TODO: Add any data structures needed to manage player risk.
|
||||
|
||||
public PlayerRiskManager(PlayerRisk plugin, PlayerRiskSettings settings) {
|
||||
this.plugin = plugin;
|
||||
// Register the event listener.
|
||||
plugin.getServer().getPluginManager().registerEvents(new Listener(), plugin);
|
||||
new PlaceHolderAPIHook(this).register();
|
||||
}
|
||||
|
||||
public int getPlayerRiskLevel(String playerName) {
|
||||
// Get offline player by name.
|
||||
OfflinePlayer player = plugin.getServer().getOfflinePlayer(playerName);
|
||||
return getPlayerRiskLevel(player);
|
||||
}
|
||||
|
||||
public int getPlayerRiskLevel(UUID playerId) {
|
||||
// Get offline player by UUID.
|
||||
OfflinePlayer player = plugin.getServer().getOfflinePlayer(playerId);
|
||||
return getPlayerRiskLevel(player);
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: 获取玩家的危险度等级
|
||||
*
|
||||
* @param player 玩家
|
||||
* @return 危险度等级
|
||||
*/
|
||||
public int getPlayerRiskLevel(OfflinePlayer player) {
|
||||
throw new NotImplementedException("Not implemented yet.");
|
||||
}
|
||||
|
||||
public void setPlayerRiskLevel(String playerName, int level) {
|
||||
// Get offline player by name.
|
||||
OfflinePlayer player = plugin.getServer().getOfflinePlayer(playerName);
|
||||
setPlayerRiskLevel(player, level);
|
||||
}
|
||||
|
||||
public void setPlayerRiskLevel(UUID playerId, int level) {
|
||||
// Get offline player by UUID.
|
||||
OfflinePlayer player = plugin.getServer().getOfflinePlayer(playerId);
|
||||
setPlayerRiskLevel(player, level);
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: 设置玩家的危险度等级
|
||||
*/
|
||||
public void setPlayerRiskLevel(OfflinePlayer player, int level) {
|
||||
throw new NotImplementedException("Not implemented yet.");
|
||||
}
|
||||
|
||||
// TODO Add any other methods needed to manage player risk.
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.sakurarealm.playerrisk.api;
|
||||
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
public class PlayerRiskSettings {
|
||||
|
||||
private final int levelMax;
|
||||
private final int increaseInterval;
|
||||
|
||||
public PlayerRiskSettings(ConfigurationSection config) {
|
||||
levelMax = config.getInt("level-max");
|
||||
increaseInterval = config.getInt("increase-interval");
|
||||
}
|
||||
|
||||
public int getIncreaseInterval() {
|
||||
return increaseInterval;
|
||||
}
|
||||
|
||||
public int getLevelMax() {
|
||||
return levelMax;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.sakurarealm.playerrisk.hook;
|
||||
|
||||
import com.sakurarealm.playerrisk.api.PlayerRiskManager;
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
public class PlaceHolderAPIHook extends PlaceholderExpansion {
|
||||
|
||||
private final PlayerRiskManager playerRiskManager;
|
||||
|
||||
public PlaceHolderAPIHook(PlayerRiskManager playerRiskManager) {
|
||||
super();
|
||||
this.playerRiskManager = playerRiskManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return "prisk";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthor() {
|
||||
return "sakurarealm";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "1.0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onRequest(OfflinePlayer player, String params) {
|
||||
if (params.equals("level")) { // prisk_level
|
||||
return String.valueOf(playerRiskManager.getPlayerRiskLevel(player));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user