Date: 2020/03/24 12:58:50 UTC-07: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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
model_generator:
type: world
debug: false
events:
on model command:
- if <player.is_op.not> queue clear
- determine fulfilled passively
- inject locally path:model
model:
- choose <context.args.get[1]||none>:
- case pos1:
- inject locally path:pos1
- case pos2:
- inject locally path:pos2
- case base:
- inject locally path:base
- case save:
- inject locally path:save
pos1:
- flag <player> model_pos1:<pl.location.simple.as_location>
- narrate "pos1 set"
- determine fulfilled
pos2:
- flag <player> model_pos2:<pl.location.simple.as_location>
- narrate "pos2 set"
- determine fulfilled
base:
- flag <player> model_base:<player.location.cursor_on>
- narrate "base set"
- determine fulfilled
save:
- if <context.args.size> < 3 {
- narrate "<&c>Invalid parameters."
- queue clear
}
- if <context.args.get[4].as_int||none> == none {
- define increment 0.2
} else {
- define increment <context.args.get[4]>
}
- define name <context.args.get[2]>
- if <server.has_file[/models/%name%.yml]> && <context.args.contains[-o].not> {
- narrate "<&c><&dq>%name%<&dq> already exists. use -o to override."
- queue clear
}
- narrate "exporting model"
- define cuboid "cu@<player.flag[model_pos1]>|<player.flag[model_pos2]>"
- define blocks <def[cuboid].blocks.filter[material.is[==].to[m@air].not]>
- define size <def[blocks].size>
- foreach %blocks% {
- wait 1t
- adjust <player> "action_bar:model<&co> <def[loop_index].mul[100].div[%size%].as_int><&pc>"
- define relative "<def[value].sub[<player.flag[model_base]>]>"
- if <def[model].exists> {
- define model "<def[model]>|<<>def[base].add[<<>l@<def[relative].x.mul[%increment%]>,<def[relative].y.mul[%increment%]>,<def[relative].z.mul[%increment%]>.rotate_around_y[<<>def[yaw]<>>]<>>]<>>"
} else {
- define model "<<>def[base].add[<<>l@<def[relative].x.mul[%increment%]>,<def[relative].y.mul[%increment%]>,<def[relative].z.mul[%increment%]>.rotate_around_y[<<>def[yaw]<>>]<>>]<>>"
}
}
- yaml id:model_%name% create
- yaml id:model_%name% set "model:%model%"
- yaml id:model_%name% set "RGB:<context.args.get[3]||255,255,255>"
- yaml "savefile:/models/%name%.yml" id:model_%name%
- yaml unload id:model_%name%
- narrate "Model saved."
- flag server particle_models_made:++
- determine fulfilled
call_locked_model:
type: task
debug: false
speed: 0
script:
- async:
- if <def[1].exists.not> {
- narrate "<&c>No model specified."
- queue clear
}
- if <server.has_file[/models/%1%.yml].not> {
- narrate "<&c><&dq>%1%<&dq> does not exist."
- queue clear
}
- yaml load:/models/%1%.yml id:playmodel_%1%
- define base <player.location.sub[<player.location.with_pose[0,<player.location.yaw>].direction.vector.div[2]>]>
- define yaw <player.location.yaw.mul[-1].to_radians>
- define model <yaml[playmodel_%1%].read[model]>
- define RGB <yaml[playmodel_%1%].read[RGB]||250,250,250>
- yaml unload id:playmodel_%1%
- repeat <def[2]||100>:
- playeffect <parse:%model%> effect:red_dust data:1 offset:<co@%RGB%.to_particle_offset> qty:0
- wait 1t
call_tracing_model:
type: task
debug: false
speed: 0
script:
- async:
- if <def[1].exists.not> {
- narrate "<&c>No model specified."
- queue clear
}
- if <server.has_file[/models/%1%.yml].not> {
- narrate "<&c><&dq>%1%<&dq> does not exist."
- queue clear
}
- yaml load:/models/%1%.yml id:playmodel_%1%
- define model <yaml[playmodel_%1%].read[model]>
- define RGB <yaml[playmodel_%1%].read[RGB]||250,250,250>
- yaml unload id:playmodel_%1%
- repeat <def[2]||100>:
- define base <player.location.sub[<player.location.with_pose[0,<player.location.yaw>].direction.vector.div[2]>]>
- define yaw <player.location.yaw.mul[-1].to_radians>
- playeffect <parse:%model%> effect:red_dust data:1 offset:<co@%RGB%.to_particle_offset> qty:0
- wait 1t
call_tracing_model_entity:
type: task
debug: false
speed: 0
script:
- async:
- if <def[1].exists.not> {
- narrate "<&c>No model specified."
- queue clear
}
- if <server.has_file[/models/%1%.yml].not> {
- narrate "<&c><&dq>%1%<&dq> does not exist."
- queue clear
}
- define target <player.target||<player>>
- yaml load:/models/%1%.yml id:playmodel_%1%
- define model <yaml[playmodel_%1%].read[model]>
- define RGB <yaml[playmodel_%1%].read[RGB]||250,250,250>
- yaml unload id:playmodel_%1%
- repeat <def[2]||100>:
- define base <%target%.location.sub[<%target%.location.with_pose[0,<%target%.location.yaw>].direction.vector.div[2]>].add[0,0.1,0]>
- define yaw <%target%.location.yaw.mul[-1].to_radians>
- playeffect <parse:%model%> effect:red_dust data:1 offset:<co@%RGB%.to_particle_offset> qty:0
- wait 1t
call_gui_model:
type: task
debug: false
speed: 0
script:
- async:
- if <def[1].exists.not> {
- narrate "<&c>No model specified."
- queue clear
}
- if <server.has_file[/models/%1%.yml].not> {
- narrate "<&c><&dq>%1%<&dq> does not exist."
- queue clear
}
- define target <player>
- yaml load:/models/%1%.yml id:playmodel_%1%
- define model <yaml[playmodel_%1%].read[model]>
- define RGB <yaml[playmodel_%1%].read[RGB]||250,250,250>
- yaml unload id:playmodel_%1%
- repeat <def[2]||100>:
- define base <def[target].location.add[<pl.location.direction.vector.mul[<def[3]||6>]>]>
- define yaw <def[target].location.yaw.mul[-1].to_radians>
- playeffect <parse:%model%> effect:red_dust data:1 offset:<co@%RGB%.to_particle_offset> qty:0
- wait 1t