Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Class load event for mods?


Ernio
 Share

Recommended Posts

I was thinking if there is or could be a way of getting list of classes loaded by mod.

Every time a mod is loaded, there would be event fired with some Collection<Class> allowing other mods to for example read annotations on them.

Or you know - one-to-one event-class firing.

 

There is obviously order of loading mods so those loaded later might not catch those loaded before them, but this can be solved by either dependency or simply by making snapshot of mod's Collection<Class> and firing event for it at the very end (so when all mods are loaded).

 

Well, I am open to suggestions as to how this could be made without such event (listing classes on load) or expecting other feedback.

 

In other news - Forge (mod's) class loader allows to load more classes in runtime (am I the only one doing it?), so if it were for me - make event fire even then (not just in mod inits).

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • You never assign a value to this field, hence it will remain at the initial value null.
    • Problem with "Tons of Enchants". Make sure the mod is up to date. If it already is, report this to the mod author.
    • Hello, my question explained in title, there is my entity class:   So, little introducion, i want to make entity, that always be following player and it's have texture of specific block, now i need to make it invincible and neutral to all mobs, i figured out how to make my entity neutral, but can't understand how to make it invincible. (i take codebase from SlimeEntity)
    • The mod I'm trying to use requires version 1.14.4  Thank you for looking into it. Please let me know if there's anything I can do to fix this. 
    • Sorry for the late reply but I've tried it now. However, the game crashes when i press the button with the following error 1:22:08] [Render thread/FATAL] [minecraft/Minecraft]: Reported exception thrown! net.minecraft.crash.ReportedException: mouseClicked event handler at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:434) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.mouseButtonCallback(MouseHelper.java:90) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:191) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.MouseHelper.lambda$registerCallbacks$5(MouseHelper.java:190) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {} at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:89) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MainWindow.flipFrame(MainWindow.java:305) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1022) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:612) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_202] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_202] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_202] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} Caused by: java.lang.NullPointerException at net.the_goldbeards.lootdebugs.screen.PubScreen.lambda$init$0(PubScreen.java:56) ~[main/:?] {re:classloading} at net.minecraft.client.gui.widget.button.Button.onPress(Button.java:26) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.widget.button.AbstractButton.onClick(AbstractButton.java:18) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.widget.Widget.mouseClicked(Widget.java:136) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.INestedGuiEventHandler.mouseClicked(INestedGuiEventHandler.java:31) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.mouseClicked(ContainerScreen.java:299) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$mouseButtonCallback$0(MouseHelper.java:92) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} ... 23 more   and this is my Screenclass: package net.the_goldbeards.lootdebugs.screen; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.CraftingScreen; import net.minecraft.client.gui.screen.inventory.FurnaceScreen; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.ImageButton; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.network.NetworkHooks; import net.minecraftforge.fml.network.simple.SimpleChannel; import net.the_goldbeards.lootdebugs.LootDebugsMain; import net.the_goldbeards.lootdebugs.Server.PacketHandler; import net.the_goldbeards.lootdebugs.Server.ToServerFilterCheck; import net.the_goldbeards.lootdebugs.container.PubContainer; import net.the_goldbeards.lootdebugs.tileentity.PubTile; import org.apache.logging.log4j.Level; public class PubScreen extends ContainerScreen<PubContainer> { PubTile pubTile; private MatrixStack matrixStack; private static int i; private static int j; private static final ResourceLocation GUI = new ResourceLocation(LootDebugsMain.MOD_ID, "textures/gui/pub_gui.png"); private static final ResourceLocation CONTINUE_BUTTON = new ResourceLocation(LootDebugsMain.MOD_ID, "textures/gui/recipe_button.png"); public PubScreen(PubContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { super(screenContainer, inv, titleIn); // pubTile = (PubTile)screenContainer. } @Override protected void init() { super.init(); this.addButton(new ImageButton(this.guiLeft + 140, this.height / 2 - 30, 20, 18, 0, 0, 19, CONTINUE_BUTTON, (button) -> { System.out.println("BUtton PReeess" + "ssd"); //PacketHandler.CHANNEL.sendToServer(); System.out.println("hi"); PacketHandler.sendToServer(new ToServerFilterCheck(pubTile.getPos())); ((ImageButton)button).setPosition(this.guiLeft + 140, this.height / 2 - 30); })); this.titleX = (this.xSize - this.font.getStringPropertyWidth(this.title)) / 2; } @Override public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { this.renderBackground(matrixStack); super.render(matrixStack, mouseX, mouseY, partialTicks); this.renderHoveredTooltip(matrixStack, mouseX, mouseY); for(int i = 0; i < this.buttons.size(); ++i) { this.buttons.get(i).render(matrixStack,mouseX,mouseY,partialTicks); } } @Override protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int x, int y) { RenderSystem.color4f(1f,1f,1f,1f); this.minecraft.getTextureManager().bindTexture(GUI); int i = this.guiLeft; int j = this.guiTop; this.matrixStack = matrixStack; this.j= j; this.i = i; this.blit(matrixStack, i,j,0,0,this.xSize, this.ySize); if(false) { /*this.blit(matrixStack, i+55,j+13,183,2,28,0);//Water-emty this.blit(matrixStack, i+55,j+13,183,2,28,3);//Water-1 this.blit(matrixStack, i+55,j+13,183,2,38,5);//Water-2 this.blit(matrixStack, i+55,j+13,183,2,48,5);//Water-3 this.blit(matrixStack, i+55,j+13,183,2,64,12);//Water-4 this.blit(matrixStack, i+55,j+13,183,2,66,21);//Water-Full*/ } } /* protected void actionPerformed(Button button) { ExpandedIndustry.LOGGER.log(Level.DEBUG, "Button clicked"); if(button instanceof ImageButton) { ImageButton lb = (ImageButton)button; EnumAcceptType t = lb.cycleType(); tileEntity.setEnumType(t); PacketHandler.sendToServer(new ToServerFilterClick(0, tileEntity.getPos(), t.ordinal())); } }*/ }  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.