Jump to content

Built-in support for unique config files for each world


Recommended Posts

Posted

As far as I am aware, right now for each installation of minecraft forge only supports a global config file for each mod. Each world will have to use the same config settings since there is only a 'global' config file for each mod. With the implementation of the config gui for forge mods, I think it would be a good idea if on the world creation screen there was a button that would take us to the mod config guis. We could then adjust the config settings for each mod to our liking and these settings would be saved specifically to the world we created. This would allow us to have different worlds with different settings. I now this is possibly to do currently, but it requires a lot work for each modder and there isn't a standard way to handle it.

Posted

It doesn't require a lot of work for each modders.

They simply have to load their configs at world load instead of init.

The only thing that doesn't exist is the on-world-create button.

Which world types do have access to.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Hey LexManos, thanks for replying! I understand if you think this shouldn't be added, I agree modders have the tools to implement this for their mods already. The thing is, if a modder doesn't implement this for their mod there is no way for a player to have separate configs for separate worlds. If the default forge behavior changed to having configs be saved for each world players would not have to worry about modders not implementing this feature. If I was a better / more confident programmer I would whip something up myself, and I understand that this is by no means a high priority addition to Forge, I just want to put the idea out there.

Posted

Sounds like an issue for the mod author to take up. You know how annoying it would be to have to change the world options each time we make a new world if we don't want the feature?

I think its my java of the variables.

Posted

Again, Forge does not control WHERE config files are stored

Forge does not control WHEN config files are read

This is all up to the modders we can't do anything about it.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Ok, I think I understand where you are coming from LexManos: there is not a standard way of dealing with configs in forge. I might try to make a library for unique configs per world, but I doubt there would be much adoption. One can dream though.

  • 1 month later...
Posted

You want per-world configs?  This is Java, use your FileIO.  All the tools you need already exist.

The hard one to figure out was "DimensionManager.getCurrentSaveRootDirectory()" and I found that just by poking around with the classes I knew about, knowing that one of them had to know where the world's save directory was.

 

		File folder = new File(DimensionManager.getCurrentSaveRootDirectory(), "myPerWorldStorage");
    	folder.mkdir();
	try {
			FileInputStream fis = new FileInputStream(new File(folder, s));
			DataInputStream instream = new DataInputStream(fis);
			//read/write file
			instream.close();
			fis.close();
	}
	catch (IOException e) {
			//error handling
	}

 

BAM.

 

And proof that I'm not talking out of my ass:

 

save.png

 

Mind, I'm saving nbt files that store run-time data not configs, but that's the rough outline of what you need.

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.

Posted

I'll take a look, but really what I need for it is a better runtime data structure.  The data is constructed during chunk generation and is heavily accessed.  It's just ever so slightly too slow for my liking to use NBT, but I can't figure out a better way to structure the data such that the data that's needed is held in ram and offloaded to the drive as needed; similar to chunk data, just not that much of it (I've got only a dozen or so values that need to be tracked per chunk, but it needs to be keyed by both location and string-name).

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.

Posted

You might look into ChunkDataEvent then.

 

Like I said, nbt is performing "well enough" for the moment, so I've been focusing on other tasks.  But I'll look into it.

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.

Posted

I reckon this is more up to modders than anyone else. And a library probably would not be used too much by modders as it is easy to implement yourself if you are experienced enough ;)

Posted

Like I said before, WE DO NOT control when modders load there configs, what are in the configs, where they store them. Or anything like that.

In order for modders to support per-world configs, they simply have to do it.

There is nothing needed on Forge's end, there is no 'library' needed, this is purely a modder issue.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hello support, I would like to tell you that I recently had troubles with getting into forge in Minecraft. I wanted to play with my friend a modpack in the game in version 1.20.1 when I downloaded it it crashed so we I started deleting some unnecessary mods to maybe lower the pressure if my PC is not good enough to run the modpack. But I went to delete every mod and installed a hole new version of forge with no mods installed or anything with it it still crashed. I found some help on the forms telling to download java 17 and install it on my windows so I did that and still couldn’t play because it crashes  The log files and everything I could find to help this problem is here : https://pastebin.com/9rWpANcW Hope your help arrives quickly
    • I'm testing a modpack for a server, and everything is fine, until I update the Aether mod from version "aether-1.20.1-1.4.2-neoforge" to version "aether-1.20.1-1.5.1-neoforge" now on the server it gives the error: Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode but in the game it says something different (scroll down) [21Nov2024 15:58:50.673] [main/WARN] [net.minecraft.server.Main/]: Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode 2002java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Failed to load registries due to above errors 2003at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?] 2004at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[?:?] 2005at net.minecraft.server.Main.main(Main.java:195) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2006at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] 2007at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] 2008at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] 2009at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] 2010at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.12.jar%2369!/:?] 2011at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.serverService(CommonLaunchHandler.java:103) ~[fmlloader-1.20.1-47.3.12.jar%2369!/:?] 2012at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$makeService$0(CommonServerLaunchHandler.java:27) ~[fmlloader-1.20.1-47.3.12.jar%2369!/:?] 2013at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar%2355!/:?] 2014at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar%2355!/:?] 2015at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar%2355!/:?] 2016at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar%2355!/:?] 2017at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar%2355!/:?] 2018at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar%2355!/:?] 2019at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar%2355!/:?] 2020at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] 2021Caused by: java.lang.IllegalStateException: Failed to load registries due to above errors 2022at net.minecraft.resources.RegistryDataLoader.m_247207_(RegistryDataLoader.java:77) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2023at net.minecraft.server.WorldLoader.m_246152_(WorldLoader.java:54) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2024at net.minecraft.server.WorldLoader.m_245736_(WorldLoader.java:58) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2025at net.minecraft.server.WorldLoader.m_214362_(WorldLoader.java:31) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2026at net.minecraft.server.Main.lambda$main$2(Main.java:167) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2027at net.minecraft.Util.m_214652_(Util.java:777) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2028at net.minecraft.Util.m_214679_(Util.java:772) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2029at net.minecraft.server.Main.main(Main.java:166) ~[server-1.20.1-20230612.114412-srg.jar%23535!/:?] 2030... 15 more   AND THE ERROR THAT THE GAME SAY WENT I WANT TO PLAY IN SOLO (local): Time: 2024-11-21 16:16:37 Description: mouseClicked event handler java.lang.IllegalStateException: Failed to load registries due to above errors     at net.minecraft.resources.RegistryDataLoader.m_247207_(RegistryDataLoader.java:77) ~[client-1.20.1-20230612.114412-srg.jar%23652!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:bclib.mixins.common.json:RegistryDataLoaderMixin from mod bclib,pl:mixin:APP:lithostitched.mixins.json:common.RegistryDataLoaderMixin from mod lithostitched,pl:mixin:APP:zeta.mixins.json:RegistryDataLoaderMixin from mod zeta,pl:mixin:APP:fabric-registry-sync-v0.mixins.json:RegistryLoaderMixin from mod fabric_registry_sync_v0,pl:mixin:APP:together.mixins.common.json:RegistryDataLoaderMixin from mod bclib,pl:mixin:APP:connectormod.mixins.json:registries.RegistryDataLoaderMixin from mod connectormod,pl:mixin:A,pl:connector_pre_launch:A} at net.minecraft.server.WorldLoader.m_246152_(WorldLoader.java:54) ~[client-1.20.1-20230612.114412-srg.jar%23652!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:together.mixins.common.json:WorldLoaderMixin from mod bclib,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.server.WorldLoader.m_245736_(WorldLoader.java:58) ~[client-1.20.1-20230612.114412-srg.jar%23652!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:together.mixins.common.json:WorldLoaderMixin from mod bclib,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.server.WorldLoader.m_214362_(WorldLoader.java:31) ~[client-1.20.1-20230612.114412-srg.jar%23652!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:together.mixins.common.json:WorldLoaderMixin from mod bclib,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.client.gui.screens.worldselection.CreateWorldScreen.m_232896_(CreateWorldScreen.java:125) ~[client-1.20.1-20230612.114412-srg.jar%23652!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.CreateWorldScreenMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.extra_experimental_screen.CreateWorldScreenMixin from mod modernfix,pl:mixin:APP:cumulus_menus.mixins.json:client.accessor.CreateWorldScreenAccessor from mod cumulus_menus,pl:mixin:APP:mediumcore.mixins.json:client.CreateWorldScreenMixin from mod mediumcore,pl:mixin:APP:aether.mixins.json:client.CreateWorldScreenMixin from mod aether,pl:mixin:APP:together.mixins.client.json:CreateWorldScreen_Mixin from mod bclib,pl:mixin:APP:fancymenu.mixins.json:client.MixinCreateWorldScreen from mod fancymenu,pl:mixin:A,pl:connector_pre_launch:A,pl:runtimedistcleaner:A}        
    • I just tried installing Forge version 1.21.3, and tried launching it with no mods installed. It loads, and immediately crashes while "loading bootstrap resourses." Does anyone know a fix for this? My Java is up to date, as well as my graphics drivers. Here's a snip right before it crashes: https://imgur.com/a/elLujPj
    • I know this is a forge only place, but just to be clear, my error is in Fabric I was actually super frustrated while trying to fix this, like this mod does work when I play it by launching it in minecraft, but when I was trying to install it onto the server it just kept crashing so I decided to delete every mod I've got but kept the bewitchment mod and the necessary mod it needs to function and I tried to run the server... But it somehow still crashed, and the thing is that I really do want the bewitchment mod to be in the SMP so it'll be SUPER helpful if anyone can figure out on how to fix this: It didn't give me any "crash-reports" so I'll be sending the logs and what the console said: Console: [18:51:46] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/home/container/libraries/net/fabricmc/sponge-mixin/0.13.3+mixin.0.8.5/sponge-mixin-0.13.3+mixin.0.8.5.jar Service=Knot/Fabric Env=SERVER [18:51:46] [main/WARN]: Error loading class: io/github/apace100/origins/power/PreventItemUsePower (java.lang.ClassNotFoundException: io/github/apace100/origins/power/PreventItemUsePower) [18:51:46] [main/WARN]: @Mixin target io.github.apace100.origins.power.PreventItemUsePower was not found bewitchment.mixins.json:integration.origins.PreventItemUsePowerMixin from mod bewitchment [18:51:47] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.5). [18:51:52] [main/FATAL]: Failed to start the minecraft server java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'bewitchment'! at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$2(FabricLoaderImpl.java:388) ~[fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33) ~[fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:386) ~[fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.game.minecraft.Hooks.startServer(Hooks.java:63) ~[fabric-loader-0.15.11.jar:?] at net.minecraft.server.Main.main(Main.java:92) [server-intermediary.jar:?] at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) [fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) [fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:69) [fabric-loader-0.15.11.jar:?] at net.fabricmc.installer.ServerLauncher.main(ServerLauncher.java:69) [server.jar:1.0.1] Caused by: java.lang.NoSuchFieldError: TEXTURE at moriyashiine.bewitchment.common.item.SpecterBangleItem.<clinit>(SpecterBangleItem.java:28) ~[bewitchment-1.16.5-18.jar:?] at moriyashiine.bewitchment.common.registry.BWObjects.<clinit>(BWObjects.java:272) ~[bewitchment-1.16.5-18.jar:?] at moriyashiine.bewitchment.common.Bewitchment.onInitialize(Bewitchment.java:221) ~[bewitchment-1.16.5-18.jar:?] at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384) ~[fabric-loader-0.15.11.jar:?] ... 7 more Logs: https://mclo.gs/wSsqMfn
    • I know this is a forge only place, but just so you know my error is in Fabric I was actually super frustrated while trying to fix this, like this mod does work when I play it by launching it in minecraft, but when I was trying to install it onto the server it just kept crashing so I decided to delete every mod I've got but kept the bewitchment mod and the necessary mod it needs to function and I tried to run the server... But it somehow still crashed, and the thing is that I really do want the bewitchment mod to be in the SMP so it'll be SUPER helpful if anyone can figure out on how to fix this: It didn't give me any "crash-reports" so I'll be sending the logs and what the console said: Console: [18:51:46] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/home/container/libraries/net/fabricmc/sponge-mixin/0.13.3+mixin.0.8.5/sponge-mixin-0.13.3+mixin.0.8.5.jar Service=Knot/Fabric Env=SERVER [18:51:46] [main/WARN]: Error loading class: io/github/apace100/origins/power/PreventItemUsePower (java.lang.ClassNotFoundException: io/github/apace100/origins/power/PreventItemUsePower) [18:51:46] [main/WARN]: @Mixin target io.github.apace100.origins.power.PreventItemUsePower was not found bewitchment.mixins.json:integration.origins.PreventItemUsePowerMixin from mod bewitchment [18:51:47] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.5). [18:51:52] [main/FATAL]: Failed to start the minecraft server java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'bewitchment'! at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$2(FabricLoaderImpl.java:388) ~[fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33) ~[fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:386) ~[fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.game.minecraft.Hooks.startServer(Hooks.java:63) ~[fabric-loader-0.15.11.jar:?] at net.minecraft.server.Main.main(Main.java:92) [server-intermediary.jar:?] at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) [fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) [fabric-loader-0.15.11.jar:?] at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:69) [fabric-loader-0.15.11.jar:?] at net.fabricmc.installer.ServerLauncher.main(ServerLauncher.java:69) [server.jar:1.0.1] Caused by: java.lang.NoSuchFieldError: TEXTURE at moriyashiine.bewitchment.common.item.SpecterBangleItem.<clinit>(SpecterBangleItem.java:28) ~[bewitchment-1.16.5-18.jar:?] at moriyashiine.bewitchment.common.registry.BWObjects.<clinit>(BWObjects.java:272) ~[bewitchment-1.16.5-18.jar:?] at moriyashiine.bewitchment.common.Bewitchment.onInitialize(Bewitchment.java:221) ~[bewitchment-1.16.5-18.jar:?] at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384) ~[fabric-loader-0.15.11.jar:?] ... 7 more Logs: https://mclo.gs/wSsqMfn
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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