birch tree; starting of the swamp biome

master
root 2022-05-12 11:01:19 +02:00
parent e713202f2b
commit 329c32f6cc
29 changed files with 446 additions and 31 deletions

View File

@ -30,3 +30,32 @@ minetest.register_node("farmz:grass", {
}
}
})
minetest.register_node("farmz:swamp_grass", {
description = S("Swamp Grass"),
drawtype = "plantlike",
waving = 1,
tiles = {"farmz_swamp_grass.png"},
inventory_image = "farmz_swamp_grass.png",
wield_image = "farmz_swamp_grass.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1,
normal_grass = 1, flammable = 1},
sounds = sound:leaves(),
selection_box = {
type = "fixed",
fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, -5 / 16, 5 / 16},
},
drop = {
max_items = 1,
items = {
{
rarity = 5,
items = {"farmz:wheat_seed"},
},
}
}
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

View File

@ -84,8 +84,7 @@ local function spread_mushroom(pos, mushroom_name)
{x=1, y=0, z=0}, {x=1, y=0, z=1}}
local _cells = helper.table.shuffle(cells)
local new_pos = vector.add(pos, _cells[1])
local under_pos = vector.add(new_pos, {x=0, y=-1, z=0})
if helper.node_is_buildable(new_pos) and helper.node_is_soil(under_pos) then
if helper.node_is_buildable(new_pos) and helper.node_is_soil(new_pos, "under") then
minetest.swap_node(new_pos, {name = mushroom_name, param2 = 1})
minetest.get_node_timer(new_pos):start(mushroom_spread_time)
end

22
mods/flowerz/bushes.lua Normal file
View File

@ -0,0 +1,22 @@
--Reed
minetest.register_node("flowerz:reed", {
description = S("Reed"),
drawtype = "plantlike",
tiles = {"flower_reed.png"},
inventory_image = "flower_reed.png",
wield_image = "flower_reed.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-1 / 16, -0.5, -1 / 16, 1 / 16, 0.5, 1 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})

View File

@ -69,7 +69,12 @@ function helper.node_is_buildable(pos)
end
end
function helper.node_is_soil(pos)
function helper.node_is_soil(pos, offset)
if offset then
if offset == "under" then
pos = vector.new(pos.x, pos.y-1, pos.z)
end
end
local node = minetest.get_node_or_nil(pos)
if node and minetest.get_item_group(node.name, "soil") >= 1 then
return true
@ -195,5 +200,3 @@ function helper.string.split(inputstr, sep)
end
return t
end

View File

@ -159,6 +159,45 @@ minetest.register_biome({
humidity_point = 15,
})
--Swampz
minetest.register_biome({
name = "swamp",
node_top = "nodez:silt_with_grass",
depth_top = 1,
node_filler = "nodez:silt",
depth_filler = 3,
node_riverbed = "nodez:sand",
depth_riverbed = 2,
node_water = "nodez:water_source",
depth_water_top = 5,
node_water_top = "nodez:water_source",
node_stone = "nodez:limestone",
y_max = 7,
y_min = 1,
heat_point = 80.1,
humidity_point = 89.1,
vertical_blend = 0,
})
minetest.register_biome({
name = "nodez_shore",
node_top = "nodez:mud",
depth_top = 1,
node_filler = "nodez:mud",
depth_filler = 3,
node_riverbed = "nodez:sand",
depth_riverbed = 2,
node_water = "nodez:water_source",
depth_water_top = 5,
node_water_top = "nodez:water_source",
y_max = 0,
y_min = -5,
heat_point = 79.1,
humidity_point = 90.1,
vertical_blend = 0,
})
-- Register Ores
--Coal
@ -417,3 +456,143 @@ minetest.register_decoration({
y_max = mapgenz.biomes.peaky_mountain_height,
y_min = 1,
})
-- Swamp Biome
-- IMPORTANT!
-- THE ORDER OF THE DECORATION MATTERS!
-- DO NOT SORT
--Water Source (4x4)
minetest.register_decoration({
deco_type = "schematic",
place_on = {"nodez:silt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0.05,
scale = 0.05,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
biomes = {"swamp"},
height = 2,
y_min = 0,
y_max = 1000,
place_offset_y = -1,
schematic = {
size = {x = 4, y = 2, z = 4},
data = {
{name = "nodez:silt"}, {name = "nodez:silt"}, {name = "nodez:silt"},{name = "nodez:silt"},
{name = "nodez:silt_with_grass"}, {name = "nodez:silt_with_grass"}, {name = "nodez:silt_with_grass"},{name = "nodez:silt_with_grass"},
{name = "nodez:silt"}, {name = "nodez:silt"}, {name = "nodez:silt"},{name = "nodez:silt"},
{name = "nodez:silt_with_grass"}, {name = "nodez:muddy_water_source"}, {name = "nodez:muddy_water_source"},{name = "nodez:silt_with_grass"},
{name = "nodez:silt"}, {name = "nodez:silt"}, {name = "nodez:silt"},{name = "nodez:silt"},
{name = "nodez:silt_with_grass"}, {name = "nodez:muddy_water_source"}, {name = "nodez:muddy_water_source"},{name = "nodez:silt_with_grass"},
{name = "nodez:silt"}, {name = "nodez:silt"}, {name = "nodez:silt"},{name = "nodez:silt"},
{name = "nodez:silt_with_grass"}, {name = "nodez:silt_with_grass"}, {name = "nodez:silt_with_grass"},{name = "nodez:silt_with_grass"},
}
},
spawn_by = "nodez:silt_with_grass",
num_spawn_by = 5,
flags = "place_center_x, place_center_z, force_placement",
rotation = "random",
})
--Water Source (1x1) --this goes after the 4x4 deco of swamp water
minetest.register_decoration({
deco_type = "simple",
decoration = "nodez:muddy_water_source",
place_on = {"nodez:silt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0.8,
scale = 0.8,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
biomes = {"swamp"},
height = 2,
y_min = 0,
y_max = 1000,
place_offset_y = -2,
spawn_by = "nodez:muddy_water_source",
num_spawn_by = 6,
flags = "place_center_x, place_center_z, force_placement",
rotation = "random",
})
--Mud with moss --this goes after water (depends on it)
minetest.register_decoration({
decoration = "nodez:mud_with_moss",
deco_type = "simple",
place_on = "nodez:silt_with_grass",
sidelen = 16,
fill_ratio = 0.1,
biomes = {"swamp"},
noise_params = {
offset = 0.5,
scale = 0.008,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
y_min = 1,
y_max = 80,
spawn_by = "nodez:muddy_water_source",
num_spawn_by = 1,
place_offset_y = -1,
flags = "place_center_x, place_center_z, force_placement",
})
--Mud --this goes after mud with moss (depends on it)
minetest.register_decoration({
decoration = "nodez:mud",
deco_type = "simple",
place_on = "nodez:silt_with_grass",
sidelen = 16,
fill_ratio = 0.1,
biomes = {"swamp"},
noise_params = {
offset = 0.5,
scale = 0.008,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
y_min = 1,
y_max = 80,
spawn_by = "nodez:mud_with_moss",
num_spawn_by = 1,
place_offset_y = -1,
flags = "place_center_x, place_center_z, force_placement",
})
--Swamp Grass --this goes after water (depends on it)
minetest.register_decoration({
name = "farmz:swamp_grass",
decoration = "farmz:swamp_grass",
deco_type = "simple",
place_on = {"nodez:silt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0.015,
scale = 0.045,
spread = {x = 200, y = 200, z = 200},
seed = 467,
octaves = 3,
persist = 0.6
},
biomes = {"swamp"},
y_max = mapgenz.biomes.peaky_mountain_height,
y_min = 1,
})

View File

@ -154,3 +154,58 @@ minetest.register_craft({
"farmz:wheat"
}
})
--Mud
minetest.register_node("nodez:silt_with_grass", {
description = S("Silt with Grass"),
tiles = {"nodez_swamp_grass.png", "nodez_silt.png",
{name = "nodez_silt.png^nodez_silt_with_grass_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1},
drop = "nodez:mud",
sounds = sound.dirt({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
minetest.register_node("nodez:limestone", {
description = S("Limestone"),
tiles = {"nodez_limestone.png"},
groups = {cracky = 3, stone = 1},
drop = "nodez:limestone",
sounds = sound.stone(),
})
minetest.register_node("nodez:mud", {
description = S("Mud"),
tiles = {"nodez_mud.png"},
groups = {crumbly = 3, soil = 1},
sounds = sound.dirt(),
})
minetest.register_node("nodez:mud_with_moss", {
description = S("Mud with Moss"),
tiles = {"nodez_mud.png^(nodez_mud_moss.png^[makealpha:50,50,50)", "nodez_mud.png",
{name = "nodez_mud.png^(nodez_mud_with_moss_side.png^[makealpha:50,50,50)",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1},
drop = "nodez:mud",
sounds = sound.dirt({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
minetest.register_node("nodez:silt", {
description = S("Silt"),
tiles = {"nodez_silt.png"},
groups = {crumbly = 3, soil = 1},
sounds = sound.dirt(),
})
minetest.register_craft({
output = "nodez:silt",
type = "shapeless",
recipe = {"group:soil", "bucket:bucket_water"},
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
})

View File

@ -21,14 +21,20 @@ Iron Ingot=Lingote de hierro
Iron Lump=Pepita de hierro
Iron Ore=Mineral de hierro
Lava Source=Fuente de lava
Limestone=Piedra caliza
Mese=Mese
Mese Crystal=Cristal de mese
Mossy Cobblestone=Empredrado musgoso
Mud=Barro
Mud with Moss=Barro musgoso
Muddy Water Source=Fuente de agua pantanosa
River Water Source=Fuente de agua de río
Ruby=Rubí
Ruby Ore=Mineral de rubí
Sand=Arena
Sandstone=Piedra arenisca
Silex=Silex
Silt=Limo
Silt with Grass=Limo con hierba
Stone=Piedra
Water Source=Fuente de agua

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 B

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 671 B

View File

@ -2,6 +2,8 @@ local S = ...
local WATER_ALPHA = "^[opacity:" .. 230
local WATER_VISC = 1
local WATER_COLORIZE = "^[colorize:#628df0:192"
local WATER_SWAMP_COLORIZE = "^[colorize:#7d8f35:128"
minetest.register_node("nodez:water_source", {
description = S("Water Source").."\n"..
@ -9,7 +11,7 @@ minetest.register_node("nodez:water_source", {
drawtype = "liquid",
waving = 3,
tiles = {{
name = "nodez_water_animated.png"..WATER_ALPHA,
name = "nodez_water_animated.png"..WATER_COLORIZE..WATER_ALPHA,
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 4.0},
backface_culling = true,
}},
@ -38,7 +40,7 @@ minetest.register_node("nodez:water_flowing", {
tiles = {"nodez_water_flowing.png"},
special_tiles = {
{
name = "nodez_water_flowing.png"..WATER_ALPHA,
name = "nodez_water_flowing.png"..WATER_COLORIZE..WATER_ALPHA,
backface_culling = false,
animation = {
type = "vertical_frames",
@ -48,7 +50,7 @@ minetest.register_node("nodez:water_flowing", {
},
},
{
name = "nodez_water_flowing.png"..WATER_ALPHA,
name = "nodez_water_flowing.png"..WATER_COLORIZE..WATER_ALPHA,
backface_culling = true,
animation = {
type = "vertical_frames",
@ -81,10 +83,10 @@ minetest.register_node("nodez:river_water_source", {
"Drowning damage: 1",
drawtype = "liquid",
waving = 3,
tiles = { "nodez_river_water.png"..WATER_ALPHA },
tiles = { "nodez_river_water.png"..WATER_COLORIZE..WATER_ALPHA },
special_tiles = {
{name = "nodez_river_water.png"..WATER_ALPHA, backface_culling = false},
{name = "nodez_river_water.png"..WATER_ALPHA, backface_culling = true},
{name = "nodez_river_water.png"..WATER_COLORIZE..WATER_ALPHA, backface_culling = false},
{name = "nodez_river_water.png"..WATER_COLORIZE..WATER_ALPHA, backface_culling = true},
},
use_texture_alpha = "blend",
paramtype = "light",
@ -110,11 +112,11 @@ minetest.register_node("nodez:river_water_flowing", {
"Drowning damage: 1",
drawtype = "flowingliquid",
waving = 3,
tiles = {"nodez_river_water_flowing.png"..WATER_ALPHA},
tiles = {"nodez_river_water_flowing.png"..WATER_COLORIZE..WATER_ALPHA},
special_tiles = {
{name = "nodez_river_water_flowing.png"..WATER_ALPHA,
{name = "nodez_river_water_flowing.png"..WATER_COLORIZE..WATER_ALPHA,
backface_culling = false},
{name = "nodez_river_water_flowing.png"..WATER_ALPHA,
{name = "nodez_river_water_flowing.png"..WATER_COLORIZE..WATER_ALPHA,
backface_culling = false},
},
use_texture_alpha = "blend",
@ -137,6 +139,99 @@ minetest.register_node("nodez:river_water_flowing", {
sounds = sound.water(),
})
--Muddy Swamp Water
minetest.register_node("nodez:muddy_water_source", {
description = S("Muddy Water Source"),
drawtype = "liquid",
waving = 3,
tiles = {
{
name = "nodez_water_animated.png"..WATER_ALPHA..WATER_SWAMP_COLORIZE,
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
{
name = "nodez_water_animated.png"..WATER_ALPHA..WATER_SWAMP_COLORIZE,
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
},
alpha = 212,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "source",
liquid_alternative_flowing = "nodez:muddy_water_flowing",
liquid_alternative_source = "nodez:muddy_water_source",
liquid_viscosity = 1,
post_effect_color = {a = 191, r = 30, g = 60, b = 90},
groups = {water = 3, liquid = 3, cools_lava = 1},
sounds = sound.water(),
})
minetest.register_node("nodez:muddy_water_flowing", {
description = S("Flowing Muddy Water"),
drawtype = "flowingliquid",
waving = 3,
tiles = {"nodez_water.png"..WATER_ALPHA..WATER_SWAMP_COLORIZE},
special_tiles = {
{
name = "nodez_water_animated.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.5,
},
},
{
name = "nodez_water_animated.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.5,
},
},
},
alpha = 212,
paramtype = "light",
paramtype2 = "flowingliquid",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "nodez:muddy_water_flowing",
liquid_alternative_source = "nodez:muddy_water_source",
liquid_viscosity = 1,
post_effect_color = {a = 191, r = 30, g = 90, b = 90},
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1,
cools_lava = 1},
sounds = sound.water(),
})
--Ice
minetest.register_node("nodez:ice", {

View File

@ -10,7 +10,7 @@ playerz = {}
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
local animation_blend = 0
playerz.registered_models = { }
playerz.registered_models = {}
-- Local for speed.
local models = playerz.registered_models
@ -20,7 +20,6 @@ function playerz.register_model(name, def)
end
-- Player stats and animations
local player_model = {}
local player_textures = {}
local player_anim = {}
local player_sneak = {}
@ -32,7 +31,7 @@ playerz.count = 0 --Total number of connected players
function playerz.get_animation(player)
local name = player:get_player_name()
return {
model = player_model[name],
model = playerz.get_model(player),
textures = player_textures[name],
animation = player_anim[name],
}
@ -129,7 +128,7 @@ minetest.register_chatcommand("toggle_gender", {
new_gender = "male"
end
meta:set_string("gender", new_gender)
playerz.set_model(player, playerz.get_gender_model(new_gender))
playerz.update_model(player, playerz.get_gender_model(new_gender), true)
local gender_model = playerz.get_gender_model(new_gender)
local cloth = playerz.compose_cloth(player)
playerz.registered_models[gender_model].textures[1] = cloth
@ -170,7 +169,7 @@ local function move_head(player, on_water)
end
local head_rotation = {x= pitch, y= 0, z= 0} --the head movement {pitch, yaw, roll}
local head_offset
if minetest.get_modpath("3d_armor")~=nil then
if minetest.get_modpath("3d_armor") ~= nil then
head_offset = 6.75
else
head_offset = 6.3
@ -179,12 +178,21 @@ local function move_head(player, on_water)
player:set_bone_position("Head", head_position, head_rotation) --set the head movement
end
--Save/grab Model
function playerz.get_model(player)
return player:get_meta():get_string("playerz:model")
end
function playerz.set_model(player, model)
return player:get_meta():set_string("playerz:model", model)
end
-- Called when a player's appearance needs to be updated
function playerz.set_model(player, model_name)
function playerz.update_model(player, model_name, force)
local name = player:get_player_name()
local model = models[model_name]
if model then
if player_model[name] == model_name then
if playerz.get_model(player) == model_name and not force then
return
end
player:set_properties({
@ -207,12 +215,12 @@ function playerz.set_model(player, model_name)
eye_height = 1.625,
})
end
player_model[name] = model_name
playerz.set_model(player, model_name)
end
function playerz.set_textures(player, textures)
local name = player:get_player_name()
local model = models[player_model[name]]
local model = models[playerz.get_model(player)]
local model_textures = model and model.textures or nil
player_textures[name] = textures or model_textures
player:set_properties({textures = textures or model_textures})
@ -223,7 +231,8 @@ function playerz.set_animation(player, anim_name, speed)
if player_anim[name] == anim_name then
return
end
local model = player_model[name] and models[player_model[name]]
local player_model = playerz.get_model(player)
local model = player_model and models[player_model]
if not (model and model.animations[anim_name]) then
return
end
@ -251,7 +260,7 @@ minetest.register_globalstep(function(dtime)
timer = timer + dtime
for _, player in pairs(minetest.get_connected_players()) do
local name = player:get_player_name()
local model_name = player_model[name]
local model_name = playerz.get_model(player)
local model = model_name and models[model_name]
if model and not player_attached[name] then
local controls = player:get_player_control()
@ -412,7 +421,7 @@ function playerz.set_texture(player)
local gender = playerz.get_gender(player)
local gender_model = playerz.get_gender_model(gender)
playerz.registered_models[gender_model].textures[1] = cloth
playerz.set_model(player, gender_model)
playerz.update_model(player, gender_model, false)
playerz.set_textures(player, models[gender_model].textures)
end
@ -510,7 +519,6 @@ end)
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
player_model[name] = nil
player_anim[name] = nil
player_textures[name] = nil
player_sneak[name] = nil
@ -544,4 +552,3 @@ minetest.register_on_shutdown(function()
playerz.shutdown_hunger(player)
end
end)

View File

@ -52,7 +52,7 @@ minetest.register_on_joinplayer(function(player)
hunger = playerz.load_hunger(player)
local cloth = playerz.compose_cloth(player)
playerz.registered_models[playerz.get_gender_model(gender)].textures[1] = cloth
playerz.set_model(player, playerz.get_gender_model(gender))
playerz.update_model(player, playerz.get_gender_model(gender), true)
end
--Set Hunger Hudbar
playerz.hb_add(player, hunger)

View File

@ -112,8 +112,10 @@ function treez.register_tree(name, def)
attached_node = 1, sapling = 1},
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(tree_grow_time - (tree_grow_time * variability),
if helper.node_is_soil(pos, "under") then
minetest.get_node_timer(pos):start(math.random(tree_grow_time - (tree_grow_time * variability),
tree_grow_time + (tree_grow_time * variability)))
end
end,
})

View File

@ -5,6 +5,7 @@
@1 Wood=Madera @1
Apple=Manzana
Apple Tree=de manzano
Birch=Abedul
Cherries=Cerezas
Cherry Tree=de cerezo
Chestnut=Castaña

View File

@ -1,3 +1,3 @@
name = treez
description = Trees
depends = mapgenz
depends = mapgenz, helper

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 637 B

View File

@ -79,3 +79,20 @@ treez.register_tree("chestnut_tree", {
},
}
})
--Birch
treez.register_tree("birch", {
description = "Birch",
deco = {
biomes = {"forest"},
place_on = "nodez:dirt_with_grass",
noise_params = {
offset = -0.005,
scale = 0.008,
spread = {x = 250, y = 250, z = 250},
seed = 3828,
octaves = 3,
persist = 0.66
},
}
})