Posted April 19, 201510 yr I have a class that extends WorldSavedData in my mod. This class saves data to the NBT telling my mod which components of it to load for each specific world. When I create a world initially, the components that need to load will load. Upon restarting the world, but not Minecraft, the components load again. However, upon a Minecraft restart, the components no longer work. The code for my WorldSavedData class is below: package tk.cephlab.ea.internal; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.WorldSavedData; import tk.cephlab.ea.EALoader; import tk.cephlab.ea.api.EAPlugin; public class EAWorldData extends WorldSavedData { public EAWorldData() { super("EAWorldData"); } @Override public void readFromNBT(NBTTagCompound nbt) { EAPlugin.day = nbt.getInteger("eaDays"); for(EAPlugin plugin : EALoader.instance().getPluginList()) { if(nbt.getString("loadedPlugin" + EALoader.instance().getPluginList().indexOf(plugin)) == null) continue; if(nbt.getString("loadedPlugin" + EALoader.instance().getPluginList().indexOf(plugin)) == plugin.getIdentifier()) { System.out.println("Loaded"); EALoader.instance().initPlugin(plugin); } } for(EAPlugin plugin : EALoader.instance().loadedPlugins) { plugin.phase = nbt.getInteger(plugin.getIdentifier() + "_phase"); } } @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("eaDays", EAPlugin.day); for(EAPlugin plugin : EALoader.instance().loadedPlugins) { nbt.setInteger(plugin.getIdentifier() + "_phase", plugin.phase); nbt.setString("loadedPlugin" + EALoader.instance().loadedPlugins.indexOf(plugin), plugin.getIdentifier()); } } } Any and all help is appreciated.
April 19, 201510 yr Author Switching to using modId is still not working. package tk.cephlab.ea.internal; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; import net.minecraft.world.storage.MapStorage; import tk.cephlab.ea.EALoader; import tk.cephlab.ea.api.EAPlugin; public class EAWorldData extends WorldSavedData { public EAWorldData(String s) { super(s); } public EAWorldData() { super("EAWorldData"); } public static EAWorldData forWorld(World world) { MapStorage storage = world.getPerWorldStorage(); EAWorldData returnable = (EAWorldData)storage.loadData(EAWorldData.class, "EAWorldData"); if(returnable == null) { returnable = new EAWorldData(); storage.setData("EAWorldData", returnable); } return returnable; } @Override public void readFromNBT(NBTTagCompound nbt) { EAPlugin.day = nbt.getInteger("eaDays"); System.out.println("READ"); for(EAPluginContainer plugin : EALoader.instance().getPluginList()) { if(nbt.getString("loadedPlugin" + EALoader.instance().getPluginList().indexOf(plugin)) == null) continue; if(nbt.getString("loadedPlugin" + plugin.container.getModId()) == plugin.container.getModId()) { System.out.println("Loaded"); EALoader.instance().initPlugin(plugin); } } for(EAPluginContainer plugin : EALoader.instance().loadedPlugins) { plugin.plugin.phase = nbt.getInteger(plugin.plugin.getIdentifier() + "_phase"); } } @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("eaDays", EAPlugin.day); System.out.println("WRITE"); for(EAPluginContainer plugin : EALoader.instance().loadedPlugins) { nbt.setInteger(plugin.plugin.getIdentifier() + "_phase", plugin.plugin.phase); nbt.setString("loadedPlugin" + plugin.container.getModId(), plugin.container.getModId()); } } }
April 19, 201510 yr if(nbt.getString("loadedPlugin" + EALoader.instance().getPluginList().indexOf(plugin)) == null) continue; You need to use the modID here too. 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/
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.