Posted May 14, 201312 yr Alright, I'm trying to figure out how to handle data storage for information that needs to be accessible from the world. It's essentially information about a player entity, but needs to be accessible from a tile entity while the player is offline, hence I can't use extended player data, I need to save it to either its own NBT file or to the main world data file. Having trouble implementing this. I found one solution that extends WorldSavedData, but there were a few errors (such as no providing a proper constructor) that I am not sure how to solve. Eg. the constructor used was one that takes no parameters, but WorldSavedData doesn't have a matching constructor, as its only constructor takes a string paramter, but I am not sure what I should be passing. I also am not sure if I should be instancing this class once for my entire mod and storing each player's info in it, or if I should be using one instance per player (and what the differences in construction would be; that is not the read and write NBT parts). Help? Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
May 14, 201312 yr I know diesieben07 has done something similar. Here is his code on this matter: https://github.com/diesieben07/Questology/blob/master/source/demonmodders/questology/QuestologyWorldData.java Don't ask me how he does it.. As you know I am trying to figure this out but with Player data I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes. I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there
May 14, 201312 yr Author Each WorldSavedData has a unique identifier (for maps this is map_0, map_1 and so on). That is the parameter the constructor takes. Also think about if you want actual per World (=per dimension) storage or just a per map (= per save) storage. For per world use world.perWorldStorage and for per map use world.mapStorage. Then to create a new data use YourAwesomeData data = new YourAwesomeData("IDENTIFIER"); world.perWorldStorage.setData("IDENTIFIER", data); // or world.mapStorage To get that data back any time use YourAwesomeData data = (YourAwesomeData)world.perWorldStorage.loadData("IDENTIFIER"); loadData will return null if the data has not been created yet. Thats it. Just be sure to always call markDirty() on your data when you change a value, otherwise MC will not save it. If you want an example look at the link Mew posted. Ah ha. Thanks. I definitely don't need it per dimension, just per save. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
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.