NBT.gd/demo/examples.gd
2024-03-08 01:16:17 -05:00

130 lines
3.3 KiB
GDScript

extends Control
func example():
var nbt = NBT.new()
# Create an example NBT file from scratch WITHOUT the helper class:
var data = {}
# set the root compound tag:
data[""] = {}
# put a compound inside. this will store the data
data[""]["type"] = NBT.TAG_Compound
data[""]["data"] = {}
# add some different data types inside:
# each one of these is shown done a little differently.
data[""]["data"]["string example"] = {
"type":NBT.TAG_String,
"data":"this is the srings contents"
}
#short example:
data[""]["data"]["short example"] = {}
data[""]["data"]["short example"]["type"] = NBT.TAG_Short
data[""]["data"]["short example"]["data"] = -1
# string list helper command example:
data[""]["data"]["names"] = {
"type":NBT.TAG_List,
"valuetype":NBT.TAG_String,
"data":
[
{"type":NBT.TAG_String,"data":"Steve"},
{"type":NBT.TAG_String,"data":"Alex"},
{"type":NBT.TAG_String,"data":"Herobrine"},
{"type":NBT.TAG_String,"data":"Bob"},
{"type":NBT.TAG_String,"data":"John"},
]
}
nbt.save_file("user://fromscratch.nbt",data)
# Create an example NBT file from scratch WITH the helper class:
data = {
"example":NBTHelper.compund({
"byte":NBTHelper.byte(69),
"short":NBTHelper.short(420),
"int":NBTHelper.int(1337666),
"long":NBTHelper.long(999999999999999),
"float":NBTHelper.float(420.69),
"double":NBTHelper.double(0.694201337),
"bytearray":NBTHelper.byte_array([0,1,2,3,255,254,253,252]),
"string":NBTHelper.string("Hello, world."),
"list":NBTHelper.list([
NBTHelper.compund({
"name":NBTHelper.string("Steve"),
"age":NBTHelper.byte(34),
}),
NBTHelper.compund({
"name":NBTHelper.string("Alex"),
"age":NBTHelper.byte(29),
}),
],NBT.TAG_Compound),
"intarray":NBTHelper.int_array([69,420,666,1337]),
"longarray":NBTHelper.long_array([694206661337,8888888888888888,6666666666666666]),
"quickliststring":NBTHelper.quick_list(["hello","how are you?"],NBT.TAG_String),
"quicklistfloat":NBTHelper.quick_list([0,0.125,0.25,0.5,1.0,1.5],NBT.TAG_Float),
})
}
nbt.save_file("user://helperexample.nbt",data)
$Output.text = "Example NBTs saved in user folder"
var s = SNBT.new()
$Output.text = s.to_snbt(data)
func _on_schem_pressed():
# this creates a simple sponge schematic with a block of your choice
# does not use helper class
var data = {
"Schematic":{
"type":NBT.TAG_Compound,
"data":{
"BlockData":{
"type":NBT.TAG_Byte_Array,
"data":PoolByteArray([
1,0,0,0,1,
0,1,0,1,0,
0,0,1,0,0,
0,1,0,1,0,
1,0,0,0,1,
]) # A 5 by 5 "X" shape
},
"DataVersion":{
"type":NBT.TAG_Int,
"data":2975
},
"Height":{
"type":NBT.TAG_Short,
"data":1
},
"Length":{
"type":NBT.TAG_Short,
"data":5
},
"Width":{
"type":NBT.TAG_Short,
"data":5
},
"PaletteMax":{
"type":NBT.TAG_Int,
"data":2
},
"Version":{
"type":NBT.TAG_Int,
"data":2
},
"Palette":{
"type":NBT.TAG_Compound,
"data":{
"minecraft:air":{
"type":3,
"data":0
},
$BID.text:{
"type":NBT.TAG_Int,
"data":1
},
}
},
}
}
}
var nbt = NBT.new()
nbt.save_file("user://example.schem",data)
$Output.text = "Schem saved made out of %s"%[$BID.text]