mirror of https://e.coding.net/circlecloud/Yum.git
parent
5491119c73
commit
60c08f0aca
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());
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue