tryashtar / nbt-studio Goto Github PK
View Code? Open in Web Editor NEWAn up-to-date NBT viewer and editor with lots of new features
An up-to-date NBT viewer and editor with lots of new features
The height of rows in the Tree View doesn't seem to be high enough to display tall symbols with top combining diacritics and low symbols with bottom combining diacritics. For example, letter Å with acute on top of it, Ǻ, doesn't seem to fit the line. Another example would be an Arabic /ri/ syllable (a /r/ letter with bottom /i/ diacritic): رِ. The same seems to apply to the Tag Editor window. Here are some screenshots: https://imgur.com/a/4lqIZzk.
I'm not sure if this is any easy to change, especially in case of the Tag Editor, but still I think it's important to point out that such problem exists and might mean a lot to some users. Though, since these things are likely pretty rare in terms of what most users would want to store in NBT format, I think the changes to text's height would be better off conditional: if there's any symbol like that to be displayed, set the height a bit higher, but otherwise keep the height default. Or maybe changing the hardcoded height just to cover for these marginal cases wouldn't look too bad on the more usual latin-script input - in this case, maybe just changing the hardcoded one would be nice.
If i try to load the level.dat i get the following error:
4 files failed to load:
levelname.txt
world_behavior_packs.json
world_icon.jpeg
world_resource_packs.json
File did not begin with a '{'
Could not auto-detect compression format.
Invalid region file, thinks there's a 466944-long chunk at position 384188416 but file is only 12 long
Attempted to read past the end of the stream.
Falscher Parameter. : 'C:\Users\Andre\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\sYSkZE3+IwA=\world_behavior_packs.json'
Falscher Parameter. : 'C:\Users\Andre\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\sYSkZE3+IwA=\world_icon.jpeg'
Falscher Parameter. : 'C:\Users\Andre\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\sYSkZE3+IwA=\world_resource_packs.json'
Load as SNBT:
System.FormatException: File did not begin with a '{'
at NbtStudio.NbtFile.CreateFromSnbt(String path)
at NbtStudio.NbtFile.<>c__DisplayClass32_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: True, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: True):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as region file:
System.FormatException: Invalid region file, thinks there's a 466944-long chunk at position 384188416 but file is only 12 long
at NbtStudio.RegionFile.Load()
at NbtStudio.RegionFile..ctor(String path)
at NbtStudio.RegionFile.<>c__DisplayClass35_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as SNBT:
System.FormatException: File did not begin with a '{'
at NbtStudio.NbtFile.CreateFromSnbt(String path)
at NbtStudio.NbtFile.<>c__DisplayClass32_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: True, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: True):
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as region file:
System.IO.IOException: Falscher Parameter. : 'C:\Users\Andre\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\sYSkZE3+IwA=\world_behavior_packs.json'
at System.IO.Strategies.FileStreamHelpers.ThrowInvalidArgument(SafeFileHandle handle)
at System.IO.Strategies.OSFileStreamStrategy.Seek(Int64 offset, SeekOrigin origin)
at System.IO.Strategies.BufferedFileStreamStrategy.Seek(Int64 offset, SeekOrigin origin)
at System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin)
at NbtStudio.Chunk.Load()
at NbtStudio.RegionFile.Load()
at NbtStudio.RegionFile..ctor(String path)
at NbtStudio.RegionFile.<>c__DisplayClass35_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as SNBT:
System.FormatException: File did not begin with a '{'
at NbtStudio.NbtFile.CreateFromSnbt(String path)
at NbtStudio.NbtFile.<>c__DisplayClass32_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: True, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: True):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as region file:
System.IO.IOException: Falscher Parameter. : 'C:\Users\Andre\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\sYSkZE3+IwA=\world_icon.jpeg'
at System.IO.Strategies.FileStreamHelpers.ThrowInvalidArgument(SafeFileHandle handle)
at System.IO.Strategies.OSFileStreamStrategy.Seek(Int64 offset, SeekOrigin origin)
at System.IO.Strategies.BufferedFileStreamStrategy.Seek(Int64 offset, SeekOrigin origin)
at System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin)
at NbtStudio.Chunk.Load()
at NbtStudio.RegionFile.Load()
at NbtStudio.RegionFile..ctor(String path)
at NbtStudio.RegionFile.<>c__DisplayClass35_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as SNBT:
System.FormatException: File did not begin with a '{'
at NbtStudio.NbtFile.CreateFromSnbt(String path)
at NbtStudio.NbtFile.<>c__DisplayClass32_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: True, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: False):
System.IO.InvalidDataException: Could not auto-detect compression format.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: True):
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
Load as region file:
System.IO.IOException: Falscher Parameter. : 'C:\Users\Andre\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\sYSkZE3+IwA=\world_resource_packs.json'
at System.IO.Strategies.FileStreamHelpers.ThrowInvalidArgument(SafeFileHandle handle)
at System.IO.Strategies.OSFileStreamStrategy.Seek(Int64 offset, SeekOrigin origin)
at System.IO.Strategies.BufferedFileStreamStrategy.Seek(Int64 offset, SeekOrigin origin)
at System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin)
at NbtStudio.Chunk.Load()
at NbtStudio.RegionFile.Load()
at NbtStudio.RegionFile..ctor(String path)
at NbtStudio.RegionFile.<>c__DisplayClass35_0.b__0()
at TryashtarUtils.Utility.Failable1..ctor(Func
1 operation, String description)
I can't use the dotnet installer, however i have the dotnet binary folder downloaded. please add a way to set the custom path to the dotnet folder
Would you consider releasing this project under a free software license, such as GPL-3.0-or-later
, Expat/MIT
, or Apache-2.0
?
(See also the GNU Project's license recommendations.)
example: I copy 5 bytes from say.. HxD, being 43 52 41 46 54
(CRAFT).
If I open the edit dialog for a byte array tag currently and paste into the hex view, it will just paste in 43 52 41 46 54
as if it were plain text. This is annoying.
What it should do is actually be pasting the numbers those hex values represent into the tag, or if the text contains characters that aren't whitespace or 0-9 a-f A-F, it should yell at you that its not valid hex data.
I'm considering this a bug but it could also count as a feature request? Unsure.
I tried downloading the newest version of nbtstudio and as expected, it asks me to download a new version of .NET. I am under Windows so I download the latest version (5.0.8 x86). I then try to install nbtstudio again but it asks me to download .NET again. I have also tried to install the same version of .NET but x64 it tells me that : "The framework 'Micosoft.WindowsDesktop.App', version '5.0.0' was not found. I also tried with the exact version (5.0.0) but I get the same error.
I was just wondering if i could use this on Linux since NBT Explorer and Universal Minecraft Editor both don't seem to work (even with WINE). I hope you could add support for Linux soon because i do not want to make my own NBT Editor...
This might be related to regional settings. My system's regional settings use comma (,) as decimal separator, and NBTStudio does display double tags like that. Going into edit mode, the value is pre-filled with the value using a comma, rather than a point, which is also invalid.
Note that it would be absolutely fine to just always display a point, and don't care about regional settings. Programming and file formats and variables are always English.
For example, it's very tedious to open each tag and check the plain text when going through a player's inventory NBT. Instead, it could look like this:
The same applies to other things. Here's an example with entities and enchantments:
This feature would be very useful and save a lot of time, at least to me.
(These screenshots are weird and 3D because they're from the homepage of https://www.universalminecrafteditor.com, which implements these features and is where I got the idea from.)
Since NBT Studio upgraded to .NET 5, it is mandatory to install .NET Runtime to use NBT Studio. (.NET Framework 4.8 is shipped with Windows 10/11)
But .NET doesn't have 'backward compatibility'. So even if you installed .NET 6 Runtime, you must install .NET 5 Runtime which is now marked as EOL to use NBT Studio. This makes me uncomfortable.
This is just suggestion. If you have some reason that makes you cannot update to .NET 6, it is ok.
How can I use this to edit chunk data or player data for Minecraft Bedrock Edition?
Starting from 1.18.30, Bedrock Edition uses a binary string tag to store entity storageKey data, which cannot be displayed correctly by this software and cannot be edited
Attachment:
actorprefix780000000f000000c9.zip
Java decided that UTF-8 wasn't cool enough, and modified it: https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html#modified-utf-8
Of course, we need to support both
When there are several compounds with data that's related to some same thing, to account for any changes to that thing you'd have to manually edit every single compound. So maybe it would be nice to have a special case of the bulk editor for this: a tree view window with just the equal tags from the selected compounds. Here's what it could look like:
Are there plans to port this, or Be able to compile for other Operating Systems, I for sure want to use this for bedrock on Linux(Linux & Mac People can play via a launcher with the android version running)
Also this looks pretty good for Java edition
Is there already a dark mode that I can access or is it controlled by Windows or something else? If not, then can you please add it?
NbtArrayTag
type argument used as the typed argument of GetArrayTags
is not declared anywhere, perhaps mismatch commit or missing committed file?
https://github.com/tryashtar/utils.nbt/blob/2aac7af0a3652406ea0222c07b0bf5e50ffcb138/NbtPath.cs#L133
Opening a bedrock world using NBT Studio 1.15 using the "Open Folder" button, causes worlds being prepared for the Minecraft Marketplace (which have a manifest.json in the root folder with the level.dat) to have their
"lock_template_options": true
changed from true to 1
This causes the marketplace validator to fail the submission since it only accepts booleans, not integers.
System Information
NBT Studio 1.15
Windows 10 Desktop PC (OS BUILD 19044.1645)
Steps to reproduce
For your convenience, here is a standard manifest.json which appears in the root folder with the level.dat:
"header": {
"name": "pack.name",
"description": "pack.description",
"version": [1, 0, 0],
"uuid": "45b8932f-1cc0-4c22-affd-3bbe24705d22",
"lock_template_options": true,
"base_game_version": [1, 18, 2]
},
"modules": [
{
"version": [1, 0, 0],
"type": "world_template",
"uuid": "845ae5ab-a357-4c30-9761-cbeb17d9a17b"
}
],
"format_version": 2
}
I got really excited when I came across this repository, but it seems it only supports structure files for Bedrock? Are there plans to add more functionality surrounding Bedrock, and if so, do you have any kind of estimated timeline?
So far I was unable to succesfully search for UUIDs.
Since UUIDs are 4 Integers, how do I have to input them in the "Value" field?
There should be a find and replace option so that you can easily replace multiple of the same nbt byte. This would be extremely useful for creators, map makers, etc.
I have to input exactly Infinityf to create a Infinity float tag.
please add some alias such as inf
Inf
Infinity
infinity
infinityf
+∞
∞
+Infinityf
Weeeee.
Obviously there should be a maximum auto-width, and probably this window should be resizable.
@Wector11211 mentioned this to me on discord
First of all thanks for this very handy tool.
Exception System.InvalidOperationException: Collection was modified.
I had a quick look at your code.
Changing foreach (var node in selected)
to foreach (var node in selected.ToList())
@ lines 1147 and 1156 in \NbtStudio\UI\MainForm.cs fixes it.
Hello @tryashtar and TYSM for carrying on the work of jaquadro! I am trying to do a global find/replace in my world region files. I want to replace every instance of "minecraft:deep_lukewarm_ocean" with "minecraft:ocean" -- is this possible in the current version of NBT Studio?
Some years ago i started an attempt at an editor like this too, but the project died off.
If you'd like, you can use the icons https://github.com/thebigsmileXD/WorldObserver/tree/master/WorldObserver/Assets as an additional set to give them a use even after the project died.
I can add the missing region/nbt icons if needed (and probably redesign the B/I/S/D/F/L because they are bigger)
File
wa.NBTbx00x00x00xffxffxffxffv.zip
Error log
error_log.txt
It would be nice to aggregate them all together. We already have a window for this, right? Also folders load in batches so you might get spammed when you open subsequent subfolders.
@Wector11211 mentioned this to me on discord.
It would be quite neat to open multiple files in 1 window using tabs
Alternatively there should be a setting to toggle between opening in tabs and separate windows
The text doesn't seem to fully render in the tree. This might happen because I'm using a 1920x1080 screen, since I was having issues with blurry text earlier. (The blurry text is somehow fixed by pressing "Open Folder," but that causes this to happen.)
add the ability for users to create their own plugins. for example, to edit snbt when opening a schematic file and editing TileEntities. where the user can write the command: replace all " /setblock ~ ~+2 ~+5 glass "with" /setblock ~ ~+2 ~+8 bedrock" which will be convenient if there are a lot of such lines. or another example: to all the numbers found between the lines "map_uuid" and "L}}" increase by the number entered by the user. thus, it will greatly speed up the work for those who perform the same type of actions. although to create plugins, people will need to know "C"
Hello.
I recently discovered a problem with my modded world and had to remove a lot of data from region files due to some errors. Each region file in my world has around 6 thousands of bad entries, and opening every NBT tree in NBT Studio takes a really long time. Moreover, when I am deleting the entries, it has to redraw everything again, and I had to waste ~10 hours until I found out that you can just close the trees and do the deletion. Instead of taking 10 minutes for a deletion per file, it now took seconds.
Can you please add a setting so that previewing found entries can be disabled? That would really help when working with large data set with a lot of entries, like world regions.
Thanks.
I designed the search/bulk edit system how I did because NBTExplorer's weird rule system always confused me greatly. Although some users want better tools.
What would be cool is the ability to select nodes based on an arbitrary predicate, then perform an arbitrary operation on your selection. A possible use case would be adding an enchantment to all diamond swords; you'd need a way to select the diamond sword ID tag, then add a relatively adjacent tag with a certain value.
I could do that in LINQ in 5 seconds, but adding a UI for it and porting all the possible conditions and operations, especially in an intuitive way, is a lot of work. This might never happen.
Currently, the only way to reorder list items is by dragging and dropping them. However, for those who are particularly unskilled with a mouse and cannot drag and drop, such as disabled, young, or elderly, the only way to reorder list items is by deleting all list items up to the point where the order needs to be changed and then adding them back in the correct order. Even I find myself needing to concentrate more when dragging and dropping items to reorder them, ensuring I don't accidentally move them between layers.
To improve accessibility, buttons should be added to the toolbar and/or edit menu to move items up and down within list tags. Other NBT editors do have these buttons so I feel like this is a missing puzzle piece.
It seems that currently the way NBT Studio saves files is just writing over the old bytes (can be easily spotted in case of removing parts of NBT structure and saving the file - the filesize stays the same). This doesn't seem to create any problems workflow-wise, but the compression feature kind of loses its point when the compressed bytes just get written on top of the uncompressed ones (in case of enabling the compression after saving previously with some data), resulting in a file that is the same size (probably such thing would barely matter for Minecraft files editing due to their constant resaving by the game, but I like using the Studio for manual own data editing). If I'm not mistaken, it's the NbtStudio.ExportSettings::Export()
's System.IO.File::OpenWrite()
usage that is causing this, maybe just replacing it with the System.IO.File::Create()
could be an easy fix.
When editing String tags, the window is pretty small and isn't resizeable. Not really a bug, but I think it would be a nice thing to have the alternative for when needed. Also, having controls for line wrapping (maybe in the SNBT editor too) would be nice. And maybe a thing that could be helpful when working with large strings, is a multiline tooltip when hovering over a String tag that has line breaks.
The tag tree seems to display ampersand symbols as combining underscores (underlining the letter that follows them). Maybe I'm missing something, but I don't think this is indended (although not sure if is any easy to fix).
I would really appreciate a feature that exports the nbt data to a txt file. If it were to be created, this would make it the ifrst NBT editor with the feature. Below is an example of how it shoud be:
Just like the example above would be great!
From the recent commits it seems that it was intended to make tooltips stay practically for as much as they're needed, but they disappear in ≈6 seconds after showing up.
Also, in the recent v1.15 build, I've tried resizing the bulk editor with strings - it seems to behave in the same inconsistent way I have described previously.
If I execute the exe nothing happens :( please advise
在更改图标的界面中,可以预览所有图标,但弹出的预览窗口没有关闭按钮。
It's just an NBT format, so there's no reason why it should be lagging. Sample .cw file is attached. (remove .txt file extension, it's to bypass GitHub's file extension limits.)
So, it seems like there are two different "empty" region files that are failing to load:
Both of these should load as empty regions. But... isn't it a bad idea to treat every empty file as a region file? Yes, that's why we should do this:
.nbt
is probably binary NBT... .mca
is probably a region filenew
'd up. Region files bypass the one-chunk checkAlso we need to fail faster at file type verification; exceptions are cringe. You already did both of these things in Quick Music so just do that again
If i do remember correctly, in older versions this was working just fine, but i might confuse it with .structure files.
What i find weird is that it tries to load them as SNBT. It should be little endian
Here is a Go project in case you need to look up something about the format, since the MC Wiki is useless as always: https://github.com/df-mc/structure/blob/651c5d323dbfb24991dafdb72129e2a8a478a81b/structure.go#L23
File
Version 1.15
Log:
1 file failed to load:
BelltowerWF.mcstructure
File did not begin with a '{'
Attempted to read past the end of the stream.
Region doesn't contain any chunks
Load as SNBT:
System.FormatException: File did not begin with a '{'
at NbtStudio.NbtFile.CreateFromSnbt(String path)
at NbtStudio.NbtFile.<>c__DisplayClass32_0.<TryCreateFromSnbt>b__0()
at TryashtarUtils.Utility.Failable`1..ctor(Func`1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: True, bedrock header: False):
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.<TryCreateFromNbt>b__0()
at TryashtarUtils.Utility.Failable`1..ctor(Func`1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: False):
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.<TryCreateFromNbt>b__0()
at TryashtarUtils.Utility.Failable`1..ctor(Func`1 operation, String description)
Load as NBT (compression: AutoDetect, big endian: False, bedrock header: True):
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
at fNbt.NbtFile.DetectCompression(Stream stream)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression, TagSelector selector)
at fNbt.NbtFile.LoadFromStream(Stream stream, NbtCompression compression)
at NbtStudio.NbtFile.CreateFromNbt(String path, NbtCompression compression, Boolean big_endian, Boolean bedrock_header)
at NbtStudio.NbtFile.<>c__DisplayClass34_0.<TryCreateFromNbt>b__0()
at TryashtarUtils.Utility.Failable`1..ctor(Func`1 operation, String description)
Load as region file:
System.FormatException: Region doesn't contain any chunks
at NbtStudio.RegionFile.Load()
at NbtStudio.RegionFile..ctor(String path)
at NbtStudio.RegionFile.<>c__DisplayClass35_0.<TryCreate>b__0()
at TryashtarUtils.Utility.Failable`1..ctor(Func`1 operation, String description)
When running on Linux the library libhostpolicy.so
is missing, bundling as a self contained app should fix this issue and allow Linux users to use NBT Studio as well.
this file is a new format created for the Amulet map editor. it is not supported in NBT Studio. please add support for structire files
Virus Total has 2 issues listed?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.