Feat: added callbacks PluginEnable/Disable & added PluginClassLoader to rhino

This commit is contained in:
Reider745
2024-12-25 10:42:27 +03:00
parent 61236d2392
commit 1e8685b943
2 changed files with 25 additions and 0 deletions
@@ -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
@@ -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 = "<init>", className = "cn.nukkit.plugin.PluginClassLoader")
public static void newPluginClassLoader(PluginClassLoader self, JavaPluginLoader loader, ClassLoader parent, File file) {
RhinoOverrides.ClassLoaderPool.addClassLoader(self);
}
}