测试版
This commit is contained in:
parent
1c6c59b9a0
commit
663da9c226
|
@ -43,6 +43,7 @@ public class Main extends JavaPlugin {
|
||||||
DemonAPI.sendConsoleMessage("§f[§6!§f] §b极光像素工作室出品");
|
DemonAPI.sendConsoleMessage("§f[§6!§f] §b极光像素工作室出品");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
for (String uuid : serverManage.getDataHashMap().keySet()){
|
for (String uuid : serverManage.getDataHashMap().keySet()){
|
||||||
|
|
|
@ -27,6 +27,7 @@ public class PlayerData {
|
||||||
this.exp = new BigInteger(expString);
|
this.exp = new BigInteger(expString);
|
||||||
String totalExpString = fileConfiguration.getString("totalExp");
|
String totalExpString = fileConfiguration.getString("totalExp");
|
||||||
this.totalExp = new BigInteger(totalExpString);
|
this.totalExp = new BigInteger(totalExpString);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUuid() {
|
public String getUuid() {
|
||||||
|
@ -86,9 +87,10 @@ public class PlayerData {
|
||||||
// 加载文件配置
|
// 加载文件配置
|
||||||
FileConfiguration yml = YamlConfiguration.loadConfiguration(file);
|
FileConfiguration yml = YamlConfiguration.loadConfiguration(file);
|
||||||
yml.set("uuid",uuid);
|
yml.set("uuid",uuid);
|
||||||
Player player = Bukkit.getPlayer(UUID.fromString(uuid));
|
UUID uuid1 = UUID.fromString(uuid);
|
||||||
|
Player player = Bukkit.getPlayer(uuid1);
|
||||||
if(player != null) {
|
if(player != null) {
|
||||||
System.out.println("[日志 - 等级] 玩家 " + player.getName() + " 已创建档案数据.");
|
System.out.println("[调试 - UUID检测] uuid: "+uuid+" name: "+player.getName());
|
||||||
yml.set("name",player.getName());
|
yml.set("name",player.getName());
|
||||||
// 判断玩家之前是否存在等级数据
|
// 判断玩家之前是否存在等级数据
|
||||||
FileConfiguration config = Main.plugin.getConfig();
|
FileConfiguration config = Main.plugin.getConfig();
|
||||||
|
@ -96,16 +98,19 @@ public class PlayerData {
|
||||||
if(config.getInt(str+"level") >= 1){
|
if(config.getInt(str+"level") >= 1){
|
||||||
int dlevel = config.getInt(str+"level");
|
int dlevel = config.getInt(str+"level");
|
||||||
int exp = config.getInt(str+"exp");
|
int exp = config.getInt(str+"exp");
|
||||||
int totalExp = config.getInt(str+"totalExp");
|
BigInteger totalExp = new BigInteger(config.getString(str+"totalExp"));
|
||||||
yml.set("level", dlevel);
|
yml.set("level", dlevel);
|
||||||
yml.set("exp", exp);
|
yml.set("exp", exp);
|
||||||
yml.set("totalExp", totalExp);
|
yml.set("totalExp", totalExp.toString());
|
||||||
|
System.out.println("[日志 - 等级] 玩家 " + player.getName() + " 已创建数据档案.#"+config.getInt(str+"level")+" - "+totalExp.toString());
|
||||||
}else{
|
}else{
|
||||||
yml.set("level", 1);
|
yml.set("level", 1);
|
||||||
yml.set("exp", 0);
|
yml.set("exp", 0);
|
||||||
yml.set("totalExp", 1);
|
yml.set("totalExp", 1);
|
||||||
|
System.out.println("[日志 - 等级] 玩家 " + player.getName() + " 等级低于1级,已创建默认数据档案.#"+config.getInt(str+"level")+" - "+config.getInt(str+"totalExp"));
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
|
System.out.println("[调试 - UUID检测] uuid: "+uuid+" name: 检测失败");
|
||||||
yml.set("level", 1);
|
yml.set("level", 1);
|
||||||
yml.set("exp", 0);
|
yml.set("exp", 0);
|
||||||
yml.set("totalExp", 1);
|
yml.set("totalExp", 1);
|
||||||
|
|
|
@ -1,20 +1,37 @@
|
||||||
package me.Demon.DemonLevels.listener;
|
package me.Demon.DemonLevels.listener;
|
||||||
|
|
||||||
import me.Demon.DemonLevels.Main;
|
import me.Demon.DemonLevels.Main;
|
||||||
|
import me.Demon.DemonLevels.api.DLevelAPI;
|
||||||
import me.Demon.DemonLevels.data.PlayerData;
|
import me.Demon.DemonLevels.data.PlayerData;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
|
||||||
public class JoinEvent implements Listener {
|
public class JoinEvent implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onJoin(PlayerJoinEvent e){
|
public void onJoin(PlayerJoinEvent e){
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
|
String name = p.getName();
|
||||||
String uuid = p.getUniqueId().toString();
|
String uuid = p.getUniqueId().toString();
|
||||||
Main.serverManage.getPlayerData(uuid); // 读取玩家的等级数据
|
PlayerData playerData = Main.serverManage.getPlayerData(uuid); // 读取玩家的等级数据
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
FileConfiguration yml = Main.plugin.getConfig();
|
||||||
|
int totalExp = yml.getInt("levelstats."+name+".totalExp");
|
||||||
|
if(totalExp > playerData.getTotalExp().intValue()){
|
||||||
|
DLevelAPI.setTotalExp(p,new BigInteger(yml.getString("levelstats."+name+".totalExp")));
|
||||||
|
System.out.println("[调试 - 修正] 玩家 "+name+" 经验出现错误,已被纠正.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskLater(Main.plugin,100L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
|
@ -94,9 +94,9 @@ public class MobDeath implements Listener {
|
||||||
// 获取队伍成员列表
|
// 获取队伍成员列表
|
||||||
List<String> memberList = teamData.getMemberList();
|
List<String> memberList = teamData.getMemberList();
|
||||||
double teamExp = teamMap.get(teamData); // 获取队伍瓜分经验数量
|
double teamExp = teamMap.get(teamData); // 获取队伍瓜分经验数量
|
||||||
if(memberList.size() >= 3) { // 当成员满足3人后 开启队伍经验加成
|
if(memberList.size() >= 2) { // 当成员满足3人后 开启队伍经验加成
|
||||||
double teamAddonExp = 1.0;
|
double teamAddonExp = 1.0;
|
||||||
if(Main.serverManage.isLinkDemonVipSystem()) {
|
if (Main.serverManage.isLinkDemonVipSystem()) {
|
||||||
int vip_level = DvipAPI.getLevel(owner.getName());
|
int vip_level = DvipAPI.getLevel(owner.getName());
|
||||||
if (vip_level >= 8) {
|
if (vip_level >= 8) {
|
||||||
teamAddonExp = 1.30;
|
teamAddonExp = 1.30;
|
||||||
|
@ -112,41 +112,46 @@ public class MobDeath implements Listener {
|
||||||
magnificationDisplay = magnificationDisplay + (teamAddonExp - 1);
|
magnificationDisplay = magnificationDisplay + (teamAddonExp - 1);
|
||||||
}
|
}
|
||||||
teamExp = teamExp * teamAddonExp;
|
teamExp = teamExp * teamAddonExp;
|
||||||
List<String> playerList = new ArrayList<>(); // 参与经验共享的成员
|
}
|
||||||
for (String memberName : memberList){// 遍历成员列表
|
List<String> playerList = new ArrayList<>(); // 参与经验共享的成员
|
||||||
Player teamPlayer = Bukkit.getPlayer(memberName);
|
for (String memberName : memberList){// 遍历成员列表
|
||||||
if(teamPlayer == null || !teamPlayer.isOnline()){
|
Player teamPlayer = Bukkit.getPlayer(memberName);
|
||||||
continue;
|
if(teamPlayer == null || !teamPlayer.isOnline()){
|
||||||
}
|
continue;
|
||||||
// 获取队友所在世界名
|
}
|
||||||
String locationWorld = teamPlayer.getWorld().getName();
|
// 获取队友所在世界名
|
||||||
if(supportedDirectness(locationWorld)){ // 判断玩家所处世界是否是新手世界
|
String locationWorld = teamPlayer.getWorld().getName();
|
||||||
|
if(supportedDirectness(locationWorld)){ // 判断玩家所处世界是否是新手世界
|
||||||
|
playerList.add(memberName);
|
||||||
|
}else if(p.getWorld().equals(teamPlayer.getWorld())){
|
||||||
|
// 若玩家所处世界相同则开启共享
|
||||||
|
// 但前提是他们两点距离不超过15格
|
||||||
|
double distance = p.getLocation().distance(teamPlayer.getLocation());
|
||||||
|
if(distance <= 50){
|
||||||
playerList.add(memberName);
|
playerList.add(memberName);
|
||||||
}else if(p.getWorld().equals(teamPlayer.getWorld())){
|
|
||||||
// 若玩家所处世界相同则开启共享
|
|
||||||
// 但前提是他们两点距离不超过15格
|
|
||||||
double distance = p.getLocation().distance(teamPlayer.getLocation());
|
|
||||||
if(distance <= 30){
|
|
||||||
playerList.add(memberName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int magnificationDisplayString = (int) (magnificationDisplay * 100);
|
}
|
||||||
for (String memberName : playerList){
|
int magnificationDisplayString = (int) (magnificationDisplay * 100);
|
||||||
Player player = Bukkit.getPlayer(memberName);
|
for (String memberName : memberList){
|
||||||
if(player == null){continue;}
|
Player player = Bukkit.getPlayer(memberName);
|
||||||
int shareExperience = (int) (teamExp / playerList.size());
|
if(player == null){continue;}
|
||||||
// 给予玩家经验值
|
if(!playerList.contains(memberName)){
|
||||||
DLevelAPI.addExp(p,shareExperience);
|
player.sendMessage("§f[§e提示§f] §7由于距离过远,组队经验共享失败.");
|
||||||
experienceGainTips(player,shareExperience,magnificationDisplayString);
|
continue;
|
||||||
if(magnificationDisplayString >= 1){
|
|
||||||
player.sendMessage("§f[§e提示§f] §7队伍经验分享你获得了§6" + shareExperience + "§7! [§a+" + magnificationDisplayString + "%§7]");
|
|
||||||
} else {
|
|
||||||
player.sendMessage("§f[§c消息§f] §7队伍经验分享你获得了 §d§l+" + shareExperience);
|
|
||||||
}
|
|
||||||
ShareExpEvent share_event = new ShareExpEvent(player, shareExperience, playerList);
|
|
||||||
Bukkit.getPluginManager().callEvent(share_event);
|
|
||||||
}
|
}
|
||||||
|
// 检测玩家在队伍里但是不在共享名单里
|
||||||
|
int shareExperience = (int) (teamExp / playerList.size());
|
||||||
|
// 给予玩家经验值
|
||||||
|
DLevelAPI.addExp(p,shareExperience);
|
||||||
|
experienceGainTips(player,shareExperience,magnificationDisplayString);
|
||||||
|
if(magnificationDisplayString >= 1){
|
||||||
|
player.sendMessage("§f[§e提示§f] §7队伍经验分享你获得了§6" + shareExperience + "§7! [§a+" + magnificationDisplayString + "%§7]");
|
||||||
|
} else {
|
||||||
|
player.sendMessage("§f[§c消息§f] §7队伍经验分享你获得了 §d§l+" + shareExperience);
|
||||||
|
}
|
||||||
|
ShareExpEvent share_event = new ShareExpEvent(player, shareExperience, playerList);
|
||||||
|
Bukkit.getPluginManager().callEvent(share_event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,18 +11,18 @@ public class UpgradePrompt implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onUpLevel(UpLevelEvant e){
|
public void onUpLevel(UpLevelEvant e){
|
||||||
// 获取触发事件的玩家
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
// 获取玩家名称
|
|
||||||
String name = p.getName();
|
|
||||||
// 获取玩家的新等级
|
// 获取玩家的新等级
|
||||||
int level = e.getLevel();
|
int level = e.getLevel();
|
||||||
// 从配置中获取当前等级对应的前缀
|
|
||||||
String prefix = Main.configYml.getRankTitle(level);
|
|
||||||
// 广播消息,通知所有玩家该玩家达到新的境界
|
|
||||||
Bukkit.broadcastMessage("§f[§c§l公告§f] §a玩家§e" + name + "§a境界成功达到了 §7[" + prefix + "§7]");
|
|
||||||
// 检查玩家的等级是否是5的倍数
|
// 检查玩家的等级是否是5的倍数
|
||||||
if (level%5 == 0) {
|
if (level % 5 == 0) {
|
||||||
|
// 获取触发事件的玩家
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
// 获取玩家名称
|
||||||
|
String name = p.getName();
|
||||||
|
// 从配置中获取当前等级对应的前缀
|
||||||
|
String prefix = Main.configYml.getRankTitle(level);
|
||||||
|
// 广播消息,通知所有玩家该玩家达到新的境界
|
||||||
|
Bukkit.broadcastMessage("§f[§c§l公告§f] §a玩家§e" + name + "§a境界成功达到了 §7[" + prefix + "§7]");
|
||||||
// 获取玩家对象
|
// 获取玩家对象
|
||||||
Player player = Bukkit.getPlayer(name);
|
Player player = Bukkit.getPlayer(name);
|
||||||
if(player == null){return;}
|
if(player == null){return;}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: DemonLevels
|
name: DemonLevels
|
||||||
main: me.Demon.DemonLevels.Main
|
main: me.Demon.DemonLevels.Main
|
||||||
version: 2.1.6
|
version: 2.1.9
|
||||||
depend: [DemonTeam]
|
depend: [DemonTeam]
|
||||||
commands:
|
commands:
|
||||||
dlevel:
|
dlevel:
|
Loading…
Reference in New Issue
Block a user