Date: 2017/11/18 14:14:10 UTC-08:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
gpa_com_skularr_mythicmobs_builds:
type: world
debug: false
structures:
overworld_stonebrick:
layer_size: '5x5'
layers:
1: 5:stone_brick;3:stone_brick+grass*3+stone_brick;5:stone_brick
2: 1:stone_brick;1:cobblestone_stairs,1;1:air;1:cobblestone_stairs;1:stone_brick;1:cobblestone_stairs,3;3:air;1:cobblestone_stairs,3;1:air*2+allium+air*2;1:cobblestone_stairs,2;3:air;1:cobblestone_stairs,2;1:stone_brick;1:cobblestone_stairs,1;1:air;1:cobblestone_stairs;1:stone_brick
3: 1:stone_brick;3:air;1:stone_brick;15:air;1:stone_brick;3:air;1:stone_brick
4: 1:stone_brick;1:cobblestone_stairs,5;1:air;1:cobblestone_stairs,4;1:stone_brick;1:cobblestone_stairs,7;3:air;1:cobblestone_stairs,7;5:air;1:cobblestone_stairs,6;3:air;1:cobblestone_stairs,6;1:stone_brick;1:cobblestone_stairs,5;1:air;1:cobblestone_stairs,4;1:stone_brick
5: 5:stone_brick;3:stone_brick+air*3+stone_brick;5:stone_brick
interpreter:
- define tile_choose '<s@gpa_com_skularr_mythicmobs_builds.yaml_key[structures.<def[structure]||overworld_stonebrick>.layers.<def[layer]||1>]>'
- define tile_list 'li@'
- foreach <def[tile_choose].split[;]> {
- define tile_data '<def[value]>'
- repeat <def[value].before[:]> {
- foreach <def[tile_data].after[:].split[+]> {
- define tile_internal '<def[value]>'
- if <def[tile_internal].contains_text[*]> {
- repeat <def[tile_internal].after[*]> {
- define tile_list '<def[tile_list].include[<def[tile_internal].before[*]>]>'
}
- foreach next
}
- define tile_list '<def[tile_list].include[<def[value]>]>'
}
}
}
- define tile_list '<def[tile_list].parse[as_material]>'
block_reader:
- define newx '-1'
- define newy '<def[layer].sub[1]>'
- define newz '0'
- define max_x '<s@gpa_com_skularr_mythicmobs_builds.yaml_key[structures.<def[structure]||overworld_stonebrick>.layer_size].before[x]>'
- define max_z '<s@gpa_com_skularr_mythicmobs_builds.yaml_key[structures.<def[structure]||overworld_stonebrick>.layer_size].after[x]>'
- define compare_list 'li@'
- repeat <def[max_x].mul[<def[max_z]>]> {
- define newx '<def[newx].add[1]>'
- if <def[newx]> == <def[max_x]> && <def[newz]> != <def[max_z]> {
- define newx '0'
- define newz '<def[newz].add[1]>'
}
else if <def[newx]> == <def[max_x]> && <def[newz]> == <def[max_z]> {
- define newx '0'
- define newz '0'
- define newy '<def[newy].add[1]>'
}
- define compare_list '<def[compare_list].include[l@<def[loc].x.add[<def[newx]>]>,<def[loc].y.add[<def[newy]>]>,<def[loc].z.add[<def[newz]>]>,<def[loc].world.name>]>'
}
events:
on server start:
- inject locally 'events.on script reload' instantly
on script reload:
- foreach <s@gpa_com_skularr_mythicmobs_builds.list_keys[structures]> {
- define structure '<def[value]>'
- repeat <s@gpa_com_skularr_mythicmobs_builds.list_keys[structures.<def[value]>.layers].size> {
- define layer <def[value]>
- inject locally interpreter
- flag server 'gpa.com.skularr.mythicmobs.structures.<def[structure]>.<def[layer]>:<def[tile_list].parse[as_material].separated_by[$]>'
}
}
on player places block:
- define time '<server.current_time_millis>'
- choose <context.material>:
- case m@allium:
- define structure 'overworld_stonebrick'
- define loc '<context.location.sub[2,1,2]>'
- repeat 5 {
- define layer '<def[value]>'
- define placed_tiles 'cu@<def[loc].add[0,<def[value].sub[1]>,0]>|<def[loc].add[4,<def[value].sub[1]>,4]>'
- define placed_tiles '<def[placed_tiles].as_cuboid>'
- inject locally 'block_reader' instantly
- if <def[compare_list].parse[material]> != <server.flag[gpa.com.skularr.mythicmobs.structures.<def[structure]>.<def[layer]>].split[$]> {
- queue clear
}
}
- playeffect <context.location.center.sub[0,1,0]> 'effect:FIREWORKS_SPARK' 'data:0.2' 'quantity:30' 'offset:0.1,0,0.1'
- narrate '<&c>This does nothing!'
- narrate 'It took <server.current_time_millis.sub[<def[time]>]>ms to run this'