NBT
Guides for NBT
Introduction
There are many aspects to NBT, from the most basic Names and Lore, to the most advanced and complicated of attributes. While the below guides are not intended to delve into the more complicated depths of NBT, they will hopefully show you all you need to get started with NBT editing.
Names & Lore
The most basic aspect of NBT Editing: altering Names and Lore of an item.
There are a number of ways to accomplish changing the name of an item; A simple anvil will do it, albeit in a fairly crude manner, but we'll be using IBE Editor, as it's full fleshed and fairly easy to understand.
To begin, hold the item you wish to edit, and open the Item Editor (default keybind is I
).
There will then be a list of menus on the left; Choose the one called "Display".
Enter whatever you wish to into the text box labeled "Custom Name".
Click on the "Done" button to save it.
That's it! Your item now has a custom name.
Now let's add some lore to it. Open the Item Editor and Navigate to the Display menu again, then click on the "+" button below the Custom Name.
This will add a Lore text box; You can have unlimited lore boxes, each one being a new line of lore on the item.
Enter whatever you wish into the text box, and save it.
To view the lore you've added, hover over the item in your inventory; Whatever you added should be shown there!
An important note:
If you use a plugin on a server (such as Itemizer) to do your Name/Lore, you may bloat an items size unnecessarily. Why is this a bad thing? Many servers limit item size, and will wipe an item from your inventory if it's too big, and while extra tags in your name/lore might seem like a small thing, it begins to add up, especially in kits.
TL;DR:
Avoid making your items with plugin commands. Stick with editors such as IBE or NBT Editor
Colors & Gradients
Now we'll make things more interesting- and more beautiful!
Return to the editor, highlight the name and choose one of the options in the menu floating above; If you're unsure what each is, hover over different buttons for a tooltip describing what they do.
To remove a style, click the button that added it; to remove a color, either choose a different color, or choose "Reset Color".
If you make a big mistake, you can use the orange reset button to the right of the text box to reset things to how they were when you opened the editor.
Now for something a bit more complicated: Gradients.
For this part, we'll be making use of FZMM, of which the default keybind is Z
.
Open the FZMM Menu, and choose "Text Format".
In the Text Format menu, first enter the text you wish in the "Message" box.
Now, the gradient; While FZMM offers many fun options for coloring text, we'll be making use of the "Gradient" tab. Click on the Gradient button to get started.
Add and alter colors as you wish; There's no limit to how many colors you can use, but it's best to keep it fairly simple.
A preview of how it will look is shown in the top left under "Text Format". When you are satisfied with your gradient, choose an option from the buttons at the bottom to add it to your item.
Any option you choose will make a copy of your item with that option applied, so don't be afraid to try them out; Your original item will be left intact.
That's it! You have successfully added a gradient to your item.
Want extra practice? Try out FZMM's other Text Format options, like Rainbow and Interleaved.
Mapart
Guides on Mapart
Creating
Epsilon Bot
The first way to create mapart works in both single and multiplayer, and is called Epsilon Bot.
To get started download or clone the repository, and open it inside of something like VisualStudio Code or Intellij IDEA.
Navigate to EpsilonBot/src/main/resources/default-config.yml
and edit the information as follows:
host:
to the IP of the server you wish to connect to; Use localhost for a local worldport:
to the port of the server you wish to connect to; Typically this is the default 25565 and does not need to be edited.Username:
to the email for your Microsoft accountPassword:
to the password for your Microsoft accountmapartX:
and mapartZ:
to different coordinates, if the world or server you play on restricts world size. To do so, find the northwest block of a chunk via F3, and use those coordinates.commandPrefix:
to a custom prefix for you. If you aren't using this bot on TotalFreedom, you don't really need to do this, but it's still a good idea.warpName:
to something unique. This the name the bot will use to attempt to set a /warp
when the map is finished.trusted:
with your UUID. Your UUID can be found by searching your username on a site like NameMC.Once these changes are made, run Main.java
.
The bot (or rather, the MC Account you chose) will connect to the world or server. To get started using it, use `mapart <link-to-a-img/image.png> [1 2] [--NO_DITHER --USE_TRANSPARENCY]
, modifying the prefix to yours. The numbers indicate the width and height in maps, e.g 2 1
is 2 wide 1 high. The Dither and Transparency arguments are of course optional, but --NO_DITHER
is highly recommended unless you preprocess the image.
Each mapart takes roughly 22 minutes for the Bot to build. It will send a message in chat when it is finished.
.nbt Mapart Files
Another way to create mapart, is to use an external program or site like MapartCraft to generate and process an image into mapart, and then use the provided .nbt file as a schematic to build it in-game.
To get started, head to MapartCraft and upload an image. Set the block selection to everything, and customize it as needed.
It is recommended you set "Dithering" to "None", as well as select which version you will be making it in, as the block selection will obviously vary between versions. Fiddle with the cropping mode and map size until you're comfortable with the result.
Click the "Download NBT" button. This .nbt file is different to those we use in the archives; Rather than drag-and-dropping into Minecraft, it must be placed somewhere in your Minecraft directory. The exact location will depend on the Mod you use, but I recommend Litematica, the directory for which is chosen by you; A folder inside of /.minecraft/
simply labeled "Schematics" works well.
Use your chosen mod or service to paste in your mapart (making sure you align it to chunk borders!), then use make a map from it.
.dat Mapart Files
Similar to .nbt Mapart Files, .dat Mapart Files can be made on MapartCraft.
Follow the steps for .nbt Mapart Files as shown above, but change "Mode" from "Schematic (NBT)" to "Datafile (map.dat)", then choose the files with "Download mapdat". If the mapart is larger than 1x1, it is recommended to use the "Download mapdat.zip" option.
Cut the .dat files from your download folder, and paste them inside of /.minecraft/saves/YourWorldName/data/
. If there are already map.dat files in there, you will need to change the numbers in the names of the ones you are adding before pasting them in (e.g: map_0.dat
should become map_101755.dat
Join your world, and create a mapart. Then, using NBT Editor or IBE Editor, modify the "map" tag to be the ID in the name of the .dat file.
You now have mapart, and without the large cumbersome build!
Saving
If you found a really cool mapart on a server and want to save it, the easiest way is to find the build used for it, and make a copy.
There really isn't much of a guide to write here; Find the build and save a copy either with WorldEdit if the server allows you to download its schematics, or Litematica if not.
For some tips and tricks, check Saving Builds - WorldEdit/Schematics
Ripping
Unfortunately, sometimes mapart builds can not be found (or in the case of generated .dat files, don't even exist!).
This brings us to the final mapart guide: Ripping.
To rip mapart, you will need the mod WNT, in addition to an NBT Editing mod.
First, get a copy of the mapart(s) you wish to rip, and place it in your inventory.
Find a nice, out of the way spot where there are few if any entities, and NO other maps be they in players inventories or in item frames.
Leave the world or server, and rejoin; This is to clear WNT's cache of entities, including maparts, so only the one(s) you wish to download are shown.
Now, go to WNTs Blackbox Menu (if it isn't open by default, run /blackbox
. Select the "Maps" tab. It should only show the maps in your inventory, identifiable by ID.
To download them, click on "WNT" -> "Dump" -> "Maps" -> "Dump all map data in memory to disk" or "Dump specific map in memory to disk".
This will dump the maps .dat files to /.minecraft/wnt/dumps/
. To get the map in a local world, follow the instructions in Mapart Creating for adding .dat mapart files to your world.
Before proceeding with the following steps, you must rename the .dat files using the map_#
scheme, replacing # with an incrementing number.
To extract actual images from these .dat files, download map-to-img.jar
from GitHub.
Now open Command Prompt, cd to the directory that map-to-img.jar is located in, and run the following command: java -jar map-to-img.jar /path/to/the/.dat/files/
.
There will now be a folder called "out" in the directory the .dat files are in, containing the extracted images.
Saving Builds
Guides on saving Builds
WorldEdit/Schematics
One of the simplest ways of saving builds is with WorldEdit or Litematica schematics.
The instructions differ based on method, but it is recommended to use WorldEdit if you have access to download the generated .schematic files; Otherwise, use Litematica.
Below are some general pointers to help you out:
-a
flag to your //paste
command; By ignoring air blocks, the time it takes to paste in can be drastically reduced!Chunk Ripper
The Chunk Ripper is an effective, but rather extreme method of saving builds. It will copy and save the block contents of entire chunks locally, and then paste them into a local world.
This method completely ignores NBT data, such as the contents of Shulkers, Chests, Barrels, Signs, Item Frames, Armorstands, etc. so only use it when you don't care about saving any NBT.
This method also only works on 1.19-1.19.2 and older; The author archived the project, and a replacement has not come forward yet.
To get started, get the ChunkCopy mod for Fabric.
Head to the chunks you want to copy, note the coordinates down, enable the F3 Chunk viewer with F3 + G
, and then run the following command: /chunkcopy copy <saveName> <distance>
.
Use the chunk viewer you enabled to count chunks; Snake back and forth over the area, running the command above every 8 chunks.
Once you've ripped the area you wish, create a new world using the Void template, and run the following command: /chunkcopy paste <saveName> <distance>
.
The chunks will be pasted in at the exact same coordinates they were ripped from, so you will need to teleport to those coordinates you noted down earlier.
Congrats, you've now ripped chunks from one world to another!
Misc
Guides that don't fit elsewhere, but are still useful
Custom Skin Loader
Custom Skin Loader is a great way to view old HD Heads which don't work post-1.16; However, by default it is infuriatingly slow at loading any textures at all.
My personal theory as to why, is that it cycles through a long list of sources one source at a time, until it gets the texture. I also suspect it does this inefficiently, further bloating the load time. If anyone cares to prove/disprove this, have a look at CSL's source code and open an issue on the Archives GitHub repo with your findings.
Now for the guide on speeding it up :D
This is a relatively simple process; All you'll need is File Explorer, and Notepad.
.minecraft/CustomSkinLoader/CustomSkinLoader.json
in Notepad
"loadlist": [
{
"name": "Mojang",
"type": "MojangAPI",
"apiRoot": "https://api.mojang.com/",
"sessionRoot": "https://sessionserver.mojang.com/"
},
{
"name": "LocalSkin",
"type": "Legacy",
"checkPNG": false,
"skin": "LocalSkin/skins/{USERNAME}.png",
"model": "auto",
"cape": "LocalSkin/capes/{USERNAME}.png",
"elytra": "LocalSkin/elytras/{USERNAME}.png"
}
],
Do note that doing this removes the functionality of loading skins from the sites CSL advertises, instead reducing it to simply the full (unblocked) Mojang API, and local storage.
We're all out of guides :(
If you have a suggestion of a guide we should include here (or maybe you've even written a whole guide yourself?), feel free to open an Issue on our GitHub, and we'll see about adding it!