475 lines
13 KiB
Lua
475 lines
13 KiB
Lua
rgt_world = {}
|
||
local ns = rgt_world
|
||
|
||
local function rep(tx, size)
|
||
local out = "[combine:"..(size *16).."x"..(size *16)
|
||
for x = 0, size -1 do
|
||
for y = 0, size -1 do
|
||
out = out..":"..(x *16)..","..(y *16).."="..tx
|
||
end
|
||
end
|
||
return out
|
||
end
|
||
|
||
include "variants.lua"
|
||
|
||
rgt.register_node("stone", {
|
||
tiles = {{name = "rgt_stone.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {stone = 1}
|
||
})
|
||
|
||
rgt.register_node("stone_brick", {
|
||
tiles = {{name = "rgt_stone_brick.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {stone = 1}
|
||
})
|
||
|
||
rgt.register_node("stone_brick_large", {
|
||
tiles = {{name = "rgt_stone_brick_large.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {stone = 1}
|
||
})
|
||
|
||
rgt.register_node("stone_tile", {
|
||
tiles = {{name = "rgt_stone_tile.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {stone = 1}
|
||
})
|
||
|
||
rgt.register_node("cobble", {
|
||
tiles = {"rgt_cobble.png"},
|
||
_variants = "all",
|
||
groups = {stone = 1}
|
||
})
|
||
|
||
rgt.register_node("dirt", {
|
||
tiles = {"rgt_dirt.png"},
|
||
groups = {dig_immediate = 3}
|
||
})
|
||
|
||
rgt.register_node("dirt_mossy", {
|
||
tiles = {{name = rep("rgt_dirt.png", 4).."^rgt_path_grass.png", scale = 4, align_style = "world"}, "rgt_dirt.png"},
|
||
groups = {dig_immediate = 3}
|
||
})
|
||
|
||
rgt.register_node("dirt_grass", {
|
||
paramtype2 = "color",
|
||
tiles = {"rgt_grass_top.png", {name = "rgt_dirt.png", color = "#fff"}, {name = "rgt_dirt.png^rgt_grass_side_shadow.png", color = "#fff"}},
|
||
overlay_tiles = {"", "", "rgt_grass_side.png"},
|
||
palette = "rgt_palette_grass.png",
|
||
on_construct = function(pos)
|
||
|
||
end,
|
||
-- tiles = {"[fill:16x16:0,0:#3e7e7b^[fill:14x14:1,1:#326764"},
|
||
groups = {dig_immediate = 3}
|
||
})
|
||
|
||
-- Grass
|
||
for i = 1, 3 do
|
||
rgt.register_node("grass_"..i, {
|
||
drawtype = "plantlike",
|
||
paramtype = "light",
|
||
paramtype2 = "meshoptions",
|
||
place_param2 = 2,
|
||
sunlight_propagates = false,
|
||
tiles = {"rgt_grass_"..i..".png"},
|
||
groups = {attached_node = 3, dig_immediate = 3},
|
||
walkable = false,
|
||
selection_box = {
|
||
type = "fixed",
|
||
fixed = {
|
||
-6/16, -0.5, -6/16,
|
||
6/16, 6/16, 6/16
|
||
}
|
||
}
|
||
})
|
||
end
|
||
|
||
-- Tall grass
|
||
rgt.register_node("grass_tall_bottom", {
|
||
drawtype = "plantlike",
|
||
paramtype = "light",
|
||
paramtype2 = "meshoptions",
|
||
place_param2 = 2,
|
||
sunlight_propagates = false,
|
||
tiles = {"rgt_grass_tall.png^[verticalframe:2:1"},
|
||
groups = {attached_node = 3, dig_immediate = 3},
|
||
walkable = false,
|
||
selection_box = {
|
||
type = "fixed",
|
||
fixed = {
|
||
-6/16, -0.5, -6/16,
|
||
6/16, 0.5, 6/16
|
||
}
|
||
},
|
||
node_placement_prediction = "",
|
||
after_destruct = function(pos)
|
||
local above = pos:offset(0, 1, 0)
|
||
local na = minetest.get_node(above)
|
||
if na.name:find "grass_tall_top" then
|
||
minetest.remove_node(above)
|
||
end
|
||
end,
|
||
on_place = function(s, p, pt)
|
||
if pt.type ~= "node" then return end
|
||
|
||
local target = pt.above
|
||
|
||
if not minetest.get_node(target:offset(0, -1, 0)).name:find "dirt_grass" then
|
||
return
|
||
end
|
||
|
||
local above = target:offset(0, 1, 0)
|
||
if minetest.get_node(above).name == "air" then
|
||
minetest.set_node(target, {name = "grass_tall_bottom", param2 = 2})
|
||
minetest.set_node(above, {name = "grass_tall_top", param2 = 2})
|
||
s:take_item()
|
||
return s
|
||
end
|
||
end
|
||
})
|
||
|
||
rgt.register_node("grass_tall_top", {
|
||
drawtype = "plantlike",
|
||
paramtype = "light",
|
||
paramtype2 = "meshoptions",
|
||
place_param2 = 2,
|
||
sunlight_propagates = false,
|
||
tiles = {"rgt_grass_tall.png^[verticalframe:2:0"},
|
||
groups = {dig_immediate = 3},
|
||
walkable = false,
|
||
selection_box = {
|
||
type = "fixed",
|
||
fixed = {
|
||
-6/16, -0.5, -6/16,
|
||
6/16, 6/16, 6/16
|
||
}
|
||
},
|
||
drop = "grass_tall_bottom",
|
||
after_destruct = function(pos)
|
||
local below = pos:offset(0, -1, 0)
|
||
local nb = minetest.get_node(below)
|
||
if nb.name:find "grass_tall_bottom" then
|
||
minetest.remove_node(below)
|
||
end
|
||
end,
|
||
})
|
||
|
||
-- TODO: Tall grass
|
||
--rgt.register_node("tall_grass", {
|
||
-- drawtype = "mesh",
|
||
-- mesh = "rgt_plantlike_1x1x2.obj",
|
||
-- use_texture_alpha = "clip",
|
||
-- paramtype = "light",
|
||
-- sunlight_propagates = false,
|
||
-- tiles = {"rgt_grass_tall.png"},
|
||
-- groups = {dig_immediate = 3},
|
||
-- walkable = false
|
||
--})
|
||
|
||
|
||
|
||
rgt.register_node("path_grass", {
|
||
drawtype = "nodebox",
|
||
node_box = {
|
||
type = "fixed",
|
||
fixed = {
|
||
-0.5, -0.5, -0.5,
|
||
0.5, 7/16, 0.5
|
||
}
|
||
},
|
||
tiles = {"rgt_path_grass_top.png", "rgt_dirt.png", "rgt_dirt.png^rgt_path_grass_side.png"},
|
||
-- tiles = {"[fill:16x16:0,0:#3e7e7b^[fill:14x14:1,1:#326764"},
|
||
paramtype = "light",
|
||
sunlight_propagates = false,
|
||
groups = {dig_immediate = 3}
|
||
})
|
||
|
||
rgt.register_node("sand", {
|
||
tiles = {"rgt_sand.png"},
|
||
groups = {dig_immediate = 3}
|
||
})
|
||
|
||
|
||
rgt.register_node("oak_log", {
|
||
tiles = {"rgt_oak_log_top.png", "rgt_oak_log_top.png", "rgt_oak_log_side.png"},
|
||
groups = {dig_immediate = 3},
|
||
paramtype2 = "facedir"
|
||
})
|
||
|
||
rgt.register_node("oak_leaves", {
|
||
drawtype = "allfaces",
|
||
tiles = {"rgt_oak_leaves.png"},
|
||
use_texture_alpha = "clip",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
rgt.register_node("oak_planks", {
|
||
tiles = {{name = "rgt_oak_planks.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
rgt.register_node("dark_planks", {
|
||
tiles = {{name = "rgt_dark_planks.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
rgt.register_node("spruce_planks", {
|
||
tiles = {{name = "rgt_spruce_planks.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
rgt.register_node("acacia_planks", {
|
||
tiles = {{name = "rgt_acacia_planks.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
rgt.register_node("redwood_planks", {
|
||
tiles = {{name = "rgt_redwood_planks.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
rgt.register_node("birch_planks", {
|
||
tiles = {{name = "rgt_birch_planks.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
|
||
|
||
rgt.register_node("glass", {
|
||
drawtype = "glasslike",
|
||
paramtype = "light",
|
||
tiles = {{name = "rgt_glass.png", align_style = "world"}},
|
||
use_texture_alpha = "clip",
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3}
|
||
})
|
||
|
||
--minetest.register_decoration {
|
||
-- deco_type = "simple",
|
||
-- place_on = "dirt_grass",
|
||
-- fill_ratio = 0.5,
|
||
-- decoration = {"red_glazed_terracotta:oak_planks", "red_glazed_terracotta:spruce_planks", "red_glazed_terracotta:dark_planks", "red_glazed_terracotta:redwood_planks", "red_glazed_terracotta:acacia_planks", "red_glazed_terracotta:birch_planks"}
|
||
--}
|
||
|
||
|
||
rgt.register_node("basalt", {
|
||
tiles = {{name = "rgt_basalt.png", align_style = "world"}},
|
||
_variants = "all",
|
||
groups = {dig_immediate = 3},
|
||
})
|
||
|
||
|
||
rgt.register_node("water", {
|
||
tiles = {"[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33"},
|
||
groups = {dig_immediate = 3},
|
||
drawtype = "liquid",
|
||
use_texture_alpha = "blend",
|
||
paramtype = "light",
|
||
walkable = false,
|
||
climbable = true,
|
||
post_effect_color = "#2d5a7c55",
|
||
is_ground_content = false,
|
||
|
||
liquidtype = "source",
|
||
-- Minetest pro tip: Do not try to use aliases for these.
|
||
liquid_alternative_source = "red_glazed_terracotta:water",
|
||
liquid_alternative_flowing = "red_glazed_terracotta:water_flowing",
|
||
liquid_viscosity = 1,
|
||
liquid_range = 5,
|
||
})
|
||
|
||
rgt.register_node("water_flowing", {
|
||
tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}},
|
||
special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}},
|
||
groups = {dig_immediate = 3},
|
||
drawtype = "flowingliquid",
|
||
use_texture_alpha = "blend",
|
||
paramtype = "light",
|
||
paramtype2 = "flowingliquid",
|
||
walkable = false,
|
||
climbable = true,
|
||
post_effect_color = "#2d5a7c55",
|
||
is_ground_content = false,
|
||
|
||
liquidtype = "flowing",
|
||
liquid_alternative_source = "red_glazed_terracotta:water",
|
||
liquid_alternative_flowing = "red_glazed_terracotta:water_flowing",
|
||
liquid_viscosity = 1,
|
||
liquid_range = 5,
|
||
})
|
||
|
||
rgt.register_node("river_water", {
|
||
tiles = {"[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33"},
|
||
groups = {dig_immediate = 3},
|
||
drawtype = "liquid",
|
||
use_texture_alpha = "blend",
|
||
paramtype = "light",
|
||
walkable = false,
|
||
climbable = true,
|
||
post_effect_color = "#2d5a7c55",
|
||
|
||
liquidtype = "source",
|
||
-- Minetest pro tip: Do not try to use aliases for these.
|
||
liquid_alternative_source = "red_glazed_terracotta:river_water",
|
||
liquid_alternative_flowing = "red_glazed_terracotta:river_water_flowing",
|
||
liquid_viscosity = 1,
|
||
liquid_range = 2,
|
||
liquid_renewable = false
|
||
})
|
||
|
||
rgt.register_node("river_water_flowing", {
|
||
tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}},
|
||
special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}},
|
||
groups = {dig_immediate = 3},
|
||
drawtype = "flowingliquid",
|
||
use_texture_alpha = "blend",
|
||
paramtype = "light",
|
||
paramtype2 = "flowingliquid",
|
||
walkable = false,
|
||
climbable = true,
|
||
post_effect_color = "#2d5a7c55",
|
||
|
||
liquidtype = "flowing",
|
||
liquid_alternative_source = "red_glazed_terracotta:river_water",
|
||
liquid_alternative_flowing = "red_glazed_terracotta:river_water_flowing",
|
||
liquid_viscosity = 1,
|
||
liquid_range = 2,
|
||
liquid_renewable = false
|
||
})
|
||
|
||
minetest.register_alias("mapgen_stone", "red_glazed_terracotta:stone")
|
||
minetest.register_alias("mapgen_water_source", "red_glazed_terracotta:water")
|
||
minetest.register_alias("mapgen_river_water_source", "red_glazed_terracotta:river_water")
|
||
|
||
|
||
--[[
|
||
|
||
Biomes to add:
|
||
|
||
[Temperate]
|
||
Steppe
|
||
Moor
|
||
Plains
|
||
Light Deciduous Forest
|
||
Dark Deciduous Forest
|
||
|
||
[Cold]
|
||
Alpine
|
||
Glacier
|
||
Taiga
|
||
Tundra
|
||
Coniferous Forest
|
||
|
||
[Warm]
|
||
Desert
|
||
Badlands
|
||
Jungle
|
||
Swamp
|
||
Marsh
|
||
|
||
--]]
|
||
|
||
include "biomes.lua"
|
||
|
||
|
||
rgt.register_node("light", {
|
||
tiles = {"[fill:1x1:0,0:#fed"},
|
||
light_source = 14,
|
||
paramtype = "light",
|
||
description = "Test"
|
||
})
|
||
|
||
minetest.register_ore {
|
||
ore_type = "scatter",
|
||
ore = "light",
|
||
wherein = "stone",
|
||
clust_scarcity = 3 * 3 * 3,
|
||
clust_num_ores = 5,
|
||
clust_size = 1
|
||
}
|
||
|
||
minetest.register_decoration {
|
||
deco_type = "schematic",
|
||
place_on = "dirt_grass",
|
||
biomes = {"forest"},
|
||
y_min = 1,
|
||
y_max = 8000,
|
||
fill_ratio = 0.01,
|
||
schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/tree.mts",
|
||
flags = "place_center_x, place_center_z",
|
||
place_offset_y = 1,
|
||
}
|
||
|
||
minetest.register_decoration {
|
||
deco_type = "schematic",
|
||
place_on = "dirt_grass",
|
||
biomes = {"plains"},
|
||
y_min = 1,
|
||
noise_params = {
|
||
offset = 0,
|
||
scale = 0.25,
|
||
spread = {x = 8, y = 8, z = 8},
|
||
seed = 3456789,
|
||
octaves = 4,
|
||
persist = 0.6,
|
||
lacunarity = 3,
|
||
},
|
||
-- fill_ratio = 0.1,
|
||
schematic = {
|
||
size = {x = 1, y = 2, z = 1}, -- 1×2×1
|
||
data = {
|
||
{name = "grass_tall_bottom", prob = 255, param2 = 2},
|
||
{name = "grass_tall_top", prob = 255, param2 = 2},
|
||
},
|
||
},
|
||
place_offset_y = 1,
|
||
}
|
||
|
||
minetest.register_decoration {
|
||
deco_type = "simple",
|
||
place_on = "dirt_grass",
|
||
biomes = {"forest", "plains"},
|
||
decoration = {"grass_1", "grass_2", "grass_3"},
|
||
param2 = 2,
|
||
y_min = 1,
|
||
fill_ratio = 0.2,
|
||
}
|
||
|
||
minetest.override_item("", {
|
||
on_place = function(s, p, pt)
|
||
if minetest.get_node(pt.under).name:find "dirt_grass" then
|
||
minetest.set_node(pt.under, {name = "path_grass"})
|
||
end
|
||
-- minetest.spawn_tree(pt.above, {
|
||
-- axiom = "TF[FFA]",
|
||
-- rules_a = "F",
|
||
-- trunk = "oak_log",
|
||
-- leaves = "oak_leaves",
|
||
-- angle = 30,
|
||
-- iterations = 2,
|
||
-- random_level = 0,
|
||
-- trunk_type = "single",
|
||
---- thin_branches = true,
|
||
-- fruit_chance = 0,
|
||
-- fruit = "stone_brick"
|
||
-- })
|
||
end
|
||
})
|
||
|
||
minetest.register_chatcommand("biome", {
|
||
func = function(name)
|
||
tell(name, minetest.get_biome_name(minetest.get_biome_data(minetest.get_player_by_name(name):get_pos()).biome))
|
||
end
|
||
})
|
||
|
||
include "config.lua"
|
||
|
||
--minetest.register_mapgen_script(minetest.get_modpath(minetest.get_current_modname()).."/mapgen.lua")
|