Skip to content

Commit bb17eb0

Browse files
committed
Custom block for instruments, walkway, circuit and ground in structure export
1 parent 6d9a276 commit bb17eb0

3 files changed

Lines changed: 57 additions & 67 deletions

File tree

Minecraft Note Block Studio.yyp

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/block_get_namespaced_id/block_get_namespaced_id.gml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function block_get_namespaced_id(argument0, argument1=0) {
8484
case 89: return "glowstone"
8585
case 91: return "jack_o_lantern"
8686
case 92: return "cake"
87-
case 95: return color + "_stained_glass"
87+
case 95: return color + "stained_glass"
8888
case 97: return "infested_stone"
8989
case 98: return "stone_bricks"
9090
case 99: return "brown_mushroom_block"

scripts/schematic_export/schematic_export.gml

Lines changed: 55 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
function schematic_export() {
22
// schematic_export()
3-
var fn, a, b, c, d, p, xx, yy, zz, len, wid, hei, o, chestx, chesty, chestz, signx, signy, signz, nblocks, layers, cyy, y1, insnum, insind, ins, insblock;
3+
var fn, a, b, c, d, p, xx, yy, zz, len, wid, hei, o, chestx, chesty, chestz, signx, signy, signz, nblocks, layers, cyy, y1, insnum, insind, ins;
44
var REPEATER, TORCHON, TORCHOFF, WIRE, LADDER, RAIL, POWEREDRAIL, noteblocks, noteblockx, noteblocky, noteblockz, noteblocknote;
55
if (!structure) fn = string(get_save_filename_ext("Minecraft Schematics (*.schematic)|*.schematic", filename_new_ext(filename, "") + ".schematic", "", "Export Schematic"))
66
else fn = string(get_save_filename_ext("Minecraft Structures (*.nbt)|*.nbt", filename_new_ext(string_replace_all(string_lower(filename), " ", "_"), "") + ".nbt", "", "Export Schematic"))
@@ -38,22 +38,6 @@ function schematic_export() {
3838
ins[13] = "bit"
3939
ins[14] = "banjo"
4040
ins[15] = "pling"
41-
insblock[0] = "dirt"
42-
insblock[1] = "oak_planks"
43-
insblock[2] = "cobblestone"
44-
insblock[3] = "sand"
45-
insblock[4] = "glass"
46-
insblock[5] = "white_wool"
47-
insblock[6] = "clay"
48-
insblock[7] = "gold_block"
49-
insblock[8] = "packed_ice"
50-
insblock[9] = "bone_block"
51-
insblock[10] = "iron_block"
52-
insblock[11] = "soul_sand"
53-
insblock[12] = "pumpkin"
54-
insblock[13] = "emerald_block"
55-
insblock[14] = "hay_block"
56-
insblock[15] = "glowstone"
5741
instrument_list = o.instrument_list
5842
layers = ceil(o.sch_exp_maxheight[o.sch_exp_compress] / 4)
5943
block_walkway_block = o.sch_exp_walkway_block
@@ -718,13 +702,17 @@ function schematic_export() {
718702
insnum += (instrument_list[| a].num_blocks != 0)
719703
insind[a] = (instrument_list[| a].num_blocks != 0)
720704
}
721-
TAG_List("palette", 27 + insnum * 26, 10)
722-
TAG_String("Name", "minecraft:stone")
705+
TAG_List("palette", 29 + insnum * 26, 10)
706+
TAG_String("Name", "minecraft:" + block_get_namespaced_id(block_walkway_block, block_walkway_data))
707+
TAG_End()
708+
TAG_String("Name", "minecraft:" + block_get_namespaced_id(block_circuit_block, block_circuit_data))
709+
TAG_End()
710+
TAG_String("Name", "minecraft:" + block_get_namespaced_id(block_ground_block, block_ground_data))
723711
TAG_End()
724712
for (a = 0; a < 16; a += 1) {
725713
show_debug_message(instrument_list[| a])
726714
if ((instrument_list[| a].num_blocks != 0)) {
727-
TAG_String("Name", "minecraft:" + insblock[a])
715+
TAG_String("Name", "minecraft:" + block_get_namespaced_id(o.sch_exp_ins_block[a], o.sch_exp_ins_data[a]))
728716
if (a = 9) {
729717
TAG_Compound("Properties")
730718
TAG_String("axis", "y")
@@ -914,7 +902,7 @@ function schematic_export() {
914902
buffer_write_int_be(wid - 1 - signy)
915903
buffer_write_int_be(signz)
916904
buffer_write_int_be(signx)
917-
TAG_Int("state", insnum * 26 + 17)
905+
TAG_Int("state", insnum * 26 + 19)
918906
TAG_End()
919907
if (sch_loop) {
920908
TAG_Compound("nbt")
@@ -929,15 +917,15 @@ function schematic_export() {
929917
buffer_write_int_be(wid - 1 - signy)
930918
buffer_write_int_be(signz - 1)
931919
buffer_write_int_be(signx)
932-
TAG_Int("state", insnum * 26 + 17)
920+
TAG_Int("state", insnum * 26 + 19)
933921
TAG_End()
934922
}
935923
for (a = 0; a < noteblocks; a += 1) {
936924
TAG_List("pos", 3, 3)
937925
buffer_write_int_be(wid - 1 - noteblocky[a])
938926
buffer_write_int_be(noteblockz[a])
939927
buffer_write_int_be(noteblockx[a])
940-
TAG_Int("state", 1 + insnum + noteblocknote[a])
928+
TAG_Int("state", 3 + insnum + noteblocknote[a])
941929
TAG_End()
942930
}
943931
if (chest) {
@@ -966,48 +954,50 @@ function schematic_export() {
966954
buffer_write_int_be(wid - b - 1)
967955
buffer_write_int_be(c)
968956
buffer_write_int_be(a)
969-
if (sch_block_read(a, b, c) = 0) TAG_Int("state", insnum * 26 + 2)
970-
else if (sch_block_read(a, b, c) = 1) TAG_Int("state", 0)
971-
else if (sch_block_read(a, b, c) = 3) TAG_Int("state", 1)
972-
else if (sch_block_read(a, b, c) = 5) TAG_Int("state", 1 + insind[0])
973-
else if (sch_block_read(a, b, c) = 4) TAG_Int("state", 1 + insind[0] + insind[1])
974-
else if (sch_block_read(a, b, c) = 12) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2])
975-
else if (sch_block_read(a, b, c) = 20) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3])
976-
else if (sch_block_read(a, b, c) = 35 && sch_data_read(a, b, c) = 0) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4])
977-
else if (sch_block_read(a, b, c) = 82) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5])
978-
else if (sch_block_read(a, b, c) = 41) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6])
979-
else if (sch_block_read(a, b, c) = 174) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7])
980-
else if (sch_block_read(a, b, c) = 216) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8])
981-
else if (sch_block_read(a, b, c) = 42) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9])
982-
else if (sch_block_read(a, b, c) = 88) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10])
983-
else if (sch_block_read(a, b, c) = 86) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[11])
984-
else if (sch_block_read(a, b, c) = 133) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[11] + insind[12])
985-
else if (sch_block_read(a, b, c) = 170) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[11] + insind[12] + insind[13])
986-
else if (sch_block_read(a, b, c) = 89) TAG_Int("state", 1 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[1] + insind[12] + insind[13] + insind[14])
987-
else if (sch_block_read(a, b, c) = 35 && sch_data_read(a, b, c) = 11) TAG_Int("state", insnum * 26 + 1)
988-
else if (sch_block_read(a, b, c) = 65) TAG_Int("state", insnum * 26 + 3)
989-
else if (sch_block_read(a, b, c) = 55) TAG_Int("state", insnum * 26 + 4)
990-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3) TAG_Int("state", insnum * 26 + 5)
991-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3 + 4) TAG_Int("state", insnum * 26 + 6)
992-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3 + 4 * 2) TAG_Int("state", insnum * 26 + 7)
993-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3 + 4 * 3) TAG_Int("state", insnum * 26 + 8)
994-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1) TAG_Int("state", insnum * 26 + 9)
995-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1 + 4) TAG_Int("state", insnum * 26 + 10)
996-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1 + 4 * 2) TAG_Int("state", insnum * 26 + 11)
997-
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1 + 4 * 3) TAG_Int("state", insnum * 26 + 12)
998-
else if (sch_block_read(a, b, c) = 94) TAG_Int("state", insnum * 26 + 13)
999-
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 5) TAG_Int("state", insnum * 26 + 14)
1000-
else if (sch_block_read(a, b, c) = 76 && sch_data_read(a, b, c) = 5) TAG_Int("state", insnum * 26 + 15)
1001-
else if (sch_block_read(a, b, c) = 77) TAG_Int("state", insnum * 26 + 16)
1002-
else if (sch_block_read(a, b, c) = 27) TAG_Int("state", insnum * 26 + 18)
1003-
else if (sch_block_read(a, b, c) = 66) TAG_Int("state", insnum * 26 + 20)
1004-
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 1) TAG_Int("state", insnum * 26 + 21)
1005-
else if (sch_block_read(a, b, c) = 76 && sch_data_read(a, b, c) = 1) TAG_Int("state", insnum * 26 + 22)
1006-
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 2) TAG_Int("state", insnum * 26 + 23)
1007-
else if (sch_block_read(a, b, c) = 76 && sch_data_read(a, b, c) = 2) TAG_Int("state", insnum * 26 + 24)
1008-
else if (sch_block_read(a, b, c) = 69) TAG_Int("state", insnum * 26 + 25)
1009-
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 4) TAG_Int("state", insnum * 26 + 26)
1010-
else TAG_Int("state", insnum * 26 + 2)
957+
if (sch_block_read(a, b, c) = 0) TAG_Int("state", insnum * 26 + 4) //air
958+
else if (sch_block_read(a, b, c) = block_walkway_block && sch_data_read(a, b, c) = block_walkway_data) TAG_Int("state", 0) //walkway
959+
else if (sch_block_read(a, b, c) = block_circuit_block && sch_data_read(a, b, c) = block_circuit_data) TAG_Int("state", 1) //circuit
960+
else if (sch_block_read(a, b, c) = block_ground_block && sch_data_read(a, b, c) = block_ground_data) TAG_Int("state", 2) //ground
961+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[0] && sch_data_read(a, b, c) = o.sch_exp_ins_data[0]) TAG_Int("state", 3) //vanilla instruments (only)
962+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[1] && sch_data_read(a, b, c) = o.sch_exp_ins_data[1]) TAG_Int("state", 3 + insind[0])
963+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[2] && sch_data_read(a, b, c) = o.sch_exp_ins_data[2]) TAG_Int("state", 3 + insind[0] + insind[1])
964+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[3] && sch_data_read(a, b, c) = o.sch_exp_ins_data[3]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2])
965+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[4] && sch_data_read(a, b, c) = o.sch_exp_ins_data[4]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3])
966+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[5] && sch_data_read(a, b, c) = o.sch_exp_ins_data[5]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4])
967+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[6] && sch_data_read(a, b, c) = o.sch_exp_ins_data[6]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5])
968+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[7] && sch_data_read(a, b, c) = o.sch_exp_ins_data[7]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6])
969+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[8] && sch_data_read(a, b, c) = o.sch_exp_ins_data[8]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7])
970+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[9] && sch_data_read(a, b, c) = o.sch_exp_ins_data[9]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8])
971+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[10] && sch_data_read(a, b, c) = o.sch_exp_ins_data[10]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9])
972+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[11] && sch_data_read(a, b, c) = o.sch_exp_ins_data[11]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10])
973+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[12] && sch_data_read(a, b, c) = o.sch_exp_ins_data[12]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[11])
974+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[13] && sch_data_read(a, b, c) = o.sch_exp_ins_data[13]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[11] + insind[12])
975+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[14] && sch_data_read(a, b, c) = o.sch_exp_ins_data[14]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[11] + insind[12] + insind[13])
976+
else if (sch_block_read(a, b, c) = o.sch_exp_ins_block[15] && sch_data_read(a, b, c) = o.sch_exp_ins_data[15]) TAG_Int("state", 3 + insind[0] + insind[1] + insind[2] + insind[3] + insind[4] + insind[5] + insind[6] + insind[7] + insind[8] + insind[9] + insind[10] + insind[1] + insind[12] + insind[13] + insind[14])
977+
else if (sch_block_read(a, b, c) = 35 && sch_data_read(a, b, c) = 11) TAG_Int("state", insnum * 26 + 3) //blue_wool
978+
else if (sch_block_read(a, b, c) = 65) TAG_Int("state", insnum * 26 + 5) //ladder
979+
else if (sch_block_read(a, b, c) = 55) TAG_Int("state", insnum * 26 + 6) //redstone_wire
980+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3) TAG_Int("state", insnum * 26 + 7) //east repeater 1
981+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3 + 4) TAG_Int("state", insnum * 26 + 8) //east repeater 2
982+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3 + 4 * 2) TAG_Int("state", insnum * 26 + 9) //east repeater 3
983+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 3 + 4 * 3) TAG_Int("state", insnum * 26 + 10) //east repeater 4
984+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1) TAG_Int("state", insnum * 26 + 11) //west repeater 1
985+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1 + 4) TAG_Int("state", insnum * 26 + 12) //west repeater 2
986+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1 + 4 * 2) TAG_Int("state", insnum * 26 + 13) //west repeater 3
987+
else if (sch_block_read(a, b, c) = 93 && sch_data_read(a, b, c) = 1 + 4 * 3) TAG_Int("state", insnum * 26 + 14) //west repeater 4
988+
else if (sch_block_read(a, b, c) = 94) TAG_Int("state", insnum * 26 + 15) //south repeater 4
989+
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 5) TAG_Int("state", insnum * 26 + 16) //unlit torch
990+
else if (sch_block_read(a, b, c) = 76 && sch_data_read(a, b, c) = 5) TAG_Int("state", insnum * 26 + 17) //lit torch
991+
else if (sch_block_read(a, b, c) = 77) TAG_Int("state", insnum * 26 + 18) //south stone_button
992+
else if (sch_block_read(a, b, c) = 27) TAG_Int("state", insnum * 26 + 20) //ns powered_rail
993+
else if (sch_block_read(a, b, c) = 66) TAG_Int("state", insnum * 26 + 22) //ns rail
994+
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 1) TAG_Int("state", insnum * 26 + 23) //east unlit walltorch
995+
else if (sch_block_read(a, b, c) = 76 && sch_data_read(a, b, c) = 1) TAG_Int("state", insnum * 26 + 24) //east lit walltorch
996+
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 2) TAG_Int("state", insnum * 26 + 25) //west unlit walltorch
997+
else if (sch_block_read(a, b, c) = 76 && sch_data_read(a, b, c) = 2) TAG_Int("state", insnum * 26 + 26) //west lit walltorch
998+
else if (sch_block_read(a, b, c) = 69) TAG_Int("state", insnum * 26 + 27) //south lever
999+
else if (sch_block_read(a, b, c) = 75 && sch_data_read(a, b, c) = 4) TAG_Int("state", insnum * 26 + 28) //north lit walltorch
1000+
else TAG_Int("state", insnum * 26 + 4)
10111001
TAG_End()
10121002
}
10131003
}

0 commit comments

Comments
 (0)