Jump to content

Recommended Posts

Posted

Forge version: 49.1.0
Minecraft version: 1.20.4

Downloads:

Intro:

We're pleased to announce the first recommended build for 1.20.4. Following the spirit of significant improvements from 1.20.2, we're continuing to iterate on improving performance, code quality, features and ease of use. 1.20.4 brings various enhancements, focused on improving user experience.

Some highlights:

We've brought back the option of executable server jar - just like the olden days. The run scripts remain an option for those who prefer it, and we've added Java version checks and a readme to make it easier to setup your own server. We also collaborated with various third-party server panels to ensure compatibility with our new setup.

Client-side-only mods crashing dedicated servers and mod devs needing to employ special care to avoid such has been solved by the new clientSideOnly switch in the mods.toml file. This feature results in better performance and makes it easier for mod devs to write client-side mods.

The config system has gotten some love, too. There's been a big clean-up to its internals, various optimisations and support for new data types - ByteValue, ShortValue and FloatValue. On the topic of clean-up and optimisation, the DisplayTest and ConfigScreen extension points now have simpler APIs and many parts of the mod loading process have seen optimisations along with improved error messages for non-Forge mods.

New:

  • Revive the option of executable jars for the dedicated server
    • You're no longer forced to use the supplied run scripts!
    • All existing JPMS features are preserved - you can have your cake and eat it too
  • Add impl. of IModFileInfo#showAsDataPack (#9802)
  • Add clientSideOnly feature to mods.toml (#9804)
    • Setting this to true in the root of your mods.toml will tell Forge to skip loading your mod on dedicated servers and set an appropriate DisplayTest for you
    • This is recommended for all client-side-only mods, as it is a trivial and performance way to prevent your mod from crashing servers or causing it to incorrectly show up as incompatible on the multiplayer server list
  • Optimise ForgeConfigSpec and make Range public (#9810)
  • Support pack overlay system. Closes #9818
  • Clean-up Explosion patch but keep bin compatibility by using asm hacks. Closes #9817
  • Make common DisplayTest registration tasks easier (#9822)
    • Before: 
      ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> "ANY", (remote, isServer) -> true));
    • After: 
      ModLoadingContext.get().registerDisplayTest(IExtensionPoint.DisplayTest.IGNORE_ALL_VERSION);
    • The old method still works for backwards-compatibility. The new method has also been backported to 1.20.1, 1.19.4, 1.19.2 and 1.18.2.
  • Improve server panel compatibility (#9836)
  • Criterion test mod + unit test (#9744)
  • Show a more helpful error message when attempting to start the server with old Java
  • Improve the UX of server setup and usage, add a readme with instructions, tips and advice
  • Readded DatapackBuiltinEntriesProvider (#9848)
  • Add CPU usage config option to early window, hide it by default (#9866)
    • New cleaner look, slightly improved client mod loading performance
  • Make common config screen registration tasks easier (#9884)
    • Before: 
      ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, modsScreen) -> new MyConfigScreen(modsScreen));
    • After: 
      MinecraftForge.registerConfigScreen(modsScreen -> new MyConfigScreen(modsScreen));
    • The old method still works for backwards-compatibility. The new method has also been backported to 1.20.1, 1.19.4, 1.19.2 and 1.18.2.
  • Optimize capabilities (#9886)
  • Add Leaves method to ModelProvider.java (#9887)
  • Add ByteValue, ShortValue and FloatValue to ForgeConfigSpec, cleanup code (#9902)
  • Add helper method to `OnDatapackSyncEvent` (#9901)
  • Prevent registering null tiers (#9895)
    • Makes it easier to identify broken mods, as it moves the crash to when the broken mod in question registers the tier, rather than when any mod tries getting the tier.
  • Improve mod loading errors (#9870)
  • Add ClientPauseChangeEvent (#9905)
  • Add config option for optionally disabling non-Forge mods.toml detection (#9943)

Fixed:

  • Fix java version check in bootstrap shim
  • Fix Server bundle
  • Bump SecureModules to fix conflict between AccessTransformers and Mixins, Closes #9820
  • Only add sorted/deduplicated mods to the classpath.
    • Fixes some mods causing the Forge error displays to break. Closes #9833
  • Bump JarJar and SecureModule to fix issue with jars containing [] in their name. Closes #9842
  • Fix launcher version name missing - between `forge` and the version. Closes #9843
  • Fixed Spelling error in credits.txt (#9694)
  • Fix background music looping when it shouldn't
  • Fix cases where LivingConversionEvents were not fired for vanilla conversions. Closes #9850
  • Add null check to DimensionDataStorage. Fixes #9859
  • Fix DNS SRV record lookup not working by hacking the module system. Closes #9846
  • Fix slightly offset mods screen link positioning (#9860)
  • Fix DatapackBuiltinEntriesProvider issues with forge registries, Fixes #9874
  • Fix modlist size
  • Fix level data not loading from existing worlds. Whole system needs a re-write.
  • Fix NPE when acceptableValues in defineInList() does not allow nulls, fixes #9300 (#9903)
  • Early display fixes/workarounds for buggy drivers (#9921)
  • Fix edge-case regression with single-jar multiloader mods (#9931)
  • Fix early window crash when parsing some forms of options.txt (#9933)
  • Make non-Forge mods.toml detection more robust (#9935)
  • Filter paths discovered by ServiceProvider in ClasspathLocator. Closes #9899

Removed:

  • LibraryFinder

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • 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" } } }  
    • Todas as versões do Minecraft Forge são repentinamente tela preta, mesmo sem mods (tentei reinstalar o Minecraft original, Java, atualizar os drivers não funciona)
    • When i join minecraft all ok, when i join world all working fine, but when i open indentity menu, i get this The game crashed whilst unexpected error Error: java.lang.NullPointerException: Cannot invoke "top.ribs.scguns.common.Gun$Projectile.getDamage()" because "this.projectile" is null crash report here https://paste.ee/p/0vKaf
  • Topics

×
×
  • Create New...

Important Information

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