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/misc.xml | ||||||
| /.idea/jarRepositories.xml | /.idea/jarRepositories.xml | ||||||
| /.idea/.gitignore | /.idea/.gitignore | ||||||
|  | /.idea/ | ||||||
|  | /out/ | ||||||
|  | /target/ | ||||||
|  |  | ||||||
|  | @ -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,7 +94,7 @@ 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() >= 2) { // 当成员满足2人后 开启队伍经验加成 |                 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()); | ||||||
|  | @ -112,6 +112,7 @@ public class MobDeath implements Listener { | ||||||
|                         magnificationDisplay = magnificationDisplay + (teamAddonExp - 1); |                         magnificationDisplay = magnificationDisplay + (teamAddonExp - 1); | ||||||
|                     } |                     } | ||||||
|                     teamExp = teamExp * teamAddonExp; |                     teamExp = teamExp * teamAddonExp; | ||||||
|  |                 } | ||||||
|                 List<String> playerList = new ArrayList<>(); // 参与经验共享的成员 |                 List<String> playerList = new ArrayList<>(); // 参与经验共享的成员 | ||||||
|                 for (String memberName : memberList){// 遍历成员列表 |                 for (String memberName : memberList){// 遍历成员列表 | ||||||
|                     Player teamPlayer = Bukkit.getPlayer(memberName); |                     Player teamPlayer = Bukkit.getPlayer(memberName); | ||||||
|  | @ -124,7 +125,7 @@ public class MobDeath implements Listener { | ||||||
|                         playerList.add(memberName); |                         playerList.add(memberName); | ||||||
|                     }else if(p.getWorld().equals(teamPlayer.getWorld())){ |                     }else if(p.getWorld().equals(teamPlayer.getWorld())){ | ||||||
|                         // 若玩家所处世界相同则开启共享 |                         // 若玩家所处世界相同则开启共享 | ||||||
|                             // 但前提是他们两点距离不超过50格 |                         // 但前提是他们两点距离不超过15格 | ||||||
|                         double distance = p.getLocation().distance(teamPlayer.getLocation()); |                         double distance = p.getLocation().distance(teamPlayer.getLocation()); | ||||||
|                         if(distance <= 50){ |                         if(distance <= 50){ | ||||||
|                             playerList.add(memberName); |                             playerList.add(memberName); | ||||||
|  | @ -132,9 +133,14 @@ public class MobDeath implements Listener { | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                 int magnificationDisplayString = (int) (magnificationDisplay * 100); |                 int magnificationDisplayString = (int) (magnificationDisplay * 100); | ||||||
|                     for (String memberName : playerList){ |                 for (String memberName : memberList){ | ||||||
|                     Player player = Bukkit.getPlayer(memberName); |                     Player player = Bukkit.getPlayer(memberName); | ||||||
|                     if(player == null){continue;} |                     if(player == null){continue;} | ||||||
|  |                     if(!playerList.contains(memberName)){ | ||||||
|  |                         player.sendMessage("§f[§e提示§f] §7由于距离过远,组队经验共享失败."); | ||||||
|  |                         continue; | ||||||
|  |                     } | ||||||
|  |                     // 检测玩家在队伍里但是不在共享名单里 | ||||||
|                     int shareExperience = (int) (teamExp / playerList.size()); |                     int shareExperience = (int) (teamExp / playerList.size()); | ||||||
|                     // 给予玩家经验值 |                     // 给予玩家经验值 | ||||||
|                     DLevelAPI.addExp(p,shareExperience); |                     DLevelAPI.addExp(p,shareExperience); | ||||||
|  | @ -150,7 +156,6 @@ public class MobDeath implements Listener { | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     public static void experienceGainTips(Player p,int exp,int magnificationDisplayString){ |     public static void experienceGainTips(Player p,int exp,int magnificationDisplayString){ | ||||||
|         String playName = "§8§l[ §b"+p.getName()+" §8§l]"; |         String playName = "§8§l[ §b"+p.getName()+" §8§l]"; | ||||||
|  |  | ||||||
|  | @ -11,18 +11,18 @@ public class UpgradePrompt implements Listener { | ||||||
| 
 | 
 | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onUpLevel(UpLevelEvant e){ |     public void onUpLevel(UpLevelEvant e){ | ||||||
|  |         // 获取玩家的新等级 | ||||||
|  |         int level = e.getLevel(); | ||||||
|  |         // 检查玩家的等级是否是5的倍数 | ||||||
|  |         if (level % 10 == 0) { | ||||||
|             // 获取触发事件的玩家 |             // 获取触发事件的玩家 | ||||||
|             Player p = e.getPlayer(); |             Player p = e.getPlayer(); | ||||||
|             // 获取玩家名称 |             // 获取玩家名称 | ||||||
|             String name = p.getName(); |             String name = p.getName(); | ||||||
|         // 获取玩家的新等级 |  | ||||||
|         int level = e.getLevel(); |  | ||||||
|             // 从配置中获取当前等级对应的前缀 |             // 从配置中获取当前等级对应的前缀 | ||||||
|             String prefix = Main.configYml.getRankTitle(level); |             String prefix = Main.configYml.getRankTitle(level); | ||||||
|             // 广播消息,通知所有玩家该玩家达到新的境界 |             // 广播消息,通知所有玩家该玩家达到新的境界 | ||||||
|             Bukkit.broadcastMessage("§f[§c§l公告§f] §a玩家§e" + name + "§a境界成功达到了 §7[" + prefix + "§7]"); |             Bukkit.broadcastMessage("§f[§c§l公告§f] §a玩家§e" + name + "§a境界成功达到了 §7[" + prefix + "§7]"); | ||||||
|         // 检查玩家的等级是否是5的倍数 |  | ||||||
|         if (level%5 == 0) { |  | ||||||
|             // 获取玩家对象 |             // 获取玩家对象 | ||||||
|             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