X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=mods%2Fmain%2Fnodes.lua;h=28b8b134e220950a21f70504756788e2f57f5c40;hb=48aa89197636250b3e494e9124c7c5c6e2d63dea;hp=08547ad517ec8af82afa88b5f3147142c7d44860;hpb=0d27043a5ad6678d633e6dacf9575ec3b17aa8d3;p=Crafter.git diff --git a/mods/main/nodes.lua b/mods/main/nodes.lua index 08547ad..28b8b13 100644 --- a/mods/main/nodes.lua +++ b/mods/main/nodes.lua @@ -1,19 +1,73 @@ +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 level = 0 +local experience +for ore,tool_required in pairs(ores) do + level = levels[ore] - local drops = {"main:"..ore.."ore"} - if ore == "diamond" then drops = {"main:diamond"} elseif ore == "coal" then drops = {"main:coal"} end + 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}, + groups = {stone = level, pathable = 1,experience=experience}, sounds = main.stoneSound(), --light_source = 14,--debugging ore spawn drop = { @@ -22,11 +76,36 @@ for id,ore in pairs(ores) do { 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", { @@ -63,6 +142,23 @@ minetest.register_node("main:cobble", { }, }) +minetest.register_node("main:mossy_cobble", { + description = "Mossy Cobblestone", + tiles = {"mossy_cobble.png"}, + groups = {stone = 1, pathable = 1}, + sounds = main.stoneSound(), + drop = { + max_items = 1, + items= { + { + rarity = 0, + tools = tool, + items = {"main:mossy_cobble"}, + }, + }, + }, +}) + minetest.register_node("main:glass", { description = "Glass", tiles = {"glass.png"}, @@ -76,7 +172,43 @@ minetest.register_node("main:glass", { dug = {name = "break_glass", gain = 0.4}, }), drop = "", - }) +}) + +minetest.register_node("main:ice", { + description = "Ice", + tiles = {"ice.png"}, + drawtype = "glasslike", + paramtype = "light", + sunlight_propagates = true, + sunlight_propagates = true, + is_ground_content = false, + groups = {glass = 1, pathable = 1,slippery=3}, + sounds = main.stoneSound({ + footstep = {name = "glass_footstep", gain = 0.4}, + dug = {name = "break_glass", gain = 0.4}, + }), + use_texture_alpha = false, + alpha = 100, + drop = "", + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name="main:water"}) + end +}) +minetest.register_node("main:ice_mapgen", { + description = "Ice", + tiles = {"ice.png"}, + drawtype = "normal", + sunlight_propagates = true, + sunlight_propagates = true, + is_ground_content = false, + groups = {glass = 1, pathable = 1,slippery=3}, + sounds = main.stoneSound({ + footstep = {name = "glass_footstep", gain = 0.4}, + dug = {name = "break_glass", gain = 0.4}, + }), + use_texture_alpha = false, + drop = "", +}) minetest.register_node("main:dirt", { description = "Dirt", @@ -101,82 +233,6 @@ minetest.register_node("main:sand", { sounds = main.sandSound(), }) -minetest.register_node("main:cactus", { - description = "Cactus", - is_ground_content = false, - tiles = {"cactus_top.png", "cactus_bottom.png", "cactus_side.png"}, - groups = {dig_immediate=1,flammable=1,touch_hurt=1}, - sounds = main.dirtSound(), - paramtype = "light", - node_placement_prediction = "", - sunlight_propagates = true, - on_place = function(itemstack, placer, pointed_thing) - local n = minetest.get_node_group(minetest.get_node(pointed_thing.under).name,"soil") > 0 - if n then - return(minetest.item_place(itemstack, placer, pointed_thing)) - end - end, - after_dig_node = function(pos, node, metadata, digger) - if digger == nil then return end - local np = {x = pos.x, y = pos.y + 1, z = pos.z} - local nn = minetest.get_node(np) - if nn.name == node.name then - minetest.node_dig(np, nn, digger) - end - end, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, -- Main body - {-8/16, -8/16, -7/16, 8/16, 8/16, -7/16}, -- Spikes - {-8/16, -8/16, 7/16, 8/16, 8/16, 7/16}, -- Spikes - {-7/16, -8/16, -8/16, -7/16, 8/16, 8/16}, -- Spikes - {7/16, -8/16, 8/16, 7/16, 8/16, -8/16}, -- Spikes - }, - }, -}) - - - - -minetest.register_node("main:sugarcane", { - description = "Sugarcane", - drawtype = "plantlike", - inventory_image = "sugarcane.png", - waving = 1, - walkable = false, - paramtype = "light", - is_ground_content = false, - tiles = {"sugarcane.png"}, - buildable_to = false, - node_placement_prediction = "", - groups = {dig_immediate=1,flammable=1}, - sounds = main.grassSound(), - floodable = true, - on_place = function(itemstack, placer, pointed_thing) - local n = minetest.get_node_group(minetest.get_node(pointed_thing.under).name,"soil") > 0 - if n then - return(minetest.item_place(itemstack, placer, pointed_thing)) - end - end, - after_dig_node = function(pos, node, metadata, digger) - if digger == nil then return end - local np = {x = pos.x, y = pos.y + 1, z = pos.z} - local nn = minetest.get_node(np) - if nn.name == node.name then - minetest.node_dig(np, nn, digger) - end - end, - on_flood = function(pos, oldnode, newnode) - minetest.throw_item(pos, "main:sugarcane") - end, - selection_box = { - type = "fixed", - fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16} - }, -}) - minetest.register_node("main:gravel", { description = "Gravel", tiles = {"gravel.png"}, @@ -209,6 +265,12 @@ minetest.register_node("main:gravel", { }}, }) +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"}, @@ -235,22 +297,55 @@ minetest.register_node("main:tree", { end, --treecapitator - move treecapitator into own file using override on_dig = function(pos, node, digger) - + --bvav_create_vessel(pos,minetest.facedir_to_dir(minetest.dir_to_facedir(minetest.yaw_to_dir(digger:get_look_horizontal()+(math.pi/2))))) --check if wielding axe? - + --turn treecapitator into an enchantment? local meta = minetest.get_meta(pos) - if not meta:contains("placed") then + --local tool_meta = digger:get_wielded_item():get_meta() + --if tool_meta:get_int("treecapitator") > 0 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 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 + end + end }) @@ -275,53 +370,50 @@ minetest.register_node("main:leaves", { drop = { max_items = 1, items= { - { - -- Only drop if using a tool whose name is identical to one - -- of these. - rarity = 10, - items = {"main:sapling"}, - -- Whether all items in the dropped item list inherit the - -- hardware coloring palette color from the dug node. - -- Default is 'false'. - --inherit_color = true, - }, { - -- Only drop if using a tool whose name is identical to one - -- of these. tools = {"main:shears"}, - rarity = 2, - items = {"main:leaves"}, - -- Whether all items in the dropped item list inherit the - -- hardware coloring palette color from the dug node. - -- Default is 'false'. - --inherit_color = true, + items = {"main:dropped_leaves"}, }, { - -- Only drop if using a tool whose name is identical to one - -- of these. - tools = {"main:shears"}, - rarity = 2, - items = {"main:stick"}, - -- Whether all items in the dropped item list inherit the - -- hardware coloring palette color from the dug node. - -- Default is 'false'. - --inherit_color = true, + rarity = 25, + items = {"main:apple"}, }, { - -- Only drop if using a tool whose name is identical to one - -- of these. - tools = {"main:shears"}, - rarity = 6, - items = {"main:apple"}, - -- Whether all items in the dropped item list inherit the - -- hardware coloring palette color from the dug node. - -- Default is 'false'. - --inherit_color = true, + rarity = 20, + items = {"main:sapling"}, }, }, }, }) + +minetest.register_node("main:dropped_leaves", { + description = "Leaves", + drawtype = "allfaces_optional", + waving = 0, + walkable = false, + climbable = false, + paramtype = "light", + is_ground_content = false, + tiles = {"leaves.png"}, + groups = {leaves = 1, flammable=1}, + sounds = main.grassSound(), + drop = { + max_items = 1, + items= { + { + tools = {"main:shears"}, + items = {"main:dropped_leaves"}, + }, + }, + }, +}) + + + + + + minetest.register_node("main:water", { description = "Water Source", drawtype = "liquid", @@ -356,13 +448,12 @@ minetest.register_node("main:water", { 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 @@ -420,13 +511,12 @@ minetest.register_node("main:waterflow", { 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(), }) @@ -470,7 +560,7 @@ minetest.register_node("main:lava", { 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", { @@ -522,7 +612,7 @@ 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", {