hell/items.lua

1058 lines
30 KiB
Lua

local S = hell.get_translator
local hell_sound = default.node_sound_stone_defaults({
dig = {name="hell_dig", gain=0.7},
dug = {name="hell_dug", gain=1},
footstep = {name="hell_footstep", gain=0.4}
})
local add_fence = minetest.register_fence
local function add_more_nodes(name)
local nd = "hell:"..name
if not string.find(name, "hell") then
name = "hell_"..name
end
local data = minetest.registered_nodes[nd]
if stairsplus then
stairsplus:register_all(
"hell",
name,
nd,
data
)
minetest.register_alias("stairs:stair_"..name, "hell"..":stair_"..name)
minetest.register_alias("stairs:slab_"..name, "hell"..":slab_"..name)
minetest.register_alias("nether"..":stair_"..name, "hell"..":stair_"..name)
minetest.register_alias("nether"..":slab_"..name, "hell"..":slab_"..name)
else
stairs.register_stair_and_slab(
name, nd,
data.groups,
data.tiles,
data.description.." Stair",
data.description.." Slab",
data.sounds
)
end
if add_fence then
add_fence({fence_of = nd})
end
end
local function add_aliases(old, new)
minetest.register_alias("nether:"..old, "hell:"..new)
minetest.register_alias("nether:stair_"..old, "hell:stair_"..new)
minetest.register_alias("nether:slab_"..old, "hell:slab_"..new)
minetest.register_alias("stairs:stair_"..old, "hell:stair_"..new)
minetest.register_alias("stairs:slab_"..old, "hell:slab_"..new)
end
--[[
local function add_fence(name)
local def = minetest.registered_nodes[name]
local fencedef = {}
for _,i in pairs({"walkable", "sunlike_propagates"}) do
if def[i] ~= nil then
fencedef[i] = def[i]
end
end
end
--]]
local creative_installed = minetest.global_exists("creative")
local function digging_allowed(player, v)
if not player then
return false
end
if creative_installed and creative.is_enabled_for(player:get_player_name()) then
return true
end
local tool = player:get_wielded_item():get_name()
tool = minetest.registered_tools[tool] or tool == "" and minetest.registered_items[tool]
if not tool
or not tool.tool_capabilities then
return false
end
local groups = tool.tool_capabilities.groupcaps
if not groups then
return false
end
if groups.hell
and groups.hell.times[v] then
return true
end
return false
end
-- Hellrack
minetest.register_node("hell:hellrack", {
description = "Hellrack",
tiles = {"hell_hellrack.png"},
groups = {hell=2},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 2)
end,
})
add_more_nodes("hellrack")
add_aliases("netherrack", "hellrack")
minetest.register_node("hell:hellrack_tiled", {
description = S("Tiled Hellrack"),
tiles = {"hell_hellrack_tiled.png"},
groups = {hell=2},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 2)
end,
})
add_more_nodes("hellrack_tiled")
add_aliases("netherrack_tiled", "hellrack_tiled")
minetest.register_node("hell:hellrack_soil", {
description = S("Dirty Hellrack"),
tiles = {"hell_hellrack.png^hell_hellrack_soil.png"},
groups = {hell=2},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 2)
end,
})
add_aliases("netherrack_soil", "hellrack_soil")
minetest.register_node("hell:hellrack_black", {
description = S("Black Hellrack"),
tiles = {"hell_hellrack_black.png"},
groups = {hell=2},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 2)
end,
})
add_more_nodes("hellrack_black")
add_aliases("netherrack_black", "hellrack_black")
minetest.register_node("hell:hellrack_blue", {
description = S("Blue Hellrack"),
tiles = {"hell_hellrack_blue.png"},
groups = {hell=1},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 1)
end,
})
add_more_nodes("hellrack_blue")
add_aliases("netherrack_blue", "hellrack_blue")
-- Hellbrick
minetest.register_node("hell:hellrack_brick", {
description = S("Hellrack Brick"),
tiles = {"hell_hellrack_brick.png"},
groups = {hell=3},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("hellrack_brick")
add_aliases("netherrack_brick", "hellrack_brick")
minetest.register_node("hell:hellrack_brick_blue", {
description = S("Blue Hellrack Brick"),
tiles = {"hell_hellrack_brick_blue.png"},
groups = {hell=3},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("hellrack_brick_blue")
add_aliases("netherrack_brick_blue", "hellrack_brick_blue")
minetest.register_node("hell:hellrack_brick_black", {
description = S("Black Hellrack Brick"),
tiles = {"hell_hellrack_brick_black.png"},
groups = {hell=3},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("hellrack_brick_black")
add_aliases("netherrack_brick_black", "hellrack_brick_black")
minetest.register_node("hell:white", {
description = S("Siwtonic block"),
tiles = {"hell_white.png"},
groups = {hell=1},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 1)
end,
})
add_more_nodes("white")
minetest.register_alias("nether:white", "hell:white")
-- Hell blood
minetest.register_node("hell:sapling", {
description = S("Hell Blood Child"),
drawtype = "plantlike",
tiles = {"hell_sapling.png"},
inventory_image = "hell_sapling.png",
wield_image = "hell_sapling.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2, oddly_breakable_by_hand=2, attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_alias("nether:sapling", "hell:sapling")
minetest.register_node("hell:blood", {
description = S("Hell Blood"),
tiles = {"hell_blood.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("blood")
minetest.register_alias("nether:blood", "hell:blood")
minetest.register_node("hell:blood_cooked", {
description = S("Cooked Hell Blood"),
tiles = {"hell_blood_cooked.png"},
groups = {hell=3},
sounds = hell_sound,
furnace_burntime = 10,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("blood_cooked")
minetest.register_alias("nether:blood_cooked", "hell:blood_cooked")
minetest.register_node("hell:blood_empty", {
description = S("Hell Blood Extracted"),
tiles = {"hell_blood_empty.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("blood_empty")
minetest.register_alias("nether:blood_empty", "hell:blood_empty")
minetest.register_node("hell:blood_top", {
description = S("Hell Blood Head"),
tiles = {"hell_blood_top.png", "hell_blood.png", "hell_blood.png^hell_blood_side.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("blood_top")
minetest.register_alias("nether:blood_top", "hell:blood_top")
minetest.register_node("hell:blood_top_cooked", {
description = S("Cooked Hell Blood Head"),
tiles = {"hell_blood_top_cooked.png", "hell_blood_cooked.png", "hell_blood_cooked.png^hell_blood_side_cooked.png"},
groups = {hell=3},
sounds = hell_sound,
furnace_burntime = 10,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("blood_top_cooked")
minetest.register_alias("nether:blood_top_cooked", "hell:blood_top_cooked")
minetest.register_node("hell:blood_top_empty", {
description = S("Hell Blood Head Extracted"),
tiles = {"hell_blood_top_empty.png", "hell_blood_empty.png", "hell_blood_empty.png^hell_blood_side_empty.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("blood_top_empty")
minetest.register_alias("nether:blood_top_empty", "hell:blood_top_empty")
minetest.register_node("hell:blood_stem", {
description = S("Hell Blood Stem"),
tiles = {"hell_blood_stem_top.png", "hell_blood_stem_top.png", "hell_blood_stem.png"},
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("blood_stem")
minetest.register_alias("nether:blood_stem", "hell:blood_stem")
minetest.register_node("hell:blood_stem_cooked", {
description = S("Cooked Hell Blood Stem"),
tiles = {"hell_blood_stem_top_cooked.png", "hell_blood_stem_top_cooked.png", "hell_blood_stem_cooked.png"},
groups = {hell=3},
sounds = hell_sound,
furnace_burntime = 30,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("blood_stem_cooked")
minetest.register_alias("nether:blood_stem_cooked", "hell:blood_stem_cooked")
minetest.register_node("hell:blood_stem_empty", {
description = S("Hell Blood Stem Extracted"),
tiles = {"hell_blood_stem_top_empty.png", "hell_blood_stem_top_empty.png", "hell_blood_stem_empty.png"},
groups = {tree=1, choppy=2, oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("blood_stem_empty")
minetest.register_alias("nether:blood_stem_empty", "hell:blood_stem_empty")
minetest.register_node("hell:wood", {
description = S("Hell Blood Wood"),
tiles = {"hell_wood.png"},
groups = {choppy=2, oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("wood")
minetest.register_alias("nether:wood", "hell:wood")
minetest.register_node("hell:wood_cooked", {
description = S("Cooked Hell Blood Wood"),
tiles = {"hell_wood_cooked.png"},
groups = {hell=3},
sounds = hell_sound,
furnace_burntime = 8,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
add_more_nodes("wood_cooked")
minetest.register_alias("nether:wood_cooked", "hell:wood_cooked")
minetest.register_node("hell:wood_empty", {
description = S("Hell Wood"),
tiles = {"hell_wood_empty.png"},
groups = {choppy=2, oddly_breakable_by_hand=2, wood=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("wood_empty")
minetest.register_alias("nether:wood_empty", "hell:wood_empty")
minetest.register_node("hell:extractor", {
description = S("Hell Blood Extractor"),
tiles = {"hell_blood_extractor.png"},
groups = {hell=3},
sounds = hell_sound,
can_dig = function(_, player)
return digging_allowed(player, 3)
end,
})
minetest.register_alias("nether:extractor", "hell:extractor")
-- Hell fruit
minetest.register_node("hell:fruit_leaves", {
description = S("Hell Fruit Leaves"),
tiles = {"hell_fruit_leaves.png"},
groups = {fleshy=3, dig_immediate=2},
sounds = default.node_sound_defaults(),
furnace_burntime = 18,
})
add_more_nodes("fruit_leaves")
minetest.register_alias("nether:fruit_leaves", "hell:fruit_leaves")
local function room_for_items(inv)
local free_slots = 0
for _,i in ipairs(inv:get_list("main")) do
if i:get_count() == 0 then
free_slots = free_slots+1
end
end
if free_slots < 2 then
return false
end
return true
end
local drop_mushroom = minetest.registered_nodes["riesenpilz:nether_shroom"].on_drop
minetest.override_item("riesenpilz:nether_shroom", {
on_drop = function(itemstack, dropper, pos)
if dropper:get_player_control().aux1 then
return drop_mushroom(itemstack, dropper, pos)
end
local inv = dropper:get_inventory()
if not inv then
return
end
if not room_for_items(inv) then
return
end
minetest.sound_play("hell_remove_leaf", {pos = pos, gain = 0.25})
itemstack:take_item()
inv:add_item("main", "hell:shroom_head")
inv:add_item("main", "hell:shroom_stem")
return itemstack
end,
})
minetest.register_node("hell:apple", {
description = S("Hell Fruit"),
drawtype = "nodebox",
tiles = {"hell_fruit_top.png", "hell_fruit_bottom.png", "hell_fruit.png", "hell_fruit.png^[transformFX", "hell_fruit.png^[transformFX", "hell_fruit.png"},
node_box = {
type = "fixed",
fixed = {
{-1/6, -1/4, -1/6, 1/6, -1/6, 1/6},
{-1/6, -1/6, -1/4, 1/6, 1/6, 1/4},
{-1/4, -1/6, -1/6, 1/4, 1/6, 1/6},
{-1/4, 1/6, -1/12, 1/4, 1/4, 1/12},
{-1/12, 1/6, -1/4, 1/12, 1/4, 1/4},
{-1/6, 1/6, -1/6, 1/6, 1/3, 1/6},
{-1/12, 1/3, -1/12, 0, 5/12, 0},
{-1/12, 5/12, -1/6, 0, 0.5, 1/12},
{-1/6, 5/12, -1/12, 1/12, 0.5, 0},
}
},
paramtype = "light",
groups = {fleshy=3, dig_immediate=3},
sounds = default.node_sound_defaults(),
furnace_burntime = 6,
})
minetest.register_alias("nether:apple", "hell:apple")
local drop_fruit = minetest.registered_nodes["hell:apple"].on_drop
minetest.override_item("hell:apple", {
on_drop = function(itemstack, dropper, pos)
if dropper:get_player_control().aux1 then
return drop_fruit(itemstack, dropper, pos)
end
local inv = dropper:get_inventory()
if not inv then
return
end
if not room_for_items(inv) then
return
end
minetest.sound_play("hell_remove_leaf", {pos = pos, gain = 0.25})
itemstack:take_item()
inv:add_item("main", "hell:fruit_leaf")
inv:add_item("main", "hell:fruit_no_leaf")
return itemstack
end,
})
-- Hell vine
minetest.register_node("hell:vine", {
description = S("Hell vine"),
walkable = false,
drop = "hell:sapling",
sunlight_propagates = true,
paramtype = "light",
tiles = { "hell_vine.png" },
drawtype = "plantlike",
inventory_image = "hell_vine.png",
groups = { snappy = 3,flammable=2 },
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, _, _, digger)
if digger then
local p = {x=pos.x, y=pos.y-1, z=pos.z}
local nn = minetest.get_node(p)
if nn.name == "hell:vine" then
minetest.node_dig(p, nn, digger)
end
end
end
})
minetest.register_alias("nether:vine", "hell:vine")
-- forest stuff
for n,i in pairs({"small", "middle", "big"}) do
minetest.register_node("hell:grass_"..i, {
description = S("Hell Grass"),
drawtype = "plantlike",
waving = 1,
tiles = {"hell_grass_"..i..".png"},
inventory_image = "hell_grass_"..i..".png",
wield_image = "hell_grass_"..i..".png",
paramtype = "light",
walkable = false,
buildable_to = true,
drop = "hell:grass "..n,
groups = {snappy=3,flora=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
minetest.register_alias("nether:grass_"..i, "hell:grass_"..i)
end
minetest.register_node("hell:glowflower", {
description = S("Glowing Flower"),
drawtype = "plantlike",
tiles = {"hell_glowflower.png"},
inventory_image = "hell_glowflower.png",
wield_image = "hell_glowflower.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
buildable_to = true,
light_source = 10,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 },
},
})
minetest.register_alias("nether:glowflower", "hell:glowflower")
minetest.register_node("hell:tree_sapling", {
description = S("Hell Tree Sapling"),
drawtype = "plantlike",
tiles = {"hell_tree_sapling.png"},
inventory_image = "hell_tree_sapling.png",
wield_image = "hell_tree_sapling.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2, oddly_breakable_by_hand=2, attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_alias("nether:tree_sapling", "hell:tree_sapling")
minetest.register_node("hell:tree", {
description = S("Hell Trunk"),
tiles = {"hell_tree_top.png", "hell_tree_top.png", "hell_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_alias("nether:tree", "hell:tree")
minetest.register_node("hell:tree_corner", {
description = S("Hell Trunk Corner"),
tiles = {"hell_tree.png^[transformR180", "hell_tree_top.png", "hell_tree_corner.png^[transformFY",
"hell_tree_corner.png^[transformR180", "hell_tree.png", "hell_tree_top.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,not_in_creative_inventory=1},
drop = "hell:tree",
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_alias("nether:tree_corner", "hell:tree_corner")
minetest.register_node("hell:forest_wood", {
description = S("Hell Wood Block"),
tiles = {"hell_forest_wood.png"},
groups = {choppy=2,oddly_breakable_by_hand=2,wood=1},
sounds = default.node_sound_wood_defaults(),
})
add_more_nodes("forest_wood")
minetest.register_alias("nether:forest_wood", "hell:forest_wood")
minetest.register_node("hell:leaves", {
description = S("Hell Leaves"),
drawtype = "plantlike",
waving = 1,
visual_scale = math.sqrt(2) + 0.01,
tiles = {"hell_leaves.png"},
inventory_image = "hell_leaves.png",
wield_image = "hell_leaves.png",
paramtype = "light",
paramtype2 = "degrotate",
is_ground_content = false,
groups = {snappy=3, leafdecay=3, leaves=1},
drop = {
max_items = 1,
items = {
{
items = {"hell:tree_sapling"},
rarity = 30,
},
{
items = {"hell:leaves"},
}
}
},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_alias("nether:leaves", "hell:leaves")
minetest.register_node("hell:dirt", {
description = S("Hell Dirt"),
tiles = {"hell_dirt.png"},
groups = {crumbly=3,soil=1,hell_dirt=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_alias("nether:dirt", "hell:dirt")
minetest.register_node("hell:dirt_top", {
description = S("Hell Dirt Top"),
tiles = {"hell_dirt_top.png", "hell_dirt.png",
{name="hell_dirt.png^hell_dirt_top_side.png", tileable_vertical = false}
},
groups = {crumbly=3,soil=1,hell_dirt=1},
drop = "hell:dirt",
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.25},
}),
})
minetest.register_alias("nether:dirt_top", "hell:dirt_top")
minetest.register_node("hell:dirt_bottom", {
description = S("Hellrack Dirt Transition"),
tiles = {"hell_dirt.png", "hell_hellrack.png",
{name="hell_hellrack.png^hell_dirt_transition.png", tileable_vertical = false}
},
groups = {hell=2},
drop = "hell:hellrack",
sounds = default.node_sound_dirt_defaults({
dig = {name="hell_dig", gain=0.7},
dug = {name="hell_dug", gain=1},
}),
can_dig = function(_, player)
return digging_allowed(player, 2)
end,
})
minetest.register_alias("nether:dirt_bottom", "hell:dirt_bottom")
-- Hell torch
minetest.register_node("hell:torch", {
description = S("Hell Torch"),
drawtype = "torchlike",
tiles = {"hell_torch_on_floor.png", "hell_torch_on_ceiling.png",
{
name = "hell_torch.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
},
inventory_image = "hell_torch_on_floor.png",
wield_image = "hell_torch_on_floor.png",
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 13,
selection_box = {
type = "wallmounted",
wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1},
},
groups = {choppy=2, dig_immediate=3, attached_node=1, hot=3, igniter=1},
legacy_wallmounted = true,
sounds = default.node_sound_defaults(),
})
minetest.register_alias("nether:torch", "hell:torch")
minetest.register_craftitem("hell:grass", {
description = S("Hell Grass"),
inventory_image = "hell_grass.png",
})
minetest.register_alias("nether:grass", "hell:grass")
minetest.register_craftitem("hell:grass_dried", {
description = S("Dried Hell Grass"),
inventory_image = "hell_grass_dried.png",
furnace_burntime = 1,
})
minetest.register_alias("nether:grass_dried", "hell:grass_dried")
minetest.register_craftitem("hell:forest_planks", {
description = S("Hell Wooden Planks"),
inventory_image = "hell_forest_planks.png",
stack_max = 990,
})
minetest.register_alias("nether:forest_planks", "hell:forest_planks")
minetest.register_craftitem("hell:bark", {
description = S("Hell Trunk Bark"),
inventory_image = "hell_bark.png",
furnace_burntime = 5,
})
minetest.register_alias("nether:bark", "hell:bark")
-- Hell Pearl
minetest.register_craftitem("hell:pearl", {
description = S("Hell Pearl"),
inventory_image = "hell_pearl.png",
})
minetest.register_alias("nether:pearl", "hell:pearl")
minetest.register_craftitem("hell:stick", {
description = S("Hell Stick"),
inventory_image = "hell_stick.png",
groups = {stick=1},
})
minetest.register_alias("nether:stick", "hell:stick")
local tmp = {}
minetest.register_craftitem("hell:shroom_head", {
description = S("Hell Mushroom Head"),
inventory_image = "hell_shroom_top.png",
furnace_burntime = 3,
on_place = function(itemstack, _, pointed_thing)
if not pointed_thing then
return
end
if pointed_thing.type ~= "node" then
return
end
local pos = minetest.get_pointed_thing_position(pointed_thing)
local node = minetest.get_node(pos)
local pstr = pos.x.." "..pos.y.." "..pos.z
if node.name == "hell:hellrack_soil"
and not tmp[pstr] then
minetest.sound_play("default_grass_footstep", {pos=pos})
minetest.set_node(pos, {name="hell:hellrack_soil", param2=math.max(node.param2, math.random(3, 10))})
tmp[pstr] = true
minetest.after(3, function() tmp[pos.x.." "..pos.y.." "..pos.z] = nil end)
end
end
})
minetest.register_alias("nether:shroom_head", "hell:shroom_head")
minetest.register_craftitem("hell:shroom_stem", {
description = S("Hell Mushroom Stem"),
inventory_image = "hell_shroom_stem.png",
furnace_burntime = 3,
})
minetest.register_alias("nether:shroom_stem", "hell:shroom_stem")
minetest.register_craftitem("hell:fruit_leaf", {
description = S("Hell Fruit Leaf"),
inventory_image = "hell_fruit_leaf.png",
furnace_burntime = 2,
})
minetest.register_alias("nether:fruit_leaf", "hell:fruit_leaf")
minetest.register_craftitem("hell:fruit_no_leaf", {
description = S("Hell Fruit Without Leaf"),
inventory_image = "hell_fruit_no_leaf.png",
furnace_burntime = 4,
})
minetest.register_alias("nether:fruit_no_leaf", "hell:fruit_no_leaf")
minetest.register_craftitem("hell:fim", {
description = S("Hell FIM"), --fruit in mushroom
inventory_image = "hell_fim.png",
furnace_burntime = 10,
})
minetest.register_alias("nether:fim", "hell:fim")
local blood_exno = {}
for _,i in ipairs({"hell:blood", "hell:blood_top", "hell:blood_stem"}) do
blood_exno[i] = i.."_empty"
end
minetest.register_craftitem("hell:blood_extracted", {
description = S("Blood"),
inventory_image = "hell_blood_extracted.png",
on_place = function(itemstack, _, pointed_thing)
if not pointed_thing then
return
end
if pointed_thing.type ~= "node" then
return
end
local pos = minetest.get_pointed_thing_position(pointed_thing)
local node = minetest.get_node_or_nil(pos)
if not node then
return
end
if node.name == "hell:vine" then
pos = {x=pos.x, y=pos.y-1, z=pos.z}
if minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "hell:vine"})
end
itemstack:take_item()
return itemstack
end
if node.name ~= "hell:extractor" then
return
end
itemstack:take_item()
minetest.after(1, function(pos)
for i = -1,1,2 do
for _,p in ipairs({
{x=pos.x+i, y=pos.y, z=pos.z},
{x=pos.x, y=pos.y, z=pos.z+i},
}) do
local nodename = blood_exno[minetest.get_node(p).name]
if nodename then
minetest.set_node(p, {name=nodename})
p = vector.add(p, {x=math.random()-0.5, y=math.random()+0.5, z=math.random()-0.5})
minetest.sound_play("hell_extract_blood", {pos = p, gain = 1})
minetest.add_item(p, "hell:blood_extracted")
end
end
end
end, pos)
return itemstack
end
})
minetest.register_alias("nether:blood_extracted", "hell:blood_extracted")
minetest.register_craftitem("hell:hotbed", {
description = S("Cooked Blood"),
inventory_image = "hell_hotbed.png",
on_place = function(itemstack, _, pointed_thing)
if not pointed_thing then
return
end
if pointed_thing.type ~= "node" then
return
end
local pos = minetest.get_pointed_thing_position(pointed_thing)
local node = minetest.get_node(pos)
if node.name ~= "hell:hellrack" then
return
end
minetest.sound_play("default_place_node", {pos=pos})
minetest.set_node(pos, {name = "hell:hellrack_soil"})
itemstack:take_item()
return itemstack
end,
on_use = minetest.item_eat(1),
})
minetest.register_alias("nether:hotbed", "hell:hotbed")
minetest.register_tool("hell:pick_mushroom", {
description = S("Hell Mushroom Pickaxe"),
inventory_image = "hell_pick_mushroom.png",
tool_capabilities = {
max_drop_level=0,
groupcaps={
cracky = {times={[3]=3}, uses=1, maxlevel=1},
hell = {times={[3]=3}, uses=1, maxlevel=1},
},
},
})
minetest.register_alias("nether:pick_musroom", "hell:pick_mushroom")
minetest.register_tool("hell:pick_wood", {
description = S("Hell Wood Pickaxe"),
inventory_image = "hell_pick_wood.png",
tool_capabilities = {
full_punch_interval = 1.2,
max_drop_level=0,
groupcaps={
cracky = {times={[3]=1.6}, uses=10, maxlevel=1},
hell = {times={[2]=6, [3]=1.6}, uses=10, maxlevel=1},
},
damage_groups = {fleshy=2},
},
})
minetest.register_alias("nether:pick_wood", "hell:pick_wood")
minetest.register_tool("hell:pick_hellrack", {
description = S("Hellrack Pickaxe"),
inventory_image = "hell_pick_hellrack.png",
tool_capabilities = {
full_punch_interval = 1.3,
max_drop_level=0,
groupcaps={
cracky = {times={[2]=2.0, [3]=1.20}, uses=20, maxlevel=1},
hell = {times={[1]=16, [2]=2, [3]=1.20}, uses=20, maxlevel=1},
},
damage_groups = {fleshy=3},
},
})
minetest.register_alias("nether:pick_netherrack", "hell:pick_hellrack")
minetest.register_tool("hell:pick_hellrack_blue", {
description = S("Blue Hellrack Pickaxe"),
inventory_image = "hell_pick_hellrack_blue.png",
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=1,
groupcaps={
cracky = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=30, maxlevel=2},
hell = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=30, maxlevel=2},
},
damage_groups = {fleshy=4},
},
})
minetest.register_alias("nether:pick_netherrack_blue", "hell:pick_hellrack_blue")
minetest.register_tool("hell:pick_white", {
description = S("Siwtonic Pickaxe"),
inventory_image = "hell_pick_white.png",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=3,
groupcaps={
cracky = {times={[1]=1, [2]=0.8, [3]=0.3}, uses=180, maxlevel=3},
hell = {times={[1]=1, [2]=0.5, [3]=0.3}, uses=180, maxlevel=3},
},
damage_groups = {fleshy=5},
},
})
minetest.register_alias("nether:pick_white", "hell:pick_white")
minetest.register_tool("hell:axe_hellrack", {
description = S("Hellrack Axe"),
inventory_image = "hell_axe_hellrack.png",
tool_capabilities = {
full_punch_interval = 1.3,
max_drop_level=0,
groupcaps={
choppy={times={[1]=2.9, [2]=1.9, [3]=1.4}, uses=20, maxlevel=1},
},
damage_groups = {fleshy=4},
},
})
minetest.register_alias("nether:axe_netherrack", "hell:axe_hellrack")
minetest.register_tool("hell:axe_hellrack_blue", {
description = S("Blue Hellrack Axe"),
inventory_image = "hell_axe_hellrack_blue.png",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=1,
groupcaps={
choppy={times={[1]=2.5, [2]=1.5, [3]=1}, uses=30, maxlevel=2},
},
damage_groups = {fleshy=6},
},
})
minetest.register_alias("nether:axe_netherrack_blue", "hell:axe_hellrack_blue")
minetest.register_tool("hell:axe_white", {
description = S("Siwtonic Axe"),
inventory_image = "hell_axe_white.png",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=1,
groupcaps={
choppy={times={[1]=1.2, [2]=0.5, [3]=0.3}, uses=180, maxlevel=2},
},
damage_groups = {fleshy=8},
},
})
minetest.register_alias("nether:axe_white", "hell:axe_white")
minetest.register_tool("hell:shovel_hellrack", {
description = S("Hellrack Shovel"),
inventory_image = "hell_shovel_hellrack.png",
wield_image = "hell_shovel_hellrack.png^[transformR90",
tool_capabilities = {
full_punch_interval = 1.4,
max_drop_level=0,
groupcaps={
crumbly = {times={[1]=1.7, [2]=1.1, [3]=0.45}, uses=22, maxlevel=2},
},
damage_groups = {fleshy=2},
},
})
minetest.register_alias("nether:shovel_netherrack", "hell:shovel_hellrack")
minetest.register_tool("hell:shovel_hellrack_blue", {
description = S("Blue Hellrack Shovel"),
inventory_image = "hell_shovel_hellrack_blue.png",
wield_image = "hell_shovel_hellrack_blue.png^[transformR90",
tool_capabilities = {
full_punch_interval = 1.1,
max_drop_level=1,
groupcaps={
crumbly = {times={[1]=1.4, [2]=0.8, [3]=0.35}, uses=50, maxlevel=2},
},
damage_groups = {fleshy=3},
},
})
minetest.register_alias("nether:shovel_netherrack_blue", "hell:shovel_hellrack_blue")
minetest.register_tool("hell:shovel_white", {
description = S("Siwtonic Shovel"),
inventory_image = "hell_shovel_white.png",
wield_image = "hell_shovel_white.png^[transformR90",
tool_capabilities = {
full_punch_interval = 1,
max_drop_level=1,
groupcaps={
crumbly = {times={[1]=0.95, [2]=0.45, [3]=0.1}, uses=151, maxlevel=3},
},
damage_groups = {fleshy=4},
},
})
minetest.register_alias("nether:shovel_white", "hell:shovel_white")
minetest.register_tool("hell:sword_hellrack", {
description = S("Hellrack Sword"),
inventory_image = "hell_sword_hellrack.png",
tool_capabilities = {
full_punch_interval = 1,
max_drop_level=0,
groupcaps={
snappy={times={[2]=1.3, [3]=0.38}, uses=40, maxlevel=1},
},
damage_groups = {fleshy=5},
},
})
minetest.register_alias("nether:sword_netherrack", "hell:sword_hellrack")
minetest.register_tool("hell:sword_hellrack_blue", {
description = S("Blue Hellrack Sword"),
inventory_image = "hell_sword_hellrack_blue.png",
tool_capabilities = {
full_punch_interval = 0.8,
max_drop_level=1,
groupcaps={
snappy={times={[1]=2.5, [2]=1.1, [3]=0.33}, uses=40, maxlevel=2},
},
damage_groups = {fleshy=7},
},
})
minetest.register_alias("nether:sword_netherrack_blue", "hell:sword_hellrack_blue")
minetest.register_tool("hell:sword_white", {
description = S("Siwtonic Sword"),
inventory_image = "hell_sword_white.png",
wield_image = "hell_sword_white.png^[transformR90",
tool_capabilities = {
full_punch_interval = 0.7,
max_drop_level=1,
groupcaps={
snappy={times={[1]=1.7, [2]=0.8, [3]=0.2}, uses=100, maxlevel=3},
},
damage_groups = {fleshy=11},
},
})
minetest.register_alias("nether:sword_white", "hell:sword_white")
-- override creative hand
if minetest.settings:get_bool("creative_mode") then
local capas = minetest.registered_items[""].tool_capabilities
capas.groupcaps.hell = capas.groupcaps.cracky
minetest.override_item("", {tool_capabilities = capas})
end