Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Saving and editing local stored data


Recommended Posts

Hey!

So I want to create a system that displays the number of a certain mob with a certain name, for example, a Creeper named "Creep". I know how to create the event, how to display the text, but what I need is a system that permit me to store the number value, and get it back even after game restart, any idea how to do this?

I'm developing in 1.15.2

Edited by Nitoxym
Link to post
Share on other sites
6 minutes ago, Nitoxym said:

Hey!

So I want to create a system that displays the number of a certain mob with a certain name, for example, a Creeper named "Creep". I know how to create the event, how to display the text, but what I need is a system that permit me to store the number value, and get it back even after game restart, any idea how to do this?

I'm developing in 1.15.2

Sounds like you want to use a capability. Probably a capability attached to the World.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
Share on other sites
Just now, Nitoxym said:

Does it work even if I change world / server in multiplayer? If so, how can I use it?

No it would be a different world. I guess I didn't know exactly what you wanted to do.

You want to through all worlds keep track of certain things?

If so you will need to write to a file yourself. Forge doesn't have anything for universal persistence that I know of. Though you can use basic IO or JSON(GSON) for stuff that is loaded and saved once.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
Share on other sites
2 minutes ago, Animefan8888 said:

You want to through all worlds keep track of certain things?

I need to store values, and keep them wherever I go, like a vanilla setting doesn't change on different world

3 minutes ago, Animefan8888 said:

If so you will need to write to a file yourself. Forge doesn't have anything for universal persistence that I know of. Though you can use basic IO or JSON(GSON) for stuff that is loaded and saved once.

Does Forge support that? YML, JSON, .properties, is there a "vanilla" way to do that, or I have to create one myself?

Link to post
Share on other sites
1 minute ago, Nitoxym said:

Does Forge support that? YML, JSON, .properties, is there a "vanilla" way to do that, or I have to create one myself?

You likely just need to use events to read and write the data. IE when the mod loads(FMLCommonSetupEvent) read the data from the file.

 

And the GSON library is included within the Minecraft/Minecraft Forge project so you can use that to read and write JSON files.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
Share on other sites
5 minutes ago, Animefan8888 said:

You likely just need to use events to read and write the data. IE when the mod loads(FMLCommonSetupEvent) read the data from the file.

 

And the GSON library is included within the Minecraft/Minecraft Forge project so you can use that to read and write JSON files.

Ok perfect, and how can I do that?

Link to post
Share on other sites
3 minutes ago, Nitoxym said:

Ok perfect, and how can I do that?

Click here. Or look up how to use the GSON library in Java.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
Share on other sites
3 hours ago, Nitoxym said:

Well, I can't figure how to do it, I feel stupid '-'

Which part can you not figure out?
How to use GSON to write Json to file?
How to get the .minecraft file location?

 

If you want to use .dat I believe you need to store your data in a CompoundNBT then use net.minecraft.nbt.CompressedStreamTools to read and write your file when you need/want to.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
Share on other sites
9 hours ago, Animefan8888 said:

Which part can you not figure out?
How to use GSON to write Json to file?
How to get the .minecraft file location?

.minecraft, I might have an idea, but not sure, to use GSON, I have no idea, and I don't understand most of the posts

9 hours ago, Animefan8888 said:

If you want to use .dat I believe you need to store your data in a CompoundNBT then use net.minecraft.nbt.CompressedStreamTools to read and write your file when you need/want to.

May I have any example please? Or any method to do this

Link to post
Share on other sites
3 minutes ago, Nitoxym said:

May I have any example please? Or any method to do this

Take a look at those two classes. CompoundNBT and CompressedStreamTools.

 

3 minutes ago, Nitoxym said:

.minecraft

You can get the game directory by doing Minecraft.getInstance().gameDir but do note that this will not work on dedicated server.

5 minutes ago, Nitoxym said:

but not sure, to use GSON, I have no idea, and I don't understand most of the posts

Here is an example where I have used GSON to write JSON files. Though it might be too complicated for an example.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
Share on other sites
2 minutes ago, Animefan8888 said:

Take a look at those two classes. CompoundNBT and CompressedStreamTools.

Ok, i'll check docs for that

2 minutes ago, Animefan8888 said:

You can get the game directory by doing Minecraft.getInstance().gameDir but do note that this will not work on dedicated server.

It is a client only mod (and personal tool) so no problems with that

2 minutes ago, Animefan8888 said:

Here is an example where I have used GSON to write JSON files. Though it might be too complicated for an example.

Ok, thanks, i'm checking that!

Link to post
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.

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



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • I have custom mappings. I have a repository with them. I tryed to attach them: ... minecraft { mappings channel: 'custom', version: 'com.github.GoogeTan:TheMappings:Tag' accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { client { workingDirectory project.file('run') property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' property 'forge.logging.console.level', 'debug' ... But it shouts: A problem occurred configuring root project 'PhoenixProject'. > Supplied String module notation 'net.minecraftforge:forge:1.15.2-31.2.47_mapped_custom_com.github.GoogeTan:TheMappings:Tag_at_904f7754f2116b78834cf8ff88239b5b038624fc' is invalid. Example notations: 'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'. What i sould do?
    • I found a pretty thing: `IModLocator#findPath` It's look as good solve to get actual location of "service" files for each mod
    • Have you been able to generate them properly ? I'm struggling on that bit
    • The thing is that your chunk generator is generated deep inside the data pack loading - before there is even a world (check where DimensionGeneratorSettings.CODEC is used - this is what ultimately will instantiate your chunk generator). fillFromNoise will (as far as I can tell) always be called on a WorldGenRegion (don't rely on this, mods might do bad things). IWorld has a method getLevel which will return you the ServerWorld - but not all implementations will provide you something useful here (all vanilla implementations, WorldGenRegion and ServerWorld, do, but again, don't rely on this). So, you can get at the ServerWorld by calling getLevel. Now what? Well, you have achieved nothing, because you cannot use this world in a useful way. You are running on a world generation thread and ServerWorld is not threadsafe. Do not be tempted to ignore this, you will crash the game or cause strange behavior at some point. It will probably work fine for a long time. Then crash or do something stupid once - and then behave again. You could try and create some kind of thread-safe storage that your generator can then use. How do you populate it? You cannot use WorldEvent.Load because the game actually does a whole bunch of "setting up" (e.g. setting the spawn position) before that fires - which loads chunks. What you have to do instead is use AttachCapabilitiesEvent<World> which fires right from the ServerWorld constructor. In there, get your WorldSavedData and put it in a thread safe map with weak keys (Weak keys because otherwise your map will prevent worlds from being unloaded; Guava's MapMaker does this for you: MapMaker().weakKeys().makeMap()). Then you can access this map from your chunk generator using the ServerWorld you get from the IWorld. Note that whatever data you access in the WorldSavedData must still be threadsafe (for example you can't use an ArrayList). This is untested - but should work.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.