diff --git a/src/main/java/com/reider745/event/EventListener.java b/src/main/java/com/reider745/event/EventListener.java index dcc040cc..4dc8ccfc 100644 --- a/src/main/java/com/reider745/event/EventListener.java +++ b/src/main/java/com/reider745/event/EventListener.java @@ -21,6 +21,8 @@ import cn.nukkit.event.level.ChunkLoadEvent; import cn.nukkit.event.level.ChunkPopulateEvent; import cn.nukkit.event.level.ChunkUnloadEvent; import cn.nukkit.event.player.*; +import cn.nukkit.event.plugin.PluginDisableEvent; +import cn.nukkit.event.plugin.PluginEnableEvent; import cn.nukkit.event.redstone.RedstoneUpdateEvent; import cn.nukkit.event.server.ServerCommandEvent; import cn.nukkit.event.server.ServerStopEvent; @@ -39,6 +41,7 @@ import cn.nukkit.math.Vector3; import cn.nukkit.network.protocol.UpdateBlockPacket; import cn.nukkit.scheduler.AsyncTask; import com.reider745.InnerCoreServer; +import com.reider745.api.ZoteOnly; import com.reider745.hooks.ServerHooks; import com.reider745.hooks.network.RakNetPlayerSessionHooks; import com.reider745.item.ItemMethod; @@ -46,6 +49,7 @@ import com.reider745.world.BiomesMethods; import com.reider745.world.FakeDimensions; import com.zhekasmirnov.apparatus.mcpe.NativeWorkbench; import com.zhekasmirnov.apparatus.multiplayer.Network; +import com.zhekasmirnov.innercore.api.runtime.Callback; import oshi.hardware.NetworkIF; import java.util.*; @@ -606,6 +610,18 @@ public class EventListener implements Listener { } } + @ZoteOnly + @EventHandler + public void onPluginEnable(PluginEnableEvent event) { + Callback.invokeCallback("PluginEnable", event.getPlugin()); + } + + @ZoteOnly + @EventHandler + public void onPluginDisable(PluginDisableEvent event) { + Callback.invokeCallback("PluginDisable", event.getPlugin()); + } + // TODO: onPathNavigationDone // TODO: onBlockSpawnResources diff --git a/src/main/java/com/reider745/hooks/ServerHooks.java b/src/main/java/com/reider745/hooks/ServerHooks.java index 1a746410..718fe904 100644 --- a/src/main/java/com/reider745/hooks/ServerHooks.java +++ b/src/main/java/com/reider745/hooks/ServerHooks.java @@ -3,6 +3,8 @@ package com.reider745.hooks; import cn.nukkit.Server; import cn.nukkit.level.generator.Normal; import cn.nukkit.network.protocol.ProtocolInfo; +import cn.nukkit.plugin.JavaPluginLoader; +import cn.nukkit.plugin.PluginClassLoader; import cn.nukkit.utils.Config; import cn.nukkit.utils.Utils; @@ -18,6 +20,8 @@ import com.reider745.event.EventListener; import com.zhekasmirnov.horizon.runtime.logger.Logger; import com.zhekasmirnov.innercore.api.NativeCallback; +import java.io.File; + @Hooks(className = "cn.nukkit.Server") public class ServerHooks { public static InnerCoreServer innerCoreServer = new InnerCoreServer(); @@ -113,4 +117,9 @@ public class ServerHooks { public static String getVersion(Server server) { return 'v' + Utils.getVersionByProtocol(ProtocolInfo.v1_16_200); } + + @Inject(type = TypeHook.AFTER, method = "", className = "cn.nukkit.plugin.PluginClassLoader") + public static void newPluginClassLoader(PluginClassLoader self, JavaPluginLoader loader, ClassLoader parent, File file) { + RhinoOverrides.ClassLoaderPool.addClassLoader(self); + } }