write something there
This commit is contained in:
commit
b4b6c08f4f
8546 changed files with 309825 additions and 0 deletions
113
mods/effervescence/effervescence_decorators/init.lua
Normal file
113
mods/effervescence/effervescence_decorators/init.lua
Normal file
|
@ -0,0 +1,113 @@
|
|||
local strategy = {
|
||||
-- decoration-based gennotify node selection strategy
|
||||
gennotify = {
|
||||
register = function(self, name, ddef)
|
||||
ddef.name = name
|
||||
effervescence.register_decorator({
|
||||
name = name,
|
||||
apply_to = function(self, npmap)
|
||||
local nlist = {}
|
||||
for node,particles in pairs(npmap) do
|
||||
table.insert(nlist,node)
|
||||
npmap[node] = table.concat(particles,",")
|
||||
end
|
||||
self.nodes = npmap
|
||||
|
||||
ddef.place_on = nlist
|
||||
core.register_decoration(ddef)
|
||||
|
||||
self.did = core.get_decoration_id(name)
|
||||
core.set_gen_notify({ decoration = true },{ self.did })
|
||||
self.did = "decoration#" .. self.did
|
||||
end,
|
||||
decorate = function(self, minp, maxp, blockseed)
|
||||
local gennotify = core.get_mapgen_object("gennotify")
|
||||
local positions = gennotify[self.did] or {}
|
||||
for _,pos in ipairs(positions) do
|
||||
local node = core.get_node(pos).name
|
||||
local particles = self.nodes[node]
|
||||
if particles then
|
||||
local meta = core.get_meta(pos)
|
||||
meta:set_string("effervescence.particles",particles)
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- random sample node selection strategy
|
||||
sample = {
|
||||
generation_id = 0,
|
||||
nodelist = { init = false },
|
||||
init_decorate = function(self, blockseed)
|
||||
if self.nodelist.init == false then
|
||||
local nodelist = {}
|
||||
for node,_ in pairs(self.nodelist) do
|
||||
table.insert(nodelist,node)
|
||||
end
|
||||
self.nodelist = nodelist
|
||||
end
|
||||
if blockseed ~= self.generation_id then
|
||||
self.generation_id = blockseed
|
||||
local _, emin, emax = core.get_mapgen_object("voxelmanip")
|
||||
self.nodes = core.find_nodes_in_area(emin,emax,self.nodelist,true)
|
||||
end
|
||||
end,
|
||||
register = function(self, name, per)
|
||||
local sampler = self
|
||||
effervescence.register_decorator({
|
||||
name = name,
|
||||
apply_to = function(self, npmap)
|
||||
self.nodes = npmap
|
||||
for node,particles in pairs(npmap) do
|
||||
npmap[node] = table.concat(particles,",")
|
||||
sampler.nodelist[node] = true
|
||||
end
|
||||
end,
|
||||
decorate = function(self, minp, maxp, blockseed)
|
||||
sampler:init_decorate(blockseed)
|
||||
for node,particles in pairs(self.nodes) do
|
||||
local positions = sampler.nodes[node]
|
||||
if positions then
|
||||
local plen = #positions
|
||||
local pcgr = PcgRandom(blockseed)
|
||||
for i = 0, math.floor(plen / per), 1 do
|
||||
local pos = positions[pcgr:next(1,plen)]
|
||||
local meta = core.get_meta(pos)
|
||||
meta:set_string("effervescence.particles",particles)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
-- Register gennotify decorators
|
||||
strategy.gennotify:register("effervescence:floors",{
|
||||
deco_type = "simple",
|
||||
fill_ratio = 0.00375,
|
||||
decoration = "air",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
||||
strategy.gennotify:register("effervescence:ceilings",{
|
||||
deco_type = "simple",
|
||||
fill_ratio = 0.00375,
|
||||
decoration = "air",
|
||||
flags = "all_ceilings",
|
||||
})
|
||||
|
||||
strategy.gennotify:register("effervescence:liquid_surface",{
|
||||
deco_type = "simple",
|
||||
fill_ratio = 0.00425,
|
||||
decoration = "air",
|
||||
flags = "liquid_surface",
|
||||
})
|
||||
|
||||
-- Register sample decorators
|
||||
strategy.sample:register("effervescence:many",10)
|
||||
strategy.sample:register("effervescence:few",50)
|
||||
strategy.sample:register("effervescence:rare",250)
|
5
mods/effervescence/effervescence_decorators/mod.conf
Normal file
5
mods/effervescence/effervescence_decorators/mod.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
name = effervescence_decorators
|
||||
title = Effervescence Builtin Decorators
|
||||
description = Adds useful decorators for Effervescence
|
||||
author = EmptyStar
|
||||
depends = effervescence
|
Loading…
Add table
Add a link
Reference in a new issue