Jump to content

Recommended Posts

Posted

The new server config system is amazing in that it allows servers and worlds to have different config settings than the client, but it is really confusing for a lot of users. It's difficult to imagine a time when mod devs will be able to stop re-explaining how this system works to confused users and new pack devs. Nearly every Curseforge mod page has this "where are the configs?" conversation repeatedly in its comments.

One adjustment that would make it much simpler to understand, while still maintaining the new functionality. Instead of server configs generating within world folders by default, it would be better if they could generate in the defaultconfigs folder instead. The world/serverconfig folder would be used to override server configs. The server would first look in the world's server config, and if the config file isn't there, it will look in the defaultconfigs folder. I think it would be much more intuitive this way.

  • 1 month later...
Posted

I understand that, but I think you missed the point of my suggestion. The current system is confusing for users and frustrating for pack makers, because when we make changes to the default configs, it does not affect existing worlds. I am personally finding myself repeatedly explaining this system to people and telling them to delete the serverconfigs within their worlds in order to take on the new default configs.

This is why I'm suggesting changing it so worlds use the default configs, by default, rather than copying the default config to the world file. And that, all server configs be generated in the default configs folder, and not in the world folder. The serverconfigs folder can then be used just to override the default configs.

There has been a fair amount of push back from the community about this feature. Many mod authors are choosing to use common configs for cases that should be server configs and users are complaining. There's even a mod to change the behavior by forcing default configs to be copied to existing worlds, which defeats the purpose of this whole system. The suggestion I'm making would solve all these issues and make the server config system more intuitive and easier to maintain. 

Posted

Yes people always fuckup systems because they think they know best.

The problem is people fail to understand what were trying to do. Or how the system works.

 

`it does not affect existing worlds` this is a prime example. Its MEANT to not effect existing worlds because in theory server side configs would cause issues if changed during the worlds life.

 

But yes people do stupid things and we do need a system that is better for pack dev's and users. The problem becomes implementation. How do we figure out what values in the world folder were intentional edits to the config. And what just happened to be different because the defaultconfigs changed. How do we write partial config files to disc with only those changes...

How do we know if the code calling the save function actually changed anything.

 

It's a annoying implementation solution that needs to be solved.

And just not writing it to the world folder doesnt work, as wed need to compare the entire config set to a copy from the defaults to see what folder we need to save it to. Mod and Forge code can call the save function quite often. And the NightConfig implementation also has issues with monitoring the files. Do we reload server configs automatically for every world when the file is modified? 

 

It's not as simple as just `if !(wolrd/config/mymod.toml).exists(): file= defaultconfigs/mymod.toml`

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

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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • that happens every time I enter a new dimension.
    • This is the last line before the crash: [ebwizardry]: Synchronising spell emitters for PixelTraveler But I have no idea what this means
    • What in particular? I barely used that mod this time around, and it's never been a problem in the past.
    • Im trying to build my mod using shade since i use the luaj library however i keep getting this error Reason: Task ':reobfJar' uses this output of task ':shadowJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. So i try adding reobfJar.dependsOn shadowJar  Could not get unknown property 'reobfJar' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. my gradle file plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0,6.2)' id 'com.github.johnrengelman.shadow' version '7.1.2' id 'org.spongepowered.mixin' version '0.7.+' } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'com.github.johnrengelman.shadow' version = mod_version group = mod_group_id base { archivesName = mod_id } // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) //jarJar.enable() println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { mappings channel: mapping_channel, version: mapping_version copyIdeResources = true runs { configureEach { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' arg "-mixin.config=derp.mixin.json" mods { "${mod_id}" { source sourceSets.main } } } client { // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. property 'forge.enabledGameTestNamespaces', mod_id } server { property 'forge.enabledGameTestNamespaces', mod_id args '--nogui' } gameTestServer { property 'forge.enabledGameTestNamespaces', mod_id } data { workingDirectory project.file('run-data') args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { flatDir { dirs './libs' } maven { url = "https://jitpack.io" } } configurations { shade implementation.extendsFrom shade } dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" implementation 'org.luaj:luaj-jse-3.0.2' implementation fg.deobf("com.github.Virtuoel:Pehkui:${pehkui_version}") annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' minecraftLibrary 'luaj:luaj-jse:3.0.2' shade 'luaj:luaj-jse:3.0.2' } // Example for how to get properties into the manifest for reading at runtime. tasks.named('jar', Jar).configure { manifest { attributes([ 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors, 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", "TweakOrder" : 0, "MixinConfigs" : "derp.mixin.json" ]) } rename 'mixin.refmap.json', 'derp.mixin-refmap.json' } shadowJar { archiveClassifier = '' configurations = [project.configurations.shade] finalizedBy 'reobfShadowJar' } assemble.dependsOn shadowJar reobf { re shadowJar {} } publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } } my entire project:https://github.com/kevin051606/DERP-Mod/tree/Derp-1.0-1.20
  • Topics

×
×
  • Create New...

Important Information

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