Jump to content

(solved) NoSuchFieldError thrown when testing mod after building it


Recommended Posts

Posted

Hallo guys,

strange thing happend to me and my first mod attempt (so it means I suck at knowing the unwritten rules and MCP + forge API alike)

 

I wrote my first mod, that correctly worked while running from eclipse. I built it and packaged used my adapted Ant Build (see here if need: http://hoppo.hopto.org/download/build.xml ). Then I tried using it in .minecraft space (with the commonly played minecraft.jar = vanilla + forge + player API; but I tried also basic vanilla + forge, which crashed too). Shortly after starting up and showing main menu it crashed with this log:

 

2013-01-18 17:04:26 [iNFO] [sTDERR] java.lang.NoSuchFieldError: e

2013-01-18 17:04:26 [iNFO] [sTDERR] at hoppo.tfc.orescanner.OreScannerInfo$TickHandler.tickEnd(OreScannerInfo.java:154)

2013-01-18 17:04:26 [iNFO] [sTDERR] at cpw.mods.fml.common.SingleIntervalHandler.tickEnd(SingleIntervalHandler.java:22)

2013-01-18 17:04:26 [iNFO] [sTDERR] at cpw.mods.fml.common.FMLCommonHandler.tickEnd(FMLCommonHandler.java:136)

2013-01-18 17:04:26 [iNFO] [sTDERR] at cpw.mods.fml.common.FMLCommonHandler.onRenderTickEnd(FMLCommonHandler.java:370)

2013-01-18 17:04:26 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.J(Minecraft.java:890)

2013-01-18 17:04:26 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.run(Minecraft.java:783)

2013-01-18 17:04:26 [iNFO] [sTDERR] at java.lang.Thread.run(Unknown Source)

 

 

after checking the line of code and field obfuscation CSV file it made me sure it is because of this code:

if (mcinstance.theWorld != null && mcinstance.thePlayer != null)
		{	

which I actualy taken from AtomicStryker's mod source (his mod worked fine on the same "to play" minecraft.jar configuration) and this condition to theWorld and thePlayer fields is commonly used over many minecraft, forge and mod sources (as I've seen while googling the issue)

 

so after about 8 hours of brainless searching and trying I turn to you good sirs

 

I owe you MCP configuration:

MCP 7.23

Forge src-1.4.5-6.4.0.395

 

followed forge install tutorials and readme file

used eclipse IDE and 1.6.0_20 JDK

 

I have feeling I have made a mistake with building process - something with reobfuscation (I exec reobfuscate.py from Ant build), but have no idea how to fix it  >:(

 

any suggestions or fix is welcome

thanks

 


PROBLEM SOLVED (yay):

So for the future reference of my NOOBness I post here how I solved it (after a good amount of sleep).

I installed 1.7 JDK and it was all it needed (1.7.0_11). Looks like the MCPs runtime python scripts are not backward compatible with Java 1.6 (which is worth noting if you have your jobs JDK isntalled as do I)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • https://mclo.gs/46Xf7Sq thanks
    • That seems to have fixed it, thank you!
    • I am having some issues starting an RLCraft server on a minimal install of Debian 12. I have Java installed and I'm able to start the vanilla Minecraft server jar no problem and people can join and play without any issues, as soon as I try to create a new directory with the Forge jar the initial install with the INSTALLER jar works when I use the java command with the --installServer flag, but as soon as I try to start the server using the forge jar that is NOT labelled with installer I get the following error: A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)         at java.base/java.lang.reflect.Method.invoke(Method.java:569)         at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70)         at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')         at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)         at net.minecraft.launchwrapper.Launch.main(Launch.java:28)         ... 6 more   I have tried using newer versions of Java directly from Oracle as well. Has anybody been successful in starting and running a RLCraft server from the terminal on a Linux machine? I cannot figure out why it doesn't want to work but the vanilla jar works without issue. Thank you in advance!
    • This is my latest attempt :  public class ManaScreen extends Screen { Mana mana = new Mana(); boolean removeManaBar = false; ResourceLocation manaBar = ResourceLocation.fromNamespaceAndPath(RSGArmoury.MOD_ID, "/textures/block/spawnable_arena_wall.png"); public ManaScreen() { super(Component.literal("Mana")); } @Override protected void init() { super.init(); Minecraft.getInstance().setScreen(this); } @Override public boolean isPauseScreen() { return false; } @Override public void render(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { pGuiGraphics.blit(manaBar, 10, -10, 0, 0, mana.getMana(), 10, mana.getMana(), 10); if (removeManaBar) { this.onClose(); return; } super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick); } public void addManaBar() { removeManaBar = false; Minecraft.getInstance().setScreen(new ManaScreen()); } public boolean removeManaBar() { return removeManaBar = true; } }
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.