Jump to content

Data Storage


Black

Recommended Posts

Good Afternoon,

 

I have a question for the people quite at home with minecraft & forge code.

 

My mod contains, among other, a tree and wood items for every mob in the game, whether that mob is from a mod or not, as long as it has a spawnegg.

So as an example, the creeper has a log, plank, leaf, sapling, stair, slab, button, craftingbench etc that belongs to him.

These items have certain qualities depending on which mob they belong to, such as blastresistance, a redstone signal only when that mob walks over them etc.

The textures are blended layers(with opengl) coloured by the primary and secondary colours of the mobs spawnegg.

And naturally since it needs to be modular and for efficiency's sake every particular block is merely a subblock from its base(E.g. BaseSapling, BasePlank).

(Yes, I realise, this is quite a silly premise but it is a fun project since there are a lot of things to flesh it out with like tree grafting, biomes etc.)

 

In any case, you might have heard me coming from a long mile, but the metadata is insufficient to store the itemdamage from the egg(which is the same as the mob id).

I need that to give the block its correct characteristics.

Now I'm certainly not new to OOP, although I am to minecraft modding, so I wasn't really bothered with that.

I am currently at the point where I have to implement it or I won't be able to move forward and I came up with a few solutions, the one prettier or uglier than the other.

I am wondering however, if there are alternative solutions or methods that implement my solutions in a better way. I have looked through the code quite extensively but I have yet to find anything of the sort. (I might just have overlooked something though, that is always possible).

 

Solutions:

 

- Make of the block a tile entity, the easiest solution but also the most wasteful. I only need to store the blocks coordinates and a single number so to make blocks    that can be plentiful in the word entities (e.g. the player can build his house out of it, there can be entire biomes) is saying goodbye to any frames per second you ever had. And since I also have a lot of other blocks being tile entities or models with polygons above the 200 I'd rather not do this.

- Create one tile entity for all the blocks and save that tile entity in the first block of its kind created. The downside is that that chunk always need to be loaded then and you need to migrate the data if that block is broken.

- The same as above but this time save it in the spawnchunks. The chunks are allready loaded but the chunks need to have a block that is either of that kind or override another block. And once again the problem of it having the chance of being broken.

- Save the data in the chunk of the block. The problem being here that the way chunks save data is by its blocks and the same limitations with the metadata persist.

- Override parts of the save classes so that they save the four numbers for each block in the level.dat and read it again when the game loads into a hashmap.

There are no tile entities here but adjusting the level.dat would be quite a messy procedure.

- Do the same as the above however save the data to a separate file next to level.dat

The downside here is that the data is separate from the rest of the game(and can be forgotten or deleted) but it is a very easy implementation.

- Bind an itemstack to the block to read the itemdamage. This however doubles the amount of things.

 

Pardon the lack of a decent list but the buttons to add them here to add quotes, lists, code etc have never worked for me and I don't know the forumcode to add lists.

 

So let me repeat my question. Does forge or minecraft implement one the methods above that make this a lot easier or do they have an alternative for storing 4 variables (or two if you add xyz in one string).

 

And yes, I do know a lot of sighs will escape your mouths, I do not care.

 

I thank you beforehand and hope that you will understand the above text.

 

Friendly greetings,

Black

Link to comment
Share on other sites

Well, it certainly was worth asking this here. I had totally forgotten that you could make tileentities non-ticking.

It is still a bit wasteful though, albeit there is probably little difference between saving it this way against another except the fact that it needs to save the fact that the block is a tileentity. It allready saves the coordinates so the only thing left to save is the entityid.

But like you said, perhaps, just as a separate structure, the actual bytes gained aren't really worth it.

I'll have a look into the ChunkDataEvent though, who knows what could come out of it.

 

Thank you for your help.

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • crashed with a empty report i tried again and [18jun.2024 04:38:56.251] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, 42crowley, --version, 1.20.1-forge-47.3.1, --gameDir, C:\Users\********\curseforge\minecraft\Instances\Mine dos cria, --assetsDir, C:\Users\********\AppData\Roaming\.minecraft\assets, --assetIndex, 5, --uuid, b917df67f6ce3ca4ac9b4e438faa1f85, --accessToken, ????????, --clientId, 0, --xuid, 0, --userType, msa, --versionType, release, --width, 854, --height, 480, --launchTarget, forgeclient, --fml.forgeVersion, 47.3.1, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412] 2[18jun.2024 04:38:56.263] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.9 10.0.9 main.dcd20f30 starting: java version 17.0.8 by Microsoft; OS Windows 11 arch amd64 version 10.0 3[18jun.2024 04:38:57.587] [main/INFO] [net.minecraftforge.fml.loading.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow 4[18jun.2024 04:38:57.967] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6 5[18jun.2024 04:38:58.046] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6 6[18jun.2024 04:38:58.464] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/********/AppData/Roaming/.minecraft/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar#100!/ Service=ModLauncher Env=CLIENT 7[18jun.2024 04:38:58.680] [pool-4-thread-1/INFO] [EARLYDISPLAY/]: GL info: Intel(R) UHD Graphics GL version 4.6.0 - Build 30.0.101.2079, Intel 8[18jun.2024 04:38:59.401] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\********\AppData\Roaming\.minecraft\libraries\net\minecraftforge\fmlcore\1.20.1-47.3.1\fmlcore-1.20.1-47.3.1.jar is missing mods.toml file 9[18jun.2024 04:38:59.407] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\********\AppData\Roaming\.minecraft\libraries\net\minecraftforge\javafmllanguage\1.20.1-47.3.1\javafmllanguage-1.20.1-47.3.1.jar is missing mods.toml file 10[18jun.2024 04:38:59.412] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\********\AppData\Roaming\.minecraft\libraries\net\minecraftforge\lowcodelanguage\1.20.1-47.3.1\lowcodelanguage-1.20.1-47.3.1.jar is missing mods.toml file 11[18jun.2024 04:38:59.418] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\********\AppData\Roaming\.minecraft\libraries\net\minecraftforge\mclanguage\1.20.1-47.3.1\mclanguage-1.20.1-47.3.1.jar is missing mods.toml file 12[18jun.2024 04:39:00.142] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: 13[18jun.2024 04:39:00.144] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: curios. Using Mod File: C:\Users\********\curseforge\minecraft\Instances\Mine dos cria\mods\curios-forge-5.9.1 1.20.1.jar 14[18jun.2024 04:39:00.145] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 20 dependencies adding them to mods collection 15[18jun.2024 04:39:05.971] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 16[18jun.2024 04:39:06.966] [main/INFO] [mixin/]: Successfully loaded Mixin Connector [com.sonicether.soundphysics.MixinConnector] 17[18jun.2024 04:39:06.972] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeclient' with arguments [--version, 1.20.1-forge-47.3.1, --gameDir, C:\Users\********\curseforge\minecraft\Instances\Mine dos cria, --assetsDir, C:\Users\********\AppData\Roaming\.minecraft\assets, --uuid, b917df67f6ce3ca4ac9b4e438faa1f85, --username, 42crowley, --assetIndex, 5, --accessToken, ????????, --clientId, 0, --xuid, 0, --userType, msa, --versionType, release, --width, 854, --height, 480] 18[18jun.2024 04:39:07.007] [main/WARN] [mixin/]: Reference map 'createdeco-forge-refmap.json' for createdeco.mixins.json could not be read. If this is a development environment you can ignore this message 19[18jun.2024 04:39:07.192] [main/INFO] [ModernFix/]: Loaded configuration file for ModernFix 5.17.0 mc1.20.1: 78 options available, 0 override(s) found 20[18jun.2024 04:39:07.194] [main/INFO] [ModernFix/]: Applying Nashorn fix 21[18jun.2024 04:39:07.223] [main/INFO] [ModernFix/]: Applied Forge config corruption patch 22[18jun.2024 04:39:07.413] [main/WARN] [mixin/]: Reference map 'interiors-forge-refmap.json' for interiors.mixins.json could not be read. If this is a development environment you can ignore this message 23[18jun.2024 04:39:07.477] [main/INFO] [Embeddium/]: Loaded configuration file for Embeddium: 132 options available, 3 override(s) found 24[18jun.2024 04:39:07.480] [main/INFO] [Embeddium-GraphicsAdapterProbe/]: Searching for graphics cards... 25[18jun.2024 04:39:08.097] [main/INFO] [Embeddium-GraphicsAdapterProbe/]: Found graphics card: GraphicsAdapterInfo[vendor=INTEL, name=Intel(R) UHD Graphics, version=DriverVersion=30.0.101.2079] 26[18jun.2024 04:39:08.194] [main/WARN] [mixin/]: Reference map 'yungsextras.refmap.json' for yungsextras.mixins.json could not be read. If this is a development environment you can ignore this message 27[18jun.2024 04:39:08.197] [main/WARN] [mixin/]: Reference map 'yungsextras.refmap.json' for yungsextras_forge.mixins.json could not be read. If this is a development environment you can ignore this message 28[18jun.2024 04:39:08.234] [main/WARN] [mixin/]: Reference map 'nitrogen_internals.refmap.json' for nitrogen_internals.mixins.json could not be read. If this is a development environment you can ignore this message 29[18jun.2024 04:39:08.259] [main/WARN] [mixin/]: Reference map 'octolib.refmap.json' for octolib.mixins.json could not be read. If this is a development environment you can ignore this message 30[18jun.2024 04:39:08.384] [main/WARN] [mixin/]: Reference map 'mes-forge-refmap.json' for mes-forge.mixins.json could not be read. If this is a development environment you can ignore this message 31[18jun.2024 04:39:11.680] [main/WARN] [mixin/]: Error loading class: dev/latvian/mods/kubejs/recipe/RecipesEventJS (java.lang.ClassNotFoundException: dev.latvian.mods.kubejs.recipe.RecipesEventJS) 32[18jun.2024 04:39:11.685] [main/WARN] [mixin/]: @Mixin target dev.latvian.mods.kubejs.recipe.RecipesEventJS was not found sliceanddice.mixins.json:RecipeEventJSMixin 33[18jun.2024 04:39:12.476] [main/WARN] [mixin/]: Error loading class: earth/terrarium/botarium/forge/BotariumForge (java.lang.ClassNotFoundException: earth.terrarium.botarium.forge.BotariumForge) 34[18jun.2024 04:39:12.477] [main/WARN] [mixin/]: @Mixin target earth.terrarium.botarium.forge.BotariumForge was not found create_central_kitchen.mixins.json:common.botarium.BotariumForgeMixin 35[18jun.2024 04:39:12.481] [main/WARN] [mixin/]: Error loading class: dan200/computercraft/shared/integration/MoreRedIntegration (java.lang.ClassNotFoundException: dan200.computercraft.shared.integration.MoreRedIntegration) 36[18jun.2024 04:39:12.482] [main/WARN] [mixin/]: @Mixin target dan200.computercraft.shared.integration.MoreRedIntegration was not found create_central_kitchen.mixins.json:common.computercraft.MoreRedIntegrationMixin 37[18jun.2024 04:39:12.739] [main/WARN] [mixin/]: Error loading class: com/sammy/minersdelight/content/block/copper_pot/CopperPotBlockEntity (java.lang.ClassNotFoundException: com.sammy.minersdelight.content.block.copper_pot.CopperPotBlockEntity) 38[18jun.2024 04:39:12.739] [main/WARN] [mixin/]: @Mixin target com.sammy.minersdelight.content.block.copper_pot.CopperPotBlockEntity was not found create_central_kitchen.mixins.json:common.minersdelight.CopperPotBlockEntityMixin 39[18jun.2024 04:39:12.742] [main/WARN] [mixin/]: Error loading class: com/sammy/minersdelight/content/block/sticky_basket/StickyBasketBlockEntity (java.lang.ClassNotFoundException: com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity) 40[18jun.2024 04:39:12.742] [main/WARN] [mixin/]: @Mixin target com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity was not found create_central_kitchen.mixins.json:common.minersdelight.StickyBasketBlockEntityAccessor 41[18jun.2024 04:39:12.745] [main/WARN] [mixin/]: Error loading class: com/sammy/minersdelight/content/block/sticky_basket/StickyBasketBlockEntity (java.lang.ClassNotFoundException: com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity) 42[18jun.2024 04:39:12.745] [main/WARN] [mixin/]: @Mixin target com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity was not found create_central_kitchen.mixins.json:common.minersdelight.StickyBasketBlockEntityMixin 43[18jun.2024 04:39:12.749] [main/WARN] [mixin/]: Error loading class: net/orcinus/overweightfarming/blocks/CropFullBlock (java.lang.ClassNotFoundException: net.orcinus.overweightfarming.blocks.CropFullBlock) 44[18jun.2024 04:39:12.749] [main/WARN] [mixin/]: @Mixin target net.orcinus.overweightfarming.blocks.CropFullBlock was not found create_central_kitchen.mixins.json:common.overweightfarming.CropFullBlockMixin 45[18jun.2024 04:39:13.708] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.world.sky.WorldRendererMixin' as rule 'mixin.features.render.world.sky' (added by mods [oculus]) disables it and children 46[18jun.2024 04:39:13.710] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.world.sky.ClientWorldMixin' as rule 'mixin.features.render.world.sky' (added by mods [oculus]) disables it and children 47[18jun.2024 04:39:13.711] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.world.sky.BackgroundRendererMixin' as rule 'mixin.features.render.world.sky' (added by mods [oculus]) disables it and children 48[18jun.2024 04:39:13.719] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.gui.font.GlyphRendererMixin' as rule 'mixin.features.render.gui.font' (added by mods [oculus]) disables it and children 49[18jun.2024 04:39:13.720] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.gui.font.FontSetMixin' as rule 'mixin.features.render.gui.font' (added by mods [oculus]) disables it and children 50[18jun.2024 04:39:13.722] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.entity.shadows.EntityRenderDispatcherMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children 51[18jun.2024 04:39:13.724] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.entity.fast_render.ModelPartMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children 52[18jun.2024 04:39:13.726] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.entity.fast_render.CuboidMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children 53[18jun.2024 04:39:13.729] [main/WARN] [Embeddium/]: Force-disabling mixin 'features.render.entity.cull.EntityRendererMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children 54[18jun.2024 04:39:15.111] [main/INFO] [MixinExtras|Service/]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.6). 55[18jun.2024 04:39:18.941] [pool-6-thread-1/INFO] [net.minecraft.server.Bootstrap/]: ModernFix reached bootstrap stage (29.23 s after launch) 56[18jun.2024 04:39:19.116] [pool-6-thread-1/WARN] [mixin/]: @Final field delegatesByName:Ljava/util/Map; in modernfix-forge.mixins.json:perf.forge_registry_alloc.ForgeRegistryMixin should be final 57[18jun.2024 04:39:19.116] [pool-6-thread-1/WARN] [mixin/]: @Final field delegatesByValue:Ljava/util/Map; in modernfix-forge.mixins.json:perf.forge_registry_alloc.ForgeRegistryMixin should be final [18jun.2024 04:39:21.577] [pool-6-thread-1/INFO] [net.minecraft.server.Bootstrap/]: Vanilla bootstrap took 2632 milliseconds
    • I have a workaround you first go into mods.toml and set ORDERING for the mod to = "BEFORE" just use Java to go into the compressed file using opensource code and you want to replace the texture there and then when minecraft loads or reloads it should be different
    • Get the latest AMD/ATI drivers from their website - do not update via system
  • Topics

×
×
  • Create New...

Important Information

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