+local minetest,pairs = minetest,pairs
--ore def with required tool
-local ores = {"coal","iron","gold","diamond"}
-local tool = {"main:woodpick","main:stonepick","main:ironpick","main:goldpick","main:diamondpick"}
-for id,ore in pairs(ores) do
- local tool_required = {}
- for i = id,5 do
- table.insert(tool_required, tool[i])
- end
+local tool = {"main:woodpick","main:coalpick","main:stonepick","main:ironpick","main:lapispick","main:goldpick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"}
+local ores = {
+["coal"]={"main:woodpick","main:coalpick","main:stonepick","main:ironpick","main:lapispick","main:goldpick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["iron"]={"main:coalpick","main:stonepick","main:ironpick","main:lapispick","main:goldpick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["lapis"]={"main:ironpick","main:lapispick","main:goldpick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["gold"]={"main:ironpick","main:lapispick","main:goldpick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["diamond"]={"main:ironpick","main:lapispick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["emerald"]={"main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["sapphire"]={"main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+["ruby"]={"main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
+}
+
+local drops ={
+ ["coal"]={"main:coal"},
+ ["iron"]={"main:ironore"},
+ ["lapis"]={"main:lapis"},
+ ["gold"]={"main:goldore"},
+ ["diamond"]={"main:diamond"},
+ ["emerald"]={"main:emerald"},
+ ["sapphire"]={"main:sapphire"},
+ ["ruby"]={"main:ruby"},
+}
+
+local levels = {
+ ["coal"]=1,
+ ["iron"]=2,
+ ["lapis"]=3,
+ ["gold"]=3,
+ ["diamond"]=4,
+ ["emerald"]=5,
+ ["sapphire"]=6,
+ ["ruby"]=7,
+}
- local drops = {"main:"..ore.."ore"}
- if ore == "diamond" then drops = {"main:diamond"} elseif ore == "coal" then drops = {"main:coal"} end
+
+local level = 0
+local experience
+for ore,tool_required in pairs(ores) do
+ level = levels[ore]
+
+ if ore == "iron" or ore == "gold" then
+ experience = 0
+ else
+ experience = level
+ end
+ minetest.register_node("main:"..ore.."block", {
+ description = ore:gsub("^%l", string.upper).." Block",
+ tiles = {ore.."block.png"},
+ groups = {stone = level, pathable = 1},
+ sounds = main.stoneSound(),
+ --light_source = 14,--debugging ore spawn
+ drop = {
+ max_items = 1,
+ items= {
+ {
+ rarity = 0,
+ tools = tool_required,
+ items = {"main:"..ore.."block"},
+ },
+ },
+ },
+ })
+
minetest.register_node("main:"..ore.."ore", {
description = ore:gsub("^%l", string.upper).." Ore",
tiles = {"stone.png^"..ore.."ore.png"},
- groups = {stone = id, pathable = 1,experience=id},
+ groups = {stone = level, pathable = 1,experience=experience},
sounds = main.stoneSound(),
--light_source = 14,--debugging ore spawn
drop = {
{
rarity = 0,
tools = tool_required,
- items = drops,
+ items = drops[ore],
},
},
},
})
+ minetest.register_node(":nether:"..ore.."ore", {
+ description = "Nether "..ore:gsub("^%l", string.upper).." Ore",
+ tiles = {"netherrack.png^"..ore.."ore.png"},
+ groups = {netherrack = level, pathable = 1, experience = experience},
+ sounds = main.stoneSound(),
+ light_source = 7,
+ drop = {
+ max_items = 1,
+ items= {
+ {
+ rarity = 0,
+ tools = tool_required,
+ items = drops[ore],
+ },
+ },
+ },
+ after_destruct = function(pos, oldnode)
+ if math.random() > 0.95 then
+ minetest.sound_play("tnt_ignite",{pos=pos,max_hear_distance=64})
+ minetest.after(1.5, function(pos)
+ tnt(pos,5)
+ end,pos)
+ end
+ end,
+ })
end
minetest.register_node("main:stone", {
minetest.register_node("main:ice", {
description = "Ice",
tiles = {"ice.png"},
- drawtype = "glasslike",
+ drawtype = "normal",
paramtype = "light",
sunlight_propagates = true,
sunlight_propagates = true,
footstep = {name = "glass_footstep", gain = 0.4},
dug = {name = "break_glass", gain = 0.4},
}),
- use_texture_alpha = false,
- alpha = 100,
+ --use_texture_alpha = false,
+ --alpha = 100,
drop = "",
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name="main:water"})
minetest.register_node("main:grass", {
description = "Grass",
- tiles = {"grass.png"},
+ tiles = season.pick({"grass_spring.png", "grass.png"}, {"grass.png"}, {"leaves_ground.png"}, {"snow.png"}),
groups = {grass = 1, soil=1,pathable = 1, farm_tillable=1},
sounds = main.dirtSound(),
drop="main:dirt",
}},
})
+local acceptable_soil = {
+ ["main:dirt"] = true,
+ ["main:grass"] = true,
+ ["aether:dirt"] = true,
+ ["aether:grass"] = true,
+}
minetest.register_node("main:tree", {
description = "Tree",
tiles = {"treeCore.png","treeCore.png","treeOut.png","treeOut.png","treeOut.png","treeOut.png"},
local meta = minetest.get_meta(pos)
--local tool_meta = digger:get_wielded_item():get_meta()
--if tool_meta:get_int("treecapitator") > 0 then
- if not meta:contains("placed") then
+ if not meta:contains("placed") and string.match(digger:get_wielded_item():get_name(), "axe") then
+ local tool_capabilities = digger:get_wielded_item():get_tool_capabilities()
+
+ local wear = minetest.get_dig_params({wood=1}, tool_capabilities).wear
+
+ local wield_stack = digger:get_wielded_item()
+
--remove tree
for y = -6,6 do
local name = minetest.get_node(vector.new(pos.x,pos.y+y,pos.z)).name
- --print(y)
+
if name == "main:tree" or name == "redstone:node_activated_tree" then
+ wield_stack:add_wear(wear)
minetest.node_dig(vector.new(pos.x,pos.y+y,pos.z), node, digger)
+ minetest.add_particlespawner({
+ amount = 30,
+ time = 0.0001,
+ minpos = {x=pos.x-0.5, y=pos.y-0.5+y, z=pos.z-0.5},
+ maxpos = {x=pos.x+0.5, y=pos.y+0.5+y, z=pos.z+0.5},
+ minvel = vector.new(-1,0,-1),
+ maxvel = vector.new(1,0,1),
+ minacc = {x=0, y=-9.81, z=0},
+ maxacc = {x=0, y=-9.81, z=0},
+ minexptime = 0.5,
+ maxexptime = 1.5,
+ minsize = 0,
+ maxsize = 0,
+ collisiondetection = true,
+ vertical = false,
+ node = {name= name},
+ })
+
local name2 = minetest.get_node(vector.new(pos.x,pos.y+y-1,pos.z)).name
- if name2 == "main:dirt" or name2 == "main:grass" then
+ if acceptable_soil[name2] then
minetest.add_node(vector.new(pos.x,pos.y+y,pos.z),{name="main:sapling"})
end
end
end
+ digger:set_wielded_item(wield_stack)
else
minetest.node_dig(pos, node, digger)
end
- --else
- -- minetest.node_dig(pos, node, digger)
- --end
+
end
})
climbable = true,
paramtype = "light",
is_ground_content = false,
- tiles = {"leaves.png"},
+ tiles = {season.pick("leaves_spring.png", "leaves.png", "leaves_dry.png", "branches.png")},
groups = {leaves = 1, leafdecay = 1,flammable=1},
sounds = main.grassSound(),
drop = {
items = {"main:dropped_leaves"},
},
{
- rarity = 6,
+ rarity = 25,
items = {"main:apple"},
},
{
- rarity = 10,
+ rarity = 20,
items = {"main:sapling"},
},
},
buildable_to = true,
is_ground_content = false,
drop = "",
- drowning = 1,
liquidtype = "source",
liquid_alternative_flowing = "main:waterflow",
liquid_alternative_source = "main:water",
- liquid_viscosity = 1,
+ liquid_viscosity = 0,
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
- groups = {water = 1, liquid = 1, cools_lava = 1, bucket = 1, source = 1,pathable = 1,drowning=1,disable_fall_damage=1},
+ groups = {water = 1, liquid = 1, cools_lava = 1, bucket = 1, source = 1,pathable = 1,drowning=1,disable_fall_damage=1,extinguish=1},
--sounds = default.node_sound_water_defaults(),
--water explodes in the nether
buildable_to = true,
is_ground_content = false,
drop = "",
- drowning = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "main:waterflow",
liquid_alternative_source = "main:water",
- liquid_viscosity = 1,
+ liquid_viscosity = 0,
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
- groups = {water = 1, liquid = 1, notInCreative = 1, cools_lava = 1,pathable = 1,drowning=1,disable_fall_damage=1},
+ groups = {water = 1, liquid = 1, notInCreative = 1, cools_lava = 1,pathable = 1,drowning=1,disable_fall_damage=1,extinguish=1},
--sounds = default.node_sound_water_defaults(),
})
liquid_viscosity = 7,
liquid_renewable = false,
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
- groups = {lava = 3, liquid = 2, igniter = 1,hurt_inside=2},
+ groups = {lava = 3, liquid = 2, igniter = 1, fire=1,hurt_inside=1},
})
minetest.register_node("main:lavaflow", {
liquid_renewable = false,
liquid_range = 3,
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
- groups = {lava = 3, liquid = 2, igniter = 1,hurt_inside=2},
+ groups = {lava = 3, liquid = 2, igniter = 1, fire=1,hurt_inside=1},
})
minetest.register_node("main:ladder", {