Allow above ground dungeons, update mg_villages & cottages
parent
ba75b2a36f
commit
0b6844aa8d
|
@ -21,6 +21,8 @@ movement_liquid_fluidity_smooth = 0.5
|
|||
movement_liquid_sink = 15
|
||||
movement_gravity = 9.75
|
||||
|
||||
fall_bobbing_amount = 1.0
|
||||
|
||||
#
|
||||
# Mapgen Stuff
|
||||
#
|
||||
|
@ -28,7 +30,7 @@ movement_gravity = 9.75
|
|||
cloud_height = 160
|
||||
|
||||
mg_flags = trees, caves, dungeons, light
|
||||
enable_floating_dungeons = false
|
||||
enable_floating_dungeons = true
|
||||
mgv7_spflags = mountains, ridges
|
||||
|
||||
mgv7_np_terrain_base = 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
abm_counter = 0
|
||||
abm_timer = 0
|
||||
abm_limit = 5
|
||||
abm_limit = 999
|
||||
abm_time_limit = 1
|
||||
|
||||
function abm_limiter()
|
||||
|
|
|
@ -10,16 +10,22 @@ local function adventuretest_globalstep(dtime)
|
|||
default.player_globalstep(dtime)
|
||||
default.leaf_globalstep(dtime)
|
||||
energy_globalstep(dtime)
|
||||
if minetest.setting_getbool("enable_damage") then
|
||||
|
||||
if hunger ~= nil then
|
||||
hunger.global_step(dtime)
|
||||
end
|
||||
end
|
||||
|
||||
itemdrop_globalstep(dtime)
|
||||
armor_globalstep(dtime)
|
||||
wieldview_globalstep(dtime)
|
||||
blacksmith_globalstep(dtime)
|
||||
if blacksmith_globalstep ~= nil then
|
||||
blacksmith_globalstep(dtime)
|
||||
end
|
||||
throwing_globalstep(dtime)
|
||||
magic_globalstep(dtime)
|
||||
mobs.global_step(dtime)
|
||||
if mobs ~= nil then
|
||||
mobs.global_step(dtime)
|
||||
end
|
||||
abm_globalstep(dtime)
|
||||
--ambience_globalstep(dtime)
|
||||
end
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
default
|
||||
plants_lib
|
||||
default
|
|
@ -93,6 +93,11 @@ if( not( minetest.registered_nodes["default:tree"])) then
|
|||
end
|
||||
end
|
||||
|
||||
if( minetest.get_modpath("moreblocks")
|
||||
and minetest.registered_nodes[ "moreblocks:slab_wood" ]) then
|
||||
cottages.craftitem_slab_wood = "moreblocks:slab_wood";
|
||||
end
|
||||
|
||||
if( not( minetest.registered_nodes["wool:white"])) then
|
||||
cottages.craftitem_wool = "cottages:wool";
|
||||
end
|
||||
|
|
|
@ -5,3 +5,4 @@ homedecor?
|
|||
intllib?
|
||||
trees?
|
||||
wool?
|
||||
moreblocks?
|
||||
|
|
|
@ -173,6 +173,16 @@ end
|
|||
drawtype = "mesh",
|
||||
mesh = "cottages_tub.obj",
|
||||
tiles = {"cottages_barrel.png" },
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5,-0.1, 0.5},
|
||||
}},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5,-0.1, 0.5},
|
||||
}},
|
||||
groups = { tree = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2
|
||||
},
|
||||
is_ground_content = false,
|
||||
|
|
|
@ -188,7 +188,7 @@ minetest.register_abm({
|
|||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"default:dirt_with_grass"},
|
||||
nodenames = {"default:dirt_with_grass","default:dirt_with_snow"},
|
||||
interval = 2,
|
||||
chance = 20,
|
||||
action = function(pos, node)
|
||||
|
|
|
@ -48,7 +48,7 @@ minetest.register_on_generated( function (minp, maxp, blockseed)
|
|||
for k,v in ipairs(notify.dungeon) do
|
||||
--print(minetest.pos_to_string(v))
|
||||
-- find the size of this room
|
||||
if v.y < 0 then
|
||||
--if v.y < 0 then
|
||||
local center = {x=v.x,y=v.y,z=v.z}
|
||||
|
||||
local ycheck = {x=center.x,y=center.y,z=center.z}
|
||||
|
@ -137,7 +137,7 @@ minetest.register_on_generated( function (minp, maxp, blockseed)
|
|||
local d = { mob = "mobs:dungeon_master", pos={x=center.x,y=(center.y+1),z=center.z} }
|
||||
table.insert(spawn,d)
|
||||
end
|
||||
end
|
||||
--end
|
||||
end
|
||||
vm:set_data(data)
|
||||
vm:calc_lighting(emin,emax)
|
||||
|
|
|
@ -40,6 +40,10 @@ mg_villages.MAX_HEIGHT_TREATED = 200;
|
|||
-- choose the debug level you want
|
||||
mg_villages.DEBUG_LEVEL = mg_villages.DEBUG_LEVEL_NONE
|
||||
|
||||
-- if set to true (or anything else but nil or false), highlandpools by paramat (see
|
||||
-- https://forum.minetest.net/viewtopic.php?t=8400) will be created
|
||||
mg_villages.CREATE_HIGHLANDPOOLS = true
|
||||
|
||||
-- background image for the /vmap command
|
||||
-- RealTest comes with a diffrent texture
|
||||
if( minetest.get_modpath('grounds') and minetest.get_modpath('joiner_table')) then
|
||||
|
|
|
@ -66,6 +66,8 @@ dofile(mg_villages.modpath.."/fill_chest.lua")
|
|||
|
||||
-- terrain blending for individual houses
|
||||
dofile(mg_villages.modpath.."/terrain_blend.lua")
|
||||
-- highlandpools
|
||||
dofile(mg_villages.modpath.."/highlandpools.lua")
|
||||
-- the interface for the mapgen;
|
||||
-- also takes care of spawning the player
|
||||
dofile(mg_villages.modpath.."/mapgen.lua")
|
||||
|
|
|
@ -94,10 +94,11 @@ end
|
|||
mg_villages.check_if_ground = function( ci )
|
||||
|
||||
-- pre-generate a list of no-ground-nodes for caching
|
||||
if( #replacements_group.node_is_ground < 1 ) then
|
||||
if( replacements_group.node_is_ground[ minetest.get_content_id('air')]==nil) then
|
||||
local no_ground_nodes = {'air','ignore','default:sandstonebrick','default:cactus','default:wood','default:junglewood',
|
||||
'default:pinewood','default:pinetree',
|
||||
'default:pine_wood','default:pine_tree','default:acacia_wood','default:acacia_tree',
|
||||
'ethereal:mushroom_pore','ethereal:mushroom_trunk','ethereal:bamboo', 'ethereal:mushroom'};
|
||||
-- TODO: add all those other tree and leaf nodes that might be added by mapgen
|
||||
for _,name in ipairs( no_ground_nodes ) do
|
||||
replacements_group.node_is_ground[ minetest.get_content_id( name )] = false;
|
||||
end
|
||||
|
@ -137,12 +138,13 @@ end
|
|||
|
||||
-- sets evrything at x,z and above height target_height to air;
|
||||
-- the area below gets filled up in a suitable way (i.e. dirt with grss - dirt - stone)
|
||||
mg_villages.lower_or_raise_terrain_at_point = function( x, z, target_height, minp, maxp, vm, data, param2_data, a, cid, vh, treepos, has_artificial_snow, blend )
|
||||
mg_villages.lower_or_raise_terrain_at_point = function( x, z, target_height, minp, maxp, vm, data, param2_data, a, cid, vh, treepos, has_artificial_snow, blend, force_ground, force_underground )
|
||||
local surface_node = nil;
|
||||
local has_snow = has_artificial_snow;
|
||||
local tree = false;
|
||||
local jtree = false;
|
||||
local ptree = false;
|
||||
local atree = false;
|
||||
local old_height = maxp.y;
|
||||
local y = maxp.y;
|
||||
|
||||
|
@ -183,6 +185,9 @@ mg_villages.lower_or_raise_terrain_at_point = function( x, z, target_height, min
|
|||
-- pinetrees
|
||||
elseif( ci == cid.c_ptree and data[a:index( x, y-1, z)]==cid.c_ptree) then
|
||||
ptree = true;
|
||||
-- acacia
|
||||
elseif( ci == cid.c_atree and data[a:index( x, y-1, z)]==cid.c_atree) then
|
||||
atree = true;
|
||||
elseif( not( surface_node) and ci ~= cid.c_air and ci ~= cid.c_ignore and mg_villages.check_if_ground( ci ) == true) then
|
||||
-- we have found a surface of some kind
|
||||
surface_node = ci;
|
||||
|
@ -216,7 +221,11 @@ mg_villages.lower_or_raise_terrain_at_point = function( x, z, target_height, min
|
|||
end
|
||||
local below_1 = cid.c_dirt;
|
||||
local below_2 = cid.c_stone;
|
||||
if( surface_node == cid.c_desert_sand ) then
|
||||
if( force_ground and force_underground ) then
|
||||
below_1 = force_ground;
|
||||
below_2 = force_underground;
|
||||
surface_node = below_1;
|
||||
elseif( surface_node == cid.c_desert_sand ) then
|
||||
below_1 = cid.c_desert_sand;
|
||||
below_2 = cid.c_desert_stone;
|
||||
elseif( surface_node == cid.c_sand ) then
|
||||
|
@ -269,6 +278,9 @@ mg_villages.lower_or_raise_terrain_at_point = function( x, z, target_height, min
|
|||
elseif( ptree and not( mg_villages.ethereal_trees ) and treepos) then
|
||||
data[ a:index( x, target_height+1, z)] = cid.c_psapling
|
||||
table.insert( treepos, {x=x, y=target_height+1, z=z, typ=2, snow=has_artificial_snow});
|
||||
elseif( atree and not( mg_villages.ethereal_trees ) and treepos) then
|
||||
data[ a:index( x, target_height+1, z)] = cid.c_asapling
|
||||
table.insert( treepos, {x=x, y=target_height+1, z=z, typ=3, snow=has_artificial_snow});
|
||||
elseif( has_snow ) then
|
||||
data[ a:index( x, target_height+1, z)] = cid.c_snow;
|
||||
end
|
||||
|
@ -306,6 +318,20 @@ mg_villages.flatten_village_area = function( villages, minp, maxp, vm, data, par
|
|||
for z = minp.z, maxp.z do
|
||||
for x = minp.x, maxp.x do
|
||||
for village_nr, village in ipairs(villages) do
|
||||
local force_ground = nil;
|
||||
local force_underground = nil;
|
||||
if( village.village_type
|
||||
and mg_villages.village_type_data[ village.village_type ]
|
||||
and mg_villages.village_type_data[ village.village_type ].force_ground
|
||||
and mg_villages.village_type_data[ village.village_type ].force_underground ) then
|
||||
force_ground = minetest.get_content_id(mg_villages.village_type_data[ village.village_type ].force_ground);
|
||||
force_underground = minetest.get_content_id(mg_villages.village_type_data[ village.village_type ].force_underground);
|
||||
if( not( force_ground ) or force_ground < 0 or force_ground == cid.c_ignore
|
||||
or not( force_underground ) or force_underground < 0 or force_underground == cid.c_ignore ) then
|
||||
force_ground = nil;
|
||||
force_underground = nil;
|
||||
end
|
||||
end
|
||||
-- is village_nr the village that is the one that is relevant for this spot?
|
||||
if( village_area[ x ][ z ][ 1 ] > 0
|
||||
and village_area[ x ][ z ][ 1 ]==village_nr
|
||||
|
@ -319,11 +345,11 @@ mg_villages.flatten_village_area = function( villages, minp, maxp, vm, data, par
|
|||
|
||||
if( village_area[ x ][ z ][ 2 ] > 0 ) then -- inside a village
|
||||
mg_villages.lower_or_raise_terrain_at_point( x, z, village.vh, minp, maxp, vm, data, param2_data, a, cid, village.vh,
|
||||
nil, has_artificial_snow, 0 );
|
||||
|
||||
nil, has_artificial_snow, 0, force_ground, force_underground );
|
||||
elseif( mg_villages.ENABLE_TERRAIN_BLEND and village_area[ x ][ z ][ 2 ] < 0) then
|
||||
mg_villages.lower_or_raise_terrain_at_point( x, z, maxp.y, minp, maxp, vm, data, param2_data, a, cid, village.vh,
|
||||
treepos, has_artificial_snow, -1* village_area[ x ][ z ][ 2 ]);
|
||||
treepos, has_artificial_snow, -1* village_area[ x ][ z ][ 2 ],
|
||||
force_ground, force_underground);
|
||||
end
|
||||
end -- PM ^
|
||||
end
|
||||
|
@ -337,6 +363,8 @@ mg_villages.flatten_village_area = function( villages, minp, maxp, vm, data, par
|
|||
plant_id = cid.c_sapling;
|
||||
elseif( tree.typ == 2 ) then
|
||||
plant_id = cid.c_psapling;
|
||||
elseif( tree.typ == 3 ) then
|
||||
plant_id = cid.c_asapling;
|
||||
end
|
||||
mg_villages.grow_a_tree( {x=tree.x, y=tree.y, z=tree.z}, plant_id, minp, maxp, data, a, cid, nil, tree.snow ) -- no pseudorandom present
|
||||
end
|
||||
|
@ -692,9 +720,13 @@ mg_villages.grow_a_tree = function( pos, plant_id, minp, maxp, data, a, cid, pr,
|
|||
mg_villages.grow_jungletree( data, a, pos, math.random(1,100000), snow)
|
||||
return true;
|
||||
-- a pine tree
|
||||
elseif( plant_id == cid.c_psapling and minetest.registered_nodes[ 'default:pinetree']) then
|
||||
elseif( plant_id == cid.c_psapling and minetest.registered_nodes[ 'default:pine_tree']) then
|
||||
mg_villages.grow_pinetree( data, a, pos, snow);
|
||||
return true;
|
||||
-- an acacia tree; it does not have its own grow function
|
||||
elseif( plant_id == cid.c_asapling and minetest.registered_nodes[ 'default:acacia_tree']) then
|
||||
data[ a:index( pos.x, pos.y, pos.z )] = cid.c_asapling;
|
||||
return true;
|
||||
-- a savannatree from the mg mod
|
||||
elseif( plant_id == cid.c_savannasapling and mg_villages.add_savannatree) then
|
||||
mg_villages.add_savannatree( data, a, pos.x, pos.y, pos.z, minp, maxp, pr) -- TODO: snow
|
||||
|
@ -842,7 +874,7 @@ mg_villages.save_data = function()
|
|||
end
|
||||
|
||||
|
||||
mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm, data, param2_data, a, top )
|
||||
mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm, data, param2_data, a, top, seed )
|
||||
local t1 = minetest.get_us_time();
|
||||
|
||||
local cid = {}
|
||||
|
@ -861,8 +893,10 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
|
|||
cid.c_sapling = minetest.get_content_id( 'default:sapling');
|
||||
cid.c_jtree = minetest.get_content_id( 'default:jungletree');
|
||||
cid.c_jsapling = minetest.get_content_id( 'default:junglesapling');
|
||||
cid.c_ptree = minetest.get_content_id( 'default:pinetree');
|
||||
cid.c_ptree = minetest.get_content_id( 'default:pine_tree');
|
||||
cid.c_psapling = minetest.get_content_id( 'default:pine_sapling');
|
||||
cid.c_atree = minetest.get_content_id( 'default:acacia_tree');
|
||||
cid.c_asapling = minetest.get_content_id( 'default:acacia_sapling');
|
||||
cid.c_water = minetest.get_content_id( 'default:water_source'); -- PM ^
|
||||
cid.c_stone_with_coal = minetest.get_content_id( 'default:stone_with_coal');
|
||||
cid.c_sandstone = minetest.get_content_id( 'default:sandstone');
|
||||
|
@ -907,6 +941,8 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
|
|||
|
||||
if( not( village.artificial_snow ) and village.vs > 15) then
|
||||
if( mg_villages.artificial_snow_probability and math.random( 1, mg_villages.artificial_snow_probability )==1
|
||||
-- forbid artificial snow for some village types
|
||||
and not( mg_villages.village_type_data[ village.village_type ].no_snow )
|
||||
and minetest.registered_nodes['default:snow']) then
|
||||
village.artificial_snow = 1;
|
||||
else
|
||||
|
@ -1027,6 +1063,11 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
|
|||
mg_villages.village_area_fill_with_plants( village_area, villages, tmin, tmax, data, param2_data, a, cid );
|
||||
t1 = time_elapsed( t1, 'fill_with_plants' );
|
||||
|
||||
if( mg_villages.CREATE_HIGHLANDPOOLS ) then
|
||||
mg_villages.do_highlandpools(minp, maxp, seed, vm, a, data, village_area);
|
||||
end
|
||||
t1 = time_elapsed( t1, 'create highlandpools' );
|
||||
|
||||
vm:set_data(data)
|
||||
vm:set_param2_data(param2_data)
|
||||
t1 = time_elapsed( t1, 'vm data set' );
|
||||
|
@ -1160,7 +1201,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||
end
|
||||
|
||||
if( villages and #villages > 0 ) then
|
||||
mg_villages.place_villages_via_voxelmanip( villages, minp, maxp, nil, nil, nil, nil, nil );
|
||||
mg_villages.place_villages_via_voxelmanip( villages, minp, maxp, nil, nil, nil, nil, nil, seed );
|
||||
end
|
||||
end)
|
||||
|
||||
|
|
|
@ -7,12 +7,19 @@ minetest.register_node("mg_villages:road", {
|
|||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
}),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = { { -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5}, },
|
||||
},
|
||||
})
|
||||
|
||||
mg_villages.road_node = minetest.get_content_id( 'mg_villages:road' );
|
||||
-- do not drop snow on roads
|
||||
if( minetest.get_modpath('moresnow' )) then
|
||||
if( moresnow ) then
|
||||
moresnow.snow_cover[ mg_villages.road_node ] = moresnow.c_air;
|
||||
end
|
||||
|
||||
|
|
|
@ -10,17 +10,19 @@ mg_villages.get_town_id_at_pos = function( pos )
|
|||
|
||||
local node = minetest.get_node( pos );
|
||||
-- leaves can be digged in villages
|
||||
if( node
|
||||
and node.name
|
||||
and minetest.registered_nodes[ node.name ]
|
||||
and minetest.registered_nodes[ node.name ].groups
|
||||
and minetest.registered_nodes[ node.name ].groups.leaves ) then
|
||||
return nil;
|
||||
-- bones can be digged in villages
|
||||
elseif( node
|
||||
and node.name
|
||||
and node.name == 'bones:bones' ) then
|
||||
return nil;
|
||||
if( node and node.name ) then
|
||||
if( minetest.registered_nodes[ node.name ]
|
||||
and minetest.registered_nodes[ node.name ].groups
|
||||
and minetest.registered_nodes[ node.name ].groups.leaves ) then
|
||||
return nil;
|
||||
elseif( node.name=='default:snow' ) then
|
||||
return nil;
|
||||
-- bones can be digged in villages
|
||||
elseif( node.name == 'bones:bones' ) then
|
||||
return nil;
|
||||
else
|
||||
return id;
|
||||
end
|
||||
else
|
||||
return id;
|
||||
end
|
||||
|
@ -289,7 +291,7 @@ end
|
|||
|
||||
|
||||
mg_villages.form_input_handler = function( player, formname, fields)
|
||||
mg_villages.print(mg_villages.DEBUG_LEVEL_NORMAL,minetest.serialize(fields));
|
||||
-- mg_villages.print(mg_villages.DEBUG_LEVEL_NORMAL,minetest.serialize(fields));
|
||||
if( not( mg_villages.ENABLE_PROTECTION )) then
|
||||
return false;
|
||||
end
|
||||
|
|
|
@ -168,8 +168,10 @@ end
|
|||
mg_villages.replace_tree_trunk = function( replacements, wood_type )
|
||||
if( wood_type == 'default:junglewood' ) then
|
||||
table.insert( replacements, {'default:tree', 'default:jungletree'});
|
||||
elseif( wood_type == 'default:pinewood' ) then
|
||||
table.insert( replacements, {'default:tree', 'default:pinetree'});
|
||||
elseif( wood_type == 'default:pine_wood' ) then
|
||||
table.insert( replacements, {'default:tree', 'default:pine_tree'});
|
||||
elseif( wood_type == 'default:acacia_wood' ) then
|
||||
table.insert( replacements, {'default:tree', 'default:acacia_tree'});
|
||||
elseif( wood_type == 'mg:savannawood' ) then
|
||||
table.insert( replacements, {'default:tree', 'mg:savannatree'});
|
||||
elseif( wood_type == 'mg:pinewood' ) then
|
||||
|
@ -266,8 +268,10 @@ end
|
|||
mg_villages.replace_saplings = function( replacements, wood_type )
|
||||
if( wood_type == 'default:junglewood' ) then
|
||||
table.insert( replacements, {'default:sapling', 'default:junglesapling'});
|
||||
elseif( wood_type == 'default:pinewood' ) then
|
||||
elseif( wood_type == 'default:pine_wood' ) then
|
||||
table.insert( replacements, {'default:sapling', 'default:pine_sapling'});
|
||||
elseif( wood_type == 'default:acacia_wood' ) then
|
||||
table.insert( replacements, {'default:sapling', 'default:acacia_sapling'});
|
||||
elseif( wood_type == 'mg:savannawood' ) then
|
||||
table.insert( replacements, {'default:sapling', 'mg:savannasapling'});
|
||||
elseif( wood_type == 'mg:pinewood' ) then
|
||||
|
@ -374,7 +378,7 @@ mg_villages.replacements_taoki = function( housetype, pr, replacements )
|
|||
wood_type = mg_villages.replace_materials( replacements, pr,
|
||||
{'default:wood'},
|
||||
{''},
|
||||
{'default:wood', 'default:junglewood', 'default:pinewood', 'mg:pinewood', 'mg:savannawood',
|
||||
{'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'mg:pinewood', 'mg:savannawood',
|
||||
'default:clay', 'default:brick', 'default:sandstone',
|
||||
'default:stonebrick', 'default:desert_stonebrick','default:sandstonebrick', 'default:sandstone','default:stone','default:desert_stone',
|
||||
'default:coalblock','default:steelblock','default:goldblock', 'default:bronzeblock', 'default:copperblock', 'wool:white',
|
||||
|
@ -400,7 +404,7 @@ mg_villages.replacements_taoki = function( housetype, pr, replacements )
|
|||
mg_villages.replace_materials( replacements, pr,
|
||||
{'stairs:stair_wood'},
|
||||
{'stairs:stair_'},
|
||||
{'stonebrick', 'stone', 'sandstone', 'cobble', 'wood', 'junglewood', 'pinewood' },
|
||||
{'stonebrick', 'stone', 'sandstone', 'cobble', 'wood', 'junglewood', 'pine_wood', 'acaica_wood' },
|
||||
'wood');
|
||||
|
||||
-- brick roofs are a bit odd; but then...
|
||||
|
@ -408,7 +412,7 @@ mg_villages.replacements_taoki = function( housetype, pr, replacements )
|
|||
mg_villages.replace_materials( replacements, pr,
|
||||
{'stairs:stair_brick', 'stairs:slab_brick', 'default:brick'},
|
||||
{'stairs:stair_', 'stairs:slab_', 'default:' },
|
||||
{ 'brick', 'stone', 'cobble', 'stonebrick', 'wood', 'junglewood', 'pinewood', 'sandstone' },
|
||||
{ 'brick', 'stone', 'cobble', 'stonebrick', 'wood', 'junglewood', 'pine_wood', 'acacia_wood', 'sandstone' },
|
||||
'brick' );
|
||||
|
||||
return replacements;
|
||||
|
@ -429,7 +433,7 @@ mg_villages.replacements_nore = function( housetype, pr, replacements )
|
|||
local wood_type = mg_villages.replace_materials( replacements, pr,
|
||||
{'default:wood'},
|
||||
{''},
|
||||
{ 'default:wood', 'default:junglewood', 'default:pinewood', 'mg:savannawood', 'mg:pinewood' },
|
||||
{ 'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'mg:savannawood', 'mg:pinewood' },
|
||||
'default:wood');
|
||||
mg_villages.replace_tree_trunk( replacements, wood_type );
|
||||
mg_villages.replace_saplings( replacements, wood_type );
|
||||
|
@ -451,7 +455,7 @@ mg_villages.replacements_lumberjack = function( housetype, pr, replacements )
|
|||
local wood_type = mg_villages.replace_materials( replacements, pr,
|
||||
{'default:wood'},
|
||||
{''},
|
||||
{ 'default:wood', 'default:junglewood', 'default:pinewood', 'mg:savannawood', 'mg:pinewood' },
|
||||
{ 'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'mg:savannawood', 'mg:pinewood' },
|
||||
'default:wood');
|
||||
mg_villages.replace_tree_trunk( replacements, wood_type );
|
||||
mg_villages.replace_saplings( replacements, wood_type );
|
||||
|
@ -539,7 +543,7 @@ mg_villages.replacements_chateau = function( housetype, pr, replacements )
|
|||
local wood_type = mg_villages.replace_materials( replacements, pr,
|
||||
{'default:wood'},
|
||||
{''},
|
||||
{ 'default:wood', 'default:junglewood', 'default:pinewood', 'mg:savannawood', 'mg:pinewood'}, --, 'default:brick', 'default:sandstone', 'default:desert_cobble' },
|
||||
{ 'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'mg:savannawood', 'mg:pinewood'}, --, 'default:brick', 'default:sandstone', 'default:desert_cobble' },
|
||||
'default:wood');
|
||||
mg_villages.replace_tree_trunk( replacements, wood_type );
|
||||
mg_villages.replace_saplings( replacements, wood_type );
|
||||
|
@ -713,7 +717,7 @@ mg_villages.replacements_medieval = function( housetype, pr, replacements )
|
|||
-- loam and clay are mentioned multiple times because those are the most likely building materials in reality
|
||||
local materials = {'cottages:loam', 'cottages:loam', 'cottages:loam', 'cottages:loam', 'cottages:loam',
|
||||
'default:clay', 'default:clay', 'default:clay', 'default:clay', 'default:clay',
|
||||
'default:wood','default:junglewood', 'default:pinewood', 'default:sandstone',
|
||||
'default:wood','default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'default:sandstone',
|
||||
'default:desert_stone','default:brick','default:cobble','default:stonebrick',
|
||||
'default:desert_stonebrick','default:sandstonebrick','default:stone',
|
||||
'mg:savannawood', 'mg:savannawood', 'mg:savannawood', 'mg:savannawood',
|
||||
|
|
|
@ -127,7 +127,7 @@ mg_villages.grow_pinetree = function(data, a, pos, snow)
|
|||
|
||||
local c_air = minetest.get_content_id("air")
|
||||
local c_ignore = minetest.get_content_id("ignore")
|
||||
local c_pinetree = minetest.get_content_id("default:pinetree")
|
||||
local c_pinetree = minetest.get_content_id("default:pine_tree")
|
||||
local c_pine_needles = minetest.get_content_id("default:pine_needles")
|
||||
local c_snow = minetest.get_content_id("default:snow")
|
||||
local c_snowblock = minetest.get_content_id("default:snowblock")
|
||||
|
|
|
@ -48,7 +48,7 @@ mg_villages.villages_at_point = function(minp, noise1)
|
|||
local height = pr:next(1, 5)
|
||||
-- villages of a size >= 40 are always placed at a height of 1
|
||||
if( size >= 40 ) then
|
||||
height = 5;
|
||||
height = 1;
|
||||
-- slightly smaller but still relatively large villages have a deterministic height now as well
|
||||
elseif( size >= 30 ) then
|
||||
height = 40-height;
|
||||
|
@ -813,7 +813,7 @@ mg_villages.house_in_one_mapchunk = function( minp, mapchunk_size, vnoise )
|
|||
|
||||
if( mg_villages.all_villages and mg_villages.all_villages[ village_id ] and mg_villages.all_villages[ village_id ].optimal_height) then
|
||||
village.optimal_height = mg_villages.all_villages[ village_id ].optimal_height;
|
||||
--village.vh = mg_villages.all_villages[ village_id ].optimal_height;
|
||||
village.vh = mg_villages.all_villages[ village_id ].optimal_height;
|
||||
village.artificial_snow = mg_villages.all_villages[ village_id ].artificial_snow;
|
||||
end
|
||||
|
||||
|
|
|
@ -58,7 +58,8 @@ minetest.register_abm({
|
|||
nodenames = {"mobs:spawner"},
|
||||
interval = 60,
|
||||
chance = 5,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if abm_limiter() then return end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local entity = meta:get_string("entity")
|
||||
local active_objects = meta:get_int("active_objects")
|
||||
|
|
Loading…
Reference in New Issue