Skip to content
Snippets Groups Projects
Commit 5559031a authored by kilbith's avatar kilbith
Browse files

Init

parents
No related branches found
No related tags found
No related merge requests found
Showing with 819 additions and 0 deletions
This work is licensed under the Creative Commons Attribution-ShareAlike
4.0 International License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
\ No newline at end of file
## X-Decor ##
#### Minimal decoration mod for Minetest that aims to be simple and light. ####
#### It provides just the essential made of cute pixels and cubes. ####
### Credits ###
#### Textures : Gambit, VanessaE, kilbith. ####
#### Code : VanessaE, t4im, kilbith. ####
![Preview](http://i.imgur.com/teTQM6V.png)
xdecor.register("moonbrick", {
description = "Moonbrick",
tiles = {"xdecor_moonbrick.png"},
groups = {snappy=3},
sounds = default.node_sound_stone_defaults()
})
xdecor.register("wood_tile", {
description = "Wood tile",
tiles = {"xdecor_wood_tile.png"},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults()
})
xdecor.register("coalstone_tile", {
description = "Coalstone tile",
tiles = {"xdecor_coalstone_tile.png"},
groups = {snappy=3},
sounds = default.node_sound_stone_defaults()
})
fence_material = {"brass", "wrought_iron"}
for _, m in ipairs(fence_material) do
xdecor.register("fence_"..m, {
description = "Fence ("..m..")",
drawtype = "fencelike",
tiles = {"xdecor_"..m..".png"},
inventory_image = "default_fence_overlay.png^xdecor_"..m..".png^default_fence_overlay.png^[makealpha:255,126,126",
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
})
end
minetest.register_craft({
output = "xdecor:barrel",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"default:iron_lump", "", "default:iron_lump"},
{"group:wood", "group:wood", "group:wood"}
}
})
minetest.register_craftitem("xdecor:brass_ingot", {
description = "Brass ingot",
inventory_image = "xdecor_brass_ingot.png",
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:brass_ingot",
recipe = {"default:copper_ingot", "moreores:tin_ingot"}
})
minetest.register_craft({
output = "xdecor:cabinet",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"doors:trapdoor", "", "doors:trapdoor"},
{"group:wood", "group:wood", "group:wood"}
}
})
minetest.register_craft({
output = "xdecor:cabinet_half 2",
recipe = { {"xdecor:cabinet"} }
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:candle 2",
recipe = {"default:torch", "farming:string"}
})
minetest.register_craft({
output = "xdecor:cardboard_box",
recipe = {
{"default:paper", "default:paper", "default:paper"},
{"default:paper", "default:paper", "default:paper"}
}
})
minetest.register_craft({
output = "xdecor:cauldron",
recipe = {
{"default:iron_lump", "", "default:iron_lump"},
{"default:iron_lump", "default:water_source", "default:iron_lump"},
{"default:iron_lump", "default:iron_lump", "default:iron_lump"}
}
})
minetest.register_craft({
output = "xdecor:chair 2",
recipe = {
{"group:wood", "", ""},
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "", "group:wood"}
}
})
minetest.register_craft({
output = "xdecor:coalstone_tile 8",
recipe = {
{"default:coalblock", "default:stone"},
{"default:stone", "default:coalblock"}
}
})
minetest.register_craft({
output = "xdecor:cushion 2",
recipe = {
{"wool:red", "wool:red", "wool:red"}
}
})
minetest.register_craft({
output = "xdecor:fence_brass 4",
recipe = {
{"xdecor:brass_ingot", "xdecor:brass_ingot", "xdecor:brass_ingot"},
{"xdecor:brass_ingot", "xdecor:brass_ingot", "xdecor:brass_ingot"}
}
})
minetest.register_craft({
output = "xdecor:fence_wrought_iron 4",
recipe = {
{"default:iron_lump", "default:iron_lump", "default:iron_lump"},
{"default:iron_lump", "default:iron_lump", "default:iron_lump"}
}
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:flint_steel",
recipe = {"default:obsidian_shard", "default:steel_ingot"}
})
minetest.register_craft({
output = "xdecor:frame",
recipe = {
{"group:stick", "group:stick", "group:stick"},
{"group:stick", "default:paper", "group:stick"},
{"group:stick", "group:stick", "group:stick"},
}
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:moonbrick",
recipe = {"default:brick", "default:stone"}
})
minetest.register_craft({
output = "xdecor:multishelf",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"xdecor:skull", "group:book", "group:vessel"},
{"group:wood", "group:wood", "group:wood"}
}
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:painting",
recipe = {"default:sign_wall", "dye:blue"}
})
minetest.register_craft({
output = "xdecor:plant_pot 2",
recipe = {
{"default:clay_lump", "", "default:clay_lump"},
{"default:clay_lump", "default:dirt", "default:clay_lump"},
{"default:clay_lump", "default:clay_lump", "default:clay_lump"}
}
})
minetest.register_craft({
output = "xdecor:rope 2",
recipe = {
{"farming:string"},
{"farming:string"},
{"farming:string"}
}
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:skull",
recipe = {"bones:bones"}
})
minetest.register_craft({
output = "xdecor:table 2",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "group:wood", ""},
{"", "group:wood", ""}
}
})
minetest.register_craft({
output = "xdecor:tv",
recipe = {
{"default:steel_ingot", "default:copper_ingot", "default:steel_ingot"},
{"default:steel_ingot", "default:glass", "default:steel_ingot"},
{"default:steel_ingot", "default:copper_ingot", "default:steel_ingot"}
}
})
minetest.register_craft({
output = "xdecor:workbench",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"screwdriver:screwdriver", "screwdriver:screwdriver", "screwdriver:screwdriver"},
{"group:wood", "group:wood", "group:wood"}
}
})
minetest.register_craft({
output = "xdecor:wood_tile 2",
recipe = {
{"group:wood", "group:wood"},
{"group:wood", "group:wood"}
}
})
default
moreblocks?
moreores?
xdecor.register("chair", {
description = "Chair",
tiles = {"xdecor_wood.png"},
sounds = default.node_sound_wood_defaults(),
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{-0.3125, -0.5, 0.1875, -0.1875, 0.5, 0.3125},
{0.1875, -0.5, 0.1875, 0.3125, 0.5, 0.3125},
{-0.1875, 0.025, 0.22, 0.1875, 0.45, 0.28},
{-0.3125, -0.5, -0.3125, -0.1875, -0.125, -0.1875},
{0.1875, -0.5, -0.3125, 0.3125, -0.125, -0.1875},
{-0.3125, -0.125, -0.3125, 0.3125, 0, 0.1875}
}
}
})
xdecor.register("cushion", {
description = "Cushion",
tiles = {"xdecor_cushion.png"},
groups = {snappy=3},
on_place = minetest.rotate_node,
node_box = {
type = "fixed",
fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5} }
}
})
local curtaincolors = {
{ "red", "#ad2323e0:175" },
{ "white", "#ffffffe0:175" }
}
for c in ipairs(curtaincolors) do
local color = curtaincolors[c][1]
local hue = curtaincolors[c][2]
local color_d = curtaincolors[c][1]
xdecor.register("curtain_"..color, {
description = "Curtain ("..color_d..")",
tiles = {"xdecor_curtain.png^[colorize:"..hue },
inventory_image = "xdecor_curtain_open.png^[colorize:"..hue,
drawtype = "signlike",
use_texture_alpha = true,
walkable = false,
groups = {dig_immediate=3},
paramtype2 = "wallmounted",
selection_box = {type = "wallmounted"},
on_rightclick = function(pos, node, clicker, itemstack)
local fdir = node.param2
minetest.set_node(pos, { name = "xdecor:curtain_open_"..color, param2 = fdir })
end
})
xdecor.register("curtain_open_"..color, {
tiles = { "xdecor_curtain_open.png^[colorize:"..hue },
drawtype = "signlike",
use_texture_alpha = true,
walkable = false,
groups = {dig_immediate=3, not_in_creative_inventory=1},
paramtype2 = "wallmounted",
selection_box = {type = "wallmounted"},
drop = "xdecor:curtain_"..color,
on_rightclick = function(pos, node, clicker, itemstack)
local fdir = node.param2
minetest.set_node(pos, { name = "xdecor:curtain_"..color, param2 = fdir })
end
})
minetest.register_craft({
output = "xdecor:curtain_"..color.." 4",
recipe = {
{"", "wool:"..color, ""},
{"", "wool:"..color, ""},
{"", "wool:"..color, ""}
}
})
end
xdecor.register("table", {
description = "Table",
tiles = {"xdecor_wood.png"},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.4, -0.5, 0.5, 0.5, 0.5},
{-0.15, -0.5, -0.15, 0.15, 0.4, 0.15}
}
}
})
xdecor.box = {
slab_y = function(height, shift) return { -0.5, -0.5+(shift or 0), -0.5, 0.5, -0.5+height+(shift or 0), 0.5 } end,
slab_z = function(depth) return { -0.5, -0.5, -0.5+depth, 0.5, 0.5, 0.5 } end,
bar_y = function(radius) return {-radius, -0.5, -radius, radius, 0.5, radius} end,
cuboid = function(radius_x, radius_y, radius_z) return {-radius_x, -radius_y, -radius_z, radius_x, radius_y, radius_z} end
}
xdecor.nodebox = {
regular = { type="regular" },
null = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } }
}
local mt = {}
mt.__index = function(table, key)
local ref = xdecor.box[key]
local ref_type = type(ref)
if ref_type == "function" then
return function(...)
return { type = "fixed", fixed = ref(...) }
end
elseif ref_type == "table" then
return { type = "fixed", fixed = ref }
elseif ref_type == "nil" then
error(key .. "could not be found among nodebox presets and functions")
end
error("unexpected datatype " .. tostring(type(ref)) .. " while looking for " .. key)
end
setmetatable(xdecor.nodebox, mt)
xdecor = xdecor or {}
local default_can_dig = function(pos,player)
local meta = minetest.get_meta(pos)
return meta:get_inventory():is_empty("main")
end
local fancy_gui = default.gui_bg..default.gui_bg_img..default.gui_slots
local default_inventory_size = 32
local default_inventory_formspecs = {
["8"]="size[8,6]"..fancy_gui..
"list[context;main;0,0;8,1;]"..
"list[current_player;main;0,2;8,4;]",
["16"]="size[8,7]"..fancy_gui..
"list[context;main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]",
["24"]="size[8,8]" ..fancy_gui..
"list[context;main;0,0;8,3;]"..
"list[current_player;main;0,4;8,4;]",
["32"]="size[8,9]" ..fancy_gui..
"list[context;main;0,0.3;8,4;]"..
"list[current_player;main;0,4.85;8,1;]"..
"list[current_player;main;0,6.08;8,3;8]"..
default.get_hotbar_bg(0,4.85),
}
local function get_formspec_by_size(size)
local formspec = default_inventory_formspecs[tostring(size)]
return formspec or default_inventory_formspecs
end
function xdecor.register(name, def)
def.drawtype = def.drawtype or (def.node_box and "nodebox")
def.paramtype = def.paramtype or "light"
def.paramtype2 = def.paramtype2 or "facedir"
local infotext = def.infotext
local inventory = def.inventory
def.inventory = nil
if inventory then
def.on_construct = def.on_construct or function(pos)
local meta = minetest.get_meta(pos)
if infotext then
meta:set_string("infotext", infotext)
end
local size = inventory.size or default_inventory_size
meta:get_inventory():set_size("main", size)
meta:set_string("formspec", inventory.formspec or get_formspec_by_size(size))
end
def.can_dig = def.can_dig or default_can_dig
def.on_metadata_inventory_move = def.on_metadata_inventory_move or function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", "%s moves stuff in %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos))
end
def.on_metadata_inventory_put = def.on_metadata_inventory_put or function(pos, listname, index, stack, player)
minetest.log("action", "%s moves stuff to %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos))
end
def.on_metadata_inventory_take = def.on_metadata_inventory_take or function(pos, listname, index, stack, player)
minetest.log("action", "%s takes stuff from %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos))
end
elseif infotext and not def.on_construct then
def.on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", infotext)
end
end
minetest.register_node("xdecor:" .. name, def)
end
init.lua 0 → 100644
xdecor = {}
modpath = minetest.get_modpath("xdecor")
dofile(modpath.."/handlers/nodeboxes.lua")
dofile(modpath.."/handlers/registration.lua")
dofile(modpath.."/building.lua")
dofile(modpath.."/crafts.lua")
dofile(modpath.."/itemframes.lua")
dofile(modpath.."/furniture.lua")
dofile(modpath.."/lighting.lua")
dofile(modpath.."/misc.lua")
dofile(modpath.."/storage.lua")
local tmp = {}
screwdriver = screwdriver or {}
minetest.register_entity("xdecor:f_item",{
hp_max = 1, visual="wielditem", visual_size={x=.33,y=.33},
collisionbox = {0, 0, 0, 0, 0, 0}, physical=false, textures={"air"},
on_activate = function(self, staticdata)
if tmp.nodename ~= nil and tmp.texture ~= nil then
self.nodename = tmp.nodename
tmp.nodename = nil
self.texture = tmp.texture
tmp.texture = nil
else
if staticdata ~= nil and staticdata ~= "" then
local data = staticdata:split(';')
if data and data[1] and data[2] then
self.nodename = data[1]
self.texture = data[2]
end
end
end
if self.texture ~= nil then
self.object:set_properties({textures={self.texture}})
end
end,
get_staticdata = function(self)
if self.nodename ~= nil and self.texture ~= nil then
return self.nodename .. ';' .. self.texture
end
return ""
end,
})
local remove_item = function(pos, node)
local objs = nil
objs = minetest.get_objects_inside_radius(pos, .5)
if objs then
for _, obj in ipairs(objs) do
if obj and obj:get_luaentity() and obj:get_luaentity().name == "xdecor:f_item" then
obj:remove()
end
end
end
end
local facedir = {}
facedir[0] = {x=0, y=0, z=1}
facedir[1] = {x=1, y=0, z=0}
facedir[2] = {x=0, y=0, z=-1}
facedir[3] = {x=-1, y=0, z=0}
local update_item = function(pos, node)
remove_item(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("item") ~= "" then
local posad = facedir[node.param2]
if not posad then return end
pos.x = pos.x + posad.x*6.5/16
pos.y = pos.y + posad.y*6.5/16
pos.z = pos.z + posad.z*6.5/16
tmp.nodename = node.name
tmp.texture = ItemStack(meta:get_string("item")):get_name()
local e = minetest.add_entity(pos, "xdecor:f_item")
local yaw = math.pi*2 - node.param2 * math.pi/2
e:setyaw(yaw)
end
end
local drop_item = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("item") ~= "" then
minetest.add_item(pos, meta:get_string("item"))
meta:set_string("item", "")
end
remove_item(pos, node)
end
xdecor.register("frame", {
description = "Item frame",
node_box = { type = "fixed", fixed = {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5} },
tiles = {"xdecor_frame.png"},
inventory_image = "xdecor_frame.png",
groups = {snappy=3},
on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("infotext", "Item frame (owned by "..placer:get_player_name()..")")
end,
on_rightclick = function(pos, node, clicker, itemstack)
if not itemstack then return end
local meta = minetest.get_meta(pos)
if clicker:get_player_name() == meta:get_string("owner") then
drop_item(pos, node)
local s = itemstack:take_item()
meta:set_string("item", s:to_string())
update_item(pos, node)
end
return itemstack
end,
on_punch = function(pos, node, puncher)
local meta = minetest.get_meta(pos)
if puncher:get_player_name() == meta:get_string("owner") then
drop_item(pos, node)
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
return player:get_player_name() == meta:get_string("owner")
end,
after_destruct = remove_item,
})
minetest.register_abm({
nodenames = {"xdecor:frame"},
interval = 15,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
if #minetest.get_objects_inside_radius(pos, 0.5) > 0 then return end
update_item(pos, node)
end
})
xdecor.register("candle", {
description = "Candle",
walkable = false,
tiles = {
{ name = "xdecor_candle_floor.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
}
},
{ name = "xdecor_candle_wall.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
}
}
},
selection_box = {
type = "wallmounted",
wall_bottom = {-0.25, -0.5, -0.25, 0.25, 0.1, 0.25},
wall_side = {-0.5, -0.35, -0.15, -0.15, 0.4, 0.15}
},
inventory_image = "xdecor_candle_inv.png",
drawtype = "torchlike",
paramtype2 = "wallmounted",
legacy_wallmounted = true,
light_source = 12,
groups = {dig_immediate=3, attached_node=1}
})
xdecor.register("fire", {
description = "Fake fire",
walkable = false,
tiles = { {name="xdecor_fire_anim.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1.5}} },
drawtype = "plantlike",
light_source = 14,
damage_per_second = 2,
drop = "",
groups = {dig_immediate=3, not_in_creative_inventory=1}
})
misc.lua 0 → 100644
xdecor.register("cauldron", {
description = "Cauldron",
groups = {snappy=1},
tiles = {
{
name="xdecor_cauldron_top_anim.png",
animation={type="vertical_frames",
aspect_w=16, aspect_h=16, length=3.0}
},
"xdecor_cauldron_sides.png"
}
})
minetest.register_tool("xdecor:flint_steel", {
description = "Flint and steel",
inventory_image = "xdecor_flint_steel.png",
stack_max = 1,
tool_capabilities = {
full_punch_interval = 1.0, max_drop_level = 0,
groupcaps = {flamable = {uses=65, maxlevel=1}}
},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" and minetest.get_node(pointed_thing.above).name == "air" then
if not minetest.is_protected(pointed_thing.above, user:get_player_name()) then
minetest.set_node(pointed_thing.above, {name="xdecor:fire"})
else
minetest.chat_send_player(user:get_player_name(), "This area is protected!")
end
else return end
itemstack:add_wear(65535/65)
return itemstack
end
})
flowers_type = {"dandelion_white", "dandelion_yellow", "geranium", "rose", "tulip", "viola"}
for _, f in ipairs(flowers_type) do
xdecor.register("potted_"..f, {
description = "Potted flowers ("..f..")",
walkable = false,
tiles = {"xdecor_"..f.."_pot.png"},
inventory_image = "xdecor_"..f.."_pot.png",
drawtype = "plantlike",
groups = {dig_immediate=3},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_craft({
type = "shapeless",
output = "xdecor:potted_"..f.." 2",
recipe = {"flowers:"..f, "xdecor:plant_pot"}
})
end
xdecor.register("painting", {
description = "Painting",
drawtype = "signlike",
paramtype2 = "wallmounted",
legacy_wallmounted = true,
selection_box = {type = "wallmounted"},
tiles = {"xdecor_painting.png"},
inventory_image = "xdecor_painting.png",
groups = {dig_immediate=3, attached_node=1},
sounds = default.node_sound_wood_defaults()
})
xdecor.register("plant_pot", {
description = "Plant pot",
tiles = {"xdecor_plant_pot_top.png", "xdecor_plant_pot_sides.png"},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults()
})
local rope_sbox = {
type = "fixed",
fixed = { -0.15, -0.5, -0.15, 0.15, 0.5, 0.15 }
}
xdecor.register("rope", {
description = "Hanging rope",
walkable = false,
climbable = true,
tiles = {"xdecor_rope.png"},
inventory_image = "xdecor_rope_inv.png",
drawtype = "plantlike",
groups = {dig_immediate=3},
selection_box = rope_sbox
})
local skull_sbox = {
type = "fixed",
fixed = { -0.3, -0.5, -0.3, 0.3, 0.25, 0.3 }
}
xdecor.register("skull", {
description = "Skull head",
walkable = false,
tiles = {"xdecor_skull.png"},
inventory_image = "xdecor_skull.png",
drawtype = "torchlike",
groups = {dig_immediate=3, attached_node=1},
selection_box = skull_sbox
})
xdecor.register("tv", {
description = "Television",
tiles = {
"xdecor_television_top.png",
"xdecor_television_left.png^[transformR90",
"xdecor_television_left.png^[transformFX",
"xdecor_television_left.png",
"xdecor_television_back.png",
{ name="xdecor_television_front_animated.png",
animation = {
type="vertical_frames",
aspect_w=16,
aspect_h=16,
length=80.0 }
}
},
light_source = 11,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
})
xdecor.register("barrel", {
description = "Barrel",
tiles = {"xdecor_barrel_top.png", "xdecor_barrel_sides.png"},
groups = {snappy=3},
inventory = {size=24},
infotext = "Barrel",
sounds = default.node_sound_wood_defaults()
})
xdecor.register("cardboard_box", {
description = "Cardboard box",
tiles = {"xdecor_cardbox_top.png", "xdecor_cardbox_top.png", "xdecor_cardbox_sides.png"},
node_box = {
type = "fixed",
fixed = { {-0.3125, -0.5, -0.3125, 0.3125, 0, 0.3125} }
},
groups = {snappy=3},
inventory = {size=8}
})
xdecor.register("cabinet", {
description = "Cabinet",
tiles = {"default_wood.png", "xdecor_cabinet_front.png"},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
infotext = "Cabinet",
inventory = {size=24}
})
xdecor.register("cabinet_half", {
description = "Cabinet half",
tiles = {"default_wood.png", "xdecor_cabinet_half_front.png"},
node_box = {
type = "fixed",
fixed = { {-0.5, 0, -0.5, 0.5, 0.5, 0.5} }
},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
infotext = "Cabinet (half)",
inventory = {size=8}
})
xdecor.register("multishelf", {
description = "Multishelf",
tiles = {"default_wood.png", "xdecor_multishelf.png"},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
infotext = "Multishelf",
inventory = {size=24}
})
xdecor.register("workbench", {
description = "Work table",
tiles = {
"xdecor_workbench_top.png",
"xdecor_workbench_top.png",
"xdecor_workbench_sides.png",
"xdecor_workbench_sides.png",
"xdecor_workbench_front.png",
"xdecor_workbench_front.png",
},
groups = {snappy=3},
inventory = {size=24},
infotext = "Work bench",
sounds = default.node_sound_wood_defaults()
})
textures/xdecor_barrel_sides.png

255 B

textures/xdecor_barrel_top.png

271 B

textures/xdecor_brass.png

199 B

textures/xdecor_brass_ingot.png

242 B

textures/xdecor_cabinet_front.png

215 B

textures/xdecor_cabinet_half_front.png

188 B

textures/xdecor_candle_floor.png

202 B

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment