WailaNBT

[toc]

Description

Waila NBT is a mod to show player defined specific NBT info on Waila HUD.
Waila NBT is a Client-Side addon for Waila. And In-Game NBTEdit (1.7.10 version)is needed to look up NBT data structure.

Examples (with config files)

Download .json file and put in configWailaNBT folder and its ready to use.
Please share your config!
More config files can be found at https://github.com/exzhawk/wailanbt/tree/master/eclipse/config/WailaNBT .

Botania (Holding Forestry Wand)[su_spoiler title=”Spoiler”]
https://raw.githubusercontent.com/exzhawk/wailanbt/master/eclipse/config/WailaNBT/Botania.json
2014-09-21_0-55-17 2014-09-21_7-58-12[/su_spoiler]

Blood magic (Holding Divination Sigil)[su_spoiler title=”Spoiler”]
https://raw.githubusercontent.com/exzhawk/wailanbt/master/eclipse/config/WailaNBT/bloodmagic.json
2014-09-21_9-55-25 2014-09-21_9-55-54 2014-09-21_9-54-06[/su_spoiler]

BuildCraft (Holding BC Wrench) by ViKaleidoscope[su_spoiler title=”Spoiler”]

https://github.com/exzhawk/wailanbt/raw/master/eclipse/config/WailaNBT/buildcraft.json

2014-09-23_2-27-27 2014-09-23_2-28-02 2014-09-23_2-30-05[/su_spoiler]

Ender IO (Holding Yeta Wrench) by ViKaleidoscope[su_spoiler title=”Spoiler”]
https://github.com/exzhawk/wailanbt/raw/master/eclipse/config/WailaNBT/enderio.json
2014-09-25_0-23-22[/su_spoiler]

Thaumcraft (Holding Wand) by ViKaleidoscope[su_spoiler title=”Spoiler”]
https://github.com/exzhawk/wailanbt/raw/master/eclipse/config/WailaNBT/thaumcraft.json
2014-09-25_0-28-33[/su_spoiler]

Industrial Craft 2 (Holding anything is fine) by ViKaleidoscope[su_spoiler title=”Spoiler”]
https://github.com/exzhawk/wailanbt/raw/master/eclipse/config/WailaNBT/IndustrialCraft2.json
2014-09-25_0-56-49[/su_spoiler]

Thermal Expansion (Holding Crescent Hammer) by ViKaleidoscope[su_spoiler title=”Spoiler”]
https://github.com/exzhawk/wailanbt/raw/master/eclipse/config/WailaNBT/thermalexpansion.json
2014-09-25_0-30-28[/su_spoiler]

Witchery (Holding anything is fine) by ViKaleidoscope[su_spoiler title=”Spoiler”]
https://github.com/exzhawk/wailanbt/raw/master/eclipse/config/WailaNBT/witchery.json
2014-09-25_0-31-44[/su_spoiler]

Tutorial

Blood Magic by WayofTime and Botania by Vazkii are used as examples for tutorial.

Part 1. Blocks(Tile Entity)

First, drop the jar file into mods and start game.
A configuration folder as well as an empty file “default.json” will be generated in your config folder. The mod is useless until you put right config in it.
Possible errors will be displayed in you chat window, if any.
The config file is in JSON format looks like this:

{
    "Holding Item Name": {
        "Tile Entity ID 1": {
            "Tag Name 1": "Display Name 1",
            "Tag Name 2>>>Tag Name 3": "Display Name 2"
        },
        "Tile Entity ID X": {
        },
        "Holding Item Name X": {}
    }
}

This configuration means, when player holding an item named “Holding Item Name”, and point cursor at a Tile Entity with ID “Tile Entity ID 1”, “Value of Tag Name” will be shown, and “Display Name 1″is the name that will represent “Value of Tag Name” in Waila HUD.

“Tag Name 2>>>Tag Name 3” means display the value of “Tag Name 3” in the NBT Tag Compound named “Tag Name 2”.  That’s somehow similar to a sub folder. Use “>>>” to separate to name if “Tag Name 3” is inside “Tag Name 2”. “>>>” should only be used under this sub folder condition. As for TagList, you can use number. e.g. Use “Items>>>2>>Count” to access the highlighting field.

2014-10-02_3-23-27

“Holding Item Name”, “Tile Entity ID 1” and “Tag Name 1” support regular expression, so some special characters like “|”(pipe) need a “”(backslash) before it. e.g: “BuildCraft|Transport” must be written as “BuildCraft|Transport”.

Let’s take a living example.

Blood Altar is a basic block of Blood Magic. It can store “Life Essence” and transmute items.

2014-09-20_23-57-18

When pointing at it, run command “/nbtedit”
2014-09-21_0-03-32
2014-09-21_0-05-37

And here is what the tool(Divination Sigil) from blood magic says.
2014-09-21_0-07-06

Now we know the ID of this block is “containerAltar“, and we guess that the “Amount” is the “Current Essence” and “capacity” is “Capacity”.

The target is, when holding the Divination Sigil, we can directly read the “Current Essence” and “Capacity” from the Waila HUD rather than a right click.

Hold the Divination Sigil and run command “/wnn” (stand for Waila NBT Name). The identify name “AWWayofTime:divinationSigil” of it will be shown in chat window.
For Inventory Tweak user
[su_spoiler title=”Spoiler”]If you have Inventory Tweak installed, you can also see the name on the item tooltips, by allowing advanced tooltips(hotkey: F3+H).
2014-09-24_23-28-11[/su_spoiler]
2014-09-21_0-18-22

So we write following content to default.json. (Or if you wanna keep them in order, create a “bloodmagic.json” and write in it instead.)

{
    "AWWayofTime:divinationSigil": {
        "containerAltar": {
            "Amount": "Current Essence",
            "capacity": "Capacity"
        }
    }
}

After saving the config file. Run command “/wnr” (stand for Waila NBT Reload) to reload configuration.

Then hold the Divination Sigil and point at the Blood Altar.
2014-09-21_0-39-13

It works!

Let’s try another. Daybloom.

Run command “/nbtedit” first.
2014-09-21_0-46-31

ID is “botania:specialFlower”, and what useful data “mana” is under a NBTTagCompound named “subTileCmp”.

Save following content to “botania.json” in folder “config/WailaNBT”. (Where the default.json located.)

{
    ".*": {
        "botania:specialFlower": {
            "subTileCmp>>>mana": "Mana"
        }
    }
}

“.*” is an regular expression matches all string. Note it also matches hand without holding anything. Because holding nothing equals holding an item named “”(empty string).
And don’t forget run command “/wnr” to reload configuration.

Now point at Daybloom and it should work.
2014-09-21_0-55-17

Part 2. Mobs(Entity)

Waila NBT also works on entity(mobs, etc.).
2014-09-28_3-21-13

Just write configs and change “Tile Entity ID” to “Entity ID”, which can be known by command “/wne”(stand for Waila NBT Entity).
2014-09-28_3-16-10

And you can use “/nbtedit” to see NBT data structure of an entity too.
2014-09-28_3-15-51

Following is the example config file for the picture of sheep above.

{
    ".*": {
        "Sheep": {
            "Age": "Love cooldown",
            "InLove": "Love time left"
        }
    }
}

Part 3. Items (Tool tips)

WailaNBT works on item too. And will show information on tool-tip.
2014-09-28_3-29-28

There are no method to look up the NBT data structure of an item, so a chest is needed. Put item in a chest and run command “/nbtedit”. The part surrounded with a blue border is the NBT structure of the item.
2014-09-28_3-24-20

You need to change “Holding Item Name” to “tooltip” and change “Tile Entity ID” to “Item Name”, which cant be get by the command “/wnn”.
Following is the example config file for the picture of notch’s head above.

{
    "tooltip": {
        "minecraft:skull": {
            "SkullOwner": "Name"
        }
    }
}

Part 4. Modify displayed value

Displayed value can be modify by using printf style formatter or JavaScript and can be decorate with color and font style.

Don’t forget to add the Holding Item and Tile Entity ID content. This part only focus on “Tag Name 1”: “Display Name 1”.

Printf style formatter

e.g. “Owner>>>Name”:”This is %s’s head!” will get the effect below.

2014-10-02_3-39-39

You may find “%.2f” useful. This will force it show 2 decimal places.

JavaScript

You may wanna do more than format a string, like divide ticks by 20 to show in seconds. JavaScript modifier is for you.

Let’s take furnace as an example.

To show the burn time in seconds, use this code below

“BurnTime”: “function p(v){var r = (v/20);return ‘Burn time left: ‘+r.toFixed(1)+’ seconds’}”

Amazing!

2014-10-02_3-52-52

function p(v){}” is forced if you want to you JavaScript to modify the value. that’s the basic function to run. “v” is the value read according to Tag Name and you can do anything you like in JavaScript with it. And don’t forget to return what you want to display.

It’s tricky sometime when you look up ID in an inventory. It’s a number and hard to know what actually is. When encounter this problem, use a pre-defined object named “names{}”.

2014-10-02_4-07-24

You can use name[‘id’] to get the name of the numeric id. Note it can only handle limited localized name now.

e.g. If you want to display the first item name in a hopper. Write below in the config file:

“Items>>>0>>>id”: “function p(v){r = ‘first item is ‘ + names[v];return r}”

Waila will display:

2014-10-02_4-08-46

Color and Font style

16 colors and bold/strike/underline/italic can be used to decorate displayed text. you can also use some text to make the text right/center aligned or use tab to make things neat.

Unmodified text shows in grey.

To use colors and font style, please look it up in http://minecraft.gamepedia.com/Formatting_codes

To use align and tab:

“u00A4u00A4a” works as  tab
“u00A4u00A4b” works as  right-aligned
“u00A4u00A4c” works as  center-aligned

The default style is “key tab+right-aligned+white value”

e.g.”BrewTime”: “Brew time left u00A4u00A4au00A4u00A4bu00A7f%.0f ticks” works as below.

2014-10-02_4-24-15

 

 

Notice

This mod is over powered and may destroy experience in survival mode. It’s generally written for testing purpose. Use it on server without permission may be considered as cheating.
Holding nothing equals holding an item named “”(empty string).
If display name is not provided (like “Amount”:””), the tag name(“Amount”) will be used. (for lazy people like me ;P
If there are two config contains same “Tile Entity ID” and their “Holding Item Name” is same, one of “Tile Entity ID” will be ignored.
Folders in config/WailaNBT will be directly ignored.

Planning Feature

Support for items dropped on ground.
Allow hide type/part of info according to config, maybe keys.
More complex match method.
Allow multiple language set.
Support Waila Head part
Support Waila Tail part

Thanks

Prof Mobius for bring us Waila.
Pahimar for teaching me basic modding.
Davidee for bring us In-Game NBTEdit, and bjbinc for 1.7.10 port
ViKaleidoscope for Simplified Chinese localization and config files.
Fixided for tutorial editing advice.

License

Source code of this mod can be found here: https://github.com/exzhawk/wailanbt
You can include it in modpacks and redistribute binary files. But a notice in this post and keeping a link to this post will be appreciated.

One thought on “WailaNBT”

  1. 希望站长推出汉化的配置文件,有些配置不知为什么游戏显示乱码,望回复。

Leave a Reply

Your email address will not be published. Required fields are marked *