From 08c24a85ad5cedd770fe12a79cb34987cd417b82 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 21 Dec 2021 19:03:39 +0100 Subject: [PATCH] Add minified xdecor mod --- mods/xdecor/.gitignore | 22 ++ mods/xdecor/.luacheckrc | 14 + mods/xdecor/LICENSE | 41 +++ mods/xdecor/README.md | 17 ++ mods/xdecor/handlers/helpers.lua | 60 ++++ mods/xdecor/handlers/nodeboxes.lua | 67 +++++ mods/xdecor/handlers/registration.lua | 137 +++++++++ mods/xdecor/init.lua | 23 ++ mods/xdecor/locale/template.txt | 154 ++++++++++ mods/xdecor/locale/xdecor.de.tr | 152 ++++++++++ mods/xdecor/locale/xdecor.fr.tr | 154 ++++++++++ mods/xdecor/locale/xdecor.it.tr | 154 ++++++++++ mods/xdecor/mod.conf | 5 + mods/xdecor/src/nodes.lua | 278 ++++++++++++++++++ mods/xdecor/src/rope.lua | 16 + mods/xdecor/textures/xdecor_baricade.png | Bin 0 -> 258 bytes mods/xdecor/textures/xdecor_barrel_sides.png | Bin 0 -> 262 bytes mods/xdecor/textures/xdecor_barrel_top.png | Bin 0 -> 296 bytes mods/xdecor/textures/xdecor_cabinet_front.png | Bin 0 -> 247 bytes mods/xdecor/textures/xdecor_cabinet_sides.png | Bin 0 -> 245 bytes mods/xdecor/textures/xdecor_candle_floor.png | Bin 0 -> 202 bytes .../xdecor/textures/xdecor_candle_hanging.png | Bin 0 -> 15657 bytes mods/xdecor/textures/xdecor_candle_inv.png | Bin 0 -> 177 bytes mods/xdecor/textures/xdecor_candle_wall.png | Bin 0 -> 206 bytes mods/xdecor/textures/xdecor_candle_wield.png | Bin 0 -> 174 bytes mods/xdecor/textures/xdecor_chainlink.png | Bin 0 -> 221 bytes mods/xdecor/textures/xdecor_cobweb.png | Bin 0 -> 209 bytes mods/xdecor/textures/xdecor_cushion.png | Bin 0 -> 374 bytes .../textures/xdecor_dandelion_white_pot.png | Bin 0 -> 349 bytes .../textures/xdecor_dandelion_yellow_pot.png | Bin 0 -> 339 bytes mods/xdecor/textures/xdecor_empty_shelf.png | Bin 0 -> 363 bytes mods/xdecor/textures/xdecor_geranium_pot.png | Bin 0 -> 382 bytes .../textures/xdecor_half_cabinet_front.png | Bin 0 -> 225 bytes .../textures/xdecor_half_cabinet_sides.png | Bin 0 -> 207 bytes mods/xdecor/textures/xdecor_iron_lightbox.png | Bin 0 -> 301 bytes mods/xdecor/textures/xdecor_lantern.png | Bin 0 -> 231 bytes mods/xdecor/textures/xdecor_lantern_inv.png | Bin 0 -> 191 bytes mods/xdecor/textures/xdecor_multishelf.png | Bin 0 -> 503 bytes mods/xdecor/textures/xdecor_rope.png | Bin 0 -> 185 bytes mods/xdecor/textures/xdecor_rope_inv.png | Bin 0 -> 187 bytes mods/xdecor/textures/xdecor_rope_wield.png | Bin 0 -> 197 bytes mods/xdecor/textures/xdecor_rose_pot.png | Bin 0 -> 339 bytes mods/xdecor/textures/xdecor_rusty_bar.png | Bin 0 -> 194 bytes mods/xdecor/textures/xdecor_tulip_pot.png | Bin 0 -> 356 bytes mods/xdecor/textures/xdecor_viola_pot.png | Bin 0 -> 333 bytes mods/xdecor/textures/xdecor_wood.png | Bin 0 -> 235 bytes mods/xdecor/textures/xdecor_wood_frame.png | Bin 0 -> 271 bytes mods/xdecor/textures/xdecor_wood_tile.png | Bin 0 -> 364 bytes .../textures/xdecor_wooden2_lightbox.png | Bin 0 -> 15686 bytes .../textures/xdecor_wooden_lightbox.png | Bin 0 -> 262 bytes .../textures/xdecor_woodframed_glass.png | Bin 0 -> 270 bytes .../xdecor_woodframed_glass_detail.png | Bin 0 -> 201 bytes 52 files changed, 1294 insertions(+) create mode 100644 mods/xdecor/.gitignore create mode 100644 mods/xdecor/.luacheckrc create mode 100644 mods/xdecor/LICENSE create mode 100644 mods/xdecor/README.md create mode 100644 mods/xdecor/handlers/helpers.lua create mode 100644 mods/xdecor/handlers/nodeboxes.lua create mode 100644 mods/xdecor/handlers/registration.lua create mode 100644 mods/xdecor/init.lua create mode 100644 mods/xdecor/locale/template.txt create mode 100644 mods/xdecor/locale/xdecor.de.tr create mode 100644 mods/xdecor/locale/xdecor.fr.tr create mode 100644 mods/xdecor/locale/xdecor.it.tr create mode 100644 mods/xdecor/mod.conf create mode 100644 mods/xdecor/src/nodes.lua create mode 100644 mods/xdecor/src/rope.lua create mode 100644 mods/xdecor/textures/xdecor_baricade.png create mode 100644 mods/xdecor/textures/xdecor_barrel_sides.png create mode 100644 mods/xdecor/textures/xdecor_barrel_top.png create mode 100644 mods/xdecor/textures/xdecor_cabinet_front.png create mode 100644 mods/xdecor/textures/xdecor_cabinet_sides.png create mode 100644 mods/xdecor/textures/xdecor_candle_floor.png create mode 100644 mods/xdecor/textures/xdecor_candle_hanging.png create mode 100644 mods/xdecor/textures/xdecor_candle_inv.png create mode 100644 mods/xdecor/textures/xdecor_candle_wall.png create mode 100644 mods/xdecor/textures/xdecor_candle_wield.png create mode 100644 mods/xdecor/textures/xdecor_chainlink.png create mode 100644 mods/xdecor/textures/xdecor_cobweb.png create mode 100644 mods/xdecor/textures/xdecor_cushion.png create mode 100644 mods/xdecor/textures/xdecor_dandelion_white_pot.png create mode 100644 mods/xdecor/textures/xdecor_dandelion_yellow_pot.png create mode 100644 mods/xdecor/textures/xdecor_empty_shelf.png create mode 100644 mods/xdecor/textures/xdecor_geranium_pot.png create mode 100644 mods/xdecor/textures/xdecor_half_cabinet_front.png create mode 100644 mods/xdecor/textures/xdecor_half_cabinet_sides.png create mode 100644 mods/xdecor/textures/xdecor_iron_lightbox.png create mode 100644 mods/xdecor/textures/xdecor_lantern.png create mode 100644 mods/xdecor/textures/xdecor_lantern_inv.png create mode 100644 mods/xdecor/textures/xdecor_multishelf.png create mode 100644 mods/xdecor/textures/xdecor_rope.png create mode 100644 mods/xdecor/textures/xdecor_rope_inv.png create mode 100644 mods/xdecor/textures/xdecor_rope_wield.png create mode 100644 mods/xdecor/textures/xdecor_rose_pot.png create mode 100644 mods/xdecor/textures/xdecor_rusty_bar.png create mode 100644 mods/xdecor/textures/xdecor_tulip_pot.png create mode 100644 mods/xdecor/textures/xdecor_viola_pot.png create mode 100644 mods/xdecor/textures/xdecor_wood.png create mode 100644 mods/xdecor/textures/xdecor_wood_frame.png create mode 100644 mods/xdecor/textures/xdecor_wood_tile.png create mode 100644 mods/xdecor/textures/xdecor_wooden2_lightbox.png create mode 100644 mods/xdecor/textures/xdecor_wooden_lightbox.png create mode 100644 mods/xdecor/textures/xdecor_woodframed_glass.png create mode 100644 mods/xdecor/textures/xdecor_woodframed_glass_detail.png diff --git a/mods/xdecor/.gitignore b/mods/xdecor/.gitignore new file mode 100644 index 0000000..ef02689 --- /dev/null +++ b/mods/xdecor/.gitignore @@ -0,0 +1,22 @@ +## Files related to minetest development cycle +/*.patch +# GNU Patch reject file +*.rej + +## Editors and Development environments +*~ +*.swp +*.bak* +*.orig +# Vim +*.vim +# Kate +.*.kate-swp +.swp.* +# Eclipse (LDT) +.project +.settings/ +.buildpath +.metadata +# Idea IDE +.idea/* diff --git a/mods/xdecor/.luacheckrc b/mods/xdecor/.luacheckrc new file mode 100644 index 0000000..8cdd8c3 --- /dev/null +++ b/mods/xdecor/.luacheckrc @@ -0,0 +1,14 @@ +allow_defined_top = true + +read_globals = { + "minetest", + "vector", "ItemStack", + "default", + "stairs", "doors", "xpanes", + "xdecor", "xbg", + table = {fields = {"copy"}}, + string = {fields = {"split"}}, + "unpack", + "stairsplus", + "mesecon" +} diff --git a/mods/xdecor/LICENSE b/mods/xdecor/LICENSE new file mode 100644 index 0000000..938b40e --- /dev/null +++ b/mods/xdecor/LICENSE @@ -0,0 +1,41 @@ +┌──────────────────────────────────────────────────────────────────────┐ +│ Copyright (c) 2015-2021 kilbith │ +│ │ +│ Code: BSD │ +│ Textures: WTFPL (credits: Gambit, kilbith, Cisoun) │ +│ Textures (radio, speaker, hanging candle, rooster) by │ +│ gigomaf (CC BY-NC 3.0) │ +│ Sounds: │ +│ - xdecor_boiling_water.ogg - by Audionautics - CC BY-SA │ +│ freesound.org/people/Audionautics/sounds/133901/ │ +│ - xdecor_enchanting.ogg - by Timbre - CC BY-SA-NC │ +│ freesound.org/people/Timbre/sounds/221683/ │ +│ - xdecor_bouncy.ogg - by Blender Foundation - CC BY 3.0 │ +│ opengameart.org/content/funny-comic-cartoon-bounce-sound │ +└──────────────────────────────────────────────────────────────────────┘ + + +Copyright (c) 1998, Regents of the University of California +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of the University of California, Berkeley nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/mods/xdecor/README.md b/mods/xdecor/README.md new file mode 100644 index 0000000..05340a2 --- /dev/null +++ b/mods/xdecor/README.md @@ -0,0 +1,17 @@ +## X-Decor ## + +[![ContentDB](https://content.minetest.net/packages/jp/xdecor/shields/downloads/)](https://content.minetest.net/packages/jp/xdecor/) + +A decoration mod meant to be simple and well-featured. +It adds a bunch of cute cubes, various mechanisms and stuff for [cutting](https://forum.minetest.net/viewtopic.php?f=11&t=14085), [enchanting](https://forum.minetest.net/viewtopic.php?f=11&t=14087), cooking, etc. +This mod is a lightweight alternative to HomeDecor and MoreBlocks. + +### Requirements ### +This mod requires at least version 5.1 of Minetest. + +### Credits ### + +Special thanks to Gambit for the textures from the PixelBOX pack for Minetest. +Thanks to all contributors who keep this mod alive. + +![Preview](http://i.imgur.com/AVoyCQy.png) diff --git a/mods/xdecor/handlers/helpers.lua b/mods/xdecor/handlers/helpers.lua new file mode 100644 index 0000000..dc14b24 --- /dev/null +++ b/mods/xdecor/handlers/helpers.lua @@ -0,0 +1,60 @@ +-- Returns the greatest numeric key in a table. +function xdecor.maxn(T) + local n = 0 + for k in pairs(T) do + if k > n then + n = k + end + end + + return n +end + +-- Returns the length of an hash table. +function xdecor.tablelen(T) + local n = 0 + + for _ in pairs(T) do + n = n + 1 + end + + return n +end + +-- Deep copy of a table. Borrowed from mesecons mod (https://github.com/Jeija/minetest-mod-mesecons). +function xdecor.tablecopy(T) + if type(T) ~= "table" then + return T -- No need to copy. + end + + local new = {} + + for k, v in pairs(T) do + if type(v) == "table" then + new[k] = xdecor.tablecopy(v) + else + new[k] = v + end + end + + return new +end + +function xdecor.stairs_valid_def(def) + return (def.drawtype == "normal" or def.drawtype:sub(1,5) == "glass") and + (def.groups.cracky or def.groups.choppy) and + not def.on_construct and + not def.after_place_node and + not def.on_rightclick and + not def.on_blast and + not def.allow_metadata_inventory_take and + not (def.groups.not_in_creative_inventory == 1) and + not (def.groups.not_cuttable == 1) and + not def.groups.wool and + (def.tiles and type(def.tiles[1]) == "string" and not + def.tiles[1]:find("default_mineral")) and + not def.mesecons and + def.description and + def.description ~= "" and + def.light_source == 0 +end diff --git a/mods/xdecor/handlers/nodeboxes.lua b/mods/xdecor/handlers/nodeboxes.lua new file mode 100644 index 0000000..4a3d8ca --- /dev/null +++ b/mods/xdecor/handlers/nodeboxes.lua @@ -0,0 +1,67 @@ +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} + } +} + +xdecor.pixelbox = function(size, boxes) + local fixed = {} + for _, box in ipairs(boxes) do + -- `unpack` has been changed to `table.unpack` in newest Lua versions. + local x, y, z, w, h, l = unpack(box) + fixed[#fixed + 1] = { + (x / size) - 0.5, + (y / size) - 0.5, + (z / size) - 0.5, + ((x + w) / size) - 0.5, + ((y + h) / size) - 0.5, + ((z + l) / size) - 0.5 + } + end + + return {type = "fixed", fixed = fixed} +end + +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) diff --git a/mods/xdecor/handlers/registration.lua b/mods/xdecor/handlers/registration.lua new file mode 100644 index 0000000..7af75eb --- /dev/null +++ b/mods/xdecor/handlers/registration.lua @@ -0,0 +1,137 @@ +xbg = "" +local default_inventory_size = 32 + +local default_inventory_formspecs = { + ["8"] = [[ size[8,6] + list[context;main;0,0;8,1;] + list[current_player;main;0,2;8,4;] + listring[current_player;main] + listring[context;main] ]] .. + "", + + ["16"] = [[ size[8,7] + list[context;main;0,0;8,2;] + list[current_player;main;0,3;8,4;] + listring[current_player;main] + listring[context;main] ]] .. + "", + + ["24"] = [[ size[8,8] + list[context;main;0,0;8,3;] + list[current_player;main;0,4;8,4;] + listring[current_player;main] + listring[context;main]" ]] .. + "", + + ["32"] = [[ size[8,9] + 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] + listring[current_player;main] + listring[context;main] ]] .. + "" +} + +local function get_formspec_by_size(size) + local formspec = default_inventory_formspecs[tostring(size)] + return formspec or default_inventory_formspecs +end + +local default_can_dig = function(pos) + local inv = minetest.get_meta(pos):get_inventory() + return inv:is_empty("main") +end + +local function xdecor_stairs_alternative(nodename, def) + local mod, name = nodename:match("(.*):(.*)") + + for groupname, value in pairs(def.groups) do + if groupname ~= "cracky" and groupname ~= "choppy" and + groupname ~= "flammable" and groupname ~= "crumbly" and + groupname ~= "snappy" then + def.groups.groupname = nil + end + end + + if minetest.get_modpath("moreblocks") then + stairsplus:register_all( + mod, + name, + nodename, + { + description = def.description, + tiles = def.tiles, + groups = def.groups, + sounds = def.sounds, + } + ) + elseif minetest.get_modpath("stairs") then + stairs.register_stair_and_slab(name,nodename, + def.groups, + def.tiles, + ("%s Stair"):format(def.description), + ("%s Slab"):format(def.description), + def.sounds + ) + end + end + +function xdecor.register(name, def) + def.drawtype = def.drawtype or (def.mesh and "mesh") or (def.node_box and "nodebox") + def.sounds = def.sounds or lzr_sounds.node_sound_defaults() + + if not (def.drawtype == "normal" or def.drawtype == "signlike" or + def.drawtype == "plantlike" or def.drawtype == "glasslike_framed" or + def.drawtype == "glasslike_framed_optional") then + def.paramtype2 = def.paramtype2 or "facedir" + end + + if def.sunlight_propagates ~= false and + (def.drawtype == "plantlike" or def.drawtype == "torchlike" or + def.drawtype == "signlike" or def.drawtype == "fencelike") then + def.sunlight_propagates = true + end + + if not def.paramtype and + (def.light_source or def.sunlight_propagates or + def.drawtype == "nodebox" or def.drawtype == "mesh") then + def.paramtype = "light" + end + + 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 + local inv = meta:get_inventory() + + inv:set_size("main", size) + meta:set_string("formspec", + (inventory.formspec or get_formspec_by_size(size)) .. xbg) + end + + def.can_dig = def.can_dig or default_can_dig + + 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) + + local workbench = minetest.settings:get_bool("enable_xdecor_workbench") + + if workbench == false and + (minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs")) then + if xdecor.stairs_valid_def(def) then + xdecor_stairs_alternative("xdecor:"..name, def) + end + end +end diff --git a/mods/xdecor/init.lua b/mods/xdecor/init.lua new file mode 100644 index 0000000..7370118 --- /dev/null +++ b/mods/xdecor/init.lua @@ -0,0 +1,23 @@ +--local t = os.clock() + +xdecor = {} +local modpath = minetest.get_modpath("xdecor") + +dofile(modpath .. "/handlers/helpers.lua") +dofile(modpath .. "/handlers/nodeboxes.lua") +dofile(modpath .. "/handlers/registration.lua") + +dofile(modpath .. "/src/nodes.lua") + +local subpart = { + "rope", +} + +for _, name in ipairs(subpart) do + local enable = minetest.settings:get_bool("enable_xdecor_" .. name) + if enable or enable == nil then + dofile(modpath .. "/src/" .. name .. ".lua") + end +end + +--print(string.format("[xdecor] loaded in %.2f ms", (os.clock()-t)*1000)) diff --git a/mods/xdecor/locale/template.txt b/mods/xdecor/locale/template.txt new file mode 100644 index 0000000..17e37b4 --- /dev/null +++ b/mods/xdecor/locale/template.txt @@ -0,0 +1,154 @@ +# textdomain: xdecor + + +### chess.lua ### + +Black Bishop= +Black King= +Black Knight= +Black Pawn= +Black Queen= +Black Rook= +Chess= +Chess Board= +Dumb AI= +Multiplayer= +New game= +Select a mode:= +Singleplayer= +Someone else plays black pieces!= +Someone else plays white pieces!= +White Bishop= +White King= +White Knight= +White Pawn= +White Queen= +White Rook= + +You can't dig the chessboard, a game has been started. Reset it first if you're a current player, or dig it again in @1= + +You can't reset the chessboard, a game has been started. If you aren't a current player, try again in @1= + +check= + +### cooking.lua ### + +Bowl= +Bowl of soup= +Cauldron= +Cauldron (active) - Drop foods inside to make a soup= +Cauldron (active) - Use a bowl to eat the soup= +Cauldron (empty)= +Cauldron (idle)= +No room in your inventory to add a bowl of soup.= +No room in your inventory to add a bucket of water.= + +### enchanting.lua ### + +Axe= +Bronze= +Diamond= +Durability= +Efficiency= +Enchanted @1 @2 @3= +Enchantment Table= +Mese= +Pickaxe= +Sharpness= +Shovel= +Steel= +Sword= +Your tool digs faster= +Your tool last longer= +Your weapon inflicts more damages= + +### hive.lua ### + +Artificial Hive= +Bees are busy making honey…= +Honey= + +### itemframe.lua ### + +@1 (owned by @2)= +Item Frame= + +### mailbox.lua ### + +@1's Mailbox= +Last donators= +Mailbox= +Send your goods to@n@1= +The mailbox is full.= + +### mechanisms.lua ### + +Lever= +Stone Pressure Plate= +Wooden Pressure Plate= + +### nodes.lua ### + +Bamboo Frame= +Baricade= +Barrel= +Cactus Brick= +Candle= +Chainlink= +Chair= +Coal Stone Tile= +Cobweb= +Cushion= +Cushion Block= +Desert Stone Tile= +Empty Shelf= +Ender Chest= +Garden Stone Path= +Half Wooden Cabinet= +Hardened Clay= +Iron Light Box= +Ivy= +Japanese Door= +Lantern= +Moon Brick= +Multi Shelf= +Packed Ice= +Painting= +Potted Geranium= +Potted Rose= +Potted Tulip= +Potted Viola= +Potted White Dandelion= +Potted Yellow Dandelion= +Prison Door= +Red Curtain= +Runestone= +Rusty Iron Bars= +Rusty Prison Door= +Screen Door= +Slide Door= +Stone Tile= +Table= +Tatami= +Television= +Trampoline= +Wood Frame= +Wood Framed Glass= +Wooden Cabinet= +Wooden Light Box= +Wooden Tile= +Woodglass Door= + +### rope.lua ### + +Rope= + +### workbench.lua ### + +Back= +Crafting= +Cut= +Hammer= +Repair= +Storage= +Work Bench= diff --git a/mods/xdecor/locale/xdecor.de.tr b/mods/xdecor/locale/xdecor.de.tr new file mode 100644 index 0000000..4188623 --- /dev/null +++ b/mods/xdecor/locale/xdecor.de.tr @@ -0,0 +1,152 @@ +# textdomain: xdecor + + +### chess.lua ### + +Black Bishop=schwarzer Läufer +Black King=schwarter König +Black Knight=schwarzes Pferd +Black Pawn=schwarzer Bauer +Black Queen=schwarze Dame +Black Rook=schwarzer Turm +Chess=Schach +Chess Board=Schachbrett +Dumb AI=dumme KI +Multiplayer=Mehrspieler +New game=neues Spiel +Select a mode:=Wähle einen Modus: +Singleplayer=Einzelspieler +Someone else plays black pieces!=Jemand anderes spielt Schwarz! +Someone else plays white pieces!=Jemand anderes spielt Weiß! +White Bishop=weißer Läufer +White King=weißer König +White Knight=weißes Pferd +White Pawn=weißer Bauer +White Queen=weiße Dame +White Rook=weißer Turm +You can't dig the chessboard, a game has been started. Reset it first if you're a current player, or dig it again in @1=Das Schachbrett ist während eines Schachspieles nicht abbaubar. Setze das Spiel zurück, falls du ein Mitspieler bist oder versuche es in @1 erneut. +You can't reset the chessboard, a game has been started. If you aren't a current player, try again in @1=Das Schachbrett kann nicht zurückgesetzt werden, da ein Spiel im Gang ist. Versuche es in @1 erneut, falls du kein Mitspieler bist. + +check=Schach + +### cooking.lua ### + +Bowl=Schüssel +Bowl of soup=Suppenschüssel +Cauldron=Kessel +Cauldron (active) - Drop foods inside to make a soup=Kessel (aktiv) - Nahrungsmittel einwerfen, um Suppe zu machen. +Cauldron (active) - Use a bowl to eat the soup=Kessel (aktiv) - Benutze eine Schüssel, um die Suppe zu essen +Cauldron (empty)=Kessel (leer) +Cauldron (idle)=Kessel (untätig) +No room in your inventory to add a bowl of soup.=Zu wenig Platz im Inventar für eine Schüssel voll Suppe. +No room in your inventory to add a bucket of water.=Zu wenig Platz im Inventar für einen Eimer Wasser. + +### enchanting.lua ### + +Axe=axt +Bronze=Bronze +Diamond=Diamant +Durability=Haltbarkeit +Efficiency=Effizienz +Enchanted @1 @2 @3=verzauberte(s) @1@2 @3 +Enchantment Table=Zaubertisch +Mese=Mese +Pickaxe=Spitzhacke +Sharpness=Schärfe +Shovel=Schaufel +Steel=Eisen +Sword=Schwert +Your tool digs faster=Dein Werkzeug arbeitet schneller +Your tool last longer=Dein Werkzeug hält länger +Your weapon inflicts more damages=Deine Waffe erzeugt mehr Schaden + +### hive.lua ### + +Artificial Hive=künstlicher Bienenstock +Bees are busy making honey…=Bienen sind beschäftigt, Honig herzustellen. +Honey=Honig + +### itemframe.lua ### + +@1 (owned by @2)=@1 (gehört @2) +Item Frame=Objektrahmen + +### mailbox.lua ### + +@1's Mailbox=Briefkasten von @1 +Last donators=letzte Spender +Mailbox=Briefkasten +Send your goods to@n@1=Sende deine Waren an@n@1 +The mailbox is full.=Der Briefkasten ist voll. + +### mechanisms.lua ### + +Lever=Schalthebel +Stone Pressure Plate=steinerne Druckplatte +Wooden Pressure Plate=hölzerne Druckplatte + +### nodes.lua ### + +Bamboo Frame=Bambusgerüst +Baricade=Barrikade +Barrel=Fass +Cactus Brick=Kaktusstein +Candle=Kerze +Chainlink=Kettenvorhang +Chair=einfacher Stuhl +Coal Stone Tile=Kohle-Stein-Block +Cobweb=Spinnenwebe +Cushion=Sitzkissen +Cushion Block=Sitzkissenblock +Desert Stone Tile=Wüstensteinblock +Empty Shelf=leeres Regal +Ender Chest=Endertruhe +Garden Stone Path=Steingartenweg +Half Wooden Cabinet=halber Holzschrank +Hardened Clay=gehärteter Ton +Iron Light Box=eiseneingefasster Lichtblock +Ivy=Efeu +Japanese Door=japanische Tür +Lantern=Laterne +Moon Brick=Naturziegelwand +Multi Shelf=Mehrzweckregal +Packed Ice=Packeis +Painting=Gemälde +Potted Geranium=Geranien im Topf +Potted Rose=Rosen im Topf +Potted Tulip=Tulpen im Topf +Potted Viola=Veilchen im Topf +Potted White Dandelion=weißer Löwenzahn im Topf +Potted Yellow Dandelion=gelber Löwenzahn im Topf +Prison Door=Verliestür +Red Curtain=roter Vorhang +Runestone=Runensteinblock +Rusty Iron Bars=rostige Eisenstäbe +Rusty Prison Door=rostige Verliestür +Screen Door=französische Glastür +Slide Door=Schiebetür +Stone Tile=steinerner Block +Table=einfacher Tisch +Tatami=Tatamimatte +Television=Fernseher +Trampoline=Trampolin +Wood Frame=hölzerner Zierrahmen +Wood Framed Glass=holzeingefasstes Glas +Wooden Cabinet=Holzschrank +Wooden Light Box=holzeingefasster Lichtblock +Wooden Tile=hölzerner Dekorblock +Woodglass Door=Tür mit Lichtausschnitt + +### rope.lua ### + +Rope=Seil + +### workbench.lua ### + +Back=Zurück +Crafting=Fertigung +Cut=Zuschnitt +Hammer=Hämmerchen +Repair=Reparatur +Storage=Aufbewahrung +Work Bench=Werkbank diff --git a/mods/xdecor/locale/xdecor.fr.tr b/mods/xdecor/locale/xdecor.fr.tr new file mode 100644 index 0000000..51b3eea --- /dev/null +++ b/mods/xdecor/locale/xdecor.fr.tr @@ -0,0 +1,154 @@ +# textdomain: xdecor + + +### chess.lua ### + +Black Bishop=Fou noir +Black King=Roi noir +Black Knight=Cavalier noir +Black Pawn=Pion noir +Black Queen=Reine noire +Black Rook=Tour noire +Chess=Echecs +Chess Board=Echiquier +Dumb AI=IA stupide +Multiplayer=Multijoueur +New game=Nouvelle partie +Select a mode:=Sélectionnez un mode de jeu: +Singleplayer=Solo +Someone else plays black pieces!=Quelqu’un d’autre joue les pièces noires ! +Someone else plays white pieces!=Quelqu’un d’autre joue les pièces blanches ! +White Bishop=Fou blanc +White King=Roi blanc +White Knight=Cavalier blanc +White Pawn=Pion blanc +White Queen=Reine blanche +White Rook=Tour blanche + +You can't dig the chessboard, a game has been started. Reset it first if you're a current player, or dig it again in @1=Vous ne pouvez pas récupérer l’échiquier, une partie à été commencée. Remettez le à zéro si vous c’est votre tour de jouer, ou réessayez dans @1 + +You can't reset the chessboard, a game has been started. If you aren't a current player, try again in @1=Vous ne pouvez pas mettre à zéro l’échiquier, une partie a été commencée. Si ce n’est pas votre tour de jouer, réessayez dans @1 + +check=échec + +### cooking.lua ### + +Bowl=Bol +Bowl of soup=Bol de soupe +Cauldron=Chaudron +Cauldron (active) - Drop foods inside to make a soup=Chaudron (actif) - Placez des ingrédients à l’intérieur pour faire une soupe +Cauldron (active) - Use a bowl to eat the soup=Chaudron (actif) - Utilisez un bol pour boire la soupe +Cauldron (empty)=Chaudron (vide) +Cauldron (idle)=Chaudron (inactif) +No room in your inventory to add a bowl of soup.=Pas de place dans votre inventaire pour ajouter un bol de soupe. +No room in your inventory to add a bucket of water.=Pas de place dans votre inventaire pour ajouter un seau d’eau. + +### enchanting.lua ### + +Axe=Hache +Bronze=Bronze +Diamond=Diamant +Durability=Durabilité +Efficiency=Efficacité +Enchanted @1 @2 @3=@2 en @1 enchantée @3 +Enchantment Table=Table d’enchantements +Mese=Mese +Pickaxe=Pioche +Sharpness=Tranchant +Shovel=Pelle +Steel=Fer +Sword=Épée +Your tool digs faster=Votre outil creuse plus vite +Your tool last longer=Votre outil dure plus longtemps +Your weapon inflicts more damages=Votre arme inflige plus de dégâts + +### hive.lua ### + +Artificial Hive=Ruche artificielle +Bees are busy making honey…=Les abeilles sont occupées à fabriquer du miel… +Honey=Miel + +### itemframe.lua ### + +@1 (owned by @2)=@1 (propriété de @2) +Item Frame=Cadre + +### mailbox.lua ### + +@1's Mailbox=Boite aux lettres de @1 +Last donators=Derniers donateurs +Mailbox=Boite aux lettres +Send your goods to@n@1=Envoyer vos biens à@n@1 +The mailbox is full.=La boite aux lettres est pleine. + +### mechanisms.lua ### + +Lever=Levier +Stone Pressure Plate=Plaque de pression en pierre +Wooden Pressure Plate=Plaque de pression en bois + +### nodes.lua ### + +Bamboo Frame=Cadre en bambou +Baricade=Barricade +Barrel=Tonneau +Cactus Brick=Brique en cactus +Candle=Bougie +Chainlink=Maillon de chaîne +Chair=Chaise +Coal Stone Tile=Carreau en charbon et pierre +Cobweb=Toile d’araignée +Cushion=Coussin +Cushion Block=Bloc de coussin +Desert Stone Tile=Carreau en pierre du désert +Empty Shelf=Étagère vide +Ender Chest=Coffre de l’End +Garden Stone Path=Chemin de pierres de jardin +Half Wooden Cabinet=Demi meuble en bois +Hardened Clay=Argile durcie +Iron Light Box=Boite lumineuse en fer +Ivy=Lierre +Japanese Door=Porte japonaise +Lantern=Lanterne +Moon Brick=Brique lunaire +Multi Shelf=Étagères multiple +Packed Ice=Glace compactée +Painting=Tableau +Potted Geranium=Géranium en pot +Potted Rose=Rose en pot +Potted Tulip=Tulipe en pot +Potted Viola=Violette en pot +Potted White Dandelion=Pissenlit blanc en pot +Potted Yellow Dandelion=Pissenlit jaune en pot +Prison Door=Porte de prison +Red Curtain=Rideaux rouge +Runestone=Pierre runique +Rusty Iron Bars=Barreaux en fer rouillé +Rusty Prison Door=Barreaux de prison rouillés +Screen Door=Porte avec moustiquaire +Slide Door=Porte coulissante +Stone Tile=Carreau en pierre +Table=Table +Tatami=Tatami +Television=Télévision +Trampoline=Trampoline +Wood Frame=Cadre en bois +Wood Framed Glass=Verre encadré par du bois +Wooden Cabinet=Meuble en bois +Wooden Light Box=Boite lumineuse en bois +Wooden Tile=Carreau en bois +Woodglass Door=Porte vitrée + +### rope.lua ### + +Rope=Corde + +### workbench.lua ### + +Back=Retour +Crafting=Fabrication +Cut=Couper +Hammer=Marteau +Repair=Réparer +Storage=Stockage +Work Bench=Atelier diff --git a/mods/xdecor/locale/xdecor.it.tr b/mods/xdecor/locale/xdecor.it.tr new file mode 100644 index 0000000..4007620 --- /dev/null +++ b/mods/xdecor/locale/xdecor.it.tr @@ -0,0 +1,154 @@ +# textdomain: xdecor +# Author: Salvo 'LtWorf' Tomaselli + +### chess.lua ### + +Black Bishop=Alfiere nero +Black King=Re nero +Black Knight=Cavallo nero +Black Pawn=Pedone nero +Black Queen=Regina nera +Black Rook=Torre nera +Chess=Scacchi +Chess Board=Scacchiera +Dumb AI=AI stupida +Multiplayer=Multigiocatore +New game=Nuova partita +Select a mode:=Selezionare una modalità +Singleplayer=Singolo giocatore +Someone else plays black pieces!=Qualcun altro gioca con il nero! +Someone else plays white pieces!=Qualcun altro gioca con il bianco! +White Bishop=Alfiere bianco +White King=Re bianco +White Knight=Cavallo bianco +White Pawn=Pedone bianco +White Queen=Regina bianca +White Rook=Torre bianca + +You can't dig the chessboard, a game has been started. Reset it first if you're a current player, or dig it again in @1=Non si può scavare la scacchiera, una partita è in corso. Resettarla se si è uno dei giocatori, o riprovare in @1 + +You can't reset the chessboard, a game has been started. If you aren't a current player, try again in @1=Non si può resettare la partita, un gioco è in corso. Se non si è uno dei giocatori, riprovare in @1 + +check=scacco + +### cooking.lua ### + +Bowl=Ciotola +Bowl of soup=Ciotola di zuppa +Cauldron=Calderone +Cauldron (active) - Drop foods inside to make a soup=Calderone (attivo) - Mettere gli ingredienti all'interno per fare una zuppa. +Cauldron (active) - Use a bowl to eat the soup=Calderone (actif) - Utilizzare una ciotola per mangiare la zuppa +Cauldron (empty)=Calderone (vuoto) +Cauldron (idle)=Calderone (inattivo) +No room in your inventory to add a bowl of soup.=Non c'è spazio nell'inventario per aggiungere una ciotola di zuppa. +No room in your inventory to add a bucket of water.=Non c'è spazio nell'inventario per aggiungere un secchio di acqua. + +### enchanting.lua ### + +Axe=Ascia +Bronze=Bronzo +Diamond=Diamante +Durability=Durabilità +Efficiency=Efficacia +Enchanted @1 @2 @3=@2 su @1 incantesimo @3 +Enchantment Table=Tavolo per migliorie +Mese=Mese +Pickaxe=Piccone +Sharpness=Affilatezza +Shovel=Pala +Steel=Acciaio +Sword=Spada +Your tool digs faster=Il tuo utensile scava più rapidamente +Your tool last longer=Il tuo utensile dura di più +Your weapon inflicts more damages=La tua arma infligge più danno + +### hive.lua ### + +Artificial Hive=Favo artificiale +Bees are busy making honey…=Le api sono occupate a fare il miele… +Honey=Miele + +### itemframe.lua ### + +@1 (owned by @2)=@1 (proprietà di @2) +Item Frame=Teca + +### mailbox.lua ### + +@1's Mailbox=Cassetta delle lettere di @1 +Last donators=Ultimi donatori +Mailbox=Cassetta delle lettere +Send your goods to@n@1=Invia i tuoi item a@n@1 +The mailbox is full.=La cassetta delle lettere è piena + +### mechanisms.lua ### + +Lever=Leva +Stone Pressure Plate=Placca di pressione di pietra +Wooden Pressure Plate=Placca di pressione di legno + +### nodes.lua ### + +Bamboo Frame=Cornice di bambù +Baricade=Barricata +Barrel=Barile +Cactus Brick=Mattone di cactus +Candle=Candela +Chainlink=Cotta di maglia +Chair=Sedia +Coal Stone Tile=Mattonella di pietra di carbone +Cobweb=Ragnatela +Cushion=Cuscino +Cushion Block=Blocco di cuscini +Desert Stone Tile=Mattonella di pietra del deserto +Empty Shelf=Mensola vuota +Ender Chest=Baule ender +Garden Stone Path=Sentiero da giardino in pietra +Half Wooden Cabinet=Stipo di legno a metà +Hardened Clay=Argilla indurita +Iron Light Box=Scatola luminosa di ferro +Ivy=Edera +Japanese Door=Porta giapponese +Lantern=Lanterna +Moon Brick=Mattone lunare +Multi Shelf=Mensole +Packed Ice=Ghiaccio compatto +Painting=Dipinto +Potted Geranium=Geranio in vaso +Potted Rose=Rosa in vaso +Potted Tulip=Tulipano in vaso +Potted Viola=Violetta in vaso +Potted White Dandelion=Soffione bianco in vaso +Potted Yellow Dandelion=Soffione giallo in vaso +Prison Door=Porta di prigione +Red Curtain=Tenda rossa +Runestone=Pietra runica +Rusty Iron Bars=Sbarre di prigione arrugginite +Rusty Prison Door=Porta di prigione arrugginita +Screen Door=Porta a schermo +Slide Door=Porta scorrevole +Stone Tile=Mattonella di pietra +Table=Tavolo +Tatami=Tatami +Television=Televisione +Trampoline=Trampolino +Wood Frame=Cornice in legno +Wood Framed Glass=Cornice in legno con vetro +Wooden Cabinet=Stipo di legno +Wooden Light Box=Mattonella luminosa di legno +Wooden Tile=Mattonella di legno +Woodglass Door=Porta di vetro + +### rope.lua ### + +Rope=Corda + +### workbench.lua ### + +Back=Indietro +Crafting=Fabbricare +Cut=Tagliare +Hammer=Martello +Repair=Riparare +Storage=Conservare +Work Bench=Banco da lavoro diff --git a/mods/xdecor/mod.conf b/mods/xdecor/mod.conf new file mode 100644 index 0000000..06ec2ed --- /dev/null +++ b/mods/xdecor/mod.conf @@ -0,0 +1,5 @@ +name = xdecor +description = A decoration mod meant to be simple and well-featured. +depends = lzr_sounds +optional_depends = doors, stairs, xpanes +min_minetest_version = 5.1.0 diff --git a/mods/xdecor/src/nodes.lua b/mods/xdecor/src/nodes.lua new file mode 100644 index 0000000..c168857 --- /dev/null +++ b/mods/xdecor/src/nodes.lua @@ -0,0 +1,278 @@ +if not minetest.global_exists("screwdriver") then + screwdriver = {} +end +local S = minetest.get_translator("xdecor") + +local function register_pane(name, desc, def) + xpanes.register_pane(name, { + description = desc, + tiles = {"xdecor_" .. name .. ".png"}, + drawtype = "airlike", + paramtype = "light", + textures = {"xdecor_" .. name .. ".png", "" ,"xdecor_" .. name .. ".png"}, + inventory_image = "xdecor_" .. name .. ".png", + wield_image = "xdecor_" .. name .. ".png", + groups = def.groups, + sounds = def.sounds or lzr_sounds.node_sound_defaults(), + recipe = def.recipe + }) +end + +register_pane("rusty_bar", S("Rusty Iron Bars"), { + sounds = lzr_sounds.node_sound_metal_defaults(), + groups = {cracky = 2, pane = 1}, + recipe = { + {"", "default:dirt", ""}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} + } +}) + +register_pane("wood_frame", S("Wood Frame"), { + sounds = lzr_sounds.node_sound_wood_defaults(), + groups = {choppy = 2, pane = 1, flammable = 2}, + recipe = { + {"group:wood", "group:stick", "group:wood"}, + {"group:stick", "group:stick", "group:stick"}, + {"group:wood", "group:stick", "group:wood"} + } +}) + +xdecor.register("baricade", { + description = S("Baricade"), + drawtype = "plantlike", + paramtype2 = "facedir", + inventory_image = "xdecor_baricade.png", + tiles = {"xdecor_baricade.png"}, + groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, +}) + +xdecor.register("barrel", { + description = S("Barrel"), + tiles = {"xdecor_barrel_top.png", "xdecor_barrel_top.png", "xdecor_barrel_sides.png"}, + on_place = minetest.rotate_node, + groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = lzr_sounds.node_sound_wood_defaults() +}) + +local function register_storage(name, desc, def) + xdecor.register(name, { + description = desc, + tiles = def.tiles, + node_box = def.node_box, + on_rotate = def.on_rotate, + on_place = def.on_place, + groups = def.groups or {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = lzr_sounds.node_sound_wood_defaults(), + use_texture_alpha = def.use_texture_alpha, + }) +end + +register_storage("cabinet", S("Wooden Cabinet"), { + on_rotate = screwdriver.rotate_simple, + tiles = { + "xdecor_cabinet_sides.png", "xdecor_cabinet_sides.png", + "xdecor_cabinet_sides.png", "xdecor_cabinet_sides.png", + "xdecor_cabinet_sides.png", "xdecor_cabinet_front.png" + } +}) + +register_storage("cabinet_half", S("Half Wooden Cabinet"), { + inv_size = 8, + node_box = xdecor.nodebox.slab_y(0.5, 0.5), + on_rotate = screwdriver.rotate_simple, + use_texture_alpha = "clip", + tiles = { + "xdecor_cabinet_sides.png", "xdecor_cabinet_sides.png", + "xdecor_half_cabinet_sides.png", "xdecor_half_cabinet_sides.png", + "xdecor_half_cabinet_sides.png", "xdecor_half_cabinet_front.png" + } +}) + +do + register_storage("empty_shelf", S("Empty Shelf"), { + on_rotate = screwdriver.rotate_simple, + tiles = { + "default_wood.png", "default_wood.png", "default_wood.png", + "default_wood.png", "default_wood.png^xdecor_empty_shelf.png" + } + }) +end + +register_storage("multishelf", S("Multi Shelf"), { + on_rotate = screwdriver.rotate_simple, + tiles = { + "default_wood.png", "default_wood.png", "default_wood.png", + "default_wood.png", "default_wood.png^xdecor_multishelf.png" + }, +}) + +xdecor.register("candle", { + description = S("Candle"), + light_source = 12, + drawtype = "torchlike", + inventory_image = "xdecor_candle_inv.png", + wield_image = "xdecor_candle_wield.png", + paramtype2 = "wallmounted", + walkable = false, + groups = {dig_immediate = 3, attached_node = 1}, + tiles = { + { + name = "xdecor_candle_floor.png", + animation = {type="vertical_frames", length = 1.5} + }, + { + name = "xdecor_candle_hanging.png", + animation = {type="vertical_frames", length = 1.5} + }, + { + name = "xdecor_candle_wall.png", + animation = {type="vertical_frames", length = 1.5} + } + }, + selection_box = { + type = "wallmounted", + wall_top = {-0.25, -0.3, -0.25, 0.25, 0.5, 0.25}, + 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} + } +}) + +xdecor.register("chair", { + description = S("Chair"), + tiles = {"xdecor_wood.png"}, + sounds = lzr_sounds.node_sound_wood_defaults(), + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 2}, + on_rotate = screwdriver.rotate_simple, + node_box = xdecor.pixelbox(16, { + {3, 0, 11, 2, 16, 2}, + {11, 0, 11, 2, 16, 2}, + {5, 9, 11.5, 6, 6, 1}, + {3, 0, 3, 2, 6, 2}, + {11, 0, 3, 2, 6, 2}, + {3, 6, 3, 10, 2, 8} + }), +}) + +xdecor.register("cobweb", { + description = S("Cobweb"), + drawtype = "plantlike", + tiles = {"xdecor_cobweb.png"}, + inventory_image = "xdecor_cobweb.png", + walkable = false, + selection_box = {type = "regular"}, + groups = {snappy = 3, liquid = 3, flammable = 3}, +}) + +xdecor.register("cushion", { + description = S("Cushion"), + tiles = {"xdecor_cushion.png"}, + groups = {snappy = 3, flammable = 3}, + on_place = minetest.rotate_node, + node_box = xdecor.nodebox.slab_y(0.5), + can_dig = xdecor.sit_dig, +}) + +xdecor.register("cushion_block", { + description = S("Cushion Block"), + tiles = {"xdecor_cushion.png"}, + groups = {snappy = 3, flammable = 3, not_in_creative_inventory = 1} +}) + +xdecor.register("lantern", { + description = S("Lantern"), + light_source = 13, + drawtype = "plantlike", + inventory_image = "xdecor_lantern_inv.png", + wield_image = "xdecor_lantern_inv.png", + paramtype2 = "wallmounted", + walkable = false, + groups = {snappy = 3, attached_node = 1}, + tiles = { + { + name = "xdecor_lantern.png", + animation = {type="vertical_frames", length = 1.5} + } + }, + selection_box = xdecor.pixelbox(16, {{4, 0, 4, 8, 16, 8}}) +}) + +local xdecor_lightbox = { + iron = S("Iron Light Box"), + wooden = S("Wooden Light Box"), + wooden2 = S("Wooden Light Box 2"), +} + +for l, desc in pairs(xdecor_lightbox) do + xdecor.register(l .. "_lightbox", { + description = desc, + tiles = {"xdecor_" .. l .. "_lightbox.png"}, + groups = {cracky = 3, choppy = 3, oddly_breakable_by_hand = 2}, + light_source = 13, + sounds = lzr_sounds.node_sound_glass_defaults() + }) +end + +local xdecor_potted = { + dandelion_white = S("Potted White Dandelion"), + dandelion_yellow = S("Potted Yellow Dandelion"), + geranium = S("Potted Geranium"), + rose = S("Potted Rose"), + tulip = S("Potted Tulip"), + viola = S("Potted Viola"), +} + +for f, desc in pairs(xdecor_potted) do + xdecor.register("potted_" .. f, { + description = desc, + walkable = false, + groups = {snappy = 3, flammable = 3, plant = 1, flower = 1}, + tiles = {"xdecor_" .. f .. "_pot.png"}, + inventory_image = "xdecor_" .. f .. "_pot.png", + drawtype = "plantlike", + selection_box = xdecor.nodebox.slab_y(0.3) + }) + + minetest.register_craft({ + output = "xdecor:potted_" .. f, + recipe = { + {"default:clay_brick", "flowers:" .. f, "default:clay_brick"}, + {"", "default:clay_brick", ""} + } + }) +end + +local function register_hard_node(name, desc, def) + def = def or {} + xdecor.register(name, { + description = desc, + tiles = {"xdecor_" .. name .. ".png"}, + groups = def.groups or {cracky = 1}, + sounds = def.sounds or lzr_sounds.node_sound_stone_defaults() + }) +end + +register_hard_node("wood_tile", S("Wooden Tile"), { + groups = {choppy = 1, wood = 1, flammable = 2}, + sounds = lzr_sounds.node_sound_wood_defaults() +}) + +xdecor.register("table", { + description = S("Table"), + tiles = {"xdecor_wood.png"}, + groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = lzr_sounds.node_sound_wood_defaults(), + node_box = xdecor.pixelbox(16, { + {0, 14, 0, 16, 2, 16}, {5.5, 0, 5.5, 5, 14, 6} + }) +}) + +xdecor.register("woodframed_glass", { + description = S("Wood Framed Glass"), + drawtype = "glasslike_framed", + sunlight_propagates = true, + tiles = {"xdecor_woodframed_glass.png", "xdecor_woodframed_glass_detail.png"}, + groups = {cracky = 2, oddly_breakable_by_hand = 1}, + sounds = lzr_sounds.node_sound_glass_defaults() +}) + diff --git a/mods/xdecor/src/rope.lua b/mods/xdecor/src/rope.lua new file mode 100644 index 0000000..790520f --- /dev/null +++ b/mods/xdecor/src/rope.lua @@ -0,0 +1,16 @@ +local S = minetest.get_translator("xdecor") + +-- Minimal rope + +xdecor.register("rope", { + description = S("Rope"), + drawtype = "plantlike", + walkable = false, + climbable = true, + groups = {snappy = 3, flammable = 3}, + tiles = {"xdecor_rope.png"}, + inventory_image = "xdecor_rope_inv.png", + wield_image = "xdecor_rope_inv.png", + selection_box = xdecor.pixelbox(8, {{3, 0, 3, 2, 8, 2}}), +}) + diff --git a/mods/xdecor/textures/xdecor_baricade.png b/mods/xdecor/textures/xdecor_baricade.png new file mode 100644 index 0000000000000000000000000000000000000000..87109bb5c1523b54869a2b991c0f0b2fa3cdd5f4 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;V>;M1%b3;tk)YPWO=>bU~ zJHb#G$o5g?Ta;(FqdURD!6Cy@p}#v$UK&kAU}{X44WsX%>q(Y zo-U3d65+A^7x`Kg1emv9VigJa|36!|y?STN{Dd^2rknp?DBKhDyIu5=A+Bf>@76VK z8lp^JwofcS$F%w4lSbB0dO_c08shqoEw)su&i{7cZC_dz^Dm vfAy*A67dD~f96R2J^JMF;;cz0m%qPavpJka-X&l@$Zrguu6{1-oD!M93=sBP1lGqN1{<%;)r-&8vYD9iA?Z zArg|T2OWzJ88EOMoH@0pv)lRK|A19Y)6DKJ%FPk;dEeKZCK42@`f}UiPg~D4`DY(w zx^|8uBzksN&s@KX*l3zJyLnp@kiK%53@yFG-QLy4zYoHB+|P@84|@%2~Pn u#MfT|q2{w$?|Z4L`W(NM4LxkQ)BXXL3`LkB^1uTC00004Nw1BR%Xk)I|q{`4>XU(ca+lCD1)DS~Y8|5%J9Y<5eXFKOk1ZuDMba4!kkYqi` zIO(tf5A(*@Q!oF|uP*LA%EY{^#~@R}^46V1=JL4b9a}Vh?7e()#!eaarGX+2w~M9q z816LP;z*G6%DlYtjr<;^$-z33>z3vjbAO7oV|aPfc{Ssq?&FINw0*5S$)&r&mIZVQgQu&X%Q~loCIF4nSqA_B literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_cabinet_sides.png b/mods/xdecor/textures/xdecor_cabinet_sides.png new file mode 100644 index 0000000000000000000000000000000000000000..32ab2579eac5afa625c23941f8877aa2ada3e683 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b%?>lqi?l3?u_=hM(ozuC zQx;W{7BEy3PYp3_$Z)Pov{jZ7G}e$@A2_)bsHM}>#W93KmgV4X-a`QbEC)mn3357> zu{$tE|Zh_m8`LBs3liDVs^oyQ*HI zIO`Pq+!W2-N$VH!oXyx7a>~sl@I~Z#iKZ`WjBoLrf0ZxeDt4W}H^p;y!Gbj|J0IFl qoggs%!YAcE9-l*8Zaqz1O$<>E<{IX|S33Y5#o+1c=d#Wzp$PyQ@l|L5 literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_candle_floor.png b/mods/xdecor/textures/xdecor_candle_floor.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bc4e3f5eeb8f6702c65e95215a8ab15f66b3f8 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0zmA*!VDxI2ESSgq;vy(LR^9L_iwNN&t?68k^6rZ z!>%pehxSZbv%L1{qf>Wo>^j-+v9H>CO_I*yK=~=Ik}MzhO8_-6l?3?(Gpur$(0&fc z^YV0Y4AD5BoUlMf!yz+mM#CoNDF?ZPJ#`w4l!O-aoM>Q8sB%m-<)3k|_SrjTwk!rU yiDt=XJgKdXCH+jyRX;4WdAdFnrY*3kVR*ez&U2sO`m;b&89ZJ6T-G@yGywqAsYy%# literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_candle_hanging.png b/mods/xdecor/textures/xdecor_candle_hanging.png new file mode 100644 index 0000000000000000000000000000000000000000..b8595a7ec119b61b6ab38201bb0cadd5d8fa8934 GIT binary patch literal 15657 zcmeI3du$xV9mgk1N{rKlR6&W;N@jIQODep#kK23f=I-EpXUA52!LeQ9l+v)bJ7+Js zyFGT-xr=EFqErf?N^OKlYtgDzD^VoEOGuS4Q6SV+K&@m`A*4`33o2^TR92{HN+ce$ z_gv524OYdUS4FK3UJd_$k-<#3`(6X)9_s;MH)l*tI+N)UMKkk$RW~!xU(Od%Zvdh~T`s7yJZE7(do z=Bwx`=(pR<`It%<=WxuIa1%0<=}{(WT966)L#)P!!c1893&C($3imN0F9bP0zy)|# z3@8$>NFr1F^ToT-uc)PGm9f-dEgiCAzG=rPDjZiTmHefE-?XMUL6&8X7dcU6Q4iKW zT5!}dTd;RjMd~^!Xls^HbPTh=xVmb_oN;14pPQ)hSG%r!F`aItD%dr8h$B~4i=5!+ zxqO~$7il|VusO)Kk@m#VBIL%PZO&L4MBR6^7aBN%MpwJqRR|3nfd!|n6q+-#P`muP z)`%(2Sh)&lUE^R5=20FSF%a4UC{CM>X-}ISQa0Qbi0u+PMz#Y$*V8c!mW>W!uBRGS zsj2EzM-h~CTDjFSQ2DF5l&Q_Q*EO7qBZpr%bR`_@?@uQC!y#cn6odh}KP4vRK_SsE zCL)p;9*lAwC7KmgOVdU^nc#y-o)3h1IpE6619CVih2&tOUyg)>QeEB?+9Eq#upPCa z!P=+|H0ppZXLTu(VPy>pEFY2tHX}fh4Fn^C8WJTzfSJ0qC%i>E1uf$U)CVmyUs)_g z)v}>mxG`V7avQ6wMzm7;iqSeIiRXDet3fsZBO9TJ#ES~g*N0l^)mg+gvrb91U}6d_ zy?FJ&7_ILgOfp$HAedbTjDl{K>~GdpSB7<#*QV9N6x8EfJ+R(@heSDd>T<@)nX9(0 zoX~o8v=)H7(v_qIRa6)grkPvK<=`RBaW&OoN_C)@G%qVsSP>hf8zR-7m`2*vjqFie z1D`Ed!_yPjKqtGdI_j!aynQ`7x~61JE3Z0nBd<s?blg|kmC@%)!+&EP6et#)IqmikI6UgRXEQTJGO4^p&-)yi%qM7fqW&s0@>lkO>!o2m2< zi|ByhIl=v`g?in1=s|L**NulZBfnKJoVZxahBbSl++Z++@l?w-mO!e+!{n4DM(fc(555LiYicWR*aVqZU}5IM1DJrL3#1=)M`JkWGq<%m?#QTo@3tNpX?+U|xy~ z141?_E;1j?OL1X9$R@=_=7V`DE({3Sq`1g@FfYZ00U?_d7nu*{rMNI4WRv0|^TE6n z7Y2lEQe0#{n3v+hfRIfhuI}bju&{t0eJ!D9T-i^2$I$b!j5aiu24ME<0NnRO06zK@ zeO~}zh6mu{od76517MqZ{LsQ60Bg`ggNcdqxl1RW-TTVu=0Bd^_QJZ6#ILtr7(H?P z^_$KY0usJ=PuhnSvP)s zPkR0S^NGK`{Pz5OY59Zqe#ty2J-d6~@2-FAw%F3(-nafbeQq5Cy59NPGfU5J`L|_k z>RuRoclOCIpZVvb7hV_dIQ!h9zVzW;UjoxV_ajf{8*_ciYbVbRe|ziPrAy^=YyW#| z=7puc=O1}(?R{OnSG#VzYjHky`P5e7x}Cpy`qVvVi?J7<5PGh@sJx@kZG82A!K>$) zT<`v096EF6Upqb+?0s`v{;8A8UGwiPUb*J=_~wUic>H_!{NTo`FTMSbgTIYL;_vo> zKJ!}RE6b0E{_v;AF3KuJ hqNCBCz47&6=fiz}&pi3SPWNHv;emarr~2=_|1(U#Dg*!k literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_candle_inv.png b/mods/xdecor/textures/xdecor_candle_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..90a479e1150176c73fb5f45a5ecdbedfaed3f626 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ1=8QYz5YL!_5Vfg|5*&X zwsarbGilB8+NY0B-MO*rWWUG0YU?#gI*SA4r?^V8eB3Vq)WB2{%pehxSZbv%L1{qf>Wo>^j-+v9H={O_I*yK>5^e^KPJOrjj7PV1`u=6WY%Kd4ZlT zjv*T7lM@cGiYzcO_Hnq$cq*Z_Q$@@{QjjyiErp>aE+CROv0(mA?x~NSHD=!CPA)JO z;GdDelQzS6iYVJ9TP~g#4Em3DXx+M)-Gv4jZ7s$e!&b3Ws}cZ0C{?z zE{-7_(a8x5>;yzYL|P15SQqkKchNX}NAT1JgE<^&K4(r$Vlz%DyI*_a00TqkK6dG& SaoiwxFnGH9xvX literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_chainlink.png b/mods/xdecor/textures/xdecor_chainlink.png new file mode 100644 index 0000000000000000000000000000000000000000..1aba3c09e919d36b6083e91217747dda94d16e64 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUEiNvuudkmxd9ss}Q(#~q zocsTnK^{;Ib4ie2Fp&OLcH|zAD)e-54B?PvJ-AWuuz~=~f#jBs%Fi)52Fm-uf|`PeED)ij`_`31;2D;gdOMK zp0~c>@47>Q$|6&)PI-7za(Va-v)1LDU!HuOab#1jfBjp2mY>2rf7KU11zOJF>FVdQ I&MBb@0Huah4*&oF literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_cobweb.png b/mods/xdecor/textures/xdecor_cobweb.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1eceaf7dce0e5786745a260e37b7bf5b3403d9 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VWy>jKs`}gnv|Np;i*)j-w z{zBQ^Kw0LJAirQB{j2QAJs_3s>Eal|AjL}_c%P|nn$Nc5 ze`pQ=M4gKpw!P+KR-HD#Y0Wne&R2W;GsPz4zN{2o6Bj0WuKV6(=HBme^<253Yw{E0 y%(WLEIC975Le#Hn4jFqs^M#(z1=*U7#Qo|+J%uI*OlkpH%i!ti=d#Wzp$P!~zfrLO literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_cushion.png b/mods/xdecor/textures/xdecor_cushion.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4674c4ede176496a352cabea5721c32f99939f GIT binary patch literal 374 zcmV-+0g3*JP)oGR9bI346y~KG;XclVAAm-;x{NIvO0%H4(<1I;h*h5fwzSeWs4@4}4<{ U)H^8&^#A|>07*qoM6N<$f>hdv9smFU literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_dandelion_white_pot.png b/mods/xdecor/textures/xdecor_dandelion_white_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb91ee59be152a0c6cf404746068bb093a422f0 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}PJmB{>;M1%eJ06<_RBtd{pj-b z^NCiv{stOpOJ!R(f&_Q&-{L+~86q`v-V~rp<6>^LG;Zf=Zk23a(*_BPYLN|DF+Kh^ z(?Xq!>bR@Pq?+g@nQKNGYx!u(ujh_g1+0jeE4hC zMbC2+v-d3fW_T^~dX)X=&*t@?zRtLI-@n)Ip4M8ktxMl7x|wuY<+U!ui~3+zkHsPX i`V5oLXZt_4{m;M1%Z=Ox}nIs$9FPmtk z>u;d(`)%pJZyV~1If3G7OJ(0)VQAe5l3g@K&V8mbP^C&XuW>QAMYV`?HTQsKb==itQcd)d%rzs8wR|+?SNgMj0b0sd666Q690>B3 zu}=h2lRaG=LnOjmd*AXk8SuD9-(dTlAR-!8*!1Ba|I1@0pUzLdbMJ|YIqMJZc>zC! zef?IiUd3@)qkG-wAEMW`-}}}gpSWq`y2DB_&U~JW6_;LAo%rkt+pd87QJ1e4oLT?O z?UW#2DeK~|Ra}Wa_Rgyq8cjdXwY+|2&e4N0UFrh;6^|4hY^EQYb>6#S%I$6Iz3(L7 cneKbaymcn`FNyhccY~bi>FVdQ&MBb@0BuHt)&Kwi literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_empty_shelf.png b/mods/xdecor/textures/xdecor_empty_shelf.png new file mode 100644 index 0000000000000000000000000000000000000000..a8363c0f49cd01de7eb3b8a2fd3ec657e95738de GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}U4T!B>%t7j0uSvff5Qqt!^SY< z>B%Zhbp1i1wo_vs{nwliPrK-52mXxlnkc*Ct7$2vcD4&J8l(m|Kv685< zvbdkAa=eqylzZ!=fG*)H3GxHE2nnoukrxi+_IbKEhDb=V9z5uEI6=VeVzs(((}(Go zS|9wjpOYP%!EN}tvM<9#%_^%{n5F4Jcrqii2y^x3POew1=k5NT31Z4wQnf~vgK_7t zFM13N1*c|9xh;1(<`>j??1)SedlzHZ!`+QZ8VMTTmNg!q%)PlV^uFJ{TG7+-hki|D t_ZDFKbn{Gm!ydi~XYU;M1%eJ06TcsGRh%O;j@ znYHptkH3w3^1igCvIcH5fm}7439TDtfwJy1m4PbvocgGi#=T_gLzQe^<6>@$Y7v=G zcGCt4trTwQV0Pzf?hRQn(?Xqqh7{QwEQ<=Lax)LnSF@Cp%&^pPSCdIK(MvMdj5OBr z(Uj*4u3iLm275`6AILc%5SsET0!Xd)ba4!kkYqi0(C@H;fa}HIX=-Jcwm1bGT=wXH zJvZk@=ML5h*Zhvp0ePlDCE*prQgx3et-CY6S~na>)c2hsqr)q+C&;}yqHFDnMV)(f zS>K9bBkNv;8Aq%axX_pTYWZD$iMT%pk9GCcZ{Eirox58veye@g z7XO!>CYztvnN5D}nm&DTIAa1Q!^$E-1_lE=CSisQhPIFIdknFN37i)sE_+`C^@3xBp+P$08 zZ#iCayluTXwspU5d}|cj)c5LYWo-9aP8W+7Zrz>V*jBJ(Ymnt!hGi99_Ln}W>dwMpys< literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_half_cabinet_sides.png b/mods/xdecor/textures/xdecor_half_cabinet_sides.png new file mode 100644 index 0000000000000000000000000000000000000000..6f274b8bc75745a6953c9701c461411c2c076e26 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=3kz=D86TMKLx7QC1rA zLOMz!O40(x>f-t;qNyQ<4H?c=iMA`w3jP5qWh@Eu3ubV5b|VeQ3G;Mu4B?PX76=I| z2`dpSOBC?+&-R@yIrGqiZCT%6g;x8q8+XjN-23dzN>fdqtmWlvqxM!`Phs17cXinO zn|rNV59VY=-8v(g>&bIStL>bZmzy3>2orz|CAp8ygL81H8nLg|A;LArY8T;ME{&6|7;H|EG+-4F8{DH|HVT8#W(+Q z9X&lg|L;`(|8V~Qk^f}||BM;`lqTeVx-r2a0c3u=%aTd zZGl#2GA3vG5fIcy+;`BbBS5OdM$)LrP@K(UQcD-3;t2OXIuX2$R*>6d;0$z<7g@L6 zSNapk90|zI9|T&C=cl|w%USm0WAGGz>~E*H>SbXsPz7U2kY6x^!?PP{Ku)=*i(`n!#N-4Z5J_lYV06=9 zRy(AT!jagyLqoEOm8FqEhb4q-qEHftL5o2|V$X&Ujm2w34<&@?w`s6tvKy-`WHa(O zH|Nm_22-gt?bLUPsRv%p>ni!Rvt3lq&fxoogLf}mF}zFUXxP=xD`&?U;O4?~^CK%m Y=wpTB>y~`<0Xl)f)78&qol`;+0Q{m$Bme*a literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_lantern_inv.png b/mods/xdecor/textures/xdecor_lantern_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..71cef66d43c3ce58f6e3a338f4bf5a9eb0785c79 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=1QS3gy}U^ZK$Q}_b#))o!+XKg}p!(j3q&S!3+-1ZlnP@{+=$5Aso@k2|yr{(7?dxropUs zNF#+Kv2%xpWD_e(BZCf02-ifRBn}2|LynDyBobE!xJ7EW99$8{6UcLkFU`Y=H)X;c g%cFve*m4XQb{B9&TECyt4>X#=)78&qol`;+0NTtp)c^nh literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_multishelf.png b/mods/xdecor/textures/xdecor_multishelf.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5e10e42bc40fd9ad2e82b73c8a1854f647296b GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf?Es$;*M%951s>W}{)QEPhK*sy z)01toofV4xRaX`J9-ElDp)z1+WB9(V_!4(b2?1_VK2B*N9w8p~7}GRUdFv||FCN&l zXXBbR3SRA^24QY_3UVSmA3uC}c<eRvAyIpi-s>{o}JEzoEca;>iGzBs1$FOj*GZz*#iScoY^Ks11 zk&kC!SSKTsxKy#fXIhB6)1Wy<-E6EvT^$-KJNl!T=S`d2Uf&b% zq{A;YqXpGBDK^TF5hXZh)JikJlyPQx_U$GY1RvY(Fh@Dq^F6 d+EqRkhEp+IH!b6Taso|b@O1TaS?83{1OQGmJ!Sv^ literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_rope_inv.png b/mods/xdecor/textures/xdecor_rope_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..51a24a89714ae118d9640247d30b8b658edd4c56 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=2IC5?fNdH+E*8om>83 zb8l~E;L6{8CUTD420&T2Wb9tHg{Y eDpL+LFfgzz;pE@)YyD}U`3#<}elF{r5}E+#T02t! literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_rope_wield.png b/mods/xdecor/textures/xdecor_rope_wield.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca8fef3143aaef1e7502362959eca2984545004 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~^}gU!7&s}fsMyf=1c zo}F6`)&j_j@^o4|Ij>eiJ;j`7~U-=1W3xlVtpUXO@geCx2q(;X8 literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_rose_pot.png b/mods/xdecor/textures/xdecor_rose_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..12923acf2985b82a5a5b803dbb145ce9dd66cab1 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}et=Ji>;M1%H<_6wTIu>5Xk3np zN?R(sLtGpv6521@x>0rs1B1^b*!wl#|S`)NxmnNj1?+GS`eW*7DJmZ@xQO31~G- zNsu4N2@IPjr_BOV{hlt4Arg|T2QLO5b`W4S*t>W0V+Y2X3-yU-9C#Iv>~m!TDpFuP zX1cCY>7Y&S%PJ>F*|hVC?nz~5|JB-`pC$KdL;mJv&m~q#UjK2sxAgq9l-|{DcVBa-D)e(Gc2fI#x=ohWlg_f e^4VInmSA&t;ucLK6T?SbCxW literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_rusty_bar.png b/mods/xdecor/textures/xdecor_rusty_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..d2d5866937c01a91cebaf31aecd7df6af1b46674 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~@eoSt5Yme!jrBtn0scZTr3czapMVIz1hm432G@6>cw_y3R}Y;mdKI;Vst0A{yC>Hq)$ literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_tulip_pot.png b/mods/xdecor/textures/xdecor_tulip_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..d339ef6d9d3ed2b95ef4718e67991fb1d3fc821f GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}et=Ji>;M1%&&4qKOp*=lmrbwX9obSP sW7j)RY7+{VG90T~Ew$+Qz2>T``X66A+--CD@E+u1Pgg&ebxsLQ02JqkegFUf literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_viola_pot.png b/mods/xdecor/textures/xdecor_viola_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..7549c4ce8c98e7ee25ff3017203b955f38fd9dee GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}W`IwK>;M1%eJ06HPhT8v9~;^) zn`ou$Z=eC>rY)6?F-|fyF6OqV7Lf^M-;fp4<8L!9 z)TzkcpvujBSyVuXzM7?+WQL`VyP8a@iC&VqW~8x}kEVQnXO2G5QudM{Kak}h5SsET z0!a0Ex;TbNNKQRy=*Ju=;BxT#<59P#=2=;Znam9^*FSMwWuSlQQ7JJs6ui|*Ro^veA@)umImu0MSvN$ym% z#l^@4|6WvOEfD2u|Fm(Q>_Y=P&Wt{jaw+{s{`=Jx-(7JKsM;JH@^0#nQ2QDKopoHt Rey#(#&(qb@APDw z&6WOzUb@Q)Jc|8Q8^esVofS&lHFq|KcPBcU-mbg^)K%l@;uyjq%X?-c?;!&Qmy7a8 zbtb4WD^xA1HyLP zQD9zcw=FN@ir(KRR_dQbyV7SY*mmvxvjyjGdIWn&oY72KeEr)ko};m!*FBg$M=icl hWPexwywcZq|CQOOsi-A1zXQ61!PC{xWt~$(695IrT(AHD literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_wood_frame.png b/mods/xdecor/textures/xdecor_wood_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..f528f5ada041a74affdbc74408b044cf7495f695 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VE07Mil!>#I^EZ+(Rp2*N z;MbAiQxfBL)D*T>6>!rLF7s2b3Dn5YVkk6G21=lFC3 PUB%$(>gTe~DWM4fFj`#4 literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_wood_tile.png b/mods/xdecor/textures/xdecor_wood_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..272df2c41cca0f052fc6222dbc8b94edc9f7c9e9 GIT binary patch literal 364 zcmV-y0h9iTP)yo6e>cut8}GH*vCu6t3tgjuqBQm}SSyMtMjWIb&~A+UH)x`SA{f>?-GF{N=y zs&GkeMIwnxtcvvpe(OM4d7xr< zK2`RIToTyQerb;8b=h@Hmw*Tzr6?MyI6_ylY7&fc6#!(NhbEI!U9{7E7u+0E2Geb2k z0)~Bip7foDJv($ehEYDQu~}?(JwSQ*KqbxaZniQK2!YxdW?m8r(VlizRJd6m7pzi_ z|Msv_!7)|JCcR7T3fb8;TBz5HX6@*%&$JJU~t5y+O zN~flDgd+Y?S_;8GbC~f`^$useIS^GT+e9%$;dob9S7n#Bk`McEjmc!f)dWruDo{fu zbO%K`q6!M7F_VOkgB3hsE+le%P$Bu!ZoWgTQYxi}lAri}1wt-YvZ$*h?|V|R$f>sf*C2zyviy)?T~btmXu{BEaURNcu2#jI9f%+N;J z+Gjk;oKQ#D9|g^LaMsTTKsy3ppvej#)W(av(8lLzGATzPW@}jFyg2|$O3pMk!sSSl zlvrAHPQ`}W44}AN)bcO~ra$d>@SYCozG@v7AXG9OLy>x$&2G1m22C}g(Nvpk4#IA7 zYOFTGYSa;=(~Re|NX@8tGg<7dCWqZV$n-YKCoX zP!Q>$hmH4|1HCpFXohrq2o<5xGb)zU=~YHX&#Fvbn$>w&l4iU~>$LO?YX=+VI$6dU z<^$2i5~9NbD^1)gWn$(gS67^9bm~)FW}gU#F|m45uhQ%Ew2Gv4UX{^EGb)c;f59yLL!!F-BYMQi0Y5qPiIMTc3d4=glG?08s_*ew)xd-OO^+||Sd8NN%XNVrZ; z%Wdyzqk}${vEYfsL;;*)#-*Y2bCX9dRyuh=6SE_80!ZtcvWHn3OpHdJ_fO?^;FMIq zQf{n+7Fme2PD^Rj3DQZESWU>o#WS3@JB!Dp(ULsUYQi4i9A{{eo{~#?-83J@LwWgd zfEF!WfcCL?DCjfeslv3H$@74+^L{=Iy2Vl;-jJcECfxpQ=sXO{6T_G>I z5eNu6lyRZ?K&p%j0)h@@TxdR!D&vBHphFoKnh&JPxF8_tP{xJk1F14D2nafqaiRG@ zs*DQ)f(~U|Xg-iCa#)akssWL7I2s)H;q4_|nj0*yS4rN?u zK9DNof`Fhy85f!lq{_G;Am~uWh2{gPGA;-RI+Sst`9P|S3j%@;Wn5@JkSgPXfS^Me z7n%>G%D5mP=upOm<^!oRE(i!ZlyRZ?K&p%j0)h@@TxdR!D&vBHphFoKnh&JPxF8_t z5Q(cW_4X(m1h0&Cfp%<1 zhGDnyTUw7eF)Xj8)?saoj4}1gYlxrk!c09ZL-}}b* zyt?wSgT(#|4T~{jb=~OY{OPk!Uw3p`{#tx|Z0nm9#PHkL3-stjpR@SdHp|41_s##~ zHC53W`^7~);_%$1k9eQn`PRYe$9-7n0nOp9cPu=9Y132Be5c`!hL?tvzVZ?5AKO2h zccRk&@^7}cYIiy@$H<#P=fB>oXv8i*nt!r{GMg|4QxT*nahqFqs`s) z`HSWkKN#r`8cz(AxyKF|-Z@*o;nI;?o-kII|8(hxTXcKpp2&alx#br(J+-F%aH@`7za!_fUNufNyt9$Dz>eevYqw`k{ZOB?2o-njlPLrIbI zl{HQ0j#gZ;em*+z=iY;Tdf&vMQx^t)_38Dm^D*1SyI)$=yknj8rgLp|onyak?GOG7 D;Yw#) literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_wooden_lightbox.png b/mods/xdecor/textures/xdecor_wooden_lightbox.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a6b526534bb95b5a858a9142e3f845ebe1317f GIT binary patch literal 262 zcmV+h0r~!kP)Vfp`kookR`17iKQYltA95o^k|Ns9$TO)b^ z0053jL_t&-83nkT_DcnoRdfc`r2-Pzn9%CzF(UvDLz#32WlGx&-ZP1A^-pY M07*qoM6N<$f(-s=o&W#< literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_woodframed_glass.png b/mods/xdecor/textures/xdecor_woodframed_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd6ea8e90f685f82eca6dddd8a616fe9835b2aa GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=>wyE08^eqjW;jkyw#jx@ zSXJy>?611BF+9~=Zq=&mK-rx;@12+s8EGJ%XQ#BT+{HzW|IC>e2}Y9JntTuUgsiJ| zuvg?Mao4OjtSkna$ygHP7tG-B>_!@pQ{w637$PCbda%*)umKN)!Bxe@+kzu@G5)Xb zdeZUH@c10}p5xDFT%Ngfvv=C-xOHp{r^PcI>Z{F!7EE8A$xywM(Lpbr(P6KRxrfKJ z-3u0;c$%eR^6RaOqx0V%xx5Wey%<(JJvV7<=&f9RLBW1Ocb6maM?Uhan6s#c&Ik<$ P+RxzW>gTe~DWM4fFzjVO literal 0 HcmV?d00001 diff --git a/mods/xdecor/textures/xdecor_woodframed_glass_detail.png b/mods/xdecor/textures/xdecor_woodframed_glass_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5d1413e767938ed97ecf8ade06fbc68e33b602 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aUA5}^fdh|s?!5Q^|Nk>* zUfj9!4#)*EfFhHPD-D3kSWANZf`K#x!=Y@pjX)~G)5S4_LzeYmpk$K)1KWXk%>&1M z9&l}#t8iZ6AV+rsOLz73+k5R#Z9c!!!8_5Jn=R#2+dQT