From b068c76fc86bd7b15dee07b98a3c5c8552202e98 Mon Sep 17 00:00:00 2001 From: luisc Date: Sat, 23 Oct 2021 02:43:28 -0500 Subject: [PATCH] Fixed some forge events not working from being registered on the wrong event bus. --- .../noppes/npcs/ScriptPlayerEventHandler.java | 28 ++++++++++-- .../client/gui/script/GuiScriptInterface.java | 45 ++++++++++++++----- 2 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index ce0e59c35..c1ebd7f06 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -15,6 +15,7 @@ import java.util.Arrays; import java.util.Iterator; import java.util.Vector; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.eventhandler.Event; @@ -365,10 +366,10 @@ public class ScriptPlayerEventHandler { try { Method e = handler.getClass().getMethod("forgeEntity", new Class[]{Event.class}); - Method register = MinecraftForge.EVENT_BUS.getClass().getDeclaredMethod("register", new Class[]{Class.class, Object.class, Method.class, ModContainer.class}); + Method register = FMLCommonHandler.instance().bus().getClass().getDeclaredMethod("register", new Class[]{Class.class, Object.class, Method.class, ModContainer.class}); register.setAccessible(true); ArrayList list = new ArrayList(); - list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("cpw.mods.fml.common")); + list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("cpw.mods.fml.common.gameevent")); list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("net.minecraftforge.event")); Iterator e1 = list.iterator(); @@ -412,7 +413,7 @@ public class ScriptPlayerEventHandler { while(var10.hasNext()) { Class c1 = (Class)var10.next(); if(!EntityConstructing.class.isAssignableFrom(c1) && !PotentialSpawns.class.isAssignableFrom(c1) && !TickEvent.RenderTickEvent.class.isAssignableFrom(c1) && !TickEvent.ClientTickEvent.class.isAssignableFrom(c1) && !FMLNetworkEvent.ClientCustomPacketEvent.class.isAssignableFrom(c1) && !ItemTooltipEvent.class.isAssignableFrom(c1) && Event.class.isAssignableFrom(c1) && !Modifier.isAbstract(c1.getModifiers()) && Modifier.isPublic(c1.getModifiers())) { - register.invoke(MinecraftForge.EVENT_BUS, new Object[]{c1, handler, e, Loader.instance().activeModContainer()}); + register.invoke(FMLCommonHandler.instance().bus(), new Object[]{c1, handler, e, Loader.instance().activeModContainer()}); } } } @@ -452,4 +453,25 @@ public class ScriptPlayerEventHandler { } } } + + /*@SubscribeEvent + public void forgeTick(TickEvent.ServerTickEvent event){ + if(event.side == Side.SERVER && event.phase == TickEvent.Phase.START) { + EventHooks.onForgeEvent(new ForgeEvent(event), event); + } + } + + @SubscribeEvent + public void forgeTick(TickEvent.WorldTickEvent event){ + if(event.side == Side.SERVER && event.phase == TickEvent.Phase.START) { + EventHooks.onForgeEvent(new ForgeEvent(event), event); + } + } + + @SubscribeEvent + public void forgeTick(TickEvent.PlayerTickEvent event){ + if(event.side == Side.SERVER && event.phase == TickEvent.Phase.START) { + EventHooks.onForgeEvent(new ForgeEvent(event), event); + } + }*/ } \ No newline at end of file diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index 4b7df1106..735689a0d 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -93,6 +93,13 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb top.active = true; if(this.activeTab > 0) { List hookList = new ArrayList(); + + GuiCustomScroll hooks = new GuiCustomScroll(this, 1); + hooks.allowUserInput = false; + hooks.setSize(108, 198); + hooks.guiLeft = guiLeft - 110; + hooks.guiTop = guiTop + 14; + if(handler instanceof PlayerDataScript) { hookList.add("init"); hookList.add("tick"); @@ -132,33 +139,47 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb hookList.add("changedDim"); } else if(handler instanceof ForgeDataScript) { + hooks.setSize(238, 198); + hooks.guiLeft = guiLeft - 240; + hookList.add("init"); ArrayList list = new ArrayList(); try { + list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("cpw.mods.fml.common.event")); + list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("cpw.mods.fml.common.gameevent")); list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("net.minecraftforge.event")); } catch (IOException e) { e.printStackTrace(); } - for(ClassPath.ClassInfo classInfo : list){ - String eventName = classInfo.getName(); - int i = eventName.lastIndexOf("."); - eventName = StringUtils.uncapitalize(eventName.substring(i + 1).replace("$", "")); + for(ClassPath.ClassInfo e1 : list){ + ClassPath.ClassInfo classLoader = e1; + Class infoClass = classLoader.load(); + ArrayList c = new ArrayList(Arrays.asList(infoClass.getDeclaredClasses())); + if(c.isEmpty()) { + c.add(infoClass); + } + Iterator var10 = c.iterator(); + while(var10.hasNext()) { + Class c1 = (Class) var10.next(); + if (!EntityEvent.EntityConstructing.class.isAssignableFrom(c1) && !WorldEvent.PotentialSpawns.class.isAssignableFrom(c1) && !TickEvent.RenderTickEvent.class.isAssignableFrom(c1) && !TickEvent.ClientTickEvent.class.isAssignableFrom(c1) && !FMLNetworkEvent.ClientCustomPacketEvent.class.isAssignableFrom(c1) && !ItemTooltipEvent.class.isAssignableFrom(c1) && Event.class.isAssignableFrom(c1) && !Modifier.isAbstract(c1.getModifiers()) && Modifier.isPublic(c1.getModifiers())) { + String eventName = c1.getName(); + int i = eventName.lastIndexOf("."); + eventName = StringUtils.uncapitalize(eventName.substring(i + 1).replace("$", "")); - hookList.add(eventName); + hookList.add(eventName); + } + } } } - - addLabel(new GuiNpcLabel(0, "script.hooks", guiLeft - 160, guiTop + 5)); - GuiCustomScroll hooks = new GuiCustomScroll(this, 1); - hooks.allowUserInput = false; - hooks.setSize(158, 198); - hooks.guiLeft = guiLeft - 160; - hooks.guiTop = guiTop + 14; hooks.setUnsortedList(hookList); addScroll(hooks); + GuiNpcLabel hookLabel = new GuiNpcLabel(0, "script.hooks", hooks.guiLeft, guiTop + 5); + hookLabel.color = 0xaaaaaa; + addLabel(hookLabel); + EventScriptContainer var7 = (EventScriptContainer)this.handler.getScripts().get(this.activeTab - 1); GuiNpcTextArea left = new GuiNpcTextArea(2, this, this.guiLeft + yoffset, this.guiTop + yoffset, this.xSize - 110 - yoffset, (int)((double)this.ySize * 0.96D) - yoffset * 2, var7 == null?"":var7.script); this.addTextField(left);