Differences From
Artifact [43f9137bd9]:
39 39 };
40 40 })
41 41
42 42
43 43 minetest.register_node('starlit:sand', {
44 44 description = T 'Sand';
45 45 tiles = {'starlit-terrain-sand.png'};
46 - groups = {looseClump = 1, sand = 1};
46 + groups = {looseClump = 1, sand = 1, falling_node = 1};
47 47 drop = '';
48 48 sounds = sandSounds;
49 49 _starlit = {
50 50 kind = 'block';
51 51 fab = starlit.type.fab { element = { silicon = 25 } };
52 52 };
53 53 })
54 +
55 +minetest.register_node('starlit:lifesilt', {
56 + description = T 'Lifesilt';
57 + tiles = {'starlit-terrain-lifesilt.png'};
58 + groups = {looseClump = 1, lifesilt = 1, falling_node = 1};
59 + drop = '';
60 + sounds = sandSounds;
61 + _starlit = {
62 + kind = 'block';
63 + fab = starlit.type.fab { element = { carbon = 8, silicon = 4 } };
64 + };
65 +})
66 +
54 67 minetest.register_craftitem('starlit:soil_clump', {
55 68 short_description = T 'Soil';
56 69 description = starlit.ui.tooltip {
57 70 title = T 'Soil';
58 71 desc = 'A handful of nutrient-packed soil, suitable for growing plants';
59 72 color = lib.color(0.3,0.2,0.1);
60 73 };
................................................................................
105 118
106 119
107 120 starlit.terrain.createGrass {
108 121 name = 'starlit:greengraze';
109 122 desc = T 'Greengraze';
110 123 img = 'starlit-terrain-greengraze';
111 124 fab = starlit.type.fab {
125 + element = { carbon = 12; };
126 + time = { shred = 2.5; };
127 + };
128 +}
129 +
130 +starlit.terrain.createGrass {
131 + name = 'starlit:undergloam';
132 + desc = T 'Undergloam';
133 + -- fungal carpet
134 + img = 'starlit-terrain-undergloam';
135 + fab = starlit.type.fab {
112 136 element = {
113 137 carbon = 12;
114 138 };
115 - time = {
116 - shred = 2.5;
117 - };
139 + time = { shred = 2.5; };
118 140 };
119 141 }
120 142
121 143 for _, w in pairs {false,true} do
122 144 minetest.register_node('starlit:liquid_water' .. (w and '_flowing' or ''), {
123 145 description = T 'Water';
124 146 drawtype = 'liquid';
................................................................................
164 186 end
165 187
166 188
167 189 starlit.world.mineral.foreach('starlit:mineral_generate', {}, function(name,m)
168 190 local node = string.format('starlit:mineral_%s', name)
169 191 local grp = {mineral = 1}
170 192 minetest.register_node(node, {
171 - description = m.desc;
193 + short_description = m.name;
194 + description = starlit.ui.tooltip {
195 + title = m.name;
196 + desc = m.desc;
197 + color = m.tone;
198 + };
172 199 tiles = m.tiles or
173 200 (m.tone and {
174 - string.format('default_stone.png^[colorizehsl:%s:%s:%s',
175 - m.tone.hue, m.tone.sat, m.tone.lum)
176 - }) or {'default_stone.png'};
201 + lib.image'starlit-terrain-granite.png':shift(m.tone):render()
202 + }) or nil;
177 203 groups = grp;
178 204 drop = m.rocks or '';
179 205 sounds = hardSounds;
180 206 _starlit = {
181 207 kind = 'block';
182 208 elements = m.elements;
183 209 fab = m.fab;
184 210 recover = m.recover;
185 211 recover_vary = m.recover_vary;
186 212 };
187 213 })
188 214 if not m.excludeOre then
189 215 local seed = 0
190 - grp.ore = 1
216 +-- grp.ore = 1
191 217 for i = 1, #m.name do
192 - seed = seed*50 + string.byte(name, i)
218 + seed = seed*50 + string.byte(m.name, i)
193 219 end
194 220 minetest.register_ore {
195 221 ore = node;
196 222 ore_type = m.dist.kind;
197 - wherein = {m.dist.among};
223 + wherein = m.dist.among;
198 224 clust_scarcity = m.dist.rare;
199 225 y_max = m.dist.height[1], y_min = m.dist.height[2];
226 + column_height_min = m.dist.sheetCols and m.dist.sheetCols[1] or nil;
227 + column_height_max = m.dist.sheetCols and m.dist.sheetCols[2] or nil;
200 228 noise_params = m.dist.noise or {
201 - offset = 28;
202 - scale = 16;
229 + scale = 1;
203 230 spread = vector.new(128,128,128);
204 231 seed = seed;
205 - octaves = 1;
232 + octaves = 2;
206 233 };
207 234 }
208 235 end
209 236 end)
210 237
211 238 starlit.world.mineral.link('feldspar', {
212 - desc = T 'Feldspar';
239 + name = T 'Feldspar';
240 + tiles = {'starlit-terrain-feldspar.png'};
213 241 excludeOre = true;
214 242 recover = starlit.type.fab {
215 - time = {
216 - shred = 3;
217 - };
218 - cost = {
219 - shredPower = 3;
243 + time = { shred = 3; };
244 + cost = { shredPower = 3; };
245 + };
246 + recover_vary = function(rng, ctx)
247 + -- print('vary!', rng:int(), rng:int(0,10))
248 + return starlit.type.fab {
249 + element = {
250 + aluminum = rng:int(0,4);
251 + potassium = rng:int(0,2);
252 + calcium = rng:int(0,2);
253 + }
220 254 };
255 + end;
256 +})
257 +
258 +starlit.world.mineral.link('granite', {
259 + name = T 'Granite';
260 + tiles = {'starlit-terrain-granite.png'};
261 + dist = {
262 + kind = 'sheet';
263 + among = 'starlit:feldspar';
264 + height = {-200,30};
265 + sheetCols = {1, 16};
266 + };
267 + recover = starlit.type.fab {
268 + time = { shred = 4; };
269 + cost = { shredPower = 8; };
221 270 };
222 271 recover_vary = function(rng, ctx)
223 272 -- print('vary!', rng:int(), rng:int(0,10))
224 273 return starlit.type.fab {
225 274 element = {
226 275 aluminum = rng:int(0,4);
227 276 potassium = rng:int(0,2);