From f715d9843c65291195dc70b7d5e4b68a233111e1 Mon Sep 17 00:00:00 2001 From: Reider745 Date: Mon, 7 Jul 2025 11:09:37 +0300 Subject: [PATCH] fixed: dead lock redstone --- src/main/java/com/reider745/block/CustomBlock.java | 6 ++---- src/main/java/com/reider745/hooks/ServerHooks.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/reider745/block/CustomBlock.java b/src/main/java/com/reider745/block/CustomBlock.java index 30425946..de21c673 100644 --- a/src/main/java/com/reider745/block/CustomBlock.java +++ b/src/main/java/com/reider745/block/CustomBlock.java @@ -11,6 +11,7 @@ import cn.nukkit.level.Level; import cn.nukkit.math.BlockFace; import com.reider745.api.CustomManager; import com.reider745.api.ReflectHelper; +import com.reider745.hooks.ServerHooks; import com.reider745.hooks.block.BlockPalette; import com.zhekasmirnov.innercore.api.NativeCallback; import com.zhekasmirnov.innercore.api.NativeItem; @@ -344,10 +345,7 @@ public class CustomBlock extends BlockSolidMeta implements RandomTick { this.level); return type; } else if (type == Level.BLOCK_UPDATE_REDSTONE || type == Level.BLOCK_UPDATE_NORMAL) { - RedstoneUpdateEvent ev = new RedstoneUpdateEvent(this); - getLevel().getServer().getPluginManager().callEvent(ev); - if (ev.isCancelled()) - return type; + ServerHooks.postApply.add(new RedstoneUpdateEvent(this)); return type; } return type; diff --git a/src/main/java/com/reider745/hooks/ServerHooks.java b/src/main/java/com/reider745/hooks/ServerHooks.java index f67a1fc0..3d0070bf 100644 --- a/src/main/java/com/reider745/hooks/ServerHooks.java +++ b/src/main/java/com/reider745/hooks/ServerHooks.java @@ -3,6 +3,7 @@ package com.reider745.hooks; import cn.nukkit.Server; import cn.nukkit.command.CommandSender; import cn.nukkit.command.defaults.VersionCommand; +import cn.nukkit.event.Event; import cn.nukkit.network.protocol.ProtocolInfo; import cn.nukkit.plugin.JavaPluginLoader; import cn.nukkit.plugin.PluginClassLoader; @@ -20,10 +21,14 @@ import com.zhekasmirnov.horizon.runtime.logger.Logger; import com.zhekasmirnov.innercore.api.NativeCallback; import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; @Hooks(className = "cn.nukkit.Server") public class ServerHooks { public static InnerCoreServer innerCoreServer = new InnerCoreServer(); + public static final List postApply = new CopyOnWriteArrayList<>(); @Inject public static void start(Server self) throws Exception { @@ -103,11 +108,15 @@ public class ServerHooks { EntityMotion.tick(); NativeCallback.onTick(); + for(Event event : postApply) { + Server.getInstance().getPluginManager().callEvent(event); + } + TpsCommand.innerCoreTimes[indexTime] = System.currentTimeMillis() - start; EventListener.isFirstTickEnd = true; } catch (Exception e) { - Logger.warning("IC-TICK", e.getCause()); + Logger.warning("IC-TICK", e); } }catch (Throwable e){ Logger.warning("IC-TICK", e);