11function 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