2024-02-08 17:55:44 +01:00

397 lines
15 KiB
Lua
Executable File

--[[
**********************************************
*** Barchair ***
*** ***
*** Barchair is a Mod for Minetest ***
*** and adds some simple Barchairs to ***
*** the Game. ***
*** ***
*** License: GPL 3.0 by A.C.M. ***
*** ***
**********************************************
]]--
local mod
local mat
local burn
barchair = {}
barchair.modname = minetest.get_current_modname()
barchair.modpath = minetest.get_modpath(barchair.modname)
barchair.version = 1
barchair.revision = 3
local material = {{nil, nil, nil}}
local S
if(minetest.get_modpath("intllib")) then
S = dofile(barchair.modpath .."/intllib.lua")
print("[MOD] " .. barchair.modname .. ": translating in intllib-mode.")
else
S = minetest.get_translator(barchair.modname)
print("[MOD] " .. barchair.modname .. ": translating in minetest-mode.")
end -- if(minetest.get_modpath(
-- Various default Wood
material = {
-- Mod , Material, burnvalue
{"default:", "wood", 15 },
{"default:", "junglewood", 15 },
{"default:", "aspen_wood", 15 },
{"default:", "pine_wood", 15 },
{"default:", "acacia_wood", 15 },
--glasslike
{"default:", "obsidian", 0 },
{"default:", "ice", 0 },
{"default:", "diamondblock", 0 },
{"default:", "mese", 0 },
-- trees
{"default:", "aspen_tree", 17 },
{"default:", "acacia_tree", 17 },
{"default:", "pine_tree", 17 },
{"default:", "jungletree", 17 },
{"default:", "tree", 17 },
-- other
{"default:", "cactus", 12 },
{"default:", "coral_skeleton", 0 },
-- metal
{"default:", "goldblock", 0 },
{"default:", "bronzeblock", 0 },
{"default:", "tinblock", 0 },
{"default:", "copperblock", 0 },
{"default:", "steelblock", 0 },
}
--[[
***************************************************************
Function register_barchair()
mod = String of the current modname like "default:"
mat = Material, is the name of the node lide "dirt"
burnvalue = Is the Chair burnable? 0 = not burnable, >= how long takes it to burn
If you don't give a valid Number, burnvalue = 0 and the chair is unburnable.
***************************************************************
]]--
function barchair.register_barchair(mod, mat, burnvalue)
if(mod == "" or mod == nil) then
return
end -- if(mod ==
if(mat == "" or mat == nil) then
return
end -- if(mat ==
if(burnvalue == nil or burnvalue < 0) then
burnvalue = 0
end -- if(burnvalue
mod = string.match(mod, "%w+%:-")
if(minetest.registered_nodes[mod ..":" .. mat] ~= nil) then
-- Barchair
minetest.register_node(":" .. barchair.modname .. ":barchairs_plain_" .. mod .. "_" .. mat, {
description = S("Barchair plain ") .. mod .. mat,
tiles = minetest.registered_nodes[mod .. ":" .. mat].tiles,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.1875, 0.125, -0.25, 0.1875, 0.25, 0.1875}, -- Barchair
{-0.1875, -0.5, -0.25, -0.125, 0.25, -0.1875}, -- Bein_vl
{0.125, -0.5, 0.125, 0.1875, 0.25, 0.1875}, -- Bein_hr
{-0.1875, -0.5, 0.125, -0.125, 0.25, 0.1875}, -- Bein_hl
{0.125, -0.5, -0.25, 0.1875, 0.25, -0.1875}, -- Bein_vr
{-0.125, -0.3125, -0.25, 0.125, -0.25, -0.1875}, -- Quer_l
{-0.125, -0.3125, 0.125, 0.125, -0.25, 0.1875}, -- Quer_r
{-0.1875, -0.3125, -0.1875, -0.125, -0.25, 0.125}, -- Quer_h
{0.125, -0.3125, -0.1875, 0.1875, -0.25, 0.1875}, -- Quer_v
}
},
on_place = minetest.rotate_node,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if not clicker:is_player() then
return itemstack
end
pos.y = pos.y-0.5
clicker:setpos(pos)
return itemstack
end
}) -- minetest.register_node
minetest.register_craft({
output = barchair.modname .. ":barchairs_plain_" .. mod .. "_" .. mat .. " 2",
recipe = {
{"",mod .. ":" .. mat,""},
{"default:stick","","default:stick"},
{"default:stick",mod .. ":" .. mat,"default:stick"}
},
}) -- minetest.register_craft
if(burn > 0) then
minetest.register_craft({
type = "fuel",
recipe = barchair.modname .. ":barchairs_plain_" .. mat,
burntime = burn,
}) -- minetest.register_craft
end -- if(burn
-- Bar
-- Bar Front
minetest.register_node(":" .. barchair.modname .. ":bar_front_" .. mod .. "_" .. mat, {
description = S("Bar front ") .. mod .. "_" .. mat,
tiles = minetest.registered_nodes[mod .. ":" .. mat].tiles,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{0.0625, -0.5, -0.5, 0.1875, 0.5, 0.5}, -- Front
{0.0625, 0.375, -0.5, 0.5, 0.5, 0.5}, -- Top
{0, -0.5, 0.375, 0.0625, 0.5, 0.4375}, -- Deco_1
{0, -0.5, 0.125, 0.0625, 0.5, 0.1875}, -- Deco_2
{0, -0.5, -0.125, 0.0625, 0.5, -0.0625}, -- Deco_3
{0, -0.5, -0.375, 0.0625, 0.5, -0.3125}, -- Deco_4
}
}, -- node_box
on_place = minetest.rotate_node,
}) -- minetest.register_node
-- Recipe
minetest.register_craft({
output = barchair.modname .. ":bar_front_" .. mod .. "_" .. mat .. " 2",
recipe = {
{"",mod .. ":" .. mat,""},
{"default:stick","default:stick","default:stick"},
{"",mod .. ":" .. mat,""}
},
}) -- minetest.register_craft
-- Recipe full
if(burn > 0) then
minetest.register_craft({
type = "fuel",
recipe = barchair.modname .. ":bar_front_" .. mod .. "_" .. mat,
burntime = burn + 2,
}) -- minetest.register_craft
end -- if(burn
-- Bar Corner left
minetest.register_node(":" .. barchair.modname .. ":bar_corner_left_" .. mod .. "_" .. mat, {
description = S("Bar corner left ") .. mod .. "_" .. mat,
tiles = minetest.registered_nodes[mod .. ":" .. mat].tiles,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.1875, 0.5, 0.5, -0.0625}, -- Front
{-0.5, 0.375, -0.5, 0.5, 0.5, -0.0625}, -- Top
{-0.4375, -0.5, -0.0625, -0.375, 0.5, -0}, -- Deco_1
{-0.1875, -0.5, -0.0625, -0.125, 0.5, -0}, -- Deco_2
{0.0625, -0.5, -0.0625, 0.125, 0.5, -0}, -- Deco_3
{0.3125, -0.5, -0.0625, 0.375, 0.5, -0}, -- Deco_4
{-0.5, -0.5, -0.5, -0.375, 0.5, -0.125}, -- Side_r
}
}, -- node_box
on_place = minetest.rotate_node,
}) -- minetest.register_node
-- Recipe
minetest.register_craft({
output = barchair.modname .. ":bar_corner_left_" .. mod .. "_" .. mat .. " 2",
recipe = {
{mod .. ":" .. mat,"",""},
{"default:stick","default:stick","default:stick"},
{mod .. ":" .. mat, "",""}
},
}) -- minetest.register_craft
-- Recipe full
if(burn > 0) then
minetest.register_craft({
type = "fuel",
recipe = barchair.modname .. ":bar_corner_left_" .. mod .. "_" .. mat,
burntime = burn + 2,
}) -- minetest.register_craft
end -- if(burn
-- Bar Corner right
minetest.register_node(":" .. barchair.modname .. ":bar_corner_right_" .. mod .. "_" .. mat, {
description = S("Bar corner right ") .. mod .. "_" .. mat,
tiles = minetest.registered_nodes[mod .. ":" .. mat].tiles,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.0625, 0.5, 0.5, 0.1875}, -- Front
{-0.5, 0.375, 0.0625, 0.5, 0.5, 0.5}, -- Top
{-0.4375, -0.5, 0, -0.375, 0.5, 0.0625}, -- Deco_1
{-0.1875, -0.5, 0, -0.125, 0.5, 0.0625}, -- Deco_2
{0.0625, -0.5, 0, 0.125, 0.5, 0.0625}, -- Deco_3
{0.3125, -0.5, 0, 0.375, 0.5, 0.0625}, -- Deco_4
{-0.5, -0.5, 0.125, -0.375, 0.5, 0.5}, -- Side_r
}
}, -- node_box
on_place = minetest.rotate_node,
}) -- minetest.register_node
-- Recipe
minetest.register_craft({
output = barchair.modname .. ":bar_corner_right_" .. mod .. "_" .. mat .. " 2",
recipe = {
{"", "", mod .. ":" .. mat},
{"default:stick","default:stick","default:stick"},
{"", "", mod .. ":" .. mat}
},
}) -- minetest.register_craft
-- Recipe full
if(burn > 0) then
minetest.register_craft({
type = "fuel",
recipe = barchair.modname .. ":bar_corner_right_" .. mod .. "_" .. mat,
burntime = burn + 2,
}) -- minetest.register_craft
end -- if(burn
-- Bar Side
minetest.register_node(":" .. barchair.modname .. ":bar_side_" .. mod .. "_" .. mat, {
description = S("Bar side ") .. mod .. "_" .. mat,
tiles = minetest.registered_nodes[mod .. ":" .. mat].tiles,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.4375, 0.5, 0.5, -0.3125}, -- Front
{-0.5, 0.375, -0.5, 0.5, 0.5, -0.0625}, -- Top
{0.375, -0.5, -0.5, 0.4375, 0.5, -0.4375}, -- Deco_1
{0.0625, -0.5, -0.5, 0.125, 0.5, -0.4375}, -- Deco_2
{-0.125, -0.5, -0.5, -0.0625, 0.5, -0.4375}, -- Deco_3
{-0.375, -0.5, -0.5, -0.3125, 0.5, -0.4375}, -- Deco_4
}
}, -- node_box
on_place = minetest.rotate_node,
}) -- minetest.register_node
-- Recipe
minetest.register_craft({
output = barchair.modname .. ":bar_side_" .. mod .. "_" .. mat .. " 2",
recipe = {
{"","default:stick",""},
{mod .. ":" .. mat,"default:stick",mod .. ":" .. mat},
{"","default:stick",""}
},
}) -- minetest.register_craft
-- Recipe full
if(burn > 0) then
minetest.register_craft({
type = "fuel",
recipe = barchair.modname .. ":bar_side_" .. mod .. "_" .. mat,
burntime = burn + 2,
}) -- minetest.register_craft
end -- if(burn
minetest.log("info", "[MOD] Barchairs: " .. mod .. ":" .. mat .. " registered.")
else
minetest.log("warning", "[MOD] Barchairs: " .. mod .. ":" .. mat .. " not found to register.")
end -- if(minetest.registered_nodes
end -- function barchair.register_barchair(
local register = barchair.register_barchair
for _,kind in pairs(material) do
mod = kind[1] -- Modname
mat = kind[2] -- Materialname (for the Textur)
burn = kind[3] -- Burnvalue > 0 = burnable
-- print( mod, mat, burn)
register(mod, mat, burn)
end -- for
barchair.register_moretrees = minetest.settings:get("barchairs.register_moretrees") or false
barchair.register_moreblocks = minetest.settings:get("barchairs.register_moreblocks") or false
barchair.register_cool_trees = minetest.settings:get("barchairs.register_cool_trees") or false
if (barchair.register_moretrees) then
dofile("moretrees.lua")
minetest.log("info", "[MOD] Barchairs: moretrees registered.")
end
if (barchair.register_moreblocks) then
dofile("moreblocks.lua")
minetest.log("info", "[MOD] Barchairs: moreblocks registered.")
end
if (barchair.register_cool_trees) then
dofile("")
minetest.log("info", "[MOD] Barchairs: cool_trees registered.")
end
print("[MOD]" .. barchair.modname .. " Version " .. barchair.version .. "." .. barchair.revision .. " successfully loaded.")