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