Update of MinetestForFun Game Creative (from Classic)
@ -1 +1 @@
|
|||||||
name = MinetestForFun CREATIVE
|
name = MinetestForFun Game Creative
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
# Enable jungles on new worlds, disable biome blend and mud flow (faster, looks better).
|
# Enable jungles on new worlds, disable biome blend and mud flow (faster, looks better).
|
||||||
mgv6_spflags = jungles, nobiomeblend, nomudflow
|
mgv6_spflags = jungles, nobiomeblend, nomudflow
|
||||||
|
disable_fire = true
|
||||||
|
@ -9,8 +9,7 @@
|
|||||||
# 0 to disable
|
# 0 to disable
|
||||||
#share_bones_time = 1200
|
#share_bones_time = 1200
|
||||||
|
|
||||||
# Whether standard fire should be disabled ('basic flame' nodes will disappear)
|
# Whether fire should be disabled (all fire nodes will instantly disappear)
|
||||||
# 'permanent flame' nodes will remain with either setting
|
|
||||||
#disable_fire = false
|
#disable_fire = false
|
||||||
|
|
||||||
# Whether steel tools, torches and cobblestone should be given to new players
|
# Whether steel tools, torches and cobblestone should be given to new players
|
||||||
|
@ -183,6 +183,11 @@ end)
|
|||||||
|
|
||||||
-- respawn player at bed if enabled and valid position is found
|
-- respawn player at bed if enabled and valid position is found
|
||||||
minetest.register_on_respawnplayer(function(player)
|
minetest.register_on_respawnplayer(function(player)
|
||||||
|
--MFF DEBUT crabman(8/01/2016 ) respawn player in special area(event) if a spawn is set.
|
||||||
|
if ((minetest.get_modpath("areas") ~= nil) and (areas:onRespawn(player))) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
if not enable_respawn then
|
if not enable_respawn then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
-- minetest/creative/init.lua
|
-- minetest/creative/init.lua
|
||||||
|
|
||||||
creative_inventory = {}
|
creative_inventory = {}
|
||||||
creative_inventory.creative_inventory_size = 0
|
|
||||||
|
|
||||||
-- Create detached creative inventory after loading all mods
|
-- Create detached creative inventory after loading all mods
|
||||||
minetest.after(0, function()
|
creative_inventory.init_creative_inventory = function(player)
|
||||||
local inv = minetest.create_detached_inventory("creative", {
|
local player_name = player:get_player_name()
|
||||||
|
creative_inventory[player_name] = {}
|
||||||
|
creative_inventory[player_name].size = 0
|
||||||
|
creative_inventory[player_name].filter = nil
|
||||||
|
creative_inventory[player_name].start_i = 1
|
||||||
|
|
||||||
|
local inv = minetest.create_detached_inventory("creative_" .. player_name, {
|
||||||
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||||
if minetest.setting_getbool("creative_mode") then
|
if minetest.setting_getbool("creative_mode") then
|
||||||
return count
|
return count
|
||||||
@ -35,19 +40,41 @@ minetest.after(0, function()
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
creative_inventory.update(player_name, nil, 2)
|
||||||
|
--print("creative inventory size: "..dump(creative_inventory[player_name].size))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function tab_category(tab_id)
|
||||||
|
local id_category = {
|
||||||
|
nil, -- Reserved for crafting tab.
|
||||||
|
minetest.registered_items,
|
||||||
|
minetest.registered_nodes,
|
||||||
|
minetest.registered_tools,
|
||||||
|
minetest.registered_craftitems
|
||||||
|
}
|
||||||
|
|
||||||
|
-- If index out of range, show default ("All") page.
|
||||||
|
return id_category[tab_id] or id_category[2]
|
||||||
|
end
|
||||||
|
|
||||||
|
function creative_inventory.update(player_name, filter, tab_id)
|
||||||
local creative_list = {}
|
local creative_list = {}
|
||||||
for name,def in pairs(minetest.registered_items) do
|
local inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name})
|
||||||
if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0)
|
|
||||||
and def.description and def.description ~= "" then
|
for name, def in pairs(tab_category(tab_id)) do
|
||||||
|
if not (def.groups.not_in_creative_inventory == 1) and
|
||||||
|
def.description and def.description ~= "" and
|
||||||
|
(not filter or def.name:find(filter, 1, true)) then
|
||||||
creative_list[#creative_list+1] = name
|
creative_list[#creative_list+1] = name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
table.sort(creative_list)
|
table.sort(creative_list)
|
||||||
inv:set_size("main", #creative_list)
|
inv:set_size("main", #creative_list)
|
||||||
inv:set_list("main", creative_list)
|
inv:set_list("main", creative_list)
|
||||||
creative_inventory.creative_inventory_size = #creative_list
|
creative_inventory[player_name].size = #creative_list
|
||||||
--print("creative inventory size: "..dump(creative_inventory.creative_inventory_size))
|
end
|
||||||
end)
|
|
||||||
|
|
||||||
-- Create the trash field
|
-- Create the trash field
|
||||||
local trash = minetest.create_detached_inventory("creative_trash", {
|
local trash = minetest.create_detached_inventory("creative_trash", {
|
||||||
@ -66,70 +93,117 @@ local trash = minetest.create_detached_inventory("creative_trash", {
|
|||||||
})
|
})
|
||||||
trash:set_size("main", 1)
|
trash:set_size("main", 1)
|
||||||
|
|
||||||
|
creative_inventory.set_creative_formspec = function(player, start_i, pagenum, tab_id)
|
||||||
creative_inventory.set_creative_formspec = function(player, start_i, pagenum)
|
local player_name = player:get_player_name()
|
||||||
|
local filter = creative_inventory[player_name].filter or ""
|
||||||
pagenum = math.floor(pagenum)
|
pagenum = math.floor(pagenum)
|
||||||
local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1)
|
local pagemax = math.floor((creative_inventory[player_name].size - 1) / (3*8) + 1)
|
||||||
player:set_inventory_formspec(
|
tab_id = tab_id or 2
|
||||||
"size[13,7.5]"..
|
|
||||||
--"image[6,0.6;1,2;player.png]"..
|
player:set_inventory_formspec([[
|
||||||
default.gui_bg..
|
size[8,8.6]
|
||||||
default.gui_bg_img..
|
image[4.06,3.4;0.8,0.8;trash_icon.png]
|
||||||
default.gui_slots..
|
list[current_player;main;0,4.7;8,1;]
|
||||||
"list[current_player;main;5,3.5;8,1;]"..
|
list[current_player;main;0,5.85;8,3;8]
|
||||||
"list[current_player;main;5,4.75;8,3;8]"..
|
list[detached:creative_trash;main;4,3.3;1,1;]
|
||||||
"list[current_player;craft;8,0;3,3;]"..
|
tablecolumns[color;text;color;text]
|
||||||
"list[current_player;craftpreview;12,1;1,1;]"..
|
tableoptions[background=#00000000;highlight=#00000000;border=false]
|
||||||
"image[11,1;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
|
button[5.4,3.2;0.8,0.9;creative_prev;<]
|
||||||
"list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]"..
|
button[7.25,3.2;0.8,0.9;creative_next;>]
|
||||||
"label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]"..
|
button[2.1,3.4;0.8,0.5;search;?]
|
||||||
"button[0.3,6.5;1.6,1;creative_prev;<<]"..
|
button[2.75,3.4;0.8,0.5;clear;X]
|
||||||
"button[2.7,6.5;1.6,1;creative_next;>>]"..
|
tooltip[search;Search]
|
||||||
"listring[current_player;main]"..
|
tooltip[clear;Reset]
|
||||||
"listring[current_player;craft]"..
|
listring[current_player;main]
|
||||||
"listring[current_player;main]"..
|
]] ..
|
||||||
"listring[detached:creative;main]"..
|
"field[0.3,3.5;2.2,1;filter;;".. filter .."]"..
|
||||||
"label[5,1.5;Trash:]"..
|
"listring[detached:creative_".. player_name ..";main]"..
|
||||||
"list[detached:creative_trash;main;5,2;1,1;]"..
|
"tabheader[0,0;tabs;Crafting,All,Nodes,Tools,Items;".. tostring(tab_id) ..";true;false]"..
|
||||||
default.get_hotbar_bg(5,3.5)
|
"list[detached:creative_".. player_name ..";main;0,0;8,3;".. tostring(start_i) .."]"..
|
||||||
|
"table[6.05,3.35;1.15,0.5;pagenum;#FFFF00,".. tostring(pagenum) ..",#FFFFFF,/ ".. tostring(pagemax) .."]"..
|
||||||
|
default.get_hotbar_bg(0,4.7)..
|
||||||
|
default.gui_bg .. default.gui_bg_img .. default.gui_slots
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
creative_inventory.set_crafting_formspec = function(player)
|
||||||
|
player:set_inventory_formspec([[
|
||||||
|
size[8,8.6]
|
||||||
|
list[current_player;craft;2,0.75;3,3;]
|
||||||
|
list[current_player;craftpreview;6,1.75;1,1;]
|
||||||
|
list[current_player;main;0,4.7;8,1;]
|
||||||
|
list[current_player;main;0,5.85;8,3;8]
|
||||||
|
list[detached:creative_trash;main;0,2.75;1,1;]
|
||||||
|
image[0.06,2.85;0.8,0.8;trash_icon.png]
|
||||||
|
image[5,1.75;1,1;gui_furnace_arrow_bg.png^[transformR270]
|
||||||
|
tabheader[0,0;tabs;Crafting,All,Nodes,Tools,Items;1;true;false]
|
||||||
|
listring[current_player;main]
|
||||||
|
listring[current_player;craft]
|
||||||
|
]] ..
|
||||||
|
default.get_hotbar_bg(0,4.7)..
|
||||||
|
default.gui_bg .. default.gui_bg_img .. default.gui_slots
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
-- If in creative mode, modify player's inventory forms
|
-- If in creative mode, modify player's inventory forms
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
creative_inventory.set_creative_formspec(player, 0, 1)
|
creative_inventory.init_creative_inventory(player)
|
||||||
|
creative_inventory.set_creative_formspec(player, 0, 1, 2)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- Figure out current page from formspec
|
-- Figure out current page from formspec
|
||||||
local current_page = 0
|
local player_name = player:get_player_name()
|
||||||
local formspec = player:get_inventory_formspec()
|
local formspec = player:get_inventory_formspec()
|
||||||
local start_i = string.match(formspec, "list%[detached:creative;main;[%d.]+,[%d.]+;[%d.]+,[%d.]+;(%d+)%]")
|
local filter = formspec:match("filter;;([%w_:]+)") or ""
|
||||||
|
local start_i = formspec:match("list%[detached:creative_".. player_name ..";.*;(%d+)%]")
|
||||||
|
local tab_id = tonumber(formspec:match("tabheader%[.*;(%d+)%;.*%]"))
|
||||||
|
local inv_size = creative_inventory[player_name].size
|
||||||
start_i = tonumber(start_i) or 0
|
start_i = tonumber(start_i) or 0
|
||||||
|
|
||||||
if fields.creative_prev then
|
if fields.quit then
|
||||||
start_i = start_i - 4*6
|
if tab_id == 1 then
|
||||||
end
|
creative_inventory.set_crafting_formspec(player)
|
||||||
if fields.creative_next then
|
end
|
||||||
start_i = start_i + 4*6
|
elseif fields.tabs then
|
||||||
end
|
if tonumber(fields.tabs) == 1 then
|
||||||
|
creative_inventory.set_crafting_formspec(player)
|
||||||
|
else
|
||||||
|
creative_inventory.update(player_name, filter, tonumber(fields.tabs))
|
||||||
|
creative_inventory.set_creative_formspec(player, 0, 1, tonumber(fields.tabs))
|
||||||
|
end
|
||||||
|
elseif fields.clear then
|
||||||
|
creative_inventory[player_name].filter = ""
|
||||||
|
creative_inventory.update(player_name, nil, tab_id)
|
||||||
|
creative_inventory.set_creative_formspec(player, 0, 1, tab_id)
|
||||||
|
elseif fields.search then
|
||||||
|
creative_inventory[player_name].filter = fields.filter:lower()
|
||||||
|
creative_inventory.update(player_name, fields.filter:lower(), tab_id)
|
||||||
|
creative_inventory.set_creative_formspec(player, 0, 1, tab_id)
|
||||||
|
else
|
||||||
|
if fields.creative_prev then
|
||||||
|
start_i = start_i - 3*8
|
||||||
|
if start_i < 0 then
|
||||||
|
start_i = inv_size - (inv_size % (3*8))
|
||||||
|
if inv_size == start_i then
|
||||||
|
start_i = math.max(0, inv_size - (3*8))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif fields.creative_next then
|
||||||
|
start_i = start_i + 3*8
|
||||||
|
if start_i >= inv_size then
|
||||||
|
start_i = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if start_i < 0 then
|
creative_inventory.set_creative_formspec(player, start_i, start_i / (3*8) + 1, tab_id)
|
||||||
start_i = start_i + 4*6
|
|
||||||
end
|
end
|
||||||
if start_i >= creative_inventory.creative_inventory_size then
|
|
||||||
start_i = start_i - 4*6
|
|
||||||
end
|
|
||||||
|
|
||||||
if start_i < 0 or start_i >= creative_inventory.creative_inventory_size then
|
|
||||||
start_i = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1)
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
if minetest.setting_getbool("creative_mode") then
|
if minetest.setting_getbool("creative_mode") then
|
||||||
@ -137,7 +211,7 @@ if minetest.setting_getbool("creative_mode") then
|
|||||||
minetest.register_item(":", {
|
minetest.register_item(":", {
|
||||||
type = "none",
|
type = "none",
|
||||||
wield_image = "wieldhand.png",
|
wield_image = "wieldhand.png",
|
||||||
wield_scale = {x=1,y=1,z=2.5},
|
wield_scale = {x=1, y=1, z=2.5},
|
||||||
range = 10,
|
range = 10,
|
||||||
tool_capabilities = {
|
tool_capabilities = {
|
||||||
full_punch_interval = 0.5,
|
full_punch_interval = 0.5,
|
||||||
@ -164,7 +238,7 @@ if minetest.setting_getbool("creative_mode") then
|
|||||||
end
|
end
|
||||||
local inv = digger:get_inventory()
|
local inv = digger:get_inventory()
|
||||||
if inv then
|
if inv then
|
||||||
for _,item in ipairs(drops) do
|
for _, item in ipairs(drops) do
|
||||||
item = ItemStack(item):get_name()
|
item = ItemStack(item):get_name()
|
||||||
if not inv:contains_item("main", item) then
|
if not inv:contains_item("main", item) then
|
||||||
inv:add_item("main", item)
|
inv:add_item("main", item)
|
||||||
@ -172,5 +246,4 @@ if minetest.setting_getbool("creative_mode") then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
BIN
minetestforfun_game/mods/creative/textures/trash_icon.png
Normal file
After Width: | Height: | Size: 179 B |
@ -148,6 +148,14 @@ BlockMen (CC BY-SA 3.0):
|
|||||||
heart.png
|
heart.png
|
||||||
gui_*.png
|
gui_*.png
|
||||||
|
|
||||||
|
sofar (CC BY-SA 3.0):
|
||||||
|
default_book_written.png, based on default_book.png
|
||||||
|
default_aspen_sapling
|
||||||
|
default_aspen_leaves
|
||||||
|
default_aspen_tree
|
||||||
|
default_aspen_tree_top, derived from default_pine_tree_top (by paramat)
|
||||||
|
default_aspen_wood, derived from default_pine_wood (by paramat)
|
||||||
|
|
||||||
Neuromancer (CC BY-SA 2.0):
|
Neuromancer (CC BY-SA 2.0):
|
||||||
default_cobble.png, based on texture by Brane praefect
|
default_cobble.png, based on texture by Brane praefect
|
||||||
default_mossycobble.png, based on texture by Brane praefect
|
default_mossycobble.png, based on texture by Brane praefect
|
||||||
|
@ -68,9 +68,9 @@ minetest.register_alias("steel_ingot", "default:steel_ingot")
|
|||||||
minetest.register_alias("clay_brick", "default:clay_brick")
|
minetest.register_alias("clay_brick", "default:clay_brick")
|
||||||
minetest.register_alias("snow", "default:snow")
|
minetest.register_alias("snow", "default:snow")
|
||||||
|
|
||||||
-- 'mese_block' was used for a while for the block form of mese
|
|
||||||
minetest.register_alias("default:mese_block", "default:mese")
|
|
||||||
|
|
||||||
-- Aliases for corrected pine node names
|
-- Aliases for corrected pine node names
|
||||||
minetest.register_alias("default:pinetree", "default:pine_tree")
|
minetest.register_alias("default:pinetree", "default:pine_tree")
|
||||||
minetest.register_alias("default:pinewood", "default:pine_wood")
|
minetest.register_alias("default:pinewood", "default:pine_wood")
|
||||||
|
|
||||||
|
-- Mese now comes in the form of blocks, ore, crystal and fragments
|
||||||
|
minetest.register_alias("default:mese", "default:mese_block")
|
||||||
|
@ -35,6 +35,13 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'default:aspen_wood 4',
|
||||||
|
recipe = {
|
||||||
|
{'default:aspen_tree'},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'default:stick 9',
|
output = 'default:stick 9',
|
||||||
recipe = {
|
recipe = {
|
||||||
|
@ -85,12 +85,42 @@ minetest.register_craftitem("default:book", {
|
|||||||
|
|
||||||
minetest.register_craftitem("default:book_written", {
|
minetest.register_craftitem("default:book_written", {
|
||||||
description = "Book With Text",
|
description = "Book With Text",
|
||||||
inventory_image = "default_book.png",
|
inventory_image = "default_book_written.png",
|
||||||
groups = {book=1, not_in_creative_inventory=1},
|
groups = {book=1, not_in_creative_inventory=1},
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
on_use = book_on_use,
|
on_use = book_on_use,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "shapeless",
|
||||||
|
output = "default:book_written",
|
||||||
|
recipe = { "default:book", "default:book_written" }
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||||
|
if itemstack:get_name() ~= "default:book_written" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local copy = ItemStack("default:book_written")
|
||||||
|
local original
|
||||||
|
local index
|
||||||
|
for i = 1, player:get_inventory():get_size("craft") do
|
||||||
|
if old_craft_grid[i]:get_name() == "default:book_written" then
|
||||||
|
original = old_craft_grid[i]
|
||||||
|
index = i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not original then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local copymeta = original:get_metadata()
|
||||||
|
-- copy of the book held by player's mouse cursor
|
||||||
|
itemstack:set_metadata(copymeta)
|
||||||
|
-- put the book with metadata back in the craft grid
|
||||||
|
craft_inv:set_stack("craft", index, original)
|
||||||
|
end)
|
||||||
|
|
||||||
minetest.register_craftitem("default:coal_lump", {
|
minetest.register_craftitem("default:coal_lump", {
|
||||||
description = "Coal Lump",
|
description = "Coal Lump",
|
||||||
wield_scale = {x = 1, y = 1, z = 2},
|
wield_scale = {x = 1, y = 1, z = 2},
|
||||||
|
@ -53,7 +53,7 @@ function default.register_ores()
|
|||||||
|
|
||||||
-- Clay
|
-- Clay
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "blob",
|
ore_type = "blob",
|
||||||
ore = "default:clay",
|
ore = "default:clay",
|
||||||
wherein = {"default:sand"},
|
wherein = {"default:sand"},
|
||||||
@ -63,75 +63,76 @@ function default.register_ores()
|
|||||||
y_max = 0,
|
y_max = 0,
|
||||||
noise_threshhold = 0.0,
|
noise_threshhold = 0.0,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = 0.5,
|
offset = 0.35,
|
||||||
scale = 0.2,
|
scale = 0.2,
|
||||||
spread = {x = 5, y = 5, z = 5},
|
spread = {x = 5, y = 5, z = 5},
|
||||||
seed = -316,
|
seed = -316,
|
||||||
octaves = 1,
|
octaves = 1,
|
||||||
persist = 0.0
|
persist = 0.5
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Sand
|
-- Sand
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "blob",
|
ore_type = "blob",
|
||||||
ore = "default:sand",
|
ore = "default:sand",
|
||||||
wherein = {"default:stone"},
|
wherein = {"default:stone", "default:sandstone",
|
||||||
|
"default:desert_stone"},
|
||||||
clust_scarcity = 24 * 24 * 24,
|
clust_scarcity = 24 * 24 * 24,
|
||||||
clust_size = 7,
|
clust_size = 7,
|
||||||
y_min = -63,
|
y_min = -63,
|
||||||
y_max = 4,
|
y_max = 4,
|
||||||
noise_threshhold = 0.0,
|
noise_threshhold = 0,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = 0.5,
|
offset = 0.35,
|
||||||
scale = 0.2,
|
scale = 0.2,
|
||||||
spread = {x = 5, y = 5, z = 5},
|
spread = {x = 5, y = 5, z = 5},
|
||||||
seed = 2316,
|
seed = 2316,
|
||||||
octaves = 1,
|
octaves = 1,
|
||||||
persist = 0.0
|
persist = 0.5
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Dirt
|
-- Dirt
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "blob",
|
ore_type = "blob",
|
||||||
ore = "default:dirt",
|
ore = "default:dirt",
|
||||||
wherein = {"default:stone"},
|
wherein = {"default:stone", "default:sandstone"},
|
||||||
clust_scarcity = 24 * 24 * 24,
|
clust_scarcity = 24 * 24 * 24,
|
||||||
clust_size = 7,
|
clust_size = 7,
|
||||||
y_min = -63,
|
y_min = -63,
|
||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
noise_threshhold = 0.0,
|
noise_threshhold = 0,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = 0.5,
|
offset = 0.35,
|
||||||
scale = 0.2,
|
scale = 0.2,
|
||||||
spread = {x = 5, y = 5, z = 5},
|
spread = {x = 5, y = 5, z = 5},
|
||||||
seed = 17676,
|
seed = 17676,
|
||||||
octaves = 1,
|
octaves = 1,
|
||||||
persist = 0.0
|
persist = 0.5
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Gravel
|
-- Gravel
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "blob",
|
ore_type = "blob",
|
||||||
ore = "default:gravel",
|
ore = "default:gravel",
|
||||||
wherein = {"default:stone"},
|
wherein = {"default:stone"},
|
||||||
clust_scarcity = 24 * 24 * 24,
|
clust_scarcity = 24 * 24 * 24,
|
||||||
clust_size = 7,
|
clust_size = 7,
|
||||||
y_min = -31000,
|
y_min = -31000,
|
||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
noise_threshhold = 0.0,
|
noise_threshhold = 0,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = 0.5,
|
offset = 0.35,
|
||||||
scale = 0.2,
|
scale = 0.2,
|
||||||
spread = {x = 5, y = 5, z = 5},
|
spread = {x = 5, y = 5, z = 5},
|
||||||
seed = 766,
|
seed = 766,
|
||||||
octaves = 1,
|
octaves = 1,
|
||||||
persist = 0.0
|
persist = 0.5
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -202,8 +203,8 @@ function default.register_ores()
|
|||||||
clust_scarcity = 9 * 9 * 9,
|
clust_scarcity = 9 * 9 * 9,
|
||||||
clust_num_ores = 5,
|
clust_num_ores = 5,
|
||||||
clust_size = 3,
|
clust_size = 3,
|
||||||
y_min = -63,
|
y_min = -63,
|
||||||
y_max = -16,
|
y_max = -16,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
@ -215,6 +216,7 @@ function default.register_ores()
|
|||||||
clust_size = 3,
|
clust_size = 3,
|
||||||
y_min = -30000,
|
y_min = -30000,
|
||||||
y_max = -64,
|
y_max = -64,
|
||||||
|
flags = "absheight",
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
@ -226,6 +228,7 @@ function default.register_ores()
|
|||||||
clust_size = 6,
|
clust_size = 6,
|
||||||
y_min = -30000,
|
y_min = -30000,
|
||||||
y_max = -64,
|
y_max = -64,
|
||||||
|
flags = "absheight",
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
@ -262,6 +265,7 @@ function default.register_ores()
|
|||||||
clust_size = 3,
|
clust_size = 3,
|
||||||
y_min = -1024,
|
y_min = -1024,
|
||||||
y_max = -256,
|
y_max = -256,
|
||||||
|
flags = "absheight",
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
@ -273,6 +277,7 @@ function default.register_ores()
|
|||||||
clust_size = 2,
|
clust_size = 2,
|
||||||
y_min = -30000,
|
y_min = -30000,
|
||||||
y_max = -1024,
|
y_max = -1024,
|
||||||
|
flags = "absheight",
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
@ -337,6 +342,7 @@ function default.register_ores()
|
|||||||
clust_size = 2,
|
clust_size = 2,
|
||||||
y_min = -255,
|
y_min = -255,
|
||||||
y_max = -64,
|
y_max = -64,
|
||||||
|
flags = "absheight",
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
@ -348,6 +354,7 @@ function default.register_ores()
|
|||||||
clust_size = 3,
|
clust_size = 3,
|
||||||
y_min = -30000,
|
y_min = -30000,
|
||||||
y_max = -256,
|
y_max = -256,
|
||||||
|
flags = "absheight",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Diamond
|
-- Diamond
|
||||||
@ -381,9 +388,9 @@ function default.register_ores()
|
|||||||
ore = "default:stone_with_diamond",
|
ore = "default:stone_with_diamond",
|
||||||
wherein = "default:stone",
|
wherein = "default:stone",
|
||||||
clust_scarcity = 30 * 30 * 30,
|
clust_scarcity = 30 * 30 * 30,
|
||||||
clust_num_ores = 64,
|
clust_num_ores = 32,
|
||||||
clust_size = 5,
|
clust_size = 5,
|
||||||
y_max = -1024,
|
y_max = -4096,
|
||||||
y_min = -30000,
|
y_min = -30000,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -698,6 +705,24 @@ function default.register_biomes()
|
|||||||
humidity_point = 35,
|
humidity_point = 35,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "tundra_beach",
|
||||||
|
--node_dust = "",
|
||||||
|
node_top = "default:gravel",
|
||||||
|
depth_top = 1,
|
||||||
|
node_filler = "default:gravel",
|
||||||
|
depth_filler = 2,
|
||||||
|
--node_stone = "",
|
||||||
|
--node_water_top = "",
|
||||||
|
--depth_water_top = ,
|
||||||
|
--node_water = "",
|
||||||
|
--node_river_water = "",
|
||||||
|
y_min = -3,
|
||||||
|
y_max = 1,
|
||||||
|
heat_point = 15,
|
||||||
|
humidity_point = 35,
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "tundra_ocean",
|
name = "tundra_ocean",
|
||||||
--node_dust = "",
|
--node_dust = "",
|
||||||
@ -711,7 +736,7 @@ function default.register_biomes()
|
|||||||
--node_water = "",
|
--node_water = "",
|
||||||
--node_river_water = "",
|
--node_river_water = "",
|
||||||
y_min = -112,
|
y_min = -112,
|
||||||
y_max = 1,
|
y_max = -4,
|
||||||
heat_point = 15,
|
heat_point = 15,
|
||||||
humidity_point = 35,
|
humidity_point = 35,
|
||||||
})
|
})
|
||||||
@ -767,12 +792,30 @@ function default.register_biomes()
|
|||||||
--depth_water_top = ,
|
--depth_water_top = ,
|
||||||
--node_water = "",
|
--node_water = "",
|
||||||
--node_river_water = "",
|
--node_river_water = "",
|
||||||
y_min = 5,
|
y_min = 6,
|
||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
heat_point = 40,
|
heat_point = 40,
|
||||||
humidity_point = 35,
|
humidity_point = 35,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "stone_grassland_dunes",
|
||||||
|
--node_dust = "",
|
||||||
|
node_top = "default:sand",
|
||||||
|
depth_top = 1,
|
||||||
|
node_filler = "default:sand",
|
||||||
|
depth_filler = 2,
|
||||||
|
--node_stone = "",
|
||||||
|
--node_water_top = "",
|
||||||
|
--depth_water_top = ,
|
||||||
|
--node_water = "",
|
||||||
|
--node_river_water = "",
|
||||||
|
y_min = 5,
|
||||||
|
y_max = 5,
|
||||||
|
heat_point = 40,
|
||||||
|
humidity_point = 35,
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "stone_grassland_ocean",
|
name = "stone_grassland_ocean",
|
||||||
--node_dust = "",
|
--node_dust = "",
|
||||||
@ -804,12 +847,30 @@ function default.register_biomes()
|
|||||||
--depth_water_top = ,
|
--depth_water_top = ,
|
||||||
--node_water = "",
|
--node_water = "",
|
||||||
--node_river_water = "",
|
--node_river_water = "",
|
||||||
y_min = 5,
|
y_min = 6,
|
||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
heat_point = 40,
|
heat_point = 40,
|
||||||
humidity_point = 65,
|
humidity_point = 65,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "coniferous_forest_dunes",
|
||||||
|
--node_dust = "",
|
||||||
|
node_top = "default:sand",
|
||||||
|
depth_top = 1,
|
||||||
|
node_filler = "default:sand",
|
||||||
|
depth_filler = 3,
|
||||||
|
--node_stone = "",
|
||||||
|
--node_water_top = "",
|
||||||
|
--depth_water_top = ,
|
||||||
|
--node_water = "",
|
||||||
|
--node_river_water = "",
|
||||||
|
y_min = 5,
|
||||||
|
y_max = 5,
|
||||||
|
heat_point = 40,
|
||||||
|
humidity_point = 65,
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "coniferous_forest_ocean",
|
name = "coniferous_forest_ocean",
|
||||||
--node_dust = "",
|
--node_dust = "",
|
||||||
@ -841,12 +902,30 @@ function default.register_biomes()
|
|||||||
--depth_water_top = ,
|
--depth_water_top = ,
|
||||||
--node_water = "",
|
--node_water = "",
|
||||||
--node_river_water = "",
|
--node_river_water = "",
|
||||||
y_min = 5,
|
y_min = 6,
|
||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
heat_point = 60,
|
heat_point = 60,
|
||||||
humidity_point = 35,
|
humidity_point = 35,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "sandstone_grassland_dunes",
|
||||||
|
--node_dust = "",
|
||||||
|
node_top = "default:sand",
|
||||||
|
depth_top = 1,
|
||||||
|
node_filler = "default:sand",
|
||||||
|
depth_filler = 2,
|
||||||
|
node_stone = "default:sandstone",
|
||||||
|
--node_water_top = "",
|
||||||
|
--depth_water_top = ,
|
||||||
|
--node_water = "",
|
||||||
|
--node_river_water = "",
|
||||||
|
y_min = 5,
|
||||||
|
y_max = 5,
|
||||||
|
heat_point = 60,
|
||||||
|
humidity_point = 35,
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "sandstone_grassland_ocean",
|
name = "sandstone_grassland_ocean",
|
||||||
--node_dust = "",
|
--node_dust = "",
|
||||||
@ -1086,6 +1165,10 @@ function default.register_biomes()
|
|||||||
y_max = -113,
|
y_max = -113,
|
||||||
heat_point = 50,
|
heat_point = 50,
|
||||||
humidity_point = 50,
|
humidity_point = 50,
|
||||||
|
node_underwater = "default:sand",
|
||||||
|
height_shore = 3,
|
||||||
|
node_shore_filler = "default:sand",
|
||||||
|
node_shore_top = "default:sand",
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1117,7 +1200,7 @@ function default.register_mgv6_decorations()
|
|||||||
y_max = 1,
|
y_max = 1,
|
||||||
decoration = "default:papyrus",
|
decoration = "default:papyrus",
|
||||||
height = 2,
|
height = 2,
|
||||||
height_max = 4,
|
y_max = 4,
|
||||||
spawn_by = "default:water_source",
|
spawn_by = "default:water_source",
|
||||||
num_spawn_by = 1,
|
num_spawn_by = 1,
|
||||||
})
|
})
|
||||||
@ -1140,7 +1223,7 @@ function default.register_mgv6_decorations()
|
|||||||
y_max = 30,
|
y_max = 30,
|
||||||
decoration = "default:cactus",
|
decoration = "default:cactus",
|
||||||
height = 3,
|
height = 3,
|
||||||
height_max = 4,
|
y_max = 4,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Long grasses
|
-- Long grasses
|
||||||
@ -1217,7 +1300,9 @@ local function register_grass_decoration(offset, scale, length)
|
|||||||
persist = 0.6
|
persist = 0.6
|
||||||
},
|
},
|
||||||
biomes = {"stone_grassland", "sandstone_grassland",
|
biomes = {"stone_grassland", "sandstone_grassland",
|
||||||
"deciduous_forest", "coniferous_forest"},
|
"deciduous_forest", "coniferous_forest",
|
||||||
|
"stone_grassland_dunes", "sandstone_grassland_dunes",
|
||||||
|
"coniferous_forest_dunes"},
|
||||||
y_min = 1,
|
y_min = 1,
|
||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
decoration = "default:grass_"..length,
|
decoration = "default:grass_"..length,
|
||||||
@ -1247,7 +1332,7 @@ end
|
|||||||
function default.register_decorations()
|
function default.register_decorations()
|
||||||
minetest.clear_registered_decorations()
|
minetest.clear_registered_decorations()
|
||||||
|
|
||||||
-- Apple tree
|
-- Apple tree and log
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "schematic",
|
deco_type = "schematic",
|
||||||
@ -1268,7 +1353,40 @@ function default.register_decorations()
|
|||||||
flags = "place_center_x, place_center_z",
|
flags = "place_center_x, place_center_z",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Jungle tree
|
minetest.register_decoration({
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"default:dirt_with_grass"},
|
||||||
|
sidelen = 16,
|
||||||
|
noise_params = {
|
||||||
|
offset = 0.002,
|
||||||
|
scale = 0.001,
|
||||||
|
spread = {x = 250, y = 250, z = 250},
|
||||||
|
seed = 2,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.66
|
||||||
|
},
|
||||||
|
biomes = {"deciduous_forest"},
|
||||||
|
y_min = 1,
|
||||||
|
y_max = 31000,
|
||||||
|
schematic = {
|
||||||
|
size = { x = 3, y = 3, z = 1},
|
||||||
|
data = {
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "default:tree", param2 = 12, prob = 191 },
|
||||||
|
{ name = "default:tree", param2 = 12 },
|
||||||
|
{ name = "default:tree", param2 = 12, prob = 127 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "flowers:mushroom_brown", prob = 63 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
flags = "place_center_x",
|
||||||
|
rotation = "random",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Jungle tree and log
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "schematic",
|
deco_type = "schematic",
|
||||||
@ -1283,7 +1401,33 @@ function default.register_decorations()
|
|||||||
rotation = "random",
|
rotation = "random",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Taiga and temperate coniferous forest pine tree
|
minetest.register_decoration({
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"default:dirt_with_grass", "default:dirt"},
|
||||||
|
sidelen = 80,
|
||||||
|
fill_ratio = 0.01,
|
||||||
|
biomes = {"rainforest", "rainforest_swamp"},
|
||||||
|
y_min = 1,
|
||||||
|
y_max = 31000,
|
||||||
|
schematic = {
|
||||||
|
size = { x = 3, y = 3, z = 1},
|
||||||
|
data = {
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "default:jungletree", param2 = 12, prob = 191 },
|
||||||
|
{ name = "default:jungletree", param2 = 12 },
|
||||||
|
{ name = "default:jungletree", param2 = 12, prob = 127 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "flowers:mushroom_brown", prob = 127 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
flags = "place_center_x",
|
||||||
|
rotation = "random",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Taiga and temperate coniferous forest pine tree and log
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "schematic",
|
deco_type = "schematic",
|
||||||
@ -1304,7 +1448,33 @@ function default.register_decorations()
|
|||||||
flags = "place_center_x, place_center_z",
|
flags = "place_center_x, place_center_z",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Acacia tree
|
minetest.register_decoration({
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
|
||||||
|
sidelen = 80,
|
||||||
|
fill_ratio = 0.003,
|
||||||
|
biomes = {"taiga", "coniferous_forest"},
|
||||||
|
y_min = 1,
|
||||||
|
y_max = 31000,
|
||||||
|
schematic = {
|
||||||
|
size = { x = 3, y = 3, z = 1},
|
||||||
|
data = {
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "default:pine_tree", param2 = 12, prob = 191 },
|
||||||
|
{ name = "default:pine_tree", param2 = 12 },
|
||||||
|
{ name = "default:pine_tree", param2 = 12, prob = 127 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "flowers:mushroom_red", prob = 63 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
flags = "place_center_x",
|
||||||
|
rotation = "random",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Acacia tree and log
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "schematic",
|
deco_type = "schematic",
|
||||||
@ -1326,6 +1496,90 @@ function default.register_decorations()
|
|||||||
rotation = "random",
|
rotation = "random",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_decoration({
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"default:dirt_with_dry_grass"},
|
||||||
|
sidelen = 16,
|
||||||
|
noise_params = {
|
||||||
|
offset = 0,
|
||||||
|
scale = 0.001,
|
||||||
|
spread = {x = 250, y = 250, z = 250},
|
||||||
|
seed = 2,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.66
|
||||||
|
},
|
||||||
|
biomes = {"savanna"},
|
||||||
|
y_min = 1,
|
||||||
|
y_max = 31000,
|
||||||
|
schematic = {
|
||||||
|
size = { x = 3, y = 2, z = 1},
|
||||||
|
data = {
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "default:acacia_tree", param2 = 12, prob = 191 },
|
||||||
|
{ name = "default:acacia_tree", param2 = 12 },
|
||||||
|
{ name = "default:acacia_tree", param2 = 12, prob = 127 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
flags = "place_center_x",
|
||||||
|
rotation = "random",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Aspen tree and log
|
||||||
|
|
||||||
|
minetest.register_decoration({
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"default:dirt_with_grass"},
|
||||||
|
sidelen = 16,
|
||||||
|
noise_params = {
|
||||||
|
offset = 0.01,
|
||||||
|
scale = -0.02,
|
||||||
|
spread = {x = 250, y = 250, z = 250},
|
||||||
|
seed = 2,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.66
|
||||||
|
},
|
||||||
|
biomes = {"deciduous_forest"},
|
||||||
|
y_min = 1,
|
||||||
|
y_max = 31000,
|
||||||
|
schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
|
||||||
|
flags = "place_center_x, place_center_z",
|
||||||
|
rotation = "random",
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_decoration({
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"default:dirt_with_grass"},
|
||||||
|
sidelen = 16,
|
||||||
|
noise_params = {
|
||||||
|
offset = 0.0005,
|
||||||
|
scale = -0.001,
|
||||||
|
spread = {x = 250, y = 250, z = 250},
|
||||||
|
seed = 2,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.66
|
||||||
|
},
|
||||||
|
biomes = {"deciduous_forest"},
|
||||||
|
y_min = 1,
|
||||||
|
y_max = 31000,
|
||||||
|
schematic = {
|
||||||
|
size = { x = 3, y = 3, z = 1},
|
||||||
|
data = {
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
{ name = "default:aspen_tree", param2 = 12 },
|
||||||
|
{ name = "default:aspen_tree", param2 = 12 },
|
||||||
|
{ name = "default:aspen_tree", param2 = 12, prob = 127 },
|
||||||
|
{ name = "flowers:mushroom_red", prob = 63 },
|
||||||
|
{ name = "flowers:mushroom_brown", prob = 63 },
|
||||||
|
{ name = "air", prob = 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
flags = "place_center_x",
|
||||||
|
rotation = "random",
|
||||||
|
})
|
||||||
-- Large cactus
|
-- Large cactus
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
@ -1367,7 +1621,7 @@ function default.register_decorations()
|
|||||||
y_max = 31000,
|
y_max = 31000,
|
||||||
decoration = "default:cactus",
|
decoration = "default:cactus",
|
||||||
height = 2,
|
height = 2,
|
||||||
height_max = 5,
|
y_max = 5,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Papyrus
|
-- Papyrus
|
||||||
@ -1481,13 +1735,13 @@ function default.generate_nyancats(minp, maxp, seed)
|
|||||||
local volume = (maxp.x - minp.x + 1) * (y_max - y_min + 1) * (maxp.z - minp.z + 1)
|
local volume = (maxp.x - minp.x + 1) * (y_max - y_min + 1) * (maxp.z - minp.z + 1)
|
||||||
local pr = PseudoRandom(seed + 9324342)
|
local pr = PseudoRandom(seed + 9324342)
|
||||||
local max_num_nyancats = math.floor(volume / (16 * 16 * 16))
|
local max_num_nyancats = math.floor(volume / (16 * 16 * 16))
|
||||||
for i = 1, max_num_nyancats do
|
for i = 1,max_num_nyancats do
|
||||||
if pr:next(0, 1000) == 0 then
|
if pr:next(0, 1000) == 0 then
|
||||||
local x0 = pr:next(minp.x, maxp.x)
|
local x0 = pr:next(minp.x, maxp.x)
|
||||||
local y0 = pr:next(minp.y, maxp.y)
|
local y0 = pr:next(minp.y, maxp.y)
|
||||||
local z0 = pr:next(minp.z, maxp.z)
|
local z0 = pr:next(minp.z, maxp.z)
|
||||||
local p0 = {x = x0, y = y0, z = z0}
|
local p0 = { x =x0, y = y0, z = z0}
|
||||||
default.make_nyancat(p0, pr:next(0, 3), pr:next(3, 15))
|
default.make_nyancat(p0, pr:next(0, 3), pr:next(10, 15))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1506,8 +1760,8 @@ if mg_params.mgname == "v6" then
|
|||||||
default.register_mgv6_decorations()
|
default.register_mgv6_decorations()
|
||||||
minetest.register_on_generated(default.generate_nyancats)
|
minetest.register_on_generated(default.generate_nyancats)
|
||||||
elseif mg_params.mgname ~= "singlenode" then
|
elseif mg_params.mgname ~= "singlenode" then
|
||||||
default.register_ores()
|
|
||||||
default.register_biomes()
|
default.register_biomes()
|
||||||
|
default.register_ores()
|
||||||
default.register_decorations()
|
default.register_decorations()
|
||||||
minetest.register_on_generated(default.generate_nyancats)
|
minetest.register_on_generated(default.generate_nyancats)
|
||||||
end
|
end
|
||||||
|
@ -80,6 +80,11 @@ default:acacia_wood
|
|||||||
default:acacia_leaves
|
default:acacia_leaves
|
||||||
default:acacia_sapling
|
default:acacia_sapling
|
||||||
|
|
||||||
|
default:aspen_tree
|
||||||
|
default:aspen_wood
|
||||||
|
default:aspen_leaves
|
||||||
|
default:aspen_sapling
|
||||||
|
|
||||||
default:cherry_tree
|
default:cherry_tree
|
||||||
default:cherry_log
|
default:cherry_log
|
||||||
default:cherry_plank
|
default:cherry_plank
|
||||||
@ -195,9 +200,13 @@ default:nyancat_rainbow
|
|||||||
minetest.register_node("default:stone", {
|
minetest.register_node("default:stone", {
|
||||||
description = "Stone",
|
description = "Stone",
|
||||||
tiles = {"default_stone.png"},
|
tiles = {"default_stone.png"},
|
||||||
|
is_ground_content = false,
|
||||||
groups = {cracky = 3, stone = 1},
|
groups = {cracky = 3, stone = 1},
|
||||||
drop = 'default:cobble',
|
drop = {
|
||||||
legacy_mineral = true,
|
items = {
|
||||||
|
{items = {"default:cobble"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -230,7 +239,7 @@ minetest.register_node("default:mossycobble", {
|
|||||||
description = "Mossy Cobblestone",
|
description = "Mossy Cobblestone",
|
||||||
tiles = {"default_mossycobble.png"},
|
tiles = {"default_mossycobble.png"},
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
groups = {cracky = 3, stone = 1},
|
groups = {cracky=3, stone=1},
|
||||||
drop = "default:mossycobble",
|
drop = "default:mossycobble",
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
})
|
})
|
||||||
@ -239,9 +248,9 @@ minetest.register_node("default:mossycobble", {
|
|||||||
minetest.register_node("default:desert_stone", {
|
minetest.register_node("default:desert_stone", {
|
||||||
description = "Desert Stone",
|
description = "Desert Stone",
|
||||||
tiles = {"default_desert_stone.png"},
|
tiles = {"default_desert_stone.png"},
|
||||||
|
legacy_mineral = true,
|
||||||
groups = {crumbly = 1, cracky = 3, stone = 1},
|
groups = {crumbly = 1, cracky = 3, stone = 1},
|
||||||
drop = 'default:desert_cobble',
|
drop = 'default:desert_cobble',
|
||||||
legacy_mineral = true,
|
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ minetest.register_on_joinplayer(function(player)
|
|||||||
default.player_attached[player:get_player_name()] = false
|
default.player_attached[player:get_player_name()] = false
|
||||||
default.player_set_model(player, "character.b3d")
|
default.player_set_model(player, "character.b3d")
|
||||||
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
||||||
|
|
||||||
-- set GUI
|
-- set GUI
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
player:set_inventory_formspec(default.gui_survival_form)
|
player:set_inventory_formspec(default.gui_survival_form)
|
||||||
|
BIN
minetestforfun_game/mods/default/schematics/aspen_tree.mts
Normal file
After Width: | Height: | Size: 761 B |
After Width: | Height: | Size: 320 B |
BIN
minetestforfun_game/mods/default/textures/default_aspen_tree.png
Normal file
After Width: | Height: | Size: 695 B |
After Width: | Height: | Size: 656 B |
BIN
minetestforfun_game/mods/default/textures/default_aspen_wood.png
Normal file
After Width: | Height: | Size: 373 B |
After Width: | Height: | Size: 228 B |
@ -14,7 +14,7 @@ minetest.register_item(":", {
|
|||||||
snappy = {times = {[3] = 0.25}, uses = 0, maxlevel = 1},
|
snappy = {times = {[3] = 0.25}, uses = 0, maxlevel = 1},
|
||||||
oddly_breakable_by_hand = {times = {[1] = 3.50, [2] = 2.00, [3] = 0.65}, uses = 0}
|
oddly_breakable_by_hand = {times = {[1] = 3.50, [2] = 2.00, [3] = 0.65}, uses = 0}
|
||||||
},
|
},
|
||||||
damage_groups = {fleshy=1},
|
damage_groups = {fleshy = 2},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@ function default.can_grow(pos)
|
|||||||
if is_soil == 0 then
|
if is_soil == 0 then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local light_level = minetest.get_node_light(pos)
|
local ll = minetest.get_node_light(pos)
|
||||||
if not light_level or light_level < 13 then
|
if not ll or ll < 13 then -- Minimum light level for growth
|
||||||
return false
|
return false -- matches grass, wheat and cotton
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@ -28,9 +28,10 @@ end
|
|||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
nodenames = {"default:sapling", "default:junglesapling",
|
nodenames = {"default:sapling", "default:junglesapling",
|
||||||
"default:pine_sapling", "default:acacia_sapling"},
|
"default:pine_sapling", "default:acacia_sapling",
|
||||||
interval = 10,
|
"default:aspen_sapling"},
|
||||||
chance = 50,
|
interval = 5,
|
||||||
|
chance = 40,
|
||||||
action = function(pos, node)
|
action = function(pos, node)
|
||||||
if not default.can_grow(pos) then
|
if not default.can_grow(pos) then
|
||||||
return
|
return
|
||||||
@ -65,6 +66,10 @@ minetest.register_abm({
|
|||||||
minetest.log("action", "An acacia sapling grows into a tree at "..
|
minetest.log("action", "An acacia sapling grows into a tree at "..
|
||||||
minetest.pos_to_string(pos))
|
minetest.pos_to_string(pos))
|
||||||
default.grow_new_acacia_tree(pos)
|
default.grow_new_acacia_tree(pos)
|
||||||
|
elseif node.name == "default:aspen_sapling" then
|
||||||
|
minetest.log("action", "An aspen sapling grows into a tree at "..
|
||||||
|
minetest.pos_to_string(pos))
|
||||||
|
default.grow_new_aspen_tree(pos)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
@ -360,7 +365,6 @@ function default.grow_pine_tree(pos)
|
|||||||
vm:update_map()
|
vm:update_map()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- New apple tree
|
-- New apple tree
|
||||||
|
|
||||||
function default.grow_new_apple_tree(pos)
|
function default.grow_new_apple_tree(pos)
|
||||||
@ -396,6 +400,14 @@ function default.grow_new_acacia_tree(pos)
|
|||||||
path, random, nil, false)
|
path, random, nil, false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- New aspen tree
|
||||||
|
|
||||||
|
function default.grow_new_aspen_tree(pos)
|
||||||
|
local path = minetest.get_modpath("default") .. "/schematics/aspen_tree_from_sapling.mts"
|
||||||
|
minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2},
|
||||||
|
path, 0, nil, false)
|
||||||
|
end
|
||||||
|
|
||||||
-- From BFD:
|
-- From BFD:
|
||||||
|
|
||||||
minetest.register_node("default:mg_cherry_sapling", {
|
minetest.register_node("default:mg_cherry_sapling", {
|
||||||
|
@ -6,6 +6,7 @@ License of source code:
|
|||||||
-----------------------
|
-----------------------
|
||||||
Copyright (C) 2012 PilzAdam
|
Copyright (C) 2012 PilzAdam
|
||||||
modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor)
|
modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor)
|
||||||
|
Steel trapdoor added by sofar.
|
||||||
|
|
||||||
This program is free software. It comes without any warranty, to
|
This program is free software. It comes without any warranty, to
|
||||||
the extent permitted by applicable law. You can redistribute it
|
the extent permitted by applicable law. You can redistribute it
|
||||||
@ -27,14 +28,18 @@ following Textures created by BlockMen (WTFPL):
|
|||||||
door_obsidian_glass_side.png
|
door_obsidian_glass_side.png
|
||||||
|
|
||||||
following textures created by celeron55 (CC BY-SA 3.0):
|
following textures created by celeron55 (CC BY-SA 3.0):
|
||||||
door_trapdoor_side.png
|
|
||||||
door_glass_a.png
|
door_glass_a.png
|
||||||
door_glass_b.png
|
door_glass_b.png
|
||||||
|
|
||||||
following Textures created by PenguinDad (CC BY-SA 4.0):
|
following Textures created by PenguinDad (CC BY-SA 4.0):
|
||||||
door_glass.png
|
door_glass.png
|
||||||
door_obsidian_glass.png
|
door_obsidian_glass.png
|
||||||
|
|
||||||
|
following textures created by sofar (CC-BY-SA-3.0)
|
||||||
|
doors_trapdoor_steel.png
|
||||||
|
doors_trapdoor_steel_side.png
|
||||||
|
door_trapdoor_side.png
|
||||||
|
|
||||||
All other textures (created by PilzAdam): WTFPL
|
All other textures (created by PilzAdam): WTFPL
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,19 +28,19 @@ function doors3.get_pos(pos, dir, p1, b)
|
|||||||
else
|
else
|
||||||
if p1 == 1 then
|
if p1 == 1 then
|
||||||
if dir == 1 then
|
if dir == 1 then
|
||||||
pos2.x=pos2.x+1--ok
|
pos2.x=pos2.x+1
|
||||||
elseif dir == 2 then
|
elseif dir == 2 then
|
||||||
pos2.z=pos2.z-1
|
pos2.z=pos2.z-1
|
||||||
elseif dir == 3 then
|
elseif dir == 3 then
|
||||||
pos2.x=pos2.x-1
|
pos2.x=pos2.x-1
|
||||||
else
|
else
|
||||||
pos2.z=pos2.z+1--ok
|
pos2.z=pos2.z+1
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if dir == 1 then
|
if dir == 1 then
|
||||||
pos2.z=pos2.z+1
|
pos2.z=pos2.z+1
|
||||||
elseif dir == 2 then
|
elseif dir == 2 then
|
||||||
pos2.x=pos2.x+1--ok
|
pos2.x=pos2.x+1
|
||||||
elseif dir == 3 then
|
elseif dir == 3 then
|
||||||
pos2.z=pos2.z-1
|
pos2.z=pos2.z-1
|
||||||
else
|
else
|
||||||
@ -246,11 +246,6 @@ function doors3.register_door(name, def)
|
|||||||
snd_2 = def.sound_close_door
|
snd_2 = def.sound_close_door
|
||||||
end
|
end
|
||||||
local b = minetest.get_meta(pos):get_int("right")
|
local b = minetest.get_meta(pos):get_int("right")
|
||||||
if b ~= 0 then
|
|
||||||
minetest.sound_play(snd_1, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
|
||||||
else
|
|
||||||
minetest.sound_play(snd_2, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
|
||||||
end
|
|
||||||
|
|
||||||
local pos2 = doors3.get_pos(pos, oldparam2, params[1], b)
|
local pos2 = doors3.get_pos(pos, oldparam2, params[1], b)
|
||||||
local node = minetest.get_node_or_nil(pos2)
|
local node = minetest.get_node_or_nil(pos2)
|
||||||
@ -261,6 +256,13 @@ function doors3.register_door(name, def)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--if double doors, only 2eme play sound
|
||||||
|
if b ~= 0 then
|
||||||
|
minetest.sound_play(snd_1, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
||||||
|
else
|
||||||
|
minetest.sound_play(snd_2, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ function doors.register_door(name, def)
|
|||||||
if not def.sound_open_door then
|
if not def.sound_open_door then
|
||||||
def.sound_open_door = "doors_door_open"
|
def.sound_open_door = "doors_door_open"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
minetest.register_craftitem(name, {
|
minetest.register_craftitem(name, {
|
||||||
description = def.description,
|
description = def.description,
|
||||||
inventory_image = def.inventory_image,
|
inventory_image = def.inventory_image,
|
||||||
@ -100,7 +100,7 @@ function doors.register_door(name, def)
|
|||||||
|
|
||||||
local tt = def.tiles_top
|
local tt = def.tiles_top
|
||||||
local tb = def.tiles_bottom
|
local tb = def.tiles_bottom
|
||||||
|
|
||||||
local function after_dig_node(pos, name, digger)
|
local function after_dig_node(pos, name, digger)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
if node.name == name then
|
if node.name == name then
|
||||||
@ -134,16 +134,16 @@ function doors.register_door(name, def)
|
|||||||
end
|
end
|
||||||
local p2 = minetest.get_node(pos).param2
|
local p2 = minetest.get_node(pos).param2
|
||||||
p2 = params[p2+1]
|
p2 = params[p2+1]
|
||||||
|
|
||||||
minetest.swap_node(pos, {name=replace_dir, param2=p2})
|
minetest.swap_node(pos, {name=replace_dir, param2=p2})
|
||||||
|
|
||||||
pos.y = pos.y-dir
|
pos.y = pos.y-dir
|
||||||
minetest.swap_node(pos, {name=replace, param2=p2})
|
minetest.swap_node(pos, {name=replace, param2=p2})
|
||||||
|
|
||||||
local snd_1 = def.sound_close_door
|
local snd_1 = def.sound_close_door
|
||||||
local snd_2 = def.sound_open_door
|
local snd_2 = def.sound_open_door
|
||||||
if params[1] == 3 then
|
if params[1] == 3 then
|
||||||
snd_1 = def.sound_open_door
|
snd_1 = def.sound_open_door
|
||||||
snd_2 = def.sound_close_door
|
snd_2 = def.sound_close_door
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -206,18 +206,18 @@ function doors.register_door(name, def)
|
|||||||
fixed = def.selection_box_bottom
|
fixed = def.selection_box_bottom
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y+1
|
pos.y = pos.y+1
|
||||||
after_dig_node(pos, name.."_t_1", digger)
|
after_dig_node(pos, name.."_t_1", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0})
|
on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = function(pos, node, user, mode, new_param2)
|
on_rotate = function(pos, node, user, mode, new_param2)
|
||||||
return on_rotate(pos, node, 1, user, name.."_t_1", mode)
|
return on_rotate(pos, node, 1, user, name.."_t_1", mode)
|
||||||
end,
|
end,
|
||||||
@ -244,18 +244,18 @@ function doors.register_door(name, def)
|
|||||||
fixed = def.selection_box_top
|
fixed = def.selection_box_top
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y-1
|
pos.y = pos.y-1
|
||||||
after_dig_node(pos, name.."_b_1", digger)
|
after_dig_node(pos, name.."_b_1", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0})
|
on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = function(pos, node, user, mode, new_param2)
|
on_rotate = function(pos, node, user, mode, new_param2)
|
||||||
return on_rotate(pos, node, -1, user, name.."_b_1", mode)
|
return on_rotate(pos, node, -1, user, name.."_b_1", mode)
|
||||||
end,
|
end,
|
||||||
@ -282,18 +282,18 @@ function doors.register_door(name, def)
|
|||||||
fixed = def.selection_box_bottom
|
fixed = def.selection_box_bottom
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y+1
|
pos.y = pos.y+1
|
||||||
after_dig_node(pos, name.."_t_2", digger)
|
after_dig_node(pos, name.."_t_2", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2})
|
on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = function(pos, node, user, mode, new_param2)
|
on_rotate = function(pos, node, user, mode, new_param2)
|
||||||
return on_rotate(pos, node, 1, user, name.."_t_2", mode)
|
return on_rotate(pos, node, 1, user, name.."_t_2", mode)
|
||||||
end,
|
end,
|
||||||
@ -320,18 +320,18 @@ function doors.register_door(name, def)
|
|||||||
fixed = def.selection_box_top
|
fixed = def.selection_box_top
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y-1
|
pos.y = pos.y-1
|
||||||
after_dig_node(pos, name.."_b_2", digger)
|
after_dig_node(pos, name.."_b_2", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2})
|
on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rotate = function(pos, node, user, mode, new_param2)
|
on_rotate = function(pos, node, user, mode, new_param2)
|
||||||
return on_rotate(pos, node, -1, user, name.."_b_2", mode)
|
return on_rotate(pos, node, -1, user, name.."_b_2", mode)
|
||||||
end,
|
end,
|
||||||
@ -512,7 +512,19 @@ function doors.register_trapdoor(name, def)
|
|||||||
local name_closed = name
|
local name_closed = name
|
||||||
local name_opened = name.."_open"
|
local name_opened = name.."_open"
|
||||||
|
|
||||||
def.on_rightclick = function (pos, node)
|
local function check_player_priv(pos, player)
|
||||||
|
if not def.only_placer_can_open then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local pn = player:get_player_name()
|
||||||
|
return meta:get_string("doors_owner") == pn
|
||||||
|
end
|
||||||
|
|
||||||
|
def.on_rightclick = function (pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
if not check_player_priv(pos, clicker) then
|
||||||
|
return
|
||||||
|
end
|
||||||
local newname = node.name == name_closed and name_opened or name_closed
|
local newname = node.name == name_closed and name_opened or name_closed
|
||||||
local sound = false
|
local sound = false
|
||||||
if node.name == name_closed then sound = def.sound_open end
|
if node.name == name_closed then sound = def.sound_open end
|
||||||
@ -520,41 +532,54 @@ function doors.register_trapdoor(name, def)
|
|||||||
if sound then
|
if sound then
|
||||||
minetest.sound_play(sound, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
minetest.sound_play(sound, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
||||||
end
|
end
|
||||||
minetest.set_node(pos, {name = newname, param1 = node.param1, param2 = node.param2})
|
minetest.swap_node(pos, {name = newname, param1 = node.param1, param2 = node.param2})
|
||||||
end
|
end
|
||||||
|
|
||||||
def.on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple
|
|
||||||
|
|
||||||
-- Common trapdoor configuration
|
-- Common trapdoor configuration
|
||||||
def.drawtype = "nodebox"
|
def.drawtype = "nodebox"
|
||||||
def.paramtype = "light"
|
def.paramtype = "light"
|
||||||
def.paramtype2 = "facedir"
|
def.paramtype2 = "facedir"
|
||||||
def.is_ground_content = false
|
def.is_ground_content = false
|
||||||
|
def.can_dig = check_player_priv
|
||||||
|
|
||||||
|
if def.only_placer_can_open then
|
||||||
|
def.after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||||
|
local pn = placer:get_player_name()
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("doors_owner", pn)
|
||||||
|
meta:set_string("infotext", "Owned by "..pn)
|
||||||
|
|
||||||
|
return minetest.setting_getbool("creative_mode")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local def_opened = table.copy(def)
|
local def_opened = table.copy(def)
|
||||||
local def_closed = table.copy(def)
|
local def_closed = table.copy(def)
|
||||||
|
|
||||||
def_closed.node_box = {
|
def_closed.node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
|
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||||
}
|
}
|
||||||
def_closed.selection_box = {
|
def_closed.selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
|
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||||
}
|
}
|
||||||
def_closed.tiles = { def.tile_front, def.tile_front, def.tile_side, def.tile_side,
|
def_closed.tiles = { def.tile_front, def.tile_front, def.tile_side, def.tile_side,
|
||||||
def.tile_side, def.tile_side }
|
def.tile_side, def.tile_side }
|
||||||
|
|
||||||
def_opened.node_box = {
|
def_opened.node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5}
|
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||||
}
|
}
|
||||||
def_opened.selection_box = {
|
def_opened.selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5}
|
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||||
}
|
}
|
||||||
def_opened.tiles = { def.tile_side, def.tile_side, def.tile_side, def.tile_side,
|
def_opened.tiles = { def.tile_side, def.tile_side,
|
||||||
def.tile_front, def.tile_front }
|
def.tile_side .. '^[transform3',
|
||||||
|
def.tile_side .. '^[transform1',
|
||||||
|
def.tile_front, def.tile_front }
|
||||||
|
|
||||||
def_opened.drop = name_closed
|
def_opened.drop = name_closed
|
||||||
def_opened.groups.not_in_creative_inventory = 1
|
def_opened.groups.not_in_creative_inventory = 1
|
||||||
|
|
||||||
@ -576,6 +601,19 @@ doors.register_trapdoor("doors:trapdoor", {
|
|||||||
sound_close = "doors_door_close"
|
sound_close = "doors_door_close"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
doors.register_trapdoor("doors:trapdoor_steel", {
|
||||||
|
description = "Steel Trapdoor",
|
||||||
|
inventory_image = "doors_trapdoor_steel.png",
|
||||||
|
wield_image = "doors_trapdoor_steel.png",
|
||||||
|
tile_front = "doors_trapdoor_steel.png",
|
||||||
|
tile_side = "doors_trapdoor_steel_side.png",
|
||||||
|
only_placer_can_open = true,
|
||||||
|
groups = {snappy=1, bendy=2, cracky=1, melty=2, level=2, door=1},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
sound_open = "doors_door_open",
|
||||||
|
sound_close = "doors_door_close"
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'doors:trapdoor 2',
|
output = 'doors:trapdoor 2',
|
||||||
recipe = {
|
recipe = {
|
||||||
@ -585,6 +623,14 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'doors:trapdoor_steel',
|
||||||
|
recipe = {
|
||||||
|
{'default:steel_ingot', 'default:steel_ingot'},
|
||||||
|
{'default:steel_ingot', 'default:steel_ingot'},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
doors.register_trapdoor("doors:trapdoor_cherry", {
|
doors.register_trapdoor("doors:trapdoor_cherry", {
|
||||||
description = "Cherry tree trapdoor",
|
description = "Cherry tree trapdoor",
|
||||||
inventory_image = "doors_trapdoor_cherry.png",
|
inventory_image = "doors_trapdoor_cherry.png",
|
||||||
|
Before Width: | Height: | Size: 263 B After Width: | Height: | Size: 233 B |
BIN
minetestforfun_game/mods/doors/textures/doors_trapdoor_steel.png
Normal file
After Width: | Height: | Size: 153 B |
After Width: | Height: | Size: 101 B |
@ -147,120 +147,84 @@ minetest.register_abm({
|
|||||||
-- Mushrooms
|
-- Mushrooms
|
||||||
--
|
--
|
||||||
|
|
||||||
local mushrooms_datas = {
|
minetest.register_node("flowers:mushroom_red", {
|
||||||
{"brown", 2},
|
description = "Red Mushroom",
|
||||||
{"red", -6}
|
tiles = {"flowers_mushroom_red.png"},
|
||||||
}
|
inventory_image = "flowers_mushroom_red.png",
|
||||||
|
wield_image = "flowers_mushroom_red.png",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
walkable = false,
|
||||||
|
buildable_to = true,
|
||||||
|
groups = {snappy = 3, flammable = 3, attached_node = 1},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
on_use = minetest.item_eat(-5),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
for _, m in pairs(mushrooms_datas) do
|
minetest.register_node("flowers:mushroom_brown", {
|
||||||
local name, nut = m[1], m[2]
|
description = "Brown Mushroom",
|
||||||
|
tiles = {"flowers_mushroom_brown.png"},
|
||||||
-- Register fertile mushrooms
|
inventory_image = "flowers_mushroom_brown.png",
|
||||||
|
wield_image = "flowers_mushroom_brown.png",
|
||||||
-- These are placed by mapgen and the growing ABM.
|
drawtype = "plantlike",
|
||||||
-- These drop an infertile mushroom, and 0 to 3 spore
|
paramtype = "light",
|
||||||
-- nodes with an average of 1.25 per mushroom, for
|
sunlight_propagates = true,
|
||||||
-- a slow multiplication of mushrooms when farming.
|
walkable = false,
|
||||||
|
buildable_to = true,
|
||||||
minetest.register_node("flowers:mushroom_fertile_" .. name, {
|
groups = {snappy = 3, flammable = 3, attached_node = 1},
|
||||||
description = string.sub(string.upper(name), 0, 1) ..
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
string.sub(name, 2) .. " Fertile Mushroom",
|
on_use = minetest.item_eat(1),
|
||||||
tiles = {"flowers_mushroom_" .. name .. ".png"},
|
selection_box = {
|
||||||
inventory_image = "flowers_mushroom_" .. name .. ".png",
|
type = "fixed",
|
||||||
wield_image = "flowers_mushroom_" .. name .. ".png",
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
||||||
drawtype = "plantlike",
|
}
|
||||||
paramtype = "light",
|
})
|
||||||
sunlight_propagates = true,
|
|
||||||
walkable = false,
|
|
||||||
buildable_to = true,
|
|
||||||
groups = {snappy = 3, flammable = 3, attached_node = 1,
|
|
||||||
not_in_creative_inventory = 1},
|
|
||||||
drop = {
|
|
||||||
items = {
|
|
||||||
{items = {"flowers:mushroom_" .. name}},
|
|
||||||
{items = {"flowers:mushroom_spores_" .. name}, rarity = 4},
|
|
||||||
{items = {"flowers:mushroom_spores_" .. name}, rarity = 2},
|
|
||||||
{items = {"flowers:mushroom_spores_" .. name}, rarity = 2}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
sounds = default.node_sound_leaves_defaults(),
|
|
||||||
on_use = minetest.item_eat(nut),
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Register infertile mushrooms
|
|
||||||
|
|
||||||
-- These do not drop spores, to avoid the use of repeated digging
|
|
||||||
-- and placing of a single mushroom to generate unlimited spores.
|
|
||||||
|
|
||||||
minetest.register_node("flowers:mushroom_" .. name, {
|
|
||||||
description = string.sub(string.upper(name), 0, 1) ..
|
|
||||||
string.sub(name, 2) .. " Mushroom",
|
|
||||||
tiles = {"flowers_mushroom_" .. name .. ".png"},
|
|
||||||
inventory_image = "flowers_mushroom_" .. name .. ".png",
|
|
||||||
wield_image = "flowers_mushroom_" .. name .. ".png",
|
|
||||||
drawtype = "plantlike",
|
|
||||||
paramtype = "light",
|
|
||||||
sunlight_propagates = true,
|
|
||||||
walkable = false,
|
|
||||||
buildable_to = true,
|
|
||||||
groups = {snappy = 3, flammable = 3, attached_node = 1},
|
|
||||||
sounds = default.node_sound_leaves_defaults(),
|
|
||||||
on_use = minetest.item_eat(nut),
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Register mushroom spores
|
|
||||||
|
|
||||||
minetest.register_node("flowers:mushroom_spores_" .. name, {
|
|
||||||
description = string.sub(string.upper(name), 0, 1) ..
|
|
||||||
string.sub(name, 2) .. " Mushroom Spores",
|
|
||||||
drawtype = "signlike",
|
|
||||||
tiles = {"flowers_mushroom_spores_" .. name .. ".png"},
|
|
||||||
inventory_image = "flowers_mushroom_spores_" .. name .. ".png",
|
|
||||||
wield_image = "flowers_mushroom_spores_" .. name .. ".png",
|
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "wallmounted",
|
|
||||||
sunlight_propagates = true,
|
|
||||||
walkable = false,
|
|
||||||
buildable_to = true,
|
|
||||||
selection_box = {
|
|
||||||
type = "wallmounted",
|
|
||||||
},
|
|
||||||
groups = {dig_immediate = 3, attached_node = 1},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-- Register growing ABM
|
|
||||||
|
|
||||||
|
-- mushroom spread and death
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
nodenames = {"flowers:mushroom_spores_brown", "flowers:mushroom_spores_red"},
|
nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"},
|
||||||
interval = 11,
|
interval = 11,
|
||||||
chance = 50,
|
chance = 50,
|
||||||
action = function(pos, node)
|
action = function(pos, node)
|
||||||
local node_under = minetest.get_node_or_nil({x = pos.x,
|
if minetest.get_node_light(pos, nil) == 15 then
|
||||||
y = pos.y - 1, z = pos.z})
|
minetest.remove_node(pos)
|
||||||
|
end
|
||||||
|
local random = {
|
||||||
|
x = pos.x + math.random(-2,2),
|
||||||
|
y = pos.y + math.random(-1,1),
|
||||||
|
z = pos.z + math.random(-2,2)
|
||||||
|
}
|
||||||
|
local random_node = minetest.get_node_or_nil(random)
|
||||||
|
if not random_node then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if random_node.name ~= "air" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local node_under = minetest.get_node_or_nil({x = random.x,
|
||||||
|
y = random.y - 1, z = random.z})
|
||||||
if not node_under then
|
if not node_under then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if minetest.get_item_group(node_under.name, "soil") ~= 0 and
|
if minetest.get_item_group(node_under.name, "soil") ~= 0 and
|
||||||
minetest.get_node_light(pos, nil) <= 13 then
|
minetest.get_node_light(pos, nil) <= 9 and
|
||||||
if node.name == "flowers:mushroom_spores_brown" then
|
minetest.get_node_light(random, nil) <= 9 then
|
||||||
minetest.set_node(pos, {name = "flowers:mushroom_fertile_brown"})
|
minetest.set_node(random, {name = node.name})
|
||||||
elseif node.name == "flowers:mushroom_spores_red" then
|
|
||||||
minetest.set_node(pos, {name = "flowers:mushroom_fertile_red"})
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- these old mushroom related nodes can be simplified now
|
||||||
|
minetest.register_alias("flowers:mushroom_spores_brown", "flowers:mushroom_brown")
|
||||||
|
minetest.register_alias("flowers:mushroom_spores_red", "flowers:mushroom_red")
|
||||||
|
minetest.register_alias("flowers:mushroom_fertile_brown", "flowers:mushroom_brown")
|
||||||
|
minetest.register_alias("flowers:mushroom_fertile_red", "flowers:mushroom_red")
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Waterlily
|
-- Waterlily
|
||||||
|
@ -70,8 +70,8 @@ function flowers.register_mgv6_decorations()
|
|||||||
register_mgv6_flower("viola")
|
register_mgv6_flower("viola")
|
||||||
register_mgv6_flower("dandelion_white")
|
register_mgv6_flower("dandelion_white")
|
||||||
|
|
||||||
register_mgv6_mushroom("mushroom_fertile_brown")
|
register_mgv6_mushroom("mushroom_brown")
|
||||||
register_mgv6_mushroom("mushroom_fertile_red")
|
register_mgv6_mushroom("mushroom_red")
|
||||||
|
|
||||||
register_mgv6_waterlily()
|
register_mgv6_waterlily()
|
||||||
end
|
end
|
||||||
@ -87,8 +87,8 @@ local function register_flower(seed, name)
|
|||||||
place_on = {"default:dirt_with_grass"},
|
place_on = {"default:dirt_with_grass"},
|
||||||
sidelen = 16,
|
sidelen = 16,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = -0.02,
|
offset = -0.015,
|
||||||
scale = 0.03,
|
scale = 0.025,
|
||||||
spread = {x = 200, y = 200, z = 200},
|
spread = {x = 200, y = 200, z = 200},
|
||||||
seed = seed,
|
seed = seed,
|
||||||
octaves = 3,
|
octaves = 3,
|
||||||
@ -151,8 +151,8 @@ function flowers.register_decorations()
|
|||||||
register_flower(1133, "viola")
|
register_flower(1133, "viola")
|
||||||
register_flower(73133, "dandelion_white")
|
register_flower(73133, "dandelion_white")
|
||||||
|
|
||||||
register_mushroom("mushroom_fertile_brown")
|
register_mushroom("mushroom_brown")
|
||||||
register_mushroom("mushroom_fertile_red")
|
register_mushroom("mushroom_red")
|
||||||
|
|
||||||
register_waterlily()
|
register_waterlily()
|
||||||
end
|
end
|
||||||
@ -216,7 +216,7 @@ minetest.register_decoration({
|
|||||||
|
|
||||||
-- Mods using singlenode mapgen can call these functions to enable
|
-- Mods using singlenode mapgen can call these functions to enable
|
||||||
-- the use of minetest.generate_ores or minetest.generate_decorations
|
-- the use of minetest.generate_ores or minetest.generate_decorations
|
||||||
|
-- Enable in mapgen v6 only
|
||||||
local mg_params = minetest.get_mapgen_params()
|
local mg_params = minetest.get_mapgen_params()
|
||||||
if mg_params.mgname == "v6" then
|
if mg_params.mgname == "v6" then
|
||||||
flowers.register_mgv6_decorations()
|
flowers.register_mgv6_decorations()
|
||||||
|
@ -36,6 +36,10 @@ local function screwdriver_handler(itemstack, user, pointed_thing, mode)
|
|||||||
|
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
local ndef = minetest.registered_nodes[node.name]
|
local ndef = minetest.registered_nodes[node.name]
|
||||||
|
-- verify node is facedir (expected to be rotatable)
|
||||||
|
if ndef.paramtype2 ~= "facedir" then
|
||||||
|
return
|
||||||
|
end
|
||||||
-- Compute param2
|
-- Compute param2
|
||||||
local rotationPart = node.param2 % 32 -- get first 4 bits
|
local rotationPart = node.param2 % 32 -- get first 4 bits
|
||||||
local preservePart = node.param2 - rotationPart
|
local preservePart = node.param2 - rotationPart
|
||||||
|
@ -22,6 +22,7 @@ local replace = minetest.setting_getbool("enable_stairs_replace_abm")
|
|||||||
-- Node will be called stairs:stair_<subname>
|
-- Node will be called stairs:stair_<subname>
|
||||||
|
|
||||||
function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
|
function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
|
||||||
|
groups.stair = 1
|
||||||
minetest.register_node(":stairs:stair_" .. subname, {
|
minetest.register_node(":stairs:stair_" .. subname, {
|
||||||
description = description,
|
description = description,
|
||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
@ -111,6 +112,7 @@ end
|
|||||||
-- Node will be called stairs:slab_<subname>
|
-- Node will be called stairs:slab_<subname>
|
||||||
|
|
||||||
function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
|
function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
|
||||||
|
groups.slab = 1
|
||||||
minetest.register_node(":stairs:slab_" .. subname, {
|
minetest.register_node(":stairs:slab_" .. subname, {
|
||||||
description = description,
|
description = description,
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
@ -170,7 +172,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
|
|||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Upside down slabs
|
-- Upside down slabs
|
||||||
if p0.y - 1 == p1.y then
|
if p0.y - 1 == p1.y then
|
||||||
-- Turn into full block if pointing at a existing slab
|
-- Turn into full block if pointing at a existing slab
|
||||||
@ -287,6 +289,13 @@ stairs.register_stair_and_slab("acacia_wood", "default:acacia_wood",
|
|||||||
"Acacia Wood Slab",
|
"Acacia Wood Slab",
|
||||||
default.node_sound_wood_defaults())
|
default.node_sound_wood_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab("aspen_wood", "default:aspen_wood",
|
||||||
|
{snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
|
||||||
|
{"default_aspen_wood.png"},
|
||||||
|
"Aspen Wood Stair",
|
||||||
|
"Aspen Wood Slab",
|
||||||
|
default.node_sound_wood_defaults())
|
||||||
|
|
||||||
stairs.register_stair_and_slab("stone", "default:stone",
|
stairs.register_stair_and_slab("stone", "default:stone",
|
||||||
{cracky = 3},
|
{cracky = 3},
|
||||||
{"default_stone.png"},
|
{"default_stone.png"},
|
||||||
@ -335,7 +344,7 @@ stairs.register_stair_and_slab("sandstone", "default:sandstone",
|
|||||||
"Sandstone Stair",
|
"Sandstone Stair",
|
||||||
"Sandstone Slab",
|
"Sandstone Slab",
|
||||||
default.node_sound_stone_defaults())
|
default.node_sound_stone_defaults())
|
||||||
|
|
||||||
stairs.register_stair_and_slab("sandstonebrick", "default:sandstonebrick",
|
stairs.register_stair_and_slab("sandstonebrick", "default:sandstonebrick",
|
||||||
{crumbly = 2, cracky = 2},
|
{crumbly = 2, cracky = 2},
|
||||||
{"default_sandstone_brick.png"},
|
{"default_sandstone_brick.png"},
|
||||||
|
@ -52,7 +52,7 @@ minetest.register_node("vessels:shelf", {
|
|||||||
local stack = inv:get_stack(from_list, from_index)
|
local stack = inv:get_stack(from_list, from_index)
|
||||||
local to_stack = inv:get_stack(to_list, to_index)
|
local to_stack = inv:get_stack(to_list, to_index)
|
||||||
if to_list == "vessels" then
|
if to_list == "vessels" then
|
||||||
if minetest.get_item_group(stack:get_name(), "vessel") ~= 0
|
if minetest.get_item_group(stack:get_name(), "vessel") ~= 0
|
||||||
and to_stack:is_empty() then
|
and to_stack:is_empty() then
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
|
@ -9,7 +9,7 @@ local wool = {}
|
|||||||
-- colors, and then some recipes using more specific colors for a few non-base
|
-- colors, and then some recipes using more specific colors for a few non-base
|
||||||
-- colors available. When crafting, the last recipes will be checked first.
|
-- colors available. When crafting, the last recipes will be checked first.
|
||||||
wool.dyes = {
|
wool.dyes = {
|
||||||
{"white", "White", nil},
|
{"white", "White", "basecolor_white"},
|
||||||
{"grey", "Grey", "basecolor_grey"},
|
{"grey", "Grey", "basecolor_grey"},
|
||||||
{"black", "Black", "basecolor_black"},
|
{"black", "Black", "basecolor_black"},
|
||||||
{"red", "Red", "basecolor_red"},
|
{"red", "Red", "basecolor_red"},
|
||||||
|