Jump to content

[1.7.10][SOLVED] Weird world saved data loading bug


Recommended Posts

Posted

Good day everybody.

Today i met very strange bug with my world saved data:

[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.RuntimeException: Failed to instantiate class code.elix_x.mods.wcsw.world.climat.ChunkedClimateData
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.storage.MapStorage.loadData(MapStorage.java:64)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at code.elix_x.mods.wcsw.world.climat.ClimateHelper.getChunkedClimateData(ClimateHelper.java:38)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at code.elix_x.mods.wcsw.world.climat.ClimateHelper.getClimateDataAt(ClimateHelper.java:28)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at code.elix_x.mods.wcsw.rtg.world.biome.realistic.RealisticBiomePool.chooseBiome(RealisticBiomePool.java:36)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at code.elix_x.mods.wcsw.world.WCSWChunkManager.getBiomeDataAt(WCSWChunkManager.java:60)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at code.elix_x.mods.wcsw.world.WCSWChunkManager.getBiomeGenAt(WCSWChunkManager.java:161)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.gen.structure.MapGenScatteredFeature.canSpawnStructureAtCoords(MapGenScatteredFeature.java:80)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.gen.structure.MapGenStructure.func_151538_a(MapGenStructure.java:43)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.gen.MapGenBase.func_151539_a(MapGenBase.java:33)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at code.elix_x.mods.wcsw.world.WCSWChunkProvider.recreateStructures(WCSWChunkProvider.java:675)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraftforge.common.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:49)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraftforge.common.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:12)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraftforge.common.util.AsynchronousExecutor.skipQueue(AsynchronousExecutor.java:344)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraftforge.common.util.AsynchronousExecutor.getSkipQueue(AsynchronousExecutor.java:302)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraftforge.common.chunkio.ChunkIOExecutor.syncChunkLoad(ChunkIOExecutor.java:12)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:144)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:305)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:79)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:96)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: Caused by: java.lang.IllegalAccessException: Class net.minecraft.world.storage.MapStorage can not access a member of class code.elix_x.mods.wcsw.world.climat.ChunkedClimateData with modifiers "public"
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(Unknown Source)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.reflect.Constructor.newInstance(Unknown Source)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.world.storage.MapStorage.loadData(MapStorage.java:60)
[16:23:52] [server thread/INFO] [sTDERR/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	... 21 more

This is the weird line:

Caused by: java.lang.IllegalAccessException: Class net.minecraft.world.storage.MapStorage can not access a member of class code.elix_x.mods.wcsw.world.climat.ChunkedClimateData with modifiers [b]"public"[/b]

WHAT? How can this happen?

I don't think you need any code here, but if you do, please tell me.

 

Thanks for help!

If you have any questions - just ask!

Posted

Since there's an issue with your WorldSavedData, how about you post the code for it?

 

The stacktrace traces back to these lines of code:

try
                        {
                            worldsaveddata = (WorldSavedData)p_75742_1_.getConstructor(new Class[] {String.class}).newInstance(new Object[] {p_75742_2_});
                        }

As you can see, it tries to get the constructor with a

String

as an argument. Do you have that constructor?

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

Since there's an issue with your WorldSavedData, how about you post the code for it?

 

The stacktrace traces back to these lines of code:

try
                        {
                            worldsaveddata = (WorldSavedData)p_75742_1_.getConstructor(new Class[] {String.class}).newInstance(new Object[] {p_75742_2_});
                        }

As you can see, it tries to get the constructor with a

String

as an argument. Do you have that constructor?

Yes, of course. If i didn;t have it, it would throw MethodNotFoundException.

But, anyways:

class ChunkedClimateData extends WorldSavedData {

public static final String NAME = WCSWWorldSavedDataHelper.ChunkedClimateDataFolder + "%d_%d";

private static final MBT mbt = new MBT();

private Map<ChunkPosition, ClimateData> climate = new HashMap<ChunkPosition, ClimateData>();

public Map<ChunkPosition, Double> heights = new HashMap<ChunkPosition, Double>();

public ChunkedClimateData(String name) {
	super(name);
}

public ChunkedClimateData(int x, int z) {
	super(String.format(NAME, x, z));
}

public ChunkedClimateData(ChunkPosition pos) {
	this(pos.getX(), pos.getZ());
}

public ClimateData getClimatDataAt(ChunkPosition pos) {
	//		return climate.get(pos);
	ClimateData data = climate.get(pos);
	if(data == null){
		if(-100 <= pos.getX() && pos.getX() <= 100 && -100 <= pos.getZ() && pos.getZ() <= 100){
			data = new ClimateData((100 - Math.abs(pos.getX())) / 100f, (100 - Math.abs(pos.getZ())) / 100f, /*Math.abs(pos.getX()) / 100*/ 0, /*Math.abs(pos.getZ()) / 100*/ 0, 0, 0, 0, 0, 0, 0, 0);
		} else {
			data = null;
		}
		climate.put(pos, data);
	}
	return data;
}

public double getHeightAt(ChunkPosition pos) {
	return heights.get(pos);
}

@Override
public void readFromNBT(NBTTagCompound nbt) {
	DataCopier.copyData(mbt.fromNBT(nbt.getTag("data"), ChunkedClimateData.class), this);
}

@Override
public void writeToNBT(NBTTagCompound nbt) {
	nbt.setTag("data", mbt.toNBT(this));
}

}

 

EDIT: Oops. Just found it. Eclipse created class without public modifier. That's weird. But issue is now fixed.

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.