Mod

NeoBackports

Quick rating

NeoBackports

No reviews yet

Backports of various Neoforge / 1.21.1 features to 1.20.1 for easier maintenance between versions

API/Library
Mod Loaders
Forge
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Required
Server Required

About

Project Details

Type
Mod
License
GNU Lesser General Public License v2.1 only
Latest Version
1.2.4
Authors

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

A library for using neoforge 1.21.1 features and methods on forge 1.20.1

This mod is intended to be used as a library included with other mods. Currently, the only standalone features are blurred 1.21-style gui backgrounds. Manually installing a newer version than is packaged is only useful for fixing bugs

Current features include:

  • Datamaps
  • Data components
  • Data attachments
  • Stream codecs
  • Blurred gui backgrounds (enabled with a built-in resourepack)
  • DeferredHolders (and their subtypes)
  • 1.21.1-style networking
  • Recipe serializers with codecs
  • useItemOn and useWithoutItem methods for blocks

... and a lot of convenience interface extensions

Q&A

  • Why backport to 1.20.1? wouldn't it make more sense to help devs port up instead of down?
  • Making a lib for foward porting is fundamentally pointless, as it carries technical debt and would require porting the lib up every new version. Devs would never get used to new features, even when they are objectively better, and would make laggier and buggier mods. Doing it this way means we can satisfy the 1.20 crowd while still pushing them towards newer version
  • This sounds like a synitra connector type mod, could it work that way?
  • Theoretically, if I put a lot of work into it, it could make very tiny 1.21.1 mods run on 1.20.1, but the support would be extremely limited so it's not work the time. TLDR: NO

Installation instructions

Since this lib uses interface injections, switching from ForgeGradle to ModDevGradle Legacy gradle plugin is required. Documentation here and a working MDK here

In build.gradle:

repositories {
    // Some other repositories you might have...
    
    maven {
        url = 'https://nikdo53.github.io/NeoBackports'
    }
}


dependencies {
    // Some other dependencies you might have...

    jarJar(modImplementation("net.nikdo53:NeoBackports:${neobackports_version}"))
    interfaceInjectionData("net.nikdo53:NeoBackports:${neobackports_version}")
}

In gradle.properties:

# Set this to whatever is latest
neobackports_version=1.2.2

Technical differences

Features aren't backported 1 to 1 (due to backend differences between versions) but should be similar enough for most mods to just work without major differences

Class names

In order to make the difference between original forge/vanilla classes and backported ones, backported classes get the "neo" suffix, for example:

  • SmithingRecipe -> SmithingRecipeNeo
  • PacketDistributor -> PacketDistributorNeo
  • DeferredRegister -> DeferredRegisterTyped (this ones different cuz i forgot)

Data components/attachments

Unlike 1.21.1, these are just clever wrappers for existing features (item nbt and capabilities respectively), meaning that other mods not using this API should be able to access them like normal.

Datamaps

These have been (with permission) ported directly from neoforges code with minimal differences. Note that the login packet which handshaked known datamaps has been removed and non-mandatory are generally not supported. I might return to this in the future, but since this mod is required on both client and server, it's probably not very useful (and 1.20.1 login packets are weird)

Stream codecs

The ByteBuf generic has been removed, since everything uses FriendlyByteBuf:

StreamCodec<RegistryFriendlyByteBuf, SomeClass> -> StreamCodec<SomeClass>

The icon is a tibetan fox, it looks pissed cuz its been forced to use forge

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

<1,000
Downloads
Last Updated
CurseForge
Modrinth
Created
Last synced
When ModDex last fetched and imported data for this project from CurseForge or Modrinth. High-traffic and active projects are checked more often.
Next pipeline sync