Initial, working version
This commit is contained in:
126
init.lua
Normal file
126
init.lua
Normal file
@@ -0,0 +1,126 @@
|
||||
S = core.get_translator("lanterns")
|
||||
|
||||
local function on_flood(pos, oldnode, newnode)
|
||||
core.add_item(pos, ItemStack("lanterns:lantern 1"))
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
core.register_node(
|
||||
"lanterns:lantern", {
|
||||
drawtype = "nodebox",
|
||||
node_box = {type = "fixed", fixed = {{-3 / 16, -8 / 16, -3 / 16, 3 / 16, 0, 3 / 16}}},
|
||||
description = S("Lantern"),
|
||||
inventory_image = "lantern_inv.png",
|
||||
wield_image = "lantern_inv.png",
|
||||
tiles = {"lantern_top.png", "lantern_top.png", "lantern_side.png"},
|
||||
paramtype = "light",
|
||||
light_source = 13,
|
||||
paramtype2 = "wallmounted",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
liquids_pointable = false,
|
||||
groups = {choppy = 2, dig_immediate = 3, attached_node = 1},
|
||||
drop = "lanterns:lantern",
|
||||
selection_box = {type = "wallmounted", wall_bottom = {-3 / 16, -8 / 16, -3 / 16, 3 / 16, 0, 3 / 16}},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
floodable = true,
|
||||
on_flood = on_flood,
|
||||
on_rotate = false,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local under = pointed_thing.under
|
||||
local node = core.get_node(under)
|
||||
local def = core.registered_nodes[node.name]
|
||||
|
||||
if def and def.on_rightclick and not (placer and placer:is_player() and placer:get_player_control().sneak) then
|
||||
return def.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack
|
||||
end
|
||||
|
||||
local above = pointed_thing.above
|
||||
local wdir = core.dir_to_wallmounted(vector.subtract(under, above))
|
||||
local fakestack = itemstack
|
||||
|
||||
if wdir == 0 then
|
||||
fakestack:set_name("lanterns:lantern_ceiling")
|
||||
elseif wdir == 1 then
|
||||
fakestack:set_name("lanterns:lantern")
|
||||
else
|
||||
fakestack:set_name("lanterns:lantern_wall")
|
||||
end
|
||||
|
||||
itemstack = core.item_place(fakestack, placer, pointed_thing, wdir)
|
||||
itemstack:set_name("lanterns:lantern")
|
||||
|
||||
return itemstack
|
||||
end,
|
||||
}
|
||||
)
|
||||
|
||||
core.register_node(
|
||||
"lanterns:lantern_wall", {
|
||||
description = S("Lantern"),
|
||||
drawtype = "mesh",
|
||||
mesh = "lantern_wallmounted.obj",
|
||||
tiles = {"lantern_wallmounted.png"},
|
||||
paramtype = "light",
|
||||
light_source = 13,
|
||||
paramtype2 = "wallmounted",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
groups = {choppy = 2, dig_immediate = 3, attached_node = 1, not_in_creative_inventory = 1},
|
||||
drop = "lanterns:lantern",
|
||||
selection_box = {type = "wallmounted", wall_side = {-8 / 16, -6 / 16, -3 / 16, 3 / 16, 5 / 16, 3 / 16}},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
floodable = true,
|
||||
on_flood = on_flood,
|
||||
on_rotate = false,
|
||||
}
|
||||
)
|
||||
|
||||
core.register_node(
|
||||
"lanterns:lantern_ceiling", {
|
||||
description = S("Lantern"),
|
||||
drawtype = "mesh",
|
||||
mesh = "lantern_ceilingmounted.obj",
|
||||
tiles = {"lantern_ceilingmounted.png"},
|
||||
paramtype = "light",
|
||||
light_source = 13,
|
||||
paramtype2 = "wallmounted",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
groups = {choppy = 2, dig_immediate = 3, attached_node = 1, not_in_creative_inventory = 1},
|
||||
drop = "lanterns:lantern",
|
||||
selection_box = {type = "wallmounted", wall_top = {-3 / 16, -2 / 16, -3 / 16, 3 / 16, 8 / 16, 3 / 16}},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
floodable = true,
|
||||
on_flood = on_flood,
|
||||
on_rotate = false,
|
||||
}
|
||||
)
|
||||
|
||||
core.register_lbm(
|
||||
{
|
||||
name = "lanterns:3dlantern",
|
||||
nodenames = {"lanterns:lantern"},
|
||||
action = function(pos, node)
|
||||
if node.param2 == 0 then
|
||||
core.set_node(pos, {name = "lanterns:lantern_ceiling", param2 = node.param2})
|
||||
elseif node.param2 == 1 then
|
||||
core.set_node(pos, {name = "lanterns:lantern", param2 = node.param2})
|
||||
else
|
||||
core.set_node(pos, {name = "lanterns:lantern_wall", param2 = node.param2})
|
||||
end
|
||||
end,
|
||||
}
|
||||
)
|
||||
|
||||
core.register_craft(
|
||||
{
|
||||
output = "lanterns:lantern 2",
|
||||
recipe = {
|
||||
{"default:glass", "default:steel_ingot", "default:glass"},
|
||||
{"group:stick", "default:torch", "group:stick"},
|
||||
{"default:glass", "default:steel_ingot", "default:glass"},
|
||||
},
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user