Jump to content

AccessTransfomers - can't get it to work


0xC6607Eo1

Recommended Posts

Using the tutorial's AccessTransformer:

 

package il.steamcraft.asm;

import java.io.IOException;
import java.lang.reflect.Method;

import cpw.mods.fml.common.asm.transformers.AccessTransformer;

public class SteamcraftAccessTransformer extends AccessTransformer
{
private static SteamcraftAccessTransformer instance;

public SteamcraftAccessTransformer() throws IOException
{
	super();
	instance = this;
	this.readMapFile("Steamcraft_at.cfg");
}

private void readMapFile(String name)
{
	System.out.println("Steamcraft Transformer Map: "+name);
	try
	{
		Method e = AccessTransformer.class.getDeclaredMethod("readMapFile", new Class[]{String.class});
		e.setAccessible(true);
		e.invoke(this, new Object[]{name});
	}
	catch(Exception ex)
	{
		throw new RuntimeException(ex);
	}
}
}

 

And I'm using the basic stuff: LoadingPlugin and DummyContainer.

I have execluded for Eclipse to run the transformer, but I have exported it and it loads fine.

I'm using the following Steamcraft_at.cfg :

#World
public aab.E #FD:World/field_72985_G #spawnHostileMobs

 

Its for testing purposes, and I can't get it to work. Just results in a crash when I try to change the spawnHostileMobs in the DummyContainer

@Subscribe
public void onServerStarting(FMLServerStartingEvent ev) {
        ev.getServer().worldServerForDimension(0).spawnHostileMobs = false;    
}

 

Crashlog:

2013-04-19 22:47:12 [sEVERE] [ForgeModLoader] Fatal errors were detected during the transition from SERVER_ABOUT_TO_START to SERVER_STOPPED. Loading cannot continue
2013-04-19 22:47:12 [sEVERE] [ForgeModLoader] 
mcp{7.44} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{5.1.28.659} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{7.7.1.659} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
SCASM{SC0.3} [steamcraft ASM] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
SC{SC0.3} [steamcraft] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
2013-04-19 22:47:12 [sEVERE] [ForgeModLoader] The ForgeModLoader state engine has become corrupted. Probably, a state was missed by and invalid modification to a base classForgeModLoader depends on. This is a critical error and not recoverable. Investigate any modifications to base classes outside ofForgeModLoader, especially Optifine, to see if there are fixes available.
2013-04-19 22:47:12 [iNFO] [sTDERR] Exception in thread "Server thread" java.lang.RuntimeException: The ForgeModLoader state engine is invalid
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at cpw.mods.fml.common.LoadController.transition(LoadController.java:134)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at cpw.mods.fml.common.Loader.serverStopped(Loader.java:800)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.handleServerStopped(FMLCommonHandler.java:468)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:530)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

 

I have checked and yes, when I remove the code of the hostileMobs it works fine.

So whats the problem over here ?

 

EDIT: Forgot this crashlog:

2013-04-20 00:58:05 [sEVERE] [ForgeModLoader] A fatal exception occurred during the server starting event
java.lang.Error: Unresolved compilation problem: 
The field World.spawnHostileMobs is not visible

at il.steamcraft.asm.SteamcraftContainer.onServerStarting(SteamcraftContainer.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:98)
at cpw.mods.fml.common.Loader.serverStarting(Loader.java:739)
at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:314)
at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:429)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

 

As you can see, it dosen't apply towards the spawnHostileMobs and I can't understand why.

 

Also the code executes the Steamcraft_at.cfg :

2013-04-19 22:47:04 [iNFO] [sTDOUT] Reading mapFile Steamcraft_at.cfg

Link to comment
Share on other sites

Using the tutorial's AccessTransformer:

 

package il.steamcraft.asm;

import java.io.IOException;
import java.lang.reflect.Method;

import cpw.mods.fml.common.asm.transformers.AccessTransformer;

public class SteamcraftAccessTransformer extends AccessTransformer
{
private static SteamcraftAccessTransformer instance;

public SteamcraftAccessTransformer() throws IOException
{
	super();
	instance = this;
	this.readMapFile("Steamcraft_at.cfg");
}

private void readMapFile(String name)
{
	System.out.println("Steamcraft Transformer Map: "+name);
	try
	{
		Method e = AccessTransformer.class.getDeclaredMethod("readMapFile", new Class[]{String.class});
		e.setAccessible(true);
		e.invoke(this, new Object[]{name});
	}
	catch(Exception ex)
	{
		throw new RuntimeException(ex);
	}
}
}

 

And I'm using the basic stuff: LoadingPlugin and DummyContainer.

I have execluded for Eclipse to run the transformer, but I have exported it and it loads fine.

I'm using the following Steamcraft_at.cfg :

#World
public aab.E #FD:World/field_72985_G #spawnHostileMobs

 

Its for testing purposes, and I can't get it to work. Just results in a crash when I try to change the spawnHostileMobs in the DummyContainer

@Subscribe
public void onServerStarting(FMLServerStartingEvent ev) {
        ev.getServer().worldServerForDimension(0).spawnHostileMobs = false;    
}

 

Crashlog:

2013-04-19 22:47:12 [sEVERE] [ForgeModLoader] Fatal errors were detected during the transition from SERVER_ABOUT_TO_START to SERVER_STOPPED. Loading cannot continue
2013-04-19 22:47:12 [sEVERE] [ForgeModLoader] 
mcp{7.44} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{5.1.28.659} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{7.7.1.659} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
SCASM{SC0.3} [steamcraft ASM] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
SC{SC0.3} [steamcraft] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
2013-04-19 22:47:12 [sEVERE] [ForgeModLoader] The ForgeModLoader state engine has become corrupted. Probably, a state was missed by and invalid modification to a base classForgeModLoader depends on. This is a critical error and not recoverable. Investigate any modifications to base classes outside ofForgeModLoader, especially Optifine, to see if there are fixes available.
2013-04-19 22:47:12 [iNFO] [sTDERR] Exception in thread "Server thread" java.lang.RuntimeException: The ForgeModLoader state engine is invalid
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at cpw.mods.fml.common.LoadController.transition(LoadController.java:134)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at cpw.mods.fml.common.Loader.serverStopped(Loader.java:800)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.handleServerStopped(FMLCommonHandler.java:468)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:530)
2013-04-19 22:47:12 [iNFO] [sTDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

 

I have checked and yes, when I remove the code of the hostileMobs it works fine.

So whats the problem over here ?

 

EDIT: Forgot this crashlog:

2013-04-20 00:58:05 [sEVERE] [ForgeModLoader] A fatal exception occurred during the server starting event
java.lang.Error: Unresolved compilation problem: 
The field World.spawnHostileMobs is not visible

at il.steamcraft.asm.SteamcraftContainer.onServerStarting(SteamcraftContainer.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:98)
at cpw.mods.fml.common.Loader.serverStarting(Loader.java:739)
at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:314)
at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:429)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

 

As you can see, it dosen't apply towards the spawnHostileMobs and I can't understand why.

 

Also the code executes the Steamcraft_at.cfg :

2013-04-19 22:47:04 [iNFO] [sTDOUT] Reading mapFile Steamcraft_at.cfg

Link to comment
Share on other sites

 

Mhm. Mhm-..

 

I'm just asking why is the transformer dosen't work, the code seems to be okay and I'm just testing some stuff.

In one of my progress that I have deleted I had a problem with the AccessTransformer, and I couldn't get it to work properly.

It has loaded the cfg and evertyhing, I have withdrawed the code from the srg file but it didn't transform it to a public insted of a protected.

I'm just trying to understand why the code isn't effected.

Link to comment
Share on other sites

 

Mhm. Mhm-..

 

I'm just asking why is the transformer dosen't work, the code seems to be okay and I'm just testing some stuff.

In one of my progress that I have deleted I had a problem with the AccessTransformer, and I couldn't get it to work properly.

It has loaded the cfg and evertyhing, I have withdrawed the code from the srg file but it didn't transform it to a public insted of a protected.

I'm just trying to understand why the code isn't effected.

Link to comment
Share on other sites

I believe you have to actually change the visibility of spawnHostileMobs to public in the minecraft code. The tutorial says this:

 

On the line where it says 'spawnHostileMobs', there'll be an error. Choose the first option in the box that pops up when you hover over it.

 

I believe that the first option in the box that pops up changes spawnHostileMobs from private to public.

 

Can someone clarify? I've been confused by this too. Thanks!

Link to comment
Share on other sites

I believe you have to actually change the visibility of spawnHostileMobs to public in the minecraft code. The tutorial says this:

 

On the line where it says 'spawnHostileMobs', there'll be an error. Choose the first option in the box that pops up when you hover over it.

 

I believe that the first option in the box that pops up changes spawnHostileMobs from private to public.

 

Can someone clarify? I've been confused by this too. Thanks!

Link to comment
Share on other sites

I believe you have to actually change the visibility of spawnHostileMobs to public in the minecraft code. The tutorial says this:

 

On the line where it says 'spawnHostileMobs', there'll be an error. Choose the first option in the box that pops up when you hover over it.

 

I believe that the first option in the box that pops up changes spawnHostileMobs from private to public.

 

Can someone clarify? I've been confused by this too. Thanks!

 

Thats for the MCP only as I understand, cause it should work without it.

I saw the ChickenBone's AccessTransformer I don't understand how he did it. but the mod makers just need to use it and it should work.

But how, I have no idea ..

Link to comment
Share on other sites

I believe you have to actually change the visibility of spawnHostileMobs to public in the minecraft code. The tutorial says this:

 

On the line where it says 'spawnHostileMobs', there'll be an error. Choose the first option in the box that pops up when you hover over it.

 

I believe that the first option in the box that pops up changes spawnHostileMobs from private to public.

 

Can someone clarify? I've been confused by this too. Thanks!

 

Thats for the MCP only as I understand, cause it should work without it.

I saw the ChickenBone's AccessTransformer I don't understand how he did it. but the mod makers just need to use it and it should work.

But how, I have no idea ..

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.
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



×
×
  • Create New...

Important Information

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