-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.txt
229 lines (195 loc) · 7.95 KB
/
README.txt
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ IMPORTANT: +
+ This project is not active for some time, +
+ and due to change of github ownership to microsoft this project +
+ will never be active on github for sure. +
+ In case this project is revived you'll find it at: +
+ https://gitlab.com/sapier +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
********************************************************************************
* *
* Advanced spawning mod (adv_spawning) 0.0.6 *
* *
* URL: http://github.com/sapier/adv_spawning *
* Author: sapier *
* *
********************************************************************************
Description:
--------------------
Advances spawning mod is designed to provide a feature rich yet easy to use
spawner for entites. It's purpose is to support spawning within large numbers
of different environments. While adv_spawning supports a wide configurable range
of spawning situations, it's performance impact is clamped at minimal level.
To achieve this performance goal adv_spawning is intended for low frequency
entity spawning only. Typical spawn rate will be a low single digit count of
entities per second throughout whole world.
API:
--------------------
adv_spawning.register(spawner_name,spawning_def) --> successfull true/false
^ register a spawn to adv_spawning mechanisms
^ spawner_name a unique spawner name
^ spawning_def is configuration of spawner
adv_spawning.statistics() --> statistics data about spawning
Spawning definition:
--------------------
{
spawnee = "some_mod:entity_name", -- name of entity to spawn OR function to be called e.g. func(pos)
absolute_height = -- absolute y value to check
{
min = 1, -- minimum height to spawn at
max = 5 -- maximum height to spawn at
}
relative_height = --relative y value to next non environment node
{
min = 1, -- minimum height above non environment node
max = 5 -- maximum height above non environment node
}
spawn_inside, -- [MANDATORY] list of nodes to to spawn within (see spawn inside example)
surfaces, -- list of nodes to spawn uppon (same format as spawn_inside)
entities_around = -- list of surrounding entity definitions
{
entity_def_1,
entity_def_2,
...
},
nodes_around = -- list of surrounding node definitions
{
node_def_1,
node_def_2,
...
},
light_around = -- list of light around definitions
{
light_around_def_1,
light_around_def_2,
...
},
humidity_around = -- list of humidity around definitions
{
humidity_around_def_1,
humidity_around_def_2,
...
},
temperature_around = -- list of temperature around definitions
{
temperature_around_def_1,
temperature_around_def_2,
...
},
mapgen = -- configuration for initial mapgen spawning
{
enabled = true, -- mapgen spawning enabled or not
retries = 5, -- number of tries to spawn a entity prior giving up
spawntotal = 3, -- number of entities to try on mapgen
},
flat_area = -- check for amount of flat area around,
-- (only usefull for ground bound mobs)
{
range = 3, -- range to be checked for flattness
deviation = 2, -- maximum number of nodes not matching flat check
},
daytimes = -- do only spawn within these daytimes
{
daytime_def_1,
daytime_def_2,
...
}
collisionbox = {}, -- collisionbox of entity to spawn (usually same as used for entiy itself)
spawn_interval = 200, -- [MANDATORY] interval to try to spawn a entity
spawns_per_interval = 1, -- try to spawn multiple mobs (if time available)
custom_check = fct(pos,spawndef), -- a custom check to be called return true for pass, false for not pass
cyclic_spawning = true -- spawn per spawner step (defaults to true)
}
Light around definition:
{
type = "TIMED_MIN", -- type of light around check
-- TIMED_MIN/TIMED_MAX at least this light level at specified time within whole distance
-- OVERALL_MAX,OVERALL_MIN at least this light level at any time
-- CURRENT_MIN,CURRENT_MAX at least this light level now
distance = 2, -- distance to check (be carefull high distances may cause lag)
-- WARNING: light check is a very very heavy operation don't use large distances
threashold = 2, -- value to match at max/at least to pass this check
time = 6000 -- time to do check at (TIMED_MIN/TIMED_MAX only)
}
Surrounding node definition:
{
type = "MIN", -- type of surround check valid types are MIN and MAX
name = { "default:tree" },-- name(s) of node(s) to check
distance = 7, -- distance to look for node
threshold = 1 -- number to match at max/at least to pass this check
}
Surrounding entity definition:
{
type = "MIN", -- type of surround check valid types are MIN and MAX
entityname = "mod:entity", -- name of entity to check (nil to match all)
distance = 3, -- distance to look for this entity
threshold = 2 -- number to match at max/at least to pass this check
}
Surrounding temperature definition:
{
type = "MIN", -- type of surround check valid types are MIN and MAX
distance = 3, -- distance to look for this temperature
threshold = 2 -- number to match at max/at least to pass this check
}
Surrounding humidity definition:
{
type = "MIN", -- type of surround check valid types are MIN and MAX
distance = 3, -- distance to look for this humidity
threshold = 2 -- number to match at max/at least to pass this check
}
spawn_inside definition (list of nodenames):
{
"air",
"default:water_source",
"default:water_flowing"
}
Daytime definition:
{
begin = 0.0, --minimum daytime
stop = 0.25, --maximum daytime
}
Statistics:
{
session =
{
spawners_created = 0, -- number of spawners created this session
entities_created = 0, -- number of spawns done
steps = 0, -- number of steps
},
step =
{
min = 0, -- minimum time required for a single step
max = 0, -- maximum time required for a single step
last = 0, -- last steps time
},
load =
{
min = 0, -- minimum load caused
max = 0, -- maximum load caused
cur = 0, -- load caused in last step
avg = 0 -- average load caused
}
}
Settings:
adv_spawning_validate_spawners = false
^ make advanced_spawning check area around active players for lost spawner seeds
Changelog:
0.0.9
-Fix broken spawner initialization
-Add support for regenerating spawner seeds (only around active players)
set >>adv_spawning_validate_spawners<< to true if you want advanced spawning
to do this.
Note: this might need some additional cpu time
0.0.8
-Fix large steps caused by uninterruptable spawn seed initialization within activation
0.0.7
-handle time steps backward without assertion
0.0.6
-add configuration option adv_spawing.debug to show or hide spawner entities
-fix quota overflow calculation
-add rightclick function to show debug info
0.0.5
-fix MIN/MAX to always return a number value
-fix default activity range to use a initial value if not manually configured
-don't calculate statistics with zero dtime
-fix invalid debug log using old variable name