Back to mods
NBTcompat project artwork

CurseForge · Minecraft mod

NBTcompat

compressed, RAM friendly version of Every Compat

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which NBTcompat release should I use?

Updated yesterday
Latest stable file nbtcompat 1.0.7.jar
Game version 1.21.1
Loader NeoForge

nbtcompat 1.0.7.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.

Where it goes

Is NBTcompat required on the client, server, or both?

The project page does not say whether this file belongs on the client, dedicated server, or both.

Client Source doesn’t say
Dedicated server Source doesn’t say
Loader for this release NeoForge
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source does not explicitly classify this release as client-only or server-only.

What else does nbtcompat 1.0.7.jar need?

nbtcompat 1.0.7.jar. Change the file and its required mods may change too.

No extra mods listed for this file

This file does not list any required mods. Do not add a library just because a different file uses it.

6 listed on this file 18 pulled in by those mods
Artisan Ported Optional for nbtcompat 1.0.7.jar
optional
Matching file found Matched file: artisanworktables-1.0.0.jar
Custom Tiers Optional for nbtcompat 1.0.7.jar
optional
Matching file found Matched file: custom_tiers 1.0.2.jar
Chipped Optional for nbtcompat 1.0.7.jar
optional
Matching file found Matched file: [NeoForge] Chipped 4.0.2
KubeJS Optional for nbtcompat 1.0.7.jar
optional
Matching file found Matched file: KubeJS NeoForge 2101.7.2-build.368
Macaw's Roofs Optional for nbtcompat 1.0.7.jar
optional
No matching file
Create Optional for nbtcompat 1.0.7.jar
optional
Matching file found Matched file: Create 6.0.10 for mc1.21.1
Sophisticated Storage Needed by Custom Tiers
pulled in
Matching file found Matched file: sophisticatedstorage-1.21.1-1.5.83.2017.jar
Create More Machines Needed by Custom Tiers
pulled in
Matching file found Matched file: createmoremachines-1.21.1-2.7.jar
Mekanism Needed by Custom Tiers
pulled in
Matching file found Matched file: Mekanism-1.21.1-10.7.19.85.jar
Resourceful Lib Needed by Chipped
pulled in
Matching file found Matched file: [NeoForge] Resourceful Lib 3.0.12
Athena Needed by Chipped
pulled in
Matching file found Matched file: [NeoForge] Athena 4.0.6
Rhino Needed by KubeJS
pulled in
Matching file found Matched file: Rhino 2101.2.7-build.85
Sophisticated Core Needed by Sophisticated Storage
pulled in
Matching file found Matched file: sophisticatedcore-1.21.1-1.4.80.2194.jar
Crafting Tweaks Needed by Sophisticated Storage
pulled in
Matching file found Matched file: craftingtweaks-neoforge-1.21.1-21.1.10.jar
TrashSlot Needed by Sophisticated Storage
pulled in
Matching file found Matched file: trashslot-neoforge-1.21.1-21.1.11.jar
Quark Needed by Sophisticated Storage
pulled in
Matching file found Matched file: Quark-4.1-482.jar
Item Borders [Neo/Forge] Needed by Sophisticated Storage
pulled in
Matching file found Matched file: ItemBorders-1.21-neoforge-1.2.5.jar
Sawmill Needed by Sophisticated Storage
pulled in
Matching file found Matched file: sawmill-1.21-1.8.0-neoforge
The One Probe Needed by Mekanism
pulled in
Matching file found Matched file: TheOneProbe - 1.21_neo-12.0.8
JEITweaker Needed by Mekanism
pulled in
No matching file
ConnectedTexturesMod Needed by Mekanism
pulled in
Matching file found Matched file: CTM - 1.21-1.2.1+3
WTHIT Forge Edition Needed by Mekanism
pulled in
Matching file found Matched file: [NeoForge 1.21.1] 12.10.2
Biomes O' Plenty Needed by Mekanism
pulled in
Matching file found Matched file: Biomes O' Plenty NeoForge 1.21.1-21.1.0.14

18 extra mods were pulled in by other dependencies. Indented rows show who needs each one. We only count dependency files that match this setup. A file for another loader does not fill the gap.

Before you install it

Add NBTcompat without breaking your instance.

Built for nbtcompat 1.0.7.jar. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use nbtcompat 1.0.7.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    This file does not list any required mods. Do not add a library just because a different file uses it.

  3. 03

    Put it on the correct side

    The project page does not say whether this file belongs on the client, dedicated server, or both.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside nbtcompat 1.0.7.jar. It opens that exact file at the source.

About this project

What does NBTcompat add?

Every Compat can fill in the gaps that often exist in large modpacks, though this is at the cost of a lot of RAM as it puts a heavy load on the registry and your system. This mod takes a different approach to completeness. Instead of one block ID per entry, this mod uses NBT data to store as few blocks in registry as possible and stores the textures within said NBT data or use alpha mapping to recreate the look out of existing textures.

This massivly reduces load on the server and client, only needing the memory to generate the textures. For a reference as to how much more RAM friendly this is, take a look at Productive Trees and the dyed planks support that this mod adds. A item or block in registry takes about 2KB of RAM. Productive Trees adds ~160 wood types to the game. With the 16 vanilla colors, you'd end up with 23040 blocks in the registry from Productive Tress if every compat did dyes. That would take up about 46 MB of RAM, vs the 18KB this would take. This mod only registers 16 blocks to the game, the rest is handled by NBT data and texture generation. But that same texture generation causes other issues as well, it can overfill the atlas or even your system's memory beyond what you've set. To get around this, we store block color for the dyed planks, cobbles, sands, gravels, and the chipped stone blocks in the block's NBT. For logs, create casings, and bookcases, we use uv mapping from existing textures. Crafting tables currently don't do any of this.

At current, this supports:

Vanilla: (crafting tables, bookshelves, cobblestones, gravels, sands)

Create: (casings (metal X wood combos), recipes for millstone and crushing wheels)

Chipped: (non CTM stone blocks, log variants + 2 custom ones with nether woods, compat with dyed wood for the doors)

custom: (dyed wood sets (planks, fences, doors, trapdoors, buttons, and pressure plates), loot table overrides for cobblestones, world gen for gravels, smelting recipes for cobbles)

Macaw's series: (roofs and roof tiles at current)

Mekansim: (recipes for the crusher)

You can define custom woods, metals, stones, and dyes with kubeJS like so (startup script):

NbtCompatEvents.defineWoods(event => {
  event.add('modid:wood', 'modid:wood_planks')
  event.add('modid:wood', 'modid:wood_planks', 'Pretty Name')
  event.remove('minecraft:bamboo')
})

NbtCompatEvents.defineMetals(event => {
  event.add('createmoremachines:netherite_alloy', {
    ingot: 'createmoremachines:netherite_alloy',
    block: 'createmoremachines:netherite_alloy_block', // preferred for trim textures
    nugget: 'createmoremachines:netherite_alloy_nugget',
    name: 'Netherite Alloy'
  })
  // shorthand
  event.add('modid:steel', 'modid:steel_ingot', 'modid:steel_block')
  event.remove('minecraft:gold')
})

NbtCompatEvents.defineStones(event => {
  event.add('mymod:slate', 'mymod:slate_rough', 'Slate')
  event.add('mymod:slate', {
    stone: 'mymod:slate_rough',
    cobble: 'mymod:slate_cobbled', // skip NBT cobble when set
    gravel: 'mymod:slate_gravel',
    sand: 'mymod:slate_sand',
    name: 'Slate'
  })
  event.remove('minecraft:netherrack')
})

NbtCompatEvents.defineDyes(event => {
  event.add('kubejs:neon', 'kubejs:neon_dye', 0xff00aa, 'Neon')
})

You can also edit the recipe generation like in this example. Artisian worktables is optional (server script):

NbtCompatEvents.defineRecipes(event => {
  const hasArtisan = Platform.isLoaded('artisanworktables')

  if (hasArtisan) {
    event.craftingTable()
      .shaped(
        ['AB', 'CA'],
        {
          A: 'wood:planks',
          B: 'artisanworktables:wood_handsaw',
          C: 'minecraft:flint'
        }
      )
  } else {
    event.craftingTable()
      .shaped(['AA', 'AA'], { A: 'wood:planks' })
  }

  const bookshelf = event.bookshelf()
    .shaped(
      ['PPP', 'BBB', 'PPP'],
      {
        P: 'wood:planks',
        B: 'minecraft:book'
      }
    )
  if (hasArtisan) {
    bookshelf.artisan('carpenter').removeCrafting()
  }

  const dyedPlanks = event.dyedPlanks()
    .shaped(
      ['PPP', 'PDP', 'PPP'],
      {
        P: 'wood:planks',
        D: 'dye'
      }
    )
  if (hasArtisan) {
    dyedPlanks
      .artisan('carpenter')
      .tool('#artisanworktables:tools/handsaw', 1)
      .removeCrafting()
  }

  const dyeFurniture = (builder) => {
    if (hasArtisan) {
      builder.artisan('carpenter').removeCrafting()
    }
  }

  dyeFurniture(event.dyedStairs()
    .shaped(['#  ', '## ', '###'], { '#': 'dyed:planks' }))

  dyeFurniture(event.dyedSlab()
    .shaped(['###'], { '#': 'dyed:planks' }))

  dyeFurniture(event.dyedFence()
    .shaped(['W#W', 'W#W'], { W: 'dyed:planks', '#': 'minecraft:stick' }))

  dyeFurniture(event.dyedFenceGate()
    .shaped(['#W#', '#W#'], { W: 'dyed:planks', '#': 'minecraft:stick' }))

  dyeFurniture(event.dyedDoor()
    .shaped(['##', '##', '##'], { '#': 'dyed:planks' }))

  dyeFurniture(event.dyedTrapdoor()
    .shaped(['###', '###'], { '#': 'dyed:planks' }))

  dyeFurniture(event.dyedPressurePlate()
    .shaped(['##'], { '#': 'dyed:planks' }))

  dyeFurniture(event.dyedButton()
    .shaped(['#'], { '#': 'dyed:planks' }))
})

// Hard-coded minecraft:crafting_table / bookshelf → convention tags (include nbtcompat via mod datapack).
ServerEvents.recipes(event => {
  event.replaceInput({}, 'minecraft:crafting_table', '#c:player_workstations/crafting_tables')
  event.replaceInput({}, 'minecraft:bookshelf', '#c:bookshelves')
})

Project description from CurseForge.

Pick your setup

NBTcompat by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

1 available setups

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

NBTcompat versions and loaders

8 of 8 releases match

Looking for an older file? The official CurseForge project page is in Resources.