世界BOSS
This commit is contained in:
parent
60f7c9891d
commit
e22728ab08
|
@ -5,6 +5,7 @@ import com.io.yaohun.worldbosshurt.listener.*;
|
||||||
import com.io.yaohun.worldbosshurt.mangage.BossManage;
|
import com.io.yaohun.worldbosshurt.mangage.BossManage;
|
||||||
import com.io.yaohun.worldbosshurt.mangage.RewardManage;
|
import com.io.yaohun.worldbosshurt.mangage.RewardManage;
|
||||||
import com.io.yaohun.worldbosshurt.util.BossStack;
|
import com.io.yaohun.worldbosshurt.util.BossStack;
|
||||||
|
import com.io.yaohun.worldbosshurt.util.BossUtil;
|
||||||
import me.Demon.DemonPlugin.DemonAPI;
|
import me.Demon.DemonPlugin.DemonAPI;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
|
@ -46,7 +47,11 @@ public class Main extends JavaPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) {
|
public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) {
|
||||||
if(Command.equalsIgnoreCase("bossreload")){
|
if(Command.equalsIgnoreCase("bossreload") && sender.isOp()){
|
||||||
|
if(args.length == 1 && args[0].equalsIgnoreCase("test")){
|
||||||
|
BossUtil.settlementRankingRewards();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
reloadMobDataYml();
|
reloadMobDataYml();
|
||||||
DemonAPI.sendMessage(sender,"配置文件已重载.");
|
DemonAPI.sendMessage(sender,"配置文件已重载.");
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -2,6 +2,14 @@ package com.io.yaohun.worldbosshurt.api;
|
||||||
|
|
||||||
import com.io.yaohun.worldbosshurt.Main;
|
import com.io.yaohun.worldbosshurt.Main;
|
||||||
import com.io.yaohun.worldbosshurt.mangage.BossManage;
|
import com.io.yaohun.worldbosshurt.mangage.BossManage;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public abstract class BossHurtAPI {
|
public abstract class BossHurtAPI {
|
||||||
|
|
||||||
|
@ -13,4 +21,45 @@ public abstract class BossHurtAPI {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//获取本月猎杀排行榜排行榜
|
||||||
|
public static void sendTimeMonthTopMessage(Player p){
|
||||||
|
FileConfiguration yml = Main.plugin.getConfig();
|
||||||
|
double totalAmount = 0;
|
||||||
|
HashMap<String, Integer> map = new HashMap<>();
|
||||||
|
for (String playName : yml.getConfigurationSection("MonthlyKillsTop").getKeys(false)) {
|
||||||
|
int amount = yml.getInt("MonthlyKillsTop."+playName);
|
||||||
|
map.put(playName, amount);
|
||||||
|
totalAmount = totalAmount + amount;
|
||||||
|
}
|
||||||
|
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
|
||||||
|
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
|
||||||
|
int count = Math.min(list.size(), 10);
|
||||||
|
int rank = 1;
|
||||||
|
p.sendMessage("§c§M §6§m §e§m §a§m §b§m §C§L▍ §c§l猎§6§l杀§E§L统§A§l计§B§L表 §C§l▍§b§M §a§M §e§M §6§m §c§m §r");
|
||||||
|
p.sendMessage("§e本月世界级boss猎杀排名如下:");
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
if (rank == 11) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
String top_Name = list.get(i).getKey();
|
||||||
|
p.sendMessage("§e第" + rank + "名 - §c" + top_Name + " §e总计猎杀: §c" + list.get(i).getValue() + "只 §e猎杀占总比: §c" + new DecimalFormat("0.00").format(list.get(i).getValue() / totalAmount * 100) + "%");
|
||||||
|
++rank;
|
||||||
|
}
|
||||||
|
p.sendMessage("§c§M §6§m §e§m §a§m §b§m §C§L▍ §c§l猎§6§l杀§E§L统§A§l计§B§L表 §C§l▍§b§M §a§M §e§M §6§m §c§m §r");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Map.Entry<String, Integer>> getTimeMonthTopHashMap(){
|
||||||
|
FileConfiguration yml = Main.plugin.getConfig();
|
||||||
|
double totalAmount = 0;
|
||||||
|
HashMap<String, Integer> map = new HashMap<>();
|
||||||
|
for (String playName : yml.getConfigurationSection("MonthlyKillsTop").getKeys(false)) {
|
||||||
|
int amount = yml.getInt("MonthlyKillsTop."+playName);
|
||||||
|
map.put(playName, amount);
|
||||||
|
totalAmount = totalAmount + amount;
|
||||||
|
}
|
||||||
|
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
|
||||||
|
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.io.yaohun.worldbosshurt.event;
|
||||||
|
|
||||||
|
import com.io.yaohun.worldbosshurt.data.BossData;
|
||||||
|
import com.io.yaohun.worldbosshurt.data.RewardData;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
|
public class WorldBossDamageEvent extends Event {
|
||||||
|
|
||||||
|
private static HandlerList handlers = new HandlerList();
|
||||||
|
private Player player;
|
||||||
|
private double damage;
|
||||||
|
private BossData bossData;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
public WorldBossDamageEvent(Player player,BossData bossData,double damage) {
|
||||||
|
this.player = player;
|
||||||
|
this.bossData = bossData;
|
||||||
|
this.damage = damage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer() {return player;}
|
||||||
|
public String getBossKey(){return bossData.getBossKey();}
|
||||||
|
public String getMobName() {
|
||||||
|
return bossData.getBossName();
|
||||||
|
}
|
||||||
|
public BossData getBossData() {
|
||||||
|
return bossData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDamage() {
|
||||||
|
return damage * 1000;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package com.io.yaohun.worldbosshurt.listener;
|
||||||
import com.io.yaohun.worldbosshurt.Main;
|
import com.io.yaohun.worldbosshurt.Main;
|
||||||
import com.io.yaohun.worldbosshurt.data.BossData;
|
import com.io.yaohun.worldbosshurt.data.BossData;
|
||||||
import com.io.yaohun.worldbosshurt.data.RewardData;
|
import com.io.yaohun.worldbosshurt.data.RewardData;
|
||||||
|
import com.io.yaohun.worldbosshurt.event.WorldBossDamageEvent;
|
||||||
import com.io.yaohun.worldbosshurt.event.WorldBossDeathEvent;
|
import com.io.yaohun.worldbosshurt.event.WorldBossDeathEvent;
|
||||||
import com.io.yaohun.worldbosshurt.mangage.BossManage;
|
import com.io.yaohun.worldbosshurt.mangage.BossManage;
|
||||||
import com.io.yaohun.worldbosshurt.util.BossStack;
|
import com.io.yaohun.worldbosshurt.util.BossStack;
|
||||||
|
@ -73,6 +74,8 @@ public class BossKillsDeath implements Listener {
|
||||||
totalDamage += damage; // 统计玩家造成总计伤害
|
totalDamage += damage; // 统计玩家造成总计伤害
|
||||||
hashMap.put(player.getName(), damage); // 将玩家名和伤害存储
|
hashMap.put(player.getName(), damage); // 将玩家名和伤害存储
|
||||||
playerList.add(player); // 将玩家存入在线玩家列表
|
playerList.add(player); // 将玩家存入在线玩家列表
|
||||||
|
WorldBossDamageEvent worldBossDamageEvent = new WorldBossDamageEvent(player,bossData,damage);
|
||||||
|
Bukkit.getPluginManager().callEvent(worldBossDamageEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (hashMap.size() < 1) { return; }
|
if (hashMap.size() < 1) { return; }
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class BossUtil {
|
||||||
int killAmount = yml.getInt("MonthlyKillsTop."+name); // 获取击杀boss次数
|
int killAmount = yml.getInt("MonthlyKillsTop."+name); // 获取击杀boss次数
|
||||||
hashMap.put(name,killAmount); // put次数
|
hashMap.put(name,killAmount); // put次数
|
||||||
}
|
}
|
||||||
// yml.set("MonthlyKillsTop",null); // 清理本地数据
|
yml.set("MonthlyKillsTop",null); // 清理本地数据
|
||||||
}
|
}
|
||||||
if(hashMap.size() >= 1){
|
if(hashMap.size() >= 1){
|
||||||
// 为HashMap中数值进行降序排序
|
// 为HashMap中数值进行降序排序
|
||||||
|
@ -82,19 +82,19 @@ public class BossUtil {
|
||||||
int kill_amount = sortedMap.get(name);
|
int kill_amount = sortedMap.get(name);
|
||||||
if(rank == 1) {
|
if(rank == 1) {
|
||||||
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx1000");
|
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx1000");
|
||||||
// BankAPI.addPoints(name,1000);
|
BankAPI.addPoints(name,1000);
|
||||||
}else if(rank == 2){
|
}else if(rank == 2){
|
||||||
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx750");
|
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx750");
|
||||||
// BankAPI.addPoints(name,750);
|
BankAPI.addPoints(name,750);
|
||||||
}else if(rank == 3){
|
}else if(rank == 3){
|
||||||
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx500");
|
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx500");
|
||||||
// BankAPI.addPoints(name,500);
|
BankAPI.addPoints(name,500);
|
||||||
}else if(rank == 4){
|
}else if(rank == 4){
|
||||||
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx250");
|
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx250");
|
||||||
// BankAPI.addPoints(name,250);
|
BankAPI.addPoints(name,250);
|
||||||
}else if(rank == 5){
|
}else if(rank == 5){
|
||||||
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx100");
|
Bukkit.broadcastMessage("§6[§4灵兽猎杀排行§6] §a玩家 §e" + name + " §a上月总计猎杀: §6" + kill_amount + "只 §a获得奖励: §d§l点券§fx100");
|
||||||
// BankAPI.addPoints(name,100);
|
BankAPI.addPoints(name,100);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
rank++;
|
rank++;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user