mirror of
				https://e.coding.net/circlecloud/Yum.git
				synced 2025-11-04 13:16:02 +00:00 
			
		
		
		
	
							
								
								
									
										5
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								pom.xml
									
									
									
									
									
								
							@@ -3,7 +3,7 @@
 | 
				
			|||||||
	<modelVersion>4.0.0</modelVersion>
 | 
						<modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
	<groupId>pw.yumc</groupId>
 | 
						<groupId>pw.yumc</groupId>
 | 
				
			||||||
	<artifactId>Yum</artifactId>
 | 
						<artifactId>Yum</artifactId>
 | 
				
			||||||
	<version>2.7.5</version>
 | 
						<version>2.7.6</version>
 | 
				
			||||||
	<name>Yum</name>
 | 
						<name>Yum</name>
 | 
				
			||||||
	<description>Minecraft 服务器插件管理系统</description>
 | 
						<description>Minecraft 服务器插件管理系统</description>
 | 
				
			||||||
	<build>
 | 
						<build>
 | 
				
			||||||
@@ -66,10 +66,9 @@
 | 
				
			|||||||
		<update.description>§a全新 2.X 版本 更多守护与优化</update.description>
 | 
							<update.description>§a全新 2.X 版本 更多守护与优化</update.description>
 | 
				
			||||||
		<update.changes>
 | 
							<update.changes>
 | 
				
			||||||
			§c注意  §6- §aYum更新需要§d重启服务器!§c重启服务器!§4重启服务器!;
 | 
								§c注意  §6- §aYum更新需要§d重启服务器!§c重启服务器!§4重启服务器!;
 | 
				
			||||||
 | 
								§b2.7.6 §6- §c暂时取消部分线程安全检测§4(不稳定)...;
 | 
				
			||||||
			§b2.7.5 §6- §c修复§eBukkitDev§e下载为空时的异常...;
 | 
								§b2.7.5 §6- §c修复§eBukkitDev§e下载为空时的异常...;
 | 
				
			||||||
			§b2.7.4 §6- §e异步记录服务器报错与耗时操作 §a性能优化...;
 | 
								§b2.7.4 §6- §e异步记录服务器报错与耗时操作 §a性能优化...;
 | 
				
			||||||
			§b2.7.3 §6- §a调整lag判断条件 减少高峰期误报...;
 | 
					 | 
				
			||||||
			§b2.7.2 §6- §c修复mi lag命令参数错误报错 §d百分比显示能耗...;
 | 
					 | 
				
			||||||
		</update.changes>
 | 
							</update.changes>
 | 
				
			||||||
		<env.GIT_COMMIT>DEBUG</env.GIT_COMMIT>
 | 
							<env.GIT_COMMIT>DEBUG</env.GIT_COMMIT>
 | 
				
			||||||
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
							<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,98 +1,96 @@
 | 
				
			|||||||
package pw.yumc.Yum.listeners;
 | 
					package pw.yumc.Yum.listeners;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
import org.bukkit.event.Event;
 | 
					import org.bukkit.event.Event;
 | 
				
			||||||
import org.bukkit.event.EventHandler;
 | 
					import org.bukkit.event.EventHandler;
 | 
				
			||||||
import org.bukkit.event.Listener;
 | 
					import org.bukkit.event.Listener;
 | 
				
			||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
 | 
					import org.bukkit.event.entity.CreatureSpawnEvent;
 | 
				
			||||||
import org.bukkit.event.entity.ItemSpawnEvent;
 | 
					import org.bukkit.event.entity.ItemSpawnEvent;
 | 
				
			||||||
import org.bukkit.event.inventory.InventoryOpenEvent;
 | 
					import org.bukkit.event.inventory.InventoryOpenEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerMoveEvent;
 | 
					import org.bukkit.event.player.PlayerMoveEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerQuitEvent;
 | 
					import org.bukkit.event.player.PlayerQuitEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerTeleportEvent;
 | 
					import org.bukkit.event.player.PlayerTeleportEvent;
 | 
				
			||||||
import org.bukkit.event.world.ChunkLoadEvent;
 | 
					import org.bukkit.event.world.ChunkLoadEvent;
 | 
				
			||||||
import org.bukkit.event.world.ChunkUnloadEvent;
 | 
					import org.bukkit.event.world.ChunkUnloadEvent;
 | 
				
			||||||
import org.bukkit.event.world.WorldLoadEvent;
 | 
					import org.bukkit.event.world.WorldLoadEvent;
 | 
				
			||||||
import org.bukkit.event.world.WorldSaveEvent;
 | 
					import org.bukkit.event.world.WorldSaveEvent;
 | 
				
			||||||
import org.bukkit.event.world.WorldUnloadEvent;
 | 
					import org.bukkit.event.world.WorldUnloadEvent;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.PluginHelper.kit.PluginKit;
 | 
					import cn.citycraft.PluginHelper.kit.PluginKit;
 | 
				
			||||||
import pw.yumc.Yum.Yum;
 | 
					import pw.yumc.Yum.Yum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Fork From LagMonitor: https://github.com/games647/LagMonitor.git
 | 
					 * Fork From LagMonitor: https://github.com/games647/LagMonitor.git
 | 
				
			||||||
 * We can listen to events which are intended to run sync to the main thread.
 | 
					 * We can listen to events which are intended to run sync to the main thread.
 | 
				
			||||||
 * If those events are fired on a async task the operation was likely not thread-safe.
 | 
					 * If those events are fired on a async task the operation was likely not thread-safe.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class ThreadSafetyListener implements Listener {
 | 
					public class ThreadSafetyListener implements Listener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ThreadSafetyListener(final Yum yum) {
 | 
					    public ThreadSafetyListener(final Yum yum) {
 | 
				
			||||||
        Bukkit.getPluginManager().registerEvents(this, yum);
 | 
					        Bukkit.getPluginManager().registerEvents(this, yum);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onChunkLoad(final ChunkLoadEvent chunkLoadEvent) {
 | 
					    public void onChunkLoad(final ChunkLoadEvent chunkLoadEvent) {
 | 
				
			||||||
        checkSafety(chunkLoadEvent);
 | 
					        checkSafety(chunkLoadEvent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onChunkUnload(final ChunkUnloadEvent chunkUnloadEvent) {
 | 
					    public void onChunkUnload(final ChunkUnloadEvent chunkUnloadEvent) {
 | 
				
			||||||
        checkSafety(chunkUnloadEvent);
 | 
					        checkSafety(chunkUnloadEvent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onCreatureSpawn(final CreatureSpawnEvent creatureSpawnEvent) {
 | 
					    public void onCreatureSpawn(final CreatureSpawnEvent creatureSpawnEvent) {
 | 
				
			||||||
        checkSafety(creatureSpawnEvent);
 | 
					        checkSafety(creatureSpawnEvent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    public void onInventoryOpen(final InventoryOpenEvent inventoryOpenEvent) {
 | 
				
			||||||
    public void onInventoryOpen(final InventoryOpenEvent inventoryOpenEvent) {
 | 
					        checkSafety(inventoryOpenEvent);
 | 
				
			||||||
        checkSafety(inventoryOpenEvent);
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    @EventHandler
 | 
				
			||||||
    @EventHandler
 | 
					    public void onItemSpawn(final ItemSpawnEvent itemSpawnEvent) {
 | 
				
			||||||
    public void onItemSpawn(final ItemSpawnEvent itemSpawnEvent) {
 | 
					        checkSafety(itemSpawnEvent);
 | 
				
			||||||
        checkSafety(itemSpawnEvent);
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    @EventHandler
 | 
				
			||||||
    @EventHandler
 | 
					    public void onPlayerMove(final PlayerMoveEvent moveEvent) {
 | 
				
			||||||
    public void onPlayerMove(final PlayerMoveEvent moveEvent) {
 | 
					        checkSafety(moveEvent);
 | 
				
			||||||
        checkSafety(moveEvent);
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    @EventHandler
 | 
				
			||||||
    @EventHandler
 | 
					    public void onPlayerQuit(final PlayerQuitEvent quitEvent) {
 | 
				
			||||||
    public void onPlayerQuit(final PlayerQuitEvent quitEvent) {
 | 
					        checkSafety(quitEvent);
 | 
				
			||||||
        checkSafety(quitEvent);
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    @EventHandler
 | 
				
			||||||
    @EventHandler
 | 
					    public void onPlayerTeleport(final PlayerTeleportEvent teleportEvent) {
 | 
				
			||||||
    public void onPlayerTeleport(final PlayerTeleportEvent teleportEvent) {
 | 
					        checkSafety(teleportEvent);
 | 
				
			||||||
        checkSafety(teleportEvent);
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    @EventHandler
 | 
				
			||||||
    @EventHandler
 | 
					    public void onWorldLoad(final WorldLoadEvent worldLoadEvent) {
 | 
				
			||||||
    public void onWorldLoad(final WorldLoadEvent worldLoadEvent) {
 | 
					        checkSafety(worldLoadEvent);
 | 
				
			||||||
        checkSafety(worldLoadEvent);
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    public void onWorldSave(final WorldSaveEvent worldSaveEvent) {
 | 
				
			||||||
    @EventHandler
 | 
					        checkSafety(worldSaveEvent);
 | 
				
			||||||
    public void onWorldSave(final WorldSaveEvent worldSaveEvent) {
 | 
					    }
 | 
				
			||||||
        checkSafety(worldSaveEvent);
 | 
					
 | 
				
			||||||
    }
 | 
					    @EventHandler
 | 
				
			||||||
 | 
					    public void onWorldUnload(final WorldUnloadEvent worldUnloadEvent) {
 | 
				
			||||||
    @EventHandler
 | 
					        checkSafety(worldUnloadEvent);
 | 
				
			||||||
    public void onWorldUnload(final WorldUnloadEvent worldUnloadEvent) {
 | 
					    }
 | 
				
			||||||
        checkSafety(worldUnloadEvent);
 | 
					
 | 
				
			||||||
    }
 | 
					    private void checkSafety(final Event eventType) {
 | 
				
			||||||
 | 
					        if (Yum.mainThread != null && Thread.currentThread() != Yum.mainThread && !eventType.isAsynchronous()) {
 | 
				
			||||||
    private void checkSafety(final Event eventType) {
 | 
					            final String eventName = eventType.getEventName();
 | 
				
			||||||
        if (Yum.mainThread != null && Thread.currentThread() != Yum.mainThread && !eventType.isAsynchronous()) {
 | 
					            final Plugin plugin = PluginKit.getOperatePlugin();
 | 
				
			||||||
            final String eventName = eventType.getEventName();
 | 
					            if (plugin != null) {
 | 
				
			||||||
            final Plugin plugin = PluginKit.getOperatePlugin();
 | 
					                throw new IllegalAccessError("[Yum 线程安全]: 请勿异步调用一个同步事件 " + eventName + " 操作插件: " + plugin.getName());
 | 
				
			||||||
            if (plugin != null) {
 | 
					            }
 | 
				
			||||||
                throw new IllegalAccessError("[Yum 线程安全]: 请勿异步调用一个同步事件 " + eventName + " 操作插件: " + plugin.getName());
 | 
					        }
 | 
				
			||||||
            }
 | 
					    }
 | 
				
			||||||
        }
 | 
					}
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user