From 9c9457e1f50ebdd943695a4cce6b88fa552370f3 Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Wed, 22 Aug 2018 22:28:28 -0400 Subject: [PATCH] update castles modpack, blox, bobblocks, coloredwood, technic, gloopblocks, homedecor, ilights, led marquee, plasticbox, solidcolor, stained_glass, unified bricks, and unified dyes In most of these, the update is to shift over to the new "old" coloring paradigm in Unified Dyes. See its forum thread for details. --- anvil/{README.md => README.txt} | 0 anvil/init.lua | 33 +- anvil/locale/es.po | 65 ---- anvil/locale/fr.po | 70 ----- anvil/locale/it.po | 68 ---- blox/init.lua | 297 ++++++++++++------ bobblocks/blocks.lua | 80 +++-- castle_farming/{README.md => README.txt} | 11 +- castle_farming/locale/es.po | 30 -- castle_farming/locale/pt_br.po | 30 -- castle_farming/straw.lua | 14 +- castle_gates/doors.lua | 21 +- castle_gates/gate_functions.lua | 15 +- castle_gates/gate_slots.lua | 15 +- castle_gates/locale/es.po | 261 --------------- castle_gates/locale/it.po | 274 ---------------- castle_lighting/{README.md => README.txt} | 9 +- castle_lighting/locale/es.po | 54 ---- castle_lighting/locale/it.po | 55 ---- castle_masonry/README.md | 34 -- castle_masonry/README.txt | 43 +++ castle_masonry/arrow_slits.lua | 2 +- castle_masonry/depends.txt | 3 +- castle_masonry/init.lua | 12 +- castle_masonry/locale/es.po | 189 ----------- castle_masonry/locale/fr.po | 189 ----------- castle_masonry/locale/it.po | 191 ----------- castle_masonry/pillars.lua | 8 +- castle_shields/README.md | 23 -- castle_shields/README.txt | 25 ++ castle_shields/locale/it.po | 23 -- castle_storage/locale/it.po | 56 ---- castle_storage/mod.conf | 1 - castle_tapestries/init.lua | 103 +++--- castle_weapons/crossbow.lua | 26 +- castle_weapons/locale/it.po | 31 -- coloredwood/init.lua | 113 +++---- crafting_bench/init.lua | 2 +- extranodes/init.lua | 31 +- gloopblocks/init.lua | 27 +- homedecor/bathroom_furniture.lua | 9 - homedecor/bedroom.lua | 8 +- homedecor/crafts.lua | 174 +++++++++- homedecor/furniture.lua | 4 - homedecor/furniture_recipes.lua | 47 ++- homedecor/handlers/expansion.lua | 26 +- homedecor/lighting.lua | 28 +- homedecor/shutters.lua | 5 - homedecor/window_treatments.lua | 4 - ilights/init.lua | 24 +- lavalamp/init.lua | 22 +- led_marquee/README.md | 14 +- led_marquee/init.lua | 183 ++++++++--- led_marquee/textures/led_marquee_char_107.png | Bin 444 -> 298 bytes led_marquee/textures/led_marquee_char_121.png | Bin 501 -> 344 bytes led_marquee/textures/led_marquee_char_143.png | Bin 352 -> 342 bytes led_marquee/textures/led_marquee_char_144.png | Bin 270 -> 268 bytes led_marquee/textures/led_marquee_char_194.png | Bin 426 -> 426 bytes led_marquee/textures/led_marquee_char_197.png | Bin 418 -> 377 bytes led_marquee/textures/led_marquee_char_202.png | Bin 359 -> 396 bytes led_marquee/textures/led_marquee_char_206.png | Bin 354 -> 381 bytes led_marquee/textures/led_marquee_char_212.png | Bin 365 -> 389 bytes led_marquee/textures/led_marquee_char_216.png | Bin 364 -> 389 bytes led_marquee/textures/led_marquee_char_219.png | Bin 359 -> 401 bytes led_marquee/textures/led_marquee_char_221.png | Bin 376 -> 347 bytes led_marquee/textures/led_marquee_char_226.png | Bin 380 -> 436 bytes led_marquee/textures/led_marquee_char_234.png | Bin 377 -> 426 bytes led_marquee/textures/led_marquee_char_238.png | Bin 339 -> 387 bytes led_marquee/textures/led_marquee_char_244.png | Bin 344 -> 387 bytes led_marquee/textures/led_marquee_char_251.png | Bin 350 -> 356 bytes led_marquee/textures/led_marquee_char_253.png | Bin 365 -> 366 bytes led_marquee/textures/led_marquee_char_255.png | Bin 364 -> 362 bytes led_marquee/textures/led_marquee_char_76.png | Bin 411 -> 261 bytes lrfurn/armchairs.lua | 13 +- lrfurn/init.lua | 3 +- lrfurn/longsofas.lua | 13 +- lrfurn/sofas.lua | 13 +- plasticbox/init.lua | 26 +- ropes/LICENSE.md | 23 +- ropes/crafts.lua | 41 +-- ropes/depends.txt | 4 +- ropes/init.lua | 12 +- ropes/ladder.lua | 11 - ropes/ropeboxes.lua | 16 +- solidcolor/init.lua | 3 - stained_glass/init.lua | 43 ++- technic/config.lua | 3 +- technic/machines/HV/init.lua | 8 +- technic/machines/LV/init.lua | 12 +- technic/machines/MV/init.lua | 10 +- technic/machines/creative.lua | 25 +- technic/machines/init.lua | 2 +- technic/machines/power_monitor.lua | 2 +- technic/machines/switching_station.lua | 2 +- unifiedbricks/init.lua | 76 +++-- unifieddyes/API.md | 122 ++++--- unifieddyes/init.lua | 238 +++++++------- 97 files changed, 1405 insertions(+), 2398 deletions(-) rename anvil/{README.md => README.txt} (100%) delete mode 100644 anvil/locale/es.po delete mode 100644 anvil/locale/fr.po delete mode 100644 anvil/locale/it.po rename castle_farming/{README.md => README.txt} (58%) delete mode 100644 castle_farming/locale/es.po delete mode 100644 castle_farming/locale/pt_br.po delete mode 100644 castle_gates/locale/es.po delete mode 100644 castle_gates/locale/it.po rename castle_lighting/{README.md => README.txt} (69%) delete mode 100644 castle_lighting/locale/es.po delete mode 100644 castle_lighting/locale/it.po delete mode 100644 castle_masonry/README.md create mode 100644 castle_masonry/README.txt delete mode 100644 castle_masonry/locale/es.po delete mode 100644 castle_masonry/locale/fr.po delete mode 100644 castle_masonry/locale/it.po delete mode 100644 castle_shields/README.md create mode 100644 castle_shields/README.txt delete mode 100644 castle_shields/locale/it.po delete mode 100644 castle_storage/locale/it.po delete mode 100644 castle_storage/mod.conf delete mode 100644 castle_weapons/locale/it.po diff --git a/anvil/README.md b/anvil/README.txt similarity index 100% rename from anvil/README.md rename to anvil/README.txt diff --git a/anvil/init.lua b/anvil/init.lua index e4bc8bd8..15678945 100644 --- a/anvil/init.lua +++ b/anvil/init.lua @@ -5,18 +5,14 @@ -- * the hammer gets dammaged a bit at each repair step --------------------------------------------------------------------------------------- -anvil = { - setting = { - item_displacement = 7/16, - } -} - minetest.register_alias("castle:anvil", "anvil:anvil") -- internationalization boilerplate local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") +local item_displacement = 7/16 + -- the hammer for the anvil minetest.register_tool("anvil:hammer", { description = S("Steel blacksmithing hammer"), @@ -73,7 +69,7 @@ minetest.register_entity("anvil:item",{ }) local remove_item = function(pos, node) - local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y + anvil.setting.item_displacement, z = pos.z}, .5) + local objs = minetest.env:get_objects_inside_radius({x = pos.x, y = pos.y + item_displacement, z = pos.z}, .5) if objs then for _, obj in ipairs(objs) do if obj and obj:get_luaentity() and obj:get_luaentity().name == "anvil:item" then @@ -84,13 +80,13 @@ local remove_item = function(pos, node) end local update_item = function(pos, node) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) local inv = meta:get_inventory() if not inv:is_empty("input") then - pos.y = pos.y + anvil.setting.item_displacement + pos.y = pos.y + item_displacement tmp.nodename = node.name tmp.texture = inv:get_stack("input", 1):get_name() - local e = minetest.add_entity(pos,"anvil:item") + local e = minetest.env:add_entity(pos,"anvil:item") local yaw = math.pi*2 - node.param2 * math.pi/2 e:setyaw(yaw) end @@ -161,7 +157,6 @@ minetest.register_node("anvil:anvil", { end if (listname=='input' and(stack:get_wear() == 0 - or minetest.get_item_group(stack:get_name(), "not_repaired_by_anvil") ~= 0 or stack:get_name() == "technic:water_can" or stack:get_name() == "technic:lava_can" )) then @@ -184,13 +179,12 @@ minetest.register_node("anvil:anvil", { on_rightclick = function(pos, node, clicker, itemstack) if itemstack:get_count() == 0 then - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) local inv = meta:get_inventory() if not inv:is_empty("input") then local return_stack = inv:get_stack("input", 1) inv:set_stack("input", 1, nil) - local wield_index = clicker:get_wield_index() - clicker:get_inventory():set_stack("main", wield_index, return_stack) + clicker:get_inventory():add_item("main", return_stack) remove_item(pos, node) return return_stack end @@ -198,7 +192,7 @@ minetest.register_node("anvil:anvil", { local this_def = minetest.registered_nodes[node.name] if this_def.allow_metadata_inventory_put(pos, "input", 1, itemstack:peek_item(), clicker) > 0 then local s = itemstack:take_item() - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) local inv = meta:get_inventory() inv:add_item("input", s) update_item(pos,node) @@ -219,8 +213,7 @@ minetest.register_node("anvil:anvil", { if not inv:is_empty("input") then local return_stack = inv:get_stack("input", 1) inv:set_stack("input", 1, nil) - local wield_index = puncher:get_wield_index() - puncher:get_inventory():set_stack("main", wield_index, return_stack) + puncher:get_inventory():add_item("main", return_stack) remove_item(pos, node) end end @@ -287,7 +280,7 @@ minetest.register_node("anvil:anvil", { minetest.chat_send_player( puncher:get_player_name(), S('Your @1 has been repaired successfully.', tool_desc)) return else - pos.y = pos.y + anvil.setting.item_displacement + pos.y = pos.y + item_displacement minetest.sound_play({name="anvil_clang"}, {pos=pos}) minetest.add_particlespawner({ amount = 10, @@ -325,7 +318,7 @@ minetest.register_lbm({ nodenames = { "anvil:anvil" }, run_at_every_load = true, action = function(pos, node, active_object_count, active_object_count_wider) - local test_pos = {x=pos.x, y=pos.y + anvil.setting.item_displacement, z=pos.z} + local test_pos = {x=pos.x, y=pos.y + item_displacement, z=pos.z} if #minetest.get_objects_inside_radius(test_pos, 0.5) > 0 then return end update_item(pos, node) end @@ -368,6 +361,6 @@ minetest.register_craft({ recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, - {"group:stick", '', ''} }, + {'', "group:stick", '' } } }) diff --git a/anvil/locale/es.po b/anvil/locale/es.po deleted file mode 100644 index 167dbb46..00000000 --- a/anvil/locale/es.po +++ /dev/null @@ -1,65 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-07 22:17-0700\n" -"PO-Revision-Date: 2017-04-20 19:05 -0500\n" -"Last-Translator: Carlos Barraza \n" -"Language-Team: LANGUAGE \n" -"Language: Español\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: init.lua:19 -msgid "Steel blacksmithing hammer" -msgstr "Martillo de acero para la herrería" - -#: init.lua:20 -msgid "A tool for repairing other tools at a blacksmith's anvil." -msgstr "Es una herramienta para reparar otras herramientas en el yunque del herrero" - -#: init.lua:21 -msgid "" -"Use this hammer to strike blows upon an anvil bearing a damaged tool and you " -"can repair it. It can also be used for smashing stone, but it is not well " -"suited to this task." -msgstr "" -"Use este martillo para dar golpes sobre el yunque donde puso la herramienta dañada" -"Tambien puede ser usado para romper piedra pero no es muy adecuado para esa tarea." - -#: init.lua:98 -msgid "Anvil" -msgstr "Yunque" - -#: init.lua:99 -msgid "" -"A tool for repairing other tools in conjunction with a blacksmith's hammer." -msgstr "Es una herramienta para reparar de herramientas dañadas en conjunto con el martillo del herrero." - -#: init.lua:100 -msgid "" -"Right-click on this anvil with a damaged tool to place the damaged tool upon " -"it. You can then repair the damaged tool by striking it with a blacksmith's " -"hammer. Repeated blows may be necessary to fully repair a badly worn tool. " -"To retrieve the tool either punch or right-click the anvil with an empty " -"hand." -msgstr "" -"Haga clic derecho sobre este yunque con una herramienta dañada" -"Puede reparar la herramienta dañada golpeándola con el martillo del herrero" -"Para reparar completamente una herramienta puede dar varios golpes" -"Para sacar la herramienta, golpeela con la mano vacia o tambien con un clic derecho" - -#: init.lua:155 -msgid "This anvil is for damaged tools only." -msgstr "Este yunque es sólo para herramientas dañadas" - -#: init.lua:267 -msgid "Your @1 has been repaired successfully." -msgstr "Su @1 ha sido reparado correctamente." diff --git a/anvil/locale/fr.po b/anvil/locale/fr.po deleted file mode 100644 index 66cc21df..00000000 --- a/anvil/locale/fr.po +++ /dev/null @@ -1,70 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-06-26 12:18+0200\n" -"PO-Revision-Date: 2017-06-26 12:22+0200\n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: fr_FR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.2\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: init.lua:19 -msgid "Steel blacksmithing hammer" -msgstr "Marteau de forgeron en acier" - -#: init.lua:20 -msgid "A tool for repairing other tools at a blacksmith's anvil." -msgstr "Un outil pour réparer les autres outils avec une enclume de forgeron." - -#: init.lua:21 -msgid "" -"Use this hammer to strike blows upon an anvil bearing a damaged tool and you " -"can repair it. It can also be used for smashing stone, but it is not well " -"suited to this task." -msgstr "" -"Utilisez ce marteau pour frapper une enclume contenant un outil endommagé, " -"ainsi vous pourrez le réparer. Il peut être aussi utilisé pour casser de la " -"pierre, mais il n'est pas adapté à cette tâche." - -#: init.lua:98 -msgid "Anvil" -msgstr "Enclume" - -#: init.lua:99 -msgid "" -"A tool for repairing other tools in conjunction with a blacksmith's hammer." -msgstr "" -"Un outil pour réparer les autres outils à utiliser avec un marteau de " -"forgeron." - -#: init.lua:100 -msgid "" -"Right-click on this anvil with a damaged tool to place the damaged tool upon " -"it. You can then repair the damaged tool by striking it with a blacksmith's " -"hammer. Repeated blows may be necessary to fully repair a badly worn tool. " -"To retrieve the tool either punch or right-click the anvil with an empty " -"hand." -msgstr "" -"Cliquez-droit sur cette enclume avec un outil endommagé pour le placer " -"dessus. Vous pourrez alors réparer l'outil endommagé en le frappant avec un " -"marteau de forgeron. Des coups successifs seront nécessaires pour réparer " -"l'outil entièrement. Pour récupérer l'outil, frappez dessus ou faites un " -"click-droit en ayant la main vide." - -#: init.lua:155 -msgid "This anvil is for damaged tools only." -msgstr "L'enclume s'utilise sur les outils endommagés." - -#: init.lua:267 -msgid "Your @1 has been repaired successfully." -msgstr "Votre @1 a été réparé avec succès." diff --git a/anvil/locale/it.po b/anvil/locale/it.po deleted file mode 100644 index 3659a1dc..00000000 --- a/anvil/locale/it.po +++ /dev/null @@ -1,68 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE ANVIL MODULE -# Copyright (C) 2017 Sokomine -# This file is distributed under the same license as the ANVIL package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Italian locale file for the Anvil module\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-07 22:17-0700\n" -"PO-Revision-Date: 2017-08-18 16:14+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.10\n" - -#: init.lua:19 -msgid "Steel blacksmithing hammer" -msgstr "Martello da fabbro di acciaio" - -#: init.lua:20 -msgid "A tool for repairing other tools at a blacksmith's anvil." -msgstr "Un attrezzo per riparare altri attrezzi su di una incudine da fabbro." - -#: init.lua:21 -msgid "" -"Use this hammer to strike blows upon an anvil bearing a damaged tool and you " -"can repair it. It can also be used for smashing stone, but it is not well " -"suited to this task." -msgstr "" -"Usate questo martello per colpire una incudine su cui è posto un attrezzo " -"danneggiato e potrete ripararlo. Può anche essere usato per colpire la " -"pietra, ma non è molto adatto a questo compito." - -#: init.lua:98 -msgid "Anvil" -msgstr "Incudine" - -#: init.lua:99 -msgid "" -"A tool for repairing other tools in conjunction with a blacksmith's hammer." -msgstr "Un attrezzo per riparare altri attrezzi usando un martello da fabbro." - -#: init.lua:100 -msgid "" -"Right-click on this anvil with a damaged tool to place the damaged tool upon " -"it. You can then repair the damaged tool by striking it with a blacksmith's " -"hammer. Repeated blows may be necessary to fully repair a badly worn tool. " -"To retrieve the tool either punch or right-click the anvil with an empty " -"hand." -msgstr "" -"Fate click destro su questa incudine con un attrezzo danneggiato per " -"metterlo sull'incudine. Poi potrete ripararlo colpendolo con un martello da " -"fabbro. Potrebbero essere necessari più colpi per riparare un attrezzo " -"gravemente danneggiato. Per riprendere l'attrezzo colpite o fate click " -"destro sull'incudine a mani vuote." - -#: init.lua:155 -msgid "This anvil is for damaged tools only." -msgstr "Questa incudine è solo per attrezzi danneggiati." - -#: init.lua:267 -msgid "Your @1 has been repaired successfully." -msgstr "La/il vostr* @1 è stat* riparat* con successo." diff --git a/blox/init.lua b/blox/init.lua index f48d9b70..95d087ad 100644 --- a/blox/init.lua +++ b/blox/init.lua @@ -110,15 +110,12 @@ for _, nodeclass in ipairs(NodeClass) do "blox_stone_"..nodeclass..".png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("blox:cobble_"..nodeclass, { @@ -130,15 +127,12 @@ for _, nodeclass in ipairs(NodeClass) do "blox_cobble_"..nodeclass..".png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("blox:wood_"..nodeclass, { @@ -150,15 +144,12 @@ for _, nodeclass in ipairs(NodeClass) do "blox_wood_"..nodeclass..".png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) table.insert(blox.old_89_color_nodes, "blox:stone_"..nodeclass) @@ -172,62 +163,53 @@ minetest.register_node("blox:wood_tinted", { description = "Blox tinted wood", tiles = { "blox_wood_tinted.png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("blox:stone_square", { description = "Blox stone square", tiles = { "blox_stone_square.png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("blox:cobble_tinted", { description = "Blox tinted cobble", tiles = { "blox_cobble_tinted.png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, - drop = "default:cobble" }) minetest.register_node("blox:stone_tinted", { description = "Blox tinted stone", tiles = { "blox_stone_tinted.png" }, palette = "unifieddyes_palette_extended.png", - place_param2 = 240, paramtype = "light", paramtype2 = "color", is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, - drop = "default:cobble" + drop = { + items = { + {items = {"blox:cobble_tinted"}, inherit_color = true }, + } + } }) table.insert(blox.old_89_color_nodes, "blox:wood_tinted") @@ -237,106 +219,228 @@ table.insert(blox.old_89_color_nodes, "blox:stone_tinted") -- Override default stone and default cobble +minetest.override_item("default:stone_block", { + palette = "unifieddyes_palette_extended.png", + ud_replacement_node = "blox:stone_square", + groups = {cracky = 3, stone = 1, ud_param2_colorable = 1}, +}) + minetest.override_item("default:stone", { palette = "unifieddyes_palette_extended.png", ud_replacement_node = "blox:stone_tinted", - after_place_node = unifieddyes.recolor_on_place, groups = {cracky = 3, stone = 1, ud_param2_colorable = 1}, }) minetest.override_item("default:cobble", { palette = "unifieddyes_palette_extended.png", ud_replacement_node = "blox:cobble_tinted", - after_place_node = unifieddyes.recolor_on_place, groups = {cracky = 3, stone = 2, ud_param2_colorable = 1}, }) -local dye_color = "unifieddyes:white" +-- override the Moreblocks nodes we use if moreblocks then - minetest.override_item("moreblocks:stone_tile", { - palette = "unifieddyes_palette_extended.png", - ud_replacement_node = "blox:stone_square", - after_place_node = unifieddyes.recolor_on_place, - groups = {cracky = 3, ud_param2_colorable = 1}, - }) - - minetest.override_item("blox:stone_square", { - drop = "moreblocks:stone_tile", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, - }) - minetest.override_item("moreblocks:circle_stone_bricks", { palette = "unifieddyes_palette_extended.png", ud_replacement_node = "blox:stone_loop", - after_place_node = unifieddyes.recolor_on_place, groups = {cracky = 3, ud_param2_colorable = 1}, }) - minetest.override_item("blox:stone_loop", { - drop = "moreblocks:circle_stone_bricks", - groups = {cracky = 3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, + + unifieddyes.register_color_craft({ + output = "blox:stone_loop", + type = "shapeless", + palette = "extended", + neutral_node = "moreblocks:circle_stone_bricks", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } }) minetest.override_item("moreblocks:iron_checker", { palette = "unifieddyes_palette_extended.png", ud_replacement_node = "blox:stone_checker", - after_place_node = unifieddyes.recolor_on_place, groups = {cracky = 3, ud_param2_colorable = 1}, }) - minetest.override_item("blox:stone_checker", { - drop = "moreblocks:iron_checker", - groups = {cracky = 3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, + + unifieddyes.register_color_craft({ + output = "blox:stone_checker", + type = "shapeless", + palette = "extended", + neutral_node = "moreblocks:iron_checker", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } }) minetest.override_item("moreblocks:wood_tile", { palette = "unifieddyes_palette_extended.png", ud_replacement_node = "blox:wood_quarter", - after_place_node = unifieddyes.recolor_on_place, groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, ud_param2_colorable = 1}, }) - minetest.override_item("blox:wood_quarter", { - drop = "moreblocks:wood_tile", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, + + unifieddyes.register_color_craft({ + output = "blox:wood_quarter", + type = "shapeless", + palette = "extended", + neutral_node = "moreblocks:wood_tile", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } }) minetest.override_item("moreblocks:wood_tile_flipped", { palette = "unifieddyes_palette_extended.png", ud_replacement_node = "blox:wood_quarter", - after_place_node = unifieddyes.recolor_on_place, groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, ud_param2_colorable = 1}, }) -else - minetest.register_craft({ - output = "blox:stone_square 6", + + unifieddyes.register_color_craft({ + output = "blox:wood_quarter", + type = "shapeless", + palette = "extended", + neutral_node = "moreblocks:wood_tile_flipped", recipe = { - { dye_color, "default:stone", "default:stone" }, - { "default:stone", dye_color, "default:stone" }, - { "default:stone", "default:stone", dye_color }, + "NEUTRAL_NODE", + "MAIN_DYE" } }) end +local dye_color = "dye:white" + if minetest.get_modpath("coloredwood") then minetest.register_craft({ - output = "blox:wood_tinted 6", + output = unifieddyes.make_colored_itemstack("blox:wood_tinted 4", "extended", dye_color), recipe = { - { "", "default:wood", "" }, - { "default:wood", dye_color, "default:wood" }, - { "", "default:wood", "" }, + { dye_color, "default:wood", dye_color }, + { "default:wood", "", "default:wood" }, + { dye_color, "default:wood", dye_color }, } }) + + unifieddyes.register_color_craft({ + output = "blox:wood_tinted", + type = "shapeless", + palette = "extended", + neutral_node = "blox:wood_tinted", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } + }) + else minetest.override_item("default:wood", { ud_replacement_node = "blox:wood_tinted", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, ud_param2_colorable = 1}, }) + minetest.override_item("blox:wood_tinted", { drop = "default:wood", groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, }) + + unifieddyes.register_color_craft({ + output = "blox:wood_tinted", + type = "shapeless", + palette = "extended", + neutral_node = "default:wood", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } + }) + end --- Crafting +-- Other crafts + +for _, nodeclass in ipairs(NodeClass) do + for _, material in ipairs(NodeMaterial) do + + local item = "blox:"..material.."_"..nodeclass + unifieddyes.register_color_craft({ + output = item, + type = "shapeless", + palette = "extended", + neutral_node = item, + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } + }) + end +end + +unifieddyes.register_color_craft({ + output = "blox:stone_square", + type = "shapeless", + palette = "extended", + neutral_node = "default:stone_block", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "blox:stone_square", + type = "shapeless", + palette = "extended", + neutral_node = "blox:stone_square", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "blox:cobble_tinted", + type = "shapeless", + palette = "extended", + neutral_node = "default:cobble", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "blox:cobble_tinted", + type = "shapeless", + palette = "extended", + neutral_node = "blox:cobble_tinted", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "blox:stone_tinted", + type = "shapeless", + palette = "extended", + neutral_node = "default:stone", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "blox:stone_tinted", + type = "shapeless", + palette = "extended", + neutral_node = "blox:stone_tinted", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ output = 'blox:glowstone 2', @@ -351,71 +455,86 @@ for _, material in ipairs(NodeMaterial) do local def_mat = "default:"..material - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_diamond 4", + palette = "extended", + neutral_node = def_mat, recipe = { - { def_mat, dye_color, def_mat }, - { dye_color, "", dye_color }, - { def_mat, dye_color, def_mat }, + { "NEUTRAL_NODE", "MAIN_DYE", "NEUTRAL_NODE" }, + { "MAIN_DYE", "", "MAIN_DYE" }, + { "NEUTRAL_NODE", "MAIN_DYE", "NEUTRAL_NODE" } } }) if not (moreblocks and material == "wood") then - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_quarter 4", + palette = "extended", + neutral_node = def_mat, recipe = { - { dye_color, def_mat }, - { def_mat, dye_color }, + { "MAIN_DYE", "NEUTRAL_NODE" }, + { "NEUTRAL_NODE", "MAIN_DYE" }, } }) end - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_cross 4", + palette = "extended", + neutral_node = def_mat, recipe = { - { def_mat, "", def_mat }, - { "", dye_color, "" }, - { def_mat, "", def_mat }, + { "NEUTRAL_NODE", "", "NEUTRAL_NODE" }, + { "", "MAIN_DYE", "" }, + { "NEUTRAL_NODE", "", "NEUTRAL_NODE" } } }) - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_corner 4", + palette = "extended", + neutral_node = def_mat, recipe = { - { dye_color, "", dye_color }, - { "", def_mat, "" }, - { dye_color, "", dye_color }, + { "MAIN_DYE", "", "MAIN_DYE" }, + { "", "NEUTRAL_NODE", "" }, + { "MAIN_DYE", "", "MAIN_DYE" } } }) if not (moreblocks and material == "stone") then - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_checker 6", + palette = "extended", + neutral_node = def_mat, recipe = { - { def_mat, dye_color, def_mat }, - { dye_color, def_mat, dye_color }, - { def_mat, dye_color, def_mat }, + { "NEUTRAL_NODE", "MAIN_DYE", "NEUTRAL_NODE" }, + { "MAIN_DYE", "NEUTRAL_NODE", "MAIN_DYE" }, + { "NEUTRAL_NODE", "MAIN_DYE", "NEUTRAL_NODE" } } }) - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_checker 8", + palette = "extended", + neutral_node = def_mat, recipe = { - { dye_color, def_mat, dye_color }, - { def_mat, dye_color, def_mat }, - { dye_color, def_mat, dye_color }, + { "MAIN_DYE", "NEUTRAL_NODE", "MAIN_DYE" }, + { "NEUTRAL_NODE", "MAIN_DYE", "NEUTRAL_NODE" }, + { "MAIN_DYE", "NEUTRAL_NODE", "MAIN_DYE" } } }) - minetest.register_craft({ + unifieddyes.register_color_craft({ output = "blox:"..material.."_loop 6", + palette = "extended", + neutral_node = def_mat, recipe = { - { def_mat, def_mat, def_mat }, - { def_mat, dye_color, def_mat }, - { def_mat, def_mat, def_mat }, + { "NEUTRAL_NODE", "NEUTRAL_NODE", "NEUTRAL_NODE" }, + { "NEUTRAL_NODE", "MAIN_DYE", "NEUTRAL_NODE" }, + { "NEUTRAL_NODE", "NEUTRAL_NODE", "NEUTRAL_NODE" }, } }) + end end diff --git a/bobblocks/blocks.lua b/bobblocks/blocks.lua index a7dd602e..5abef95f 100644 --- a/bobblocks/blocks.lua +++ b/bobblocks/blocks.lua @@ -40,7 +40,6 @@ minetest.register_node("bobblocks:block", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, is_ground_content = false, sounds = default.node_sound_glass_defaults(), @@ -53,8 +52,6 @@ minetest.register_node("bobblocks:block", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("bobblocks:block_off", { @@ -63,7 +60,6 @@ minetest.register_node("bobblocks:block_off", { tiles = {"bobblocks_block.png^[opacity:"..bobblocks.opacity}, paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, is_ground_content = false, use_texture_alpha = true, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1, ud_param2_colorable = 1}, @@ -75,8 +71,6 @@ minetest.register_node("bobblocks:block_off", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) -- Block Poles @@ -88,7 +82,6 @@ minetest.register_node("bobblocks:pole", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, is_ground_content = false, sounds = default.node_sound_glass_defaults(), @@ -101,8 +94,6 @@ minetest.register_node("bobblocks:pole", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("bobblocks:pole_off", { @@ -112,7 +103,6 @@ minetest.register_node("bobblocks:pole_off", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, is_ground_content = false, use_texture_alpha = true, @@ -127,8 +117,6 @@ minetest.register_node("bobblocks:pole_off", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) -- old nodes grandfathered-in because they have a different texture or usage than the colored ones. @@ -150,7 +138,6 @@ minetest.register_node("bobblocks:wavyblock", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, is_ground_content = false, sounds = default.node_sound_glass_defaults(), @@ -164,8 +151,6 @@ minetest.register_node("bobblocks:wavyblock", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("bobblocks:wavyblock_off", { @@ -174,7 +159,6 @@ minetest.register_node("bobblocks:wavyblock_off", { tiles = {"bobblocks_wavyblock.png^[opacity:"..bobblocks.opacity}, paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, is_ground_content = false, use_texture_alpha = true, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1, ud_param2_colorable = 1}, @@ -187,8 +171,6 @@ minetest.register_node("bobblocks:wavyblock_off", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("bobblocks:wavypole", { @@ -199,14 +181,11 @@ minetest.register_node("bobblocks:wavypole", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, is_ground_content = false, sounds = default.node_sound_glass_defaults(), groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1}, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, --light_source = LIGHT_MAX-0, }) @@ -231,6 +210,17 @@ minetest.register_craft({ }, }) +unifieddyes.register_color_craft({ + output = "bobblocks:block", + palette = "extended", + type = "shapeless", + neutral_node = "bobblocks:block", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ output = "bobblocks:pole", recipe = { @@ -238,15 +228,50 @@ minetest.register_craft({ } }) +unifieddyes.register_color_craft({ + output = "bobblocks:pole", + palette = "extended", + type = "shapeless", + neutral_node = "bobblocks:pole", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ output = "bobblocks:wavyblock 2", type = "shapeless", recipe = { "bobblocks:block", - "bobblocks:block" + "default:cobble" }, }) + +unifieddyes.register_color_craft({ + output = "bobblocks:wavyblock 2", + palette = "extended", + type = "shapeless", + neutral_node = "bobblocks:block", + recipe = { + "MAIN_DYE", + "NEUTRAL_NODE", + "default:cobble" + } +}) + +unifieddyes.register_color_craft({ + output = "bobblocks:wavyblock", + palette = "extended", + type = "shapeless", + neutral_node = "bobblocks:wavyblock", + recipe = { + "MAIN_DYE", + "NEUTRAL_NODE" + } +}) + minetest.register_craft({ output = "bobblocks:wavypole", recipe = { @@ -254,6 +279,17 @@ minetest.register_craft({ } }) +unifieddyes.register_color_craft({ + output = "bobblocks:wavypole", + palette = "extended", + type = "shapeless", + neutral_node = "bobblocks:wavypole", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + -- Convert old static nodes to the param2 scheme for _, i in ipairs(bobblocks.colorlist) do diff --git a/castle_farming/README.md b/castle_farming/README.txt similarity index 58% rename from castle_farming/README.md rename to castle_farming/README.txt index c67b5de4..a0334bd0 100644 --- a/castle_farming/README.md +++ b/castle_farming/README.txt @@ -1,9 +1,14 @@ -## Castle farm products +=-=-=-=-=-=-=-=-=-= -B: Philipbenr, DanDuncombe, FaceDeer +Castles Mod +by: Philipbenr And DanDuncombe + +=-=-=-=-=-=-=-=-=-= Licence: MIT +see: LICENSE + =-=-=-=-=-=-=-=-=-= Contains farm products useful for decorating a castle: @@ -11,3 +16,5 @@ Contains farm products useful for decorating a castle: * Hide wall and floor coverings * Bound straw bale * Straw training dummy + +=-=-=-=-=-=-=-=-=-= diff --git a/castle_farming/locale/es.po b/castle_farming/locale/es.po deleted file mode 100644 index 72983b33..00000000 --- a/castle_farming/locale/es.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-27 00:59-0700\n" -"PO-Revision-Date: 2017-04-21 19:47-0500\n" -"Last-Translator: Carlos Barraza \n" -"Language-Team: LANGUAGE \n" -"Language: Español\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: hides.lua:9 -msgid "Hides" -msgstr "Escondite" - -#: straw.lua:13 -msgid "Bound Straw" -msgstr "Paja amarrada" - -#: straw.lua:22 -msgid "Training Dummy" -msgstr "Maniqui de Entrenamiento" diff --git a/castle_farming/locale/pt_br.po b/castle_farming/locale/pt_br.po deleted file mode 100644 index 6030f978..00000000 --- a/castle_farming/locale/pt_br.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2017 -# This file is distributed under the same license as the castle_farming package. -# Caio Roberto , 2017. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-27 00:59-0700\n" -"PO-Revision-Date: 2017-06-29 13:00-0330\n" -"Last-Translator: Caio Roberto \n" -"Language-Team: Paulo Slomp FACED UFRGS <00009228@ufrgs.br>\n" -"Language: Brazilian Portuguese\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: hides.lua:9 -msgid "Hides" -msgstr "Esconde-se" - -#: straw.lua:13 -msgid "Bound Straw" -msgstr "Palha Amarrada" - -#: straw.lua:22 -msgid "Training Dummy" -msgstr "Vaca Parada de Madeira (para Laço)" diff --git a/castle_farming/straw.lua b/castle_farming/straw.lua index aef53127..673daacd 100644 --- a/castle_farming/straw.lua +++ b/castle_farming/straw.lua @@ -1,9 +1,9 @@ -minetest.register_alias_force("cottages:straw", "farming:straw") -minetest.register_alias_force("castle:straw", "farming:straw") -minetest.register_alias_force("darkage:straw", "farming:straw") -minetest.register_alias_force("cottages:straw_bale", "castle_farming:bound_straw") -minetest.register_alias_force("darkage:straw_bale", "castle_farming:bound_straw") -minetest.register_alias_force("castle:bound_straw", "castle_farming:bound_straw") +minetest.register_alias("cottages:straw", "farming:straw") +minetest.register_alias("castle:straw", "farming:straw") +minetest.register_alias("darkage:straw", "farming:straw") +minetest.register_alias("cottages:straw_bale", "castle_farming:bound_straw") +minetest.register_alias("darkage:straw_bale", "castle_farming:bound_straw") +minetest.register_alias("castle:bound_straw", "castle_farming:bound_straw") -- internationalization boilerplate local MP = minetest.get_modpath(minetest.get_current_modname()) @@ -72,4 +72,4 @@ minetest.register_craft({ type = "fuel", recipe = "castle_farming:straw_dummy", burntime = 10*2 + 4*stick_burn_time -}) +}) \ No newline at end of file diff --git a/castle_gates/doors.lua b/castle_gates/doors.lua index 886af3d1..58e3e4f9 100644 --- a/castle_gates/doors.lua +++ b/castle_gates/doors.lua @@ -16,21 +16,6 @@ if minetest.get_modpath("doors") then {"default:tree", "default:tree"}, } }) - - local door_recipe - if minetest.get_modpath("xpanes") then - door_recipe = { - {"xpanes:jailbars_flat", "xpanes:jailbars_flat"}, - {"xpanes:jailbars_flat", "xpanes:jailbars_flat"}, - {"xpanes:jailbars_flat", "xpanes:jailbars_flat"}, - } - else - door_recipe = { - {"default:steel_ingot", ""}, - {"", "default:steel_ingot"}, - {"default:steel_ingot", ""}, - } - end doors.register("castle_gates:jail_door", { tiles = {{ name = "castle_door_jail.png", backface_culling = true }}, @@ -40,7 +25,11 @@ if minetest.get_modpath("doors") then groups = { cracky = 2, door = 1, flow_through = 1}, sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", - recipe = door_recipe, + recipe = { + {"castle_gates:jailbars", "castle_gates:jailbars"}, + {"castle_gates:jailbars", "castle_gates:jailbars"}, + {"castle_gates:jailbars", "castle_gates:jailbars"}, + } }) minetest.register_alias("castle:oak_door_a", "castle_gates:oak_door_a") diff --git a/castle_gates/gate_functions.lua b/castle_gates/gate_functions.lua index 5d1e6b79..4a3c7f71 100644 --- a/castle_gates/gate_functions.lua +++ b/castle_gates/gate_functions.lua @@ -153,9 +153,9 @@ local get_door_layout = function(pos, facedir, player) local test_node_def = minetest.registered_nodes[test_node.name] can_slide_to:set_pos(test_pos, test_node_def.buildable_to == true) - if test_node_def.paramtype2 == "facedir" then -- prospective door nodes need to be of type facedir + if test_node_def.paramtype2 == "facedir" then local test_node_dirs = get_dirs(test_node.param2) - local coplanar = vector.equals(test_node_dirs.back, door.directions.back) -- the "back" vector needs to point in the same direction as the rest of the door + local coplanar = vector.equals(test_node_dirs.back, door.directions.back) if castle_gate_group_value == nil and test_node_def.groups.castle_gate ~= nil then castle_gate_group_value = test_node_def.groups.castle_gate -- read the group value from the first gate node encountered @@ -163,18 +163,17 @@ local get_door_layout = function(pos, facedir, player) if coplanar and test_node_def.groups.castle_gate == castle_gate_group_value then local entry = {["pos"] = test_pos, ["node"] = test_node} - table.insert(door.all, entry) -- it's definitely a gate node of some sort. - if test_node_def._gate_hinge ~= nil then -- it's a hinge type of node, need to do extra work + table.insert(door.all, entry) + if test_node_def._gate_hinge ~= nil then local axis, placement = interpret_hinge(test_node_def._gate_hinge, test_pos, test_node_dirs) - if door.hinge == nil then -- this is the first hinge we've encountered. + if door.hinge == nil then door.hinge = {axis=axis, placement=placement} - door.directions = test_node_dirs -- force the door as a whole to use the same reference frame as the first hinge - elseif door.hinge.axis ~= axis then -- there was a previous hinge. Do they rotate on the same axis? + elseif door.hinge.axis ~= axis then return nil -- Misaligned hinge axes, door cannot rotate. else local axis_dir = {x=0, y=0, z=0} axis_dir[axis] = 1 - local displacement = vector.normalize(vector.subtract(placement, door.hinge.placement)) -- check if this new hinge is displaced relative to the first hinge on any axis other than the rotation axis + local displacement = vector.normalize(vector.subtract(placement, door.hinge.placement)) if not (vector.equals(displacement, axis_dir) or vector.equals(displacement, vector.multiply(axis_dir, -1))) then return nil -- Misaligned hinge offset, door cannot rotate. end diff --git a/castle_gates/gate_slots.lua b/castle_gates/gate_slots.lua index e2c6287d..8f3c0951 100644 --- a/castle_gates/gate_slots.lua +++ b/castle_gates/gate_slots.lua @@ -91,33 +91,34 @@ castle_gates.register_gate_slot = function(material) minetest.register_craft({ - output = mod_name..":"..material.name.."_gate_slot 2", + output = mod_name..":"..material.name.."_portcullis_slot 3", recipe = { + {material.craft_material,"",material.craft_material}, {material.craft_material,"",material.craft_material}, {material.craft_material,"",material.craft_material}, }, }) minetest.register_craft({ - output = mod_name..":"..material.name.."_gate_slot", + output = mod_name..":"..material.name.."_portcullis_slot", type = "shapeless", - recipe = {mod_name..":"..material.name.."_gate_slot_reverse"}, + recipe = {mod_name..":"..material.name.."_portcullis_slot_reverse"}, }) minetest.register_craft({ - output = mod_name..":"..material.name.."_gate_slot_reverse", + output = mod_name..":"..material.name.."_portcullis_slot_reverse", type = "shapeless", - recipe = {mod_name..":"..material.name.."_gate_slot"}, + recipe = {mod_name..":"..material.name.."_portcullis_slot"}, }) if burn_time > 0 then minetest.register_craft({ type = "fuel", - recipe = mod_name..":"..material.name.."_gate_slot", + recipe = mod_name..":"..material.name.."_portcullis_slot", burntime = burn_time * 2, }) minetest.register_craft({ type = "fuel", - recipe = mod_name..":"..material.name.."_gate_slot_reverse", + recipe = mod_name..":"..material.name.."_portcullis_slot_reverse", burntime = burn_time * 2, }) end diff --git a/castle_gates/locale/es.po b/castle_gates/locale/es.po deleted file mode 100644 index c1021614..00000000 --- a/castle_gates/locale/es.po +++ /dev/null @@ -1,261 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-01 23:41-0700\n" -"PO-Revision-Date: 2017-04-28 11:56-0400\n" -"Last-Translator: Carlos Barraza\n" -"Language-Team: LANGUAGE \n" -"Language: Español\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: doc.lua:11 -msgid "Heavy wooden bars designed to prevent entry even to siege equipment." -msgstr "" -"Barras de madera pesadas diseñadas para evitar la entrada incluso a equipo de " -"asedio" - -#: doc.lua:12 -msgid "" -"Place these bars in a structure together and they will slide as a unified " -"gate when clicked on." -msgstr "" -"Coloque estas barras en una estructura juntas y se deslizarán como si " -"estuvieran unidas cuando se le hace clic" - -#: doc.lua:14 -msgid "" -"The bottom edge of a portcullis gate, with knobs to lock securely into the " -"floor." -msgstr "" -"Es el borde inferior de una puerta rastrillo, con perillas para bloquearla con " -"seguridad en el piso" - -#: doc.lua:15 -msgid "" -"This block can be used to define the edge of a portcullius that meets up " -"with another gate, should you have an arrangement like that. Otherwise it's " -"just decorative." -msgstr "" -"Este bloque puede ser usado para definir el borde de una puerta rastrillo " -"que esta cerca de otra puerta, si tiene varias puertas independientes, " -"de lo contrario es simplemente decorativo" - -#: doc.lua:17 -msgid "A basic gate panel." -msgstr "Un panel básico de puerta" - -#: doc.lua:18 -msgid "" -"This gate segment will move in unison with adjoining gate segments when " -"right-clicked." -msgstr "" -"Este segmento de puerta se moverá junto con los demas segmentos de puerta " -"adyacente cuando se haga clic con el botón derecho del ratón" - -#: doc.lua:20 -msgid "A gate panel with a defined edge." -msgstr "Un panel de puerta con un borde." - -#: doc.lua:21 -msgid "" -"The darkened edge of this panel marks the edge of the gate it's a part of. " -"You can use these when building double doors to ensure the two parts swing " -"separately, for example. Note that edges aren't strictly necessary for gates " -"that stand alone." -msgstr "" -"El borde oscurecido de este panel marca el limite de la puerta." -"Usted puede utilizar estos bloques para construir puertas dobles para asegurar " -"que las dos puertas funcionen por separado, por ejemplo. Tenga en cuenta que " -"los bordes no son estrictamente necesarios para las puertas individuales" - -#: doc.lua:23 -msgid "A gate edge with a handle." -msgstr "Un panel de puerta con pestillo" - -#: doc.lua:24 -msgid "" -"The handle is basically decorative, a door this size can be swung by " -"clicking anywhere on it. But the darkened edge of this panel is useful for " -"defining the edge of a gate when it abuts a partner to the side." -msgstr "" -"El pestillo es básicamente decorativo, una puerta de este tamaño se puede " -"abrir haciendo clic en cualquier parte de ella. Pero el borde oscuro de este " -"panel es útil para definir el borde de la puerta cuando hay otra puerta al " -"lado." - -#: doc.lua:26 -msgid "A hinged gate segment that allows a gate to swing." -msgstr "Un segmento de puerta con bisagra permite que la puerta se abra." - -#: doc.lua:27 -msgid "" -"If you have more than one hinge in your gate, make sure the hinges line up " -"correctly otherwise the gate will not be able to swing. The hinge is the " -"protruding block along the edge of the gate panel." -msgstr "" -"Si tiene más de una bisagra en su puerta, asegúrese de que las bisagras se " -"alineen correctamente, de lo contrario la puerta no será capaz de abrirse. " -"la bisagra es el bloque sobresaliente a lo largo del borde del panel de la " -"puerta." - -#: doc.lua:29 -msgid "A block with a slot to allow an adjacent sliding gate through." -msgstr "" -"Un bloque con una ranura en el medio para que una puerta deslizante pueda " -"pasar a través de ella." - -#: doc.lua:30 -msgid "" -"This block is designed to extend into a neighboring node that a sliding gate " -"passes through, to provide a tight seal for the gate to move through without " -"allowing anything else to squeeze in." -msgstr "" -"Este bloque está diseñado para un nodo pueda deslizarse a travéz de este, para " -"proporcionar un cierre hermético que solo deja pasar la puerta sin permitir " -"entrar nada mas." - -#: doc.lua:32 -msgid "" -"A block that extends into an adjacent node to provide a tight seal for a " -"large gate." -msgstr "" -"Un bloque con una ranura en el lado para que una puerta deslizante pueda " -"pasar a través de ella." - -#: doc.lua:33 -msgid "" -"Two nodes cannot occupy the same space, but this block extends into a " -"neighboring node's space to allow for gates to form a tight seal. It can be " -"used with sliding gates or swinging gates." -msgstr "" -"Dos nodos no pueden utilizar el mismo espacio, pero este nodo se extiende al " -"espacio de un nodo vecino para permitir que las puertas formen un cierre " -"hermético. Puede utilizarse con puertas deslizantes y con las puertas que se " -"abren rotando." - -#: doc.lua:37 -msgid "Gates" -msgstr "Puertas" - -#: doc.lua:38 -msgid "" -"Gates are large multi-node constructions that swing on hinges or slide out " -"of the way when triggered." -msgstr "" -"Las puertas grandes son construcciones multi nodo que se abren usando bisagras " -"o se deslizan hacia arriba cuando se activan" - -#: doc.lua:43 -msgid "Gate construction" -msgstr "Construcción de Puertas" - -#: doc.lua:45 -msgid "" -"Gates are multi-node constructions, usually (though not always) consisting " -"of multiple node types that fit together into a unified whole. The " -"orientation of gate nodes is significant, so a screwdriver will be a helpful " -"tool when constructing gates.\n" -"\n" -"A gate's extent is determined by a \"flood fill\" operation. When you " -"trigger a gate block, all compatible neighboring blocks will be considered " -"part of the same structure and will move in unison. Only gate blocks that " -"are aligned with each other will be considered part of the same gate. If you " -"wish to build adjoining gates (for example, a large pair of double doors " -"that meet in the center) you'll need to make use of gate edge blocks to " -"prevent it all from being considered one big door. Note that if your gate " -"does not abut any other gates you don't actually need to define its edges " -"this way - you don't have to use edge blocks in this case.\n" -"\n" -"If a gate has no hinge nodes it will be considered a sliding gate. When " -"triggered, the gate code will search for a direction that the gate can slide " -"in and will move it in that direction at a rate of one block-length per " -"second. Once it reaches an obstruction it will stop, and when triggered " -"again it will try sliding in the opposite direction.\n" -"\n" -"If a gate has hinge nodes then triggering it will cause the gate to try " -"swinging around the hinge. If the gate has multiple hinges and they don't " -"line up properly the gate will be unable to move. Note that the gate can " -"only exist in 90-degree increments of orientation, but the gate still looks " -"for obstructions in the region it is swinging through and will not swing if " -"there's something in the way." -msgstr "" -"Las puertas son generalmente construcciones multi nodo (aunque no siempre), " -"que consisten de múltiples tipos de nodos que se acomodan en un todo " -"unificado. La orientación de los nodos de la puerta es importante, por lo que " -"un destornillador será útil para construir las puertas.\n" -"\n" -"La extención de una puerta se determina mediante una operación de \"Llenado de " -"Inundación\". Al activar un bloque de la puerta, todos los bloques vecinos " -"compatibles se considerán parte de la misma estructura y se moveran al unísono. " -"Sólo los bloques de compuerta que estén alineados entre sí se considerarán " -"parte de la misma puerta. Si desea construir puertas adyacentes (por ejemplo, " -"un gran par de puertas dobles que se abran en el centro) tendrá que hacer uso " -"de bloques de borde de puerta para evitar que todo sea considerado solo una " -"gran puerta. Tenga en cuenta que si su puerta no se apoya en ninguna otra " -"puerta, no necesita usar los bordes de puerta en este caso.\n" -"\n" -"Si una puerta no tiene nodos de bisagra se considerará una puerta deslizante. " -"Cuando se ejecuta el codigo de la puerta buscará una dirección en la que la " -"puerta pueda deslizarse y se moverá en esa dirección a una velocidad de un " -"bloque por segundo. Una vez que llega a una obstrucción se detendrá, y cuando " -"se ejecute de nuevo tratará de deslizarse en la dirección opuesta.\n" -"\n" -"Si una puerta tiene nodos de bisagra, entonces al activar la puerta tratara de " -"girar al rededor de la bisagra. Si la puerta tiene bisagras múltiples y no " -"estan bien alineadas, la puerta no podrá moverse. Tenga en cuenta que la " -"puerta sólo puede existir en incrementos de 90 grados de orientación, pero la " -"puerta todavía busca obstrucciones en la región que está moviéndose y no " -"girara si hay algo en el camino." - - -#: doors.lua:8 -msgid "Oak Door" -msgstr "Puerta de Roble" - -#: doors.lua:22 -msgid "Jail Door" -msgstr "Puerta de Cárcel" - -#: doors.lua:43 -msgid "Jail Bars" -msgstr "" - -#: gate_slots.lua:36 -msgid "Stonebrick" -msgstr "Ladrillo de Piedra" - -#: gate_slots.lua:45 -msgid "@1 Gate Slot" -msgstr "Espacio para Puerta de @1" - -#: gate_slots.lua:70 -msgid "@1 Gate Slot Reverse" -msgstr "Espacio para Puerta Invertido de @1" - -#: gates.lua:7 -msgid "Portcullis Bars" -msgstr "Barras de la Puerta Rastrillo" - -#: gates.lua:37 -msgid "Portcullis Bottom" -msgstr "Terminación de la Puerta Rastrillo" - -#: gates.lua:104 -msgid "Gate Door" -msgstr "Porción de la Puerta" - -#: gates.lua:136 -msgid "Gate Door Edge" -msgstr "Borde de la Puerta" - -#: gates.lua:175 -msgid "Gate Door With Handle" -msgstr "Pestillo de la Puerta" - -#: gates.lua:218 -msgid "Gate Door With Hinge" -msgstr "Bisagra de la Puerta" diff --git a/castle_gates/locale/it.po b/castle_gates/locale/it.po deleted file mode 100644 index 8b5a1696..00000000 --- a/castle_gates/locale/it.po +++ /dev/null @@ -1,274 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE CASTLE GATES MODULE -# Copyright (C) 2017 Philipbenr And DanDuncombe -# This file is distributed under the same license as the CASTLE GATES package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Castle Gates\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-01 23:41-0700\n" -"PO-Revision-Date: 2017-09-26 23:51+0100\n" -"Last-Translator: Hamlet \n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.10\n" - -#: doc.lua:11 -msgid "Heavy wooden bars designed to prevent entry even to siege equipment." -msgstr "" -"Pesanti sbarre di legno progettate per impedire l'accesso perfino " -"all'equipaggiamento da assedio." - -#: doc.lua:12 -msgid "" -"Place these bars in a structure together and they will slide as a unified " -"gate when clicked on." -msgstr "" -"Componete una struttura mettendo insieme queste sbarre ed esse scorreranno " -"come un'unica saracinesca quando ci si cliccherà sopra." - -#: doc.lua:14 -msgid "" -"The bottom edge of a portcullis gate, with knobs to lock securely into the " -"floor." -msgstr "" -"La parte inferiore di una saracinesca, con puntali per bloccarsi saldamente " -"nel pavimento." - -#: doc.lua:15 -msgid "" -"This block can be used to define the edge of a portcullius that meets up " -"with another gate, should you have an arrangement like that. Otherwise it's " -"just decorative." -msgstr "" -"Questo blocco può essere usato per definire l'estremità di una saracinesca " -"che si incontra con un'altra, se doveste avere una tale disposizione. " -"Altrimenti è solo decorativo." - -#: doc.lua:17 -msgid "A basic gate panel." -msgstr "Un pannello di base per cancelli, porte e portoni." - -#: doc.lua:18 -msgid "" -"This gate segment will move in unison with adjoining gate segments when " -"right-clicked." -msgstr "" -"Questo segmento si muoverà all'unisono con altri segmenti adiacenti quando " -"cliccato col tasto destro." - -#: doc.lua:20 -msgid "A gate panel with a defined edge." -msgstr "" -"Un pannello per cancelli, porte e portoni avente un'estremità definita." - -#: doc.lua:21 -msgid "" -"The darkened edge of this panel marks the edge of the gate it's a part of. " -"You can use these when building double doors to ensure the two parts swing " -"separately, for example. Note that edges aren't strictly necessary for gates " -"that stand alone." -msgstr "" -"L'estremità annerita di questo pannello contrassegna il bordo del cancello, " -"porta o portone di cui fa parte. Per esempio potete usarla quando costruite " -"doppi battenti per assicurarvi che le due parti ruotino separatamente. Si " -"noti che queste estremità non sono strettamente necessarie per cancelli, " -"porte e portoni a battente singolo." - -#: doc.lua:23 -msgid "A gate edge with a handle." -msgstr "Una estremità di cancello, porta o portone con una maniglia." - -#: doc.lua:24 -msgid "" -"The handle is basically decorative, a door this size can be swung by " -"clicking anywhere on it. But the darkened edge of this panel is useful for " -"defining the edge of a gate when it abuts a partner to the side." -msgstr "" -"Fondamentalmente la maniglia è decorativa, un cancello o porta di queste " -"dimensioni possono essere aperti cliccando un punto qualunque su di essi. Ma " -"il bordo annerito di questo pannello è utile per stabilire la fine di un " -"battente quando confina con un altro." - -#: doc.lua:26 -msgid "A hinged gate segment that allows a gate to swing." -msgstr "" -"Un segmento di cancello, porta o portone provvisto di un cardine che ne " -"consente la rotazione." - -#: doc.lua:27 -msgid "" -"If you have more than one hinge in your gate, make sure the hinges line up " -"correctly otherwise the gate will not be able to swing. The hinge is the " -"protruding block along the edge of the gate panel." -msgstr "" -"Se avete più di un cardine nel vostro cancello, porta o portone, accertatevi " -"che siano allineati correttamente altrimenti non potrà ruotare. Il cardine è " -"la protuberanza lungo il bordo del pannello." - -#: doc.lua:29 -msgid "A block with a slot to allow an adjacent sliding gate through." -msgstr "" -"Un blocco provvisto di una fessura per consentire a una porta scorrevole di " -"scivolarci attraverso." - -#: doc.lua:30 -msgid "" -"This block is designed to extend into a neighboring node that a sliding gate " -"passes through, to provide a tight seal for the gate to move through without " -"allowing anything else to squeeze in." -msgstr "" -"Questo blocco è progettato per estendersi in un nodo vicino attraverso cui " -"scivoli una porta scorrevole, per fornire una chiusura ermetica alla porta o " -"saracinesca che gli passa attraverso senza permettere a niente altro di " -"intrufolarvisi." - -#: doc.lua:32 -msgid "" -"A block that extends into an adjacent node to provide a tight seal for a " -"large gate." -msgstr "" -"Un blocco che si estende in un nodo adiacente per fornire una chiusura " -"ermetica per un portone." - -#: doc.lua:33 -msgid "" -"Two nodes cannot occupy the same space, but this block extends into a " -"neighboring node's space to allow for gates to form a tight seal. It can be " -"used with sliding gates or swinging gates." -msgstr "" -"Due nodi non possono occupare lo stesso spazio, ma questo blocco si estende " -"nello spazio di un nodo vicino per consentire a cancelli, porte, portoni e " -"saracinesche di formare una chiusura ermetica. Può essere usato con porte " -"scorrevoli o a rotazione." - -#: doc.lua:37 -msgid "Gates" -msgstr "Cancelli, porte, portoni e saracinesche" - -#: doc.lua:38 -msgid "" -"Gates are large multi-node constructions that swing on hinges or slide out " -"of the way when triggered." -msgstr "" -"Cancelli, porte, portoni e saracinesche sono costruzioni multi-nodo che " -"quando vengono attivate ruotano su dei cardini o scivolano via." - -#: doc.lua:43 -msgid "Gate construction" -msgstr "Costruzione di cancelli, porte, portoni e saracinesche" - -#: doc.lua:45 -msgid "" -"Gates are multi-node constructions, usually (though not always) consisting " -"of multiple node types that fit together into a unified whole. The " -"orientation of gate nodes is significant, so a screwdriver will be a helpful " -"tool when constructing gates.\n" -"\n" -"A gate's extent is determined by a \"flood fill\" operation. When you " -"trigger a gate block, all compatible neighboring blocks will be considered " -"part of the same structure and will move in unison. Only gate blocks that " -"are aligned with each other will be considered part of the same gate. If you " -"wish to build adjoining gates (for example, a large pair of double doors " -"that meet in the center) you'll need to make use of gate edge blocks to " -"prevent it all from being considered one big door. Note that if your gate " -"does not abut any other gates you don't actually need to define its edges " -"this way - you don't have to use edge blocks in this case.\n" -"\n" -"If a gate has no hinge nodes it will be considered a sliding gate. When " -"triggered, the gate code will search for a direction that the gate can slide " -"in and will move it in that direction at a rate of one block-length per " -"second. Once it reaches an obstruction it will stop, and when triggered " -"again it will try sliding in the opposite direction.\n" -"\n" -"If a gate has hinge nodes then triggering it will cause the gate to try " -"swinging around the hinge. If the gate has multiple hinges and they don't " -"line up properly the gate will be unable to move. Note that the gate can " -"only exist in 90-degree increments of orientation, but the gate still looks " -"for obstructions in the region it is swinging through and will not swing if " -"there's something in the way." -msgstr "" -"Cancelli, porte, portoni e saracinesche sono costruzioni multi-nodo, di " -"solito (anche se non sempre) costituite da molteplici tipi di nodi che si " -"uniscono in un tutt'uno. L'orientamento è importante, perciò un cacciavite " -"sarà uno strumento utile quando si costruiscono cancelli, porte, ecc.\n" -"\n" -"L'estensione di cancelli e simili è stabilita da un'operazione \"flood fill" -"\" (allagamento riempitivo). Quando attivate un blocco di cancello, tutte le " -"parti limitrofe compatibili verranno considerate parte della stessa " -"struttura e si muoveranno all'unisono. Solamente i blocchi che sono " -"allineati l'un l'altro saranno considerati come parte dello stesso cancello. " -"Se desiderate costruire cancelli confinanti (per esempio, un paio di grossi " -"battenti che si incontrano nel mezzo) dovrete fare uso dei blocchi-estremità " -"per impedire che il tutto sia considerato come un'unica grossa porta. Si " -"noti che se il vostro cancello non confina con nessun altro non avete la " -"necessità di definirne le estremità in questo modo - in questo caso non è " -"necessario che usiate blocchi-estremità.\n" -"\n" -"Se un cancello, ecc. non ha nodi coi cardini sarà considerato come " -"scorrevole. Quando attivato, il programma del cancello cercherà una " -"direzione in cui possa scivolare e lo muoverà in quella direzione al passo " -"della distanza di un nodo al secondo. Quando raggiungerà un ostacolo si " -"fermerà, e quando attivato ancora tenterà di scorrere nella direzione " -"opposta.\n" -"\n" -"Se un cancello, ecc. ha dei nodi coi cardini, attivandolo lo si farà ruotare " -"attorno al cardine. Se il cancello ha più cardini e questi non sono " -"allineati correttamente non riuscirà a muoversi. Si noti che il cancello può " -"svilupparsi solo in incrementi di 90° di orientamento, e controllerà la " -"presenza di ostacoli nella zona in cui ruota e non ruoterà se c'è qualcosa " -"di mezzo." - -#: doors.lua:8 -msgid "Oak Door" -msgstr "Porta di quercia" - -#: doors.lua:22 -msgid "Jail Door" -msgstr "Porta della prigione" - -#: doors.lua:43 -msgid "Jail Bars" -msgstr "Sbarre della prigione" - -#: gate_slots.lua:36 -msgid "Stonebrick" -msgstr "Mattoni di pietra" - -#: gate_slots.lua:45 -msgid "@1 Gate Slot" -msgstr "Alloggio di @1 per cancelli, porte, portoni e saracinesche" - -#: gate_slots.lua:70 -msgid "@1 Gate Slot Reverse" -msgstr "" -"Rovescio dell'alloggio di @1 per cancelli, porte, portoni e saracinesche." - -#: gates.lua:7 -msgid "Portcullis Bars" -msgstr "Sbarre della saracinesca" - -#: gates.lua:37 -msgid "Portcullis Bottom" -msgstr "Estremità inferiore della saracinesca" - -#: gates.lua:104 -msgid "Gate Door" -msgstr "Segmento di cancello, porta o portone" - -#: gates.lua:136 -msgid "Gate Door Edge" -msgstr "Estremità di cancello, porta o portone" - -#: gates.lua:175 -msgid "Gate Door With Handle" -msgstr "Cancello, porta o portone con maniglia" - -#: gates.lua:218 -msgid "Gate Door With Hinge" -msgstr "Cancello, porta o portone con cardine" diff --git a/castle_lighting/README.md b/castle_lighting/README.txt similarity index 69% rename from castle_lighting/README.md rename to castle_lighting/README.txt index 85241a99..90fb4505 100644 --- a/castle_lighting/README.md +++ b/castle_lighting/README.txt @@ -1,9 +1,14 @@ -## Castle Lighting +=-=-=-=-=-=-=-=-=-= -By: Philipbenr, DanDuncombe, FaceDeer +Castles Mod +by: Philipbenr And DanDuncombe + +=-=-=-=-=-=-=-=-=-= Licence: MIT +see: LICENSE + =-=-=-=-=-=-=-=-=-= This mod contains medieval lighting sources suitable for a castle. It includes: diff --git a/castle_lighting/locale/es.po b/castle_lighting/locale/es.po deleted file mode 100644 index f0faee9b..00000000 --- a/castle_lighting/locale/es.po +++ /dev/null @@ -1,54 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-01 23:52-0700\n" -"PO-Revision-Date: 2017-04-28 12:40-0400\n" -"Last-Translator: Carlos Barraza\n" -"Language-Team: LANGUAGE \n" -"Language: Español\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: brasier.lua:7 -msgid "A brasier for producing copious amounts of light and heat." -msgstr "Un brasero para producir grandes cantidades de luz y calor." - -#: brasier.lua:8 -msgid "" -"To ignite the brasier place a flammable fuel in its inventory slot. A lump " -"of coal will burn for about half an hour." -msgstr "" -"Para encender el brasero coloque un combustible inflamable en su ranura de " -"inventario. Un trozo de carbón arderá durante media hora." - -#: brasier.lua:107 -msgid "Floor Brasier" -msgstr "Brasero con Patas" - -#: brasier.lua:156 -msgid "Stonebrick" -msgstr "Ladrillo de piedra" - -#: brasier.lua:228 -msgid "@1 Brasier" -msgstr "Brasero de @1" - -#: init.lua:17 -msgid "Light Block" -msgstr "Bloque de luz" - -#: init.lua:37 -msgid "Chandelier" -msgstr "Candelero" - -#: init.lua:76 -msgid "Chandelier Chain" -msgstr "Colgante de Candelero" diff --git a/castle_lighting/locale/it.po b/castle_lighting/locale/it.po deleted file mode 100644 index 5acbb713..00000000 --- a/castle_lighting/locale/it.po +++ /dev/null @@ -1,55 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE CASTLE LIGHTING MODULE -# Copyright (C) 2017 Philipbenr And DanDuncombe -# This file is distributed under the same license as the CASTLE LIGHTING package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Castle Lighting\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-01 23:52-0700\n" -"PO-Revision-Date: 2017-09-10 22:00+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.10\n" - -#: brasier.lua:7 -msgid "A brasier for producing copious amounts of light and heat." -msgstr "Un braciere per produrre grandi quantità di luce e calore." - -#: brasier.lua:8 -msgid "" -"To ignite the brasier place a flammable fuel in its inventory slot. A lump " -"of coal will burn for about half an hour." -msgstr "" -"Per accendere il braciere mettete del combustibile nella sua casella di " -"inventario. Un grumo di carbone brucerà per circa mezz'ora." - -#: brasier.lua:107 -msgid "Floor Brasier" -msgstr "Braciere da pavimento" - -#: brasier.lua:156 -msgid "Stonebrick" -msgstr "Mattoni di pietra" - -#: brasier.lua:228 -msgid "@1 Brasier" -msgstr "Braciere di @1" - -#: init.lua:17 -msgid "Light Block" -msgstr "Lampada" - -#: init.lua:37 -msgid "Chandelier" -msgstr "Candeliere" - -#: init.lua:76 -msgid "Chandelier Chain" -msgstr "Catena per candeliere" diff --git a/castle_masonry/README.md b/castle_masonry/README.md deleted file mode 100644 index f1c00737..00000000 --- a/castle_masonry/README.md +++ /dev/null @@ -1,34 +0,0 @@ -## Castle Masonry - -by: Philipbenr, DanDuncombe, FaceDeer - -Licence: MIT - -This is a mod all about creating castles and castle dungeons. Many of the nodes are used for the outer-walls or dungeons. - -Contains: - -* Walls, Corner-walls, -* Castlestone Stairs, Slabs, and Pillars -* Arrowslits and embrasures -* Rubble (to fill the interior of thick castle walls) -* Murder holes and machicolations -* Pillars and crossbraces -* Roof slate -* Paving stone -* Dungeon stone - -Mod settings can allow for the basic castle masonry forms to be made for the following material types (all optional): - -* Cobble -* Desert stone -* Desert stone brick -* Sandstone -* Sandstone brick -* Stone -* Stone brick -* Castle wall -* Wood -* Snow -* Ice -* Obsidian Brick \ No newline at end of file diff --git a/castle_masonry/README.txt b/castle_masonry/README.txt new file mode 100644 index 00000000..98b129ac --- /dev/null +++ b/castle_masonry/README.txt @@ -0,0 +1,43 @@ +=-=-=-=-=-=-=-=-=-= + +Castles Mod +by: Philipbenr And DanDuncombe + +=-=-=-=-=-=-=-=-=-= + +Licence: MIT + +see: LICENSE + +=-=-=-=-=-=-=-=-=-= + +This is a mod all about creating castles and castle dungeons. Many of the nodes are used for the outer-walls or dungeons. + +=-=-=-=-=-=-=-=-=-= + +Contains: + +--Walls, Corner-walls, +--Castlestone Stairs, Slabs, and Pillars +--Arrowslits and embrasures +--Rubble (to fill the interior of thick castle walls) +--Murder holes and machicolations +--Pillars and crossbraces +--Roof slate +--Paving stone +--Dungeon stone + +Mod settings can allow for the basic castle masonry forms to be made for the following material types (all optional): + +Cobble +Desert stone +Desert stone brick +Sandstone +Sandstone brick +Stone +Stone brick +Castle wall +Wood +Snow +Ice +Obsidian Brick \ No newline at end of file diff --git a/castle_masonry/arrow_slits.lua b/castle_masonry/arrow_slits.lua index 61d10a91..188d7dd3 100644 --- a/castle_masonry/arrow_slits.lua +++ b/castle_masonry/arrow_slits.lua @@ -163,4 +163,4 @@ castle_masonry.register_arrowslit_alias_force = function(old_mod_name, old_mater minetest.register_alias_force(old_mod_name..":arrowslit_"..old_material_name.."_cross", new_mod_name..":arrowslit_"..new_material_name.."_cross") minetest.register_alias_force(old_mod_name..":arrowslit_"..old_material_name.."_hole", new_mod_name..":arrowslit_"..new_material_name.."_hole") minetest.register_alias_force(old_mod_name..":arrowslit_"..old_material_name.."_embrasure", new_mod_name..":arrowslit_"..new_material_name.."_embrasure") -end +end \ No newline at end of file diff --git a/castle_masonry/depends.txt b/castle_masonry/depends.txt index 7c6d7fbe..206a6372 100644 --- a/castle_masonry/depends.txt +++ b/castle_masonry/depends.txt @@ -3,5 +3,4 @@ moreblocks? stairs? building_blocks? asphalt? -streets? -intllib? +streets? \ No newline at end of file diff --git a/castle_masonry/init.lua b/castle_masonry/init.lua index 741d6aae..0d23922c 100644 --- a/castle_masonry/init.lua +++ b/castle_masonry/init.lua @@ -10,7 +10,7 @@ dofile(MP.."/paving.lua") local S, NS = dofile(MP.."/intllib.lua") local read_setting = function(name, default) - local setting = minetest.settings:get_bool(name) + local setting = minetest.setting_getbool(name) if setting == nil then return default end return setting end @@ -26,7 +26,7 @@ end castle_masonry.materials = {} if read_setting("castle_masonry_stonewall", true) then - table.insert(castle_masonry.materials, {name="stonewall", desc=S("Stonewall"), tile="castle_stonewall.png", craft_material="castle_masonry:stonewall"}) + table.insert(castle_masonry.materials, {name="stonewall", desc=S("Stonewall"), tile="castle_stonewall.png", craft_material="castle:stonewall"}) end if read_setting("castle_masonry_cobble", true) then table.insert(castle_masonry.materials, {name="cobble", desc=S("Cobble"), tile="default_cobble.png", craft_material="default:cobble"}) @@ -72,7 +72,7 @@ castle_masonry.get_material_properties = function(material) composition_def = minetest.registered_nodes[material.craft_material] burn_time = minetest.get_craft_result({method="fuel", width=1, items={ItemStack(material.craft_materia)}}).time end - + local tiles = material.tile if tiles == nil then tiles = composition_def.tile @@ -84,7 +84,7 @@ castle_masonry.get_material_properties = function(material) if desc == nil then desc = composition_def.description end - + return composition_def, burn_time, tiles, desc end @@ -117,7 +117,7 @@ minetest.register_alias("castle:arrowslit_cross", "castle_masonry:arrowslit_ston for _, material in pairs(castle_masonry.materials) do castle_masonry.register_murderhole_alias("castle", material.name, "castle_masonry", material.name) castle_masonry.register_pillar_alias("castle", material.name, "castle_masonry", material.name) - + -- Arrowslit upgrade has special handling because the castle mod arrow slit is reversed relative to current build-from-inside standard local lbm_def = { name = "castle_masonry:arrowslit_flip_front_to_back"..material.name, @@ -134,4 +134,4 @@ for _, material in pairs(castle_masonry.materials) do end } minetest.register_lbm(lbm_def) -end +end \ No newline at end of file diff --git a/castle_masonry/locale/es.po b/castle_masonry/locale/es.po deleted file mode 100644 index 6c1ebc1e..00000000 --- a/castle_masonry/locale/es.po +++ /dev/null @@ -1,189 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-21 23:41-0700\n" -"PO-Revision-Date: 2017-04-28 15:23-0400\n" -"Last-Translator: Carlos Barraza\n" -"Language-Team: Español\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: arrow_slits.lua:12 -msgid "@1 Arrowslit" -msgstr "Aspillera de @1" - -#: arrow_slits.lua:33 -msgid "@1 Arrowslit with Cross" -msgstr "Aspillera con Crus de @1" - -#: arrow_slits.lua:58 -msgid "@1 Arrowslit with Hole" -msgstr "Aspillera con Agujero de @1" - -#: arrow_slits.lua:81 -msgid "@1 Embrasure" -msgstr "Aféizar de @1 " - -#: init.lua:29 -msgid "Stonewall" -msgstr "Pared de piedra" - -#: init.lua:32 -msgid "Cobble" -msgstr "Adoquín" - -#: init.lua:35 -msgid "Stonebrick" -msgstr "Ladrillo de Piedra" - -#: init.lua:38 -msgid "Sandstone Brick" -msgstr "Ladrillo de Arenisca" - -#: init.lua:41 -msgid "Desert Stone Brick" -msgstr "Ladrillo de Piedra del Desierto" - -#: init.lua:44 -msgid "Stone" -msgstr "Piedra" - -#: init.lua:47 -msgid "Sandstone" -msgstr "Arenisca" - -#: init.lua:50 -msgid "Desert Stone" -msgstr "Piedra del Desierto" - -#: init.lua:53 -msgid "Wood" -msgstr "Madera" - -#: init.lua:56 -msgid "Ice" -msgstr "Hielo" - -#: init.lua:59 -msgid "Snow" -msgstr "Nieve" - -#: init.lua:62 -msgid "Obsidian Brick" -msgstr "Ladrillo de Obsidiana" - -#: murder_holes.lua:14 -msgid "@1 Murder Hole" -msgstr "Agujero de @1" - -#: murder_holes.lua:33 -msgid "@1 Machicolation" -msgstr "Matacán de @1" - -#: paving.lua:11 -msgid "Paving Stone" -msgstr "Piedra Pavimentada" - -#: paving.lua:30 -msgid "Pavement Brick" -msgstr "Ladrillo Pavimentado" - -#: paving.lua:40 -msgid "Castle Pavement Stair" -msgstr "Escalera de Castillo Pavimentada" - -#: paving.lua:41 -msgid "Castle Pavement Slab" -msgstr "Pavimento de Castillo" - -#: paving.lua:49 -msgid "Roof Slates" -msgstr "Pizarras de Techo" - -#: pillars.lua:18 -msgid "@1 Pillar Base" -msgstr "Base de Pilar de @1" - -#: pillars.lua:36 -msgid "@1 Half Pillar Base" -msgstr "Base de Medio Pilar de @1" - -#: pillars.lua:54 -msgid "@1 Pillar Top" -msgstr "Parte Superior de Pilar de @1" - -#: pillars.lua:72 -msgid "@1 Half Pillar Top" -msgstr "Parte Superior de Medio Pilar @1" - -#: pillars.lua:90 -msgid "@1 Pillar Middle" -msgstr "Medio Pilar de @1" - -#: pillars.lua:106 -msgid "@1 Half Pillar Middle" -msgstr "Medio del Medio Pilar de @1" - -#: pillars.lua:123 -msgid "@1 Crossbrace" -msgstr "Viga de @1" - -#: pillars.lua:147 -msgid "@1 Extended Crossbrace" -msgstr "Viga Extendida de @1" - -#: stone_wall.lua:11 -msgid "Castle Wall" -msgstr "Pared de Castillo" - -#: stone_wall.lua:22 -msgid "Castle Rubble" -msgstr "Escombros de Castillo" - -#: stone_wall.lua:57 -msgid "Castle Corner" -msgstr "Esquina de Castillo" - -#: stone_wall.lua:78 -msgid "Stone Wall" -msgstr "Pared de Piedra" - -#: stone_wall.lua:86 -msgid "Rubble" -msgstr "Escombros" - -#: stone_wall.lua:100 -msgid "Castle Stonewall Stair" -msgstr "Escalera de Pared de Castillo" - -#: stone_wall.lua:101 -msgid "Castle Stonewall Slab" -msgstr "Losa de Pared de Castillo" - -#: stone_wall.lua:108 -msgid "Castle Rubble Stair" -msgstr "Escalera de Escombro de Castillo" - -#: stone_wall.lua:109 -msgid "Castle Rubble Slab" -msgstr "Losa de Escombro de Castillo" - -#: stone_wall.lua:117 stone_wall.lua:143 -msgid "Dungeon Stone" -msgstr "Piedra de Mazmorra" - -#: stone_wall.lua:156 -msgid "Dungeon Stone Stair" -msgstr "Escalera de Piedra de Mazmorra" - -#: stone_wall.lua:157 -msgid "Dungeon Stone Slab" -msgstr "Losa de Piedra de Mazmorra" diff --git a/castle_masonry/locale/fr.po b/castle_masonry/locale/fr.po deleted file mode 100644 index 5a73d18a..00000000 --- a/castle_masonry/locale/fr.po +++ /dev/null @@ -1,189 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-21 23:41-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: arrow_slits.lua:12 -msgid "@1 Arrowslit" -msgstr "Meurtrière en @1" - -#: arrow_slits.lua:33 -msgid "@1 Arrowslit with Cross" -msgstr "Meurtrière en croix en @1" - -#: arrow_slits.lua:58 -msgid "@1 Arrowslit with Hole" -msgstr "Meurtrière avec trou en @1" - -#: arrow_slits.lua:81 -msgid "@1 Embrasure" -msgstr "Embrasure en @1" - -#: init.lua:29 -msgid "Stonewall" -msgstr "Pierre brune" - -#: init.lua:32 -msgid "Cobble" -msgstr "Pavé" - -#: init.lua:35 -msgid "Stonebrick" -msgstr "Brique de pierre" - -#: init.lua:38 -msgid "Sandstone Brick" -msgstr "Brique de grès" - -#: init.lua:41 -msgid "Desert Stone Brick" -msgstr "Brique de pierre du désert" - -#: init.lua:44 -msgid "Stone" -msgstr "Pierre" - -#: init.lua:47 -msgid "Sandstone" -msgstr "Grès" - -#: init.lua:50 -msgid "Desert Stone" -msgstr "Pierre du désert" - -#: init.lua:53 -msgid "Wood" -msgstr "Bois" - -#: init.lua:56 -msgid "Ice" -msgstr "Glace" - -#: init.lua:59 -msgid "Snow" -msgstr "Neige" - -#: init.lua:62 -msgid "Obsidian Brick" -msgstr "Brique d'obsidienne" - -#: murder_holes.lua:14 -msgid "@1 Murder Hole" -msgstr "Trou en @1" - -#: murder_holes.lua:33 -msgid "@1 Machicolation" -msgstr "Machicoulis en @1" - -#: paving.lua:11 -msgid "Paving Stone" -msgstr "Pierre de pavage" - -#: paving.lua:30 -msgid "Pavement Brick" -msgstr "Brique de pavage" - -#: paving.lua:40 -msgid "Castle Pavement Stair" -msgstr "Escaliers de chateau pavé" - -#: paving.lua:41 -msgid "Castle Pavement Slab" -msgstr "Dalle de chateau pavé" - -#: paving.lua:49 -msgid "Roof Slates" -msgstr "Toiture en ardoise" - -#: pillars.lua:18 -msgid "@1 Pillar Base" -msgstr "Base de pilier en @1" - -#: pillars.lua:36 -msgid "@1 Half Pillar Base" -msgstr "Base de demi pilier en @1" - -#: pillars.lua:54 -msgid "@1 Pillar Top" -msgstr "Haut de pilier en @1" - -#: pillars.lua:72 -msgid "@1 Half Pillar Top" -msgstr "Haut de demi pilier en @1" - -#: pillars.lua:90 -msgid "@1 Pillar Middle" -msgstr "Milieu de pilier en @1" - -#: pillars.lua:106 -msgid "@1 Half Pillar Middle" -msgstr "Milieu de demi pilier en @1" - -#: pillars.lua:123 -msgid "@1 Crossbrace" -msgstr "Travers en @1" - -#: pillars.lua:147 -msgid "@1 Extended Crossbrace" -msgstr "Travers entendu en @1" - -#: stone_wall.lua:11 -msgid "Castle Wall" -msgstr "Pierre brune" - -#: stone_wall.lua:22 -msgid "Castle Rubble" -msgstr "Gravats de chateau" - -#: stone_wall.lua:57 -msgid "Castle Corner" -msgstr "Angle de chateau" - -#: stone_wall.lua:78 -msgid "Stone Wall" -msgstr "Mur de pierre" - -#: stone_wall.lua:86 -msgid "Rubble" -msgstr "Décombre" - -#: stone_wall.lua:100 -msgid "Castle Stonewall Stair" -msgstr "Escalier en pierre brune" - -#: stone_wall.lua:101 -msgid "Castle Stonewall Slab" -msgstr "Dalle en pierre brune" - -#: stone_wall.lua:108 -msgid "Castle Rubble Stair" -msgstr "Escalier en gravats de chateau" - -#: stone_wall.lua:109 -msgid "Castle Rubble Slab" -msgstr "Dalle en gravats de chateau" - -#: stone_wall.lua:117 stone_wall.lua:143 -msgid "Dungeon Stone" -msgstr "Pierre de dongeon" - -#: stone_wall.lua:156 -msgid "Dungeon Stone Stair" -msgstr "Escalier en pierre de dongeon" - -#: stone_wall.lua:157 -msgid "Dungeon Stone Slab" -msgstr "Dalle en pierre de dongeon" diff --git a/castle_masonry/locale/it.po b/castle_masonry/locale/it.po deleted file mode 100644 index 3b719322..00000000 --- a/castle_masonry/locale/it.po +++ /dev/null @@ -1,191 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE CASTLE MASONRY MODULE -# Copyright (C) 2017 Philipbenr And DanDuncombe -# This file is distributed under the same license as the CASTLE MASONRY package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Castle Masonry\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-21 23:41-0700\n" -"PO-Revision-Date: 2017-09-10 22:36+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: it\n" -"X-Generator: Poedit 1.6.10\n" - -#: arrow_slits.lua:12 -msgid "@1 Arrowslit" -msgstr "Feritoia per frecce di @1" - -#: arrow_slits.lua:33 -msgid "@1 Arrowslit with Cross" -msgstr "Feritoia a croce per frecce di @1" - -#: arrow_slits.lua:58 -msgid "@1 Arrowslit with Hole" -msgstr "Feritoia a foro per frecce di @1" - -#: arrow_slits.lua:81 -msgid "@1 Embrasure" -msgstr "Feritoia di @1" - -#: init.lua:29 -msgid "Stonewall" -msgstr "muro di pietra" - -#: init.lua:32 -msgid "Cobble" -msgstr "ciottoli" - -#: init.lua:35 -msgid "Stonebrick" -msgstr "mattoni di pietra" - -#: init.lua:38 -msgid "Sandstone Brick" -msgstr "mattoni di arenaria del deserto" - -#: init.lua:41 -msgid "Desert Stone Brick" -msgstr "mattoni di pietra del deserto" - -#: init.lua:44 -msgid "Stone" -msgstr "pietra" - -#: init.lua:47 -msgid "Sandstone" -msgstr "arenaria" - -#: init.lua:50 -msgid "Desert Stone" -msgstr "pietra del deserto" - -#: init.lua:53 -msgid "Wood" -msgstr "legno" - -#: init.lua:56 -msgid "Ice" -msgstr "ghiaccio" - -#: init.lua:59 -msgid "Snow" -msgstr "neve" - -#: init.lua:62 -msgid "Obsidian Brick" -msgstr "mattoni di ossidiana" - -#: murder_holes.lua:14 -msgid "@1 Murder Hole" -msgstr "Buca assassina di @1" - -#: murder_holes.lua:33 -msgid "@1 Machicolation" -msgstr "Caditoia di @1" - -#: paving.lua:11 -msgid "Paving Stone" -msgstr "Pietra pavimentale" - -#: paving.lua:30 -msgid "Pavement Brick" -msgstr "Mattoni pavimentali" - -#: paving.lua:40 -msgid "Castle Pavement Stair" -msgstr "Scala pavimentale del castello" - -#: paving.lua:41 -msgid "Castle Pavement Slab" -msgstr "Lastra pavimentale del castello" - -#: paving.lua:49 -msgid "Roof Slates" -msgstr "Tegole di ardesia" - -#: pillars.lua:18 -msgid "@1 Pillar Base" -msgstr "Base della colonna di @1" - -#: pillars.lua:36 -msgid "@1 Half Pillar Base" -msgstr "Mezza base della colonna di @1" - -#: pillars.lua:54 -msgid "@1 Pillar Top" -msgstr "Capitello di @1" - -#: pillars.lua:72 -msgid "@1 Half Pillar Top" -msgstr "Mezzo capitello di @1" - -#: pillars.lua:90 -msgid "@1 Pillar Middle" -msgstr "Fusto della colonna di @1" - -#: pillars.lua:106 -msgid "@1 Half Pillar Middle" -msgstr "Mezzo fusto della colonna di @1" - -#: pillars.lua:123 -msgid "@1 Crossbrace" -msgstr "Costolone di @1" - -#: pillars.lua:147 -msgid "@1 Extended Crossbrace" -msgstr "Costolone esteso di @1" - -#: stone_wall.lua:11 -msgid "Castle Wall" -msgstr "Muro del castello" - -#: stone_wall.lua:22 -msgid "Castle Rubble" -msgstr "Detriti del castello" - -#: stone_wall.lua:57 -msgid "Castle Corner" -msgstr "Angolo del castello" - -#: stone_wall.lua:78 -msgid "Stone Wall" -msgstr "Muro di pietra" - -#: stone_wall.lua:86 -msgid "Rubble" -msgstr "Detriti" - -#: stone_wall.lua:100 -msgid "Castle Stonewall Stair" -msgstr "Scala del castello in muro di pietra" - -#: stone_wall.lua:101 -msgid "Castle Stonewall Slab" -msgstr "Lastra del castello in muro di pietra" - -#: stone_wall.lua:108 -msgid "Castle Rubble Stair" -msgstr "Scala del castello in detriti" - -#: stone_wall.lua:109 -msgid "Castle Rubble Slab" -msgstr "Lastra del castello in detriti" - -#: stone_wall.lua:117 stone_wall.lua:143 -msgid "Dungeon Stone" -msgstr "Pietra del sotterraneo" - -#: stone_wall.lua:156 -msgid "Dungeon Stone Stair" -msgstr "Scala di pietra del sotterraneo" - -#: stone_wall.lua:157 -msgid "Dungeon Stone Slab" -msgstr "Lastra di pietra del sotterraneo" diff --git a/castle_masonry/pillars.lua b/castle_masonry/pillars.lua index 082f82e3..96d76a30 100644 --- a/castle_masonry/pillars.lua +++ b/castle_masonry/pillars.lua @@ -173,11 +173,11 @@ castle_masonry.register_pillar = function(material) }) minetest.register_craft({ - output = mod_name..":pillar_"..material.name.."_middle 2", + output = mod_name..":pillar_"..material.name.."_middle 4", recipe = { - {material.craft_material}, - {material.craft_material}, - {material.craft_material} }, + {material.craft_material,material.craft_material}, + {material.craft_material,material.craft_material}, + {material.craft_material,material.craft_material} }, }) minetest.register_craft({ diff --git a/castle_shields/README.md b/castle_shields/README.md deleted file mode 100644 index 51d77032..00000000 --- a/castle_shields/README.md +++ /dev/null @@ -1,23 +0,0 @@ -## Castle Shields - -by: Philipbenr, DanDuncombe and FaceDeer - -Licence: MIT - -=-=-=-=-=-=-=-=-=-= - -This mod adds decorative wall-mounted shields. It comes with three default shields, but it's very easy to mix and match the colours and patterns to generate additional shields for your server; see default_shields.lua for a good place to insert your own, or make use of the castle_shields.register_shield method in your own mods. - -The three default shields were defined thusly: - -* castle_shields.register_shield("shield_1", "Mounted Shield", "red", "blue", "slash") -* castle_shields.register_shield("shield_2", "Mounted Shield", "cyan", "yellow", "chevron") -* castle_shields.register_shield("shield_3", "Mounted Shield", "grey", "green", "cross") - -The following colors are permitted: - -"black", "blue", "brown", "cyan", "dark_green", "dark_grey", "green", "grey", "magenta", "orange", "pink", "red", "violet", "white", "yellow" - -The following patterns are permitted: - -"slash", "chevron", "cross" \ No newline at end of file diff --git a/castle_shields/README.txt b/castle_shields/README.txt new file mode 100644 index 00000000..e2b85ce5 --- /dev/null +++ b/castle_shields/README.txt @@ -0,0 +1,25 @@ +=-=-=-=-=-=-=-=-=-= + +Castles Mod +by: Philipbenr And DanDuncombe + +=-=-=-=-=-=-=-=-=-= + +Licence: MIT + +see: LICENSE + +=-=-=-=-=-=-=-=-=-= + +This mod adds decorative wall-mounted shields. It comes with three default shields, but it's very easy to mix and match the colours and patterns to generate additional shields for your server; see default_shields.lua for a good place to insert your own, or make use of the castle_shields.register_shield method in your own mods. + +The three default shields were defined thusly: + +castle_shields.register_shield("shield_1", "Mounted Shield", "red", "blue", "slash") +castle_shields.register_shield("shield_2", "Mounted Shield", "cyan", "yellow", "chevron") +castle_shields.register_shield("shield_3", "Mounted Shield", "grey", "green", "cross") + +The following colors are permitted: + "black", "blue", "brown", "cyan", "dark_green", "dark_grey", "green", "grey", "magenta", "orange", "pink", "red", "violet", "white", "yellow" +The following patterns are permitted: + "slash", "chevron", "cross" \ No newline at end of file diff --git a/castle_shields/locale/it.po b/castle_shields/locale/it.po deleted file mode 100644 index be347091..00000000 --- a/castle_shields/locale/it.po +++ /dev/null @@ -1,23 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE CASTLE SHIELDS MODULE -# Copyright (C) 2017 Philipbenr And DanDuncombe -# This file is distributed under the same license as the CASTLE SHIELDS package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Castle Shields\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-25 14:47-0700\n" -"PO-Revision-Date: 2017-09-10 22:38+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: it\n" -"X-Generator: Poedit 1.6.10\n" - -#: init.lua:6 init.lua:41 init.lua:75 -msgid "Mounted Shield" -msgstr "Scudo appeso" diff --git a/castle_storage/locale/it.po b/castle_storage/locale/it.po deleted file mode 100644 index a512bbe0..00000000 --- a/castle_storage/locale/it.po +++ /dev/null @@ -1,56 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE CASTLE STORAGE MODULE -# Copyright (C) 2017 Philipbenr And DanDuncombe -# This file is distributed under the same license as the CASTLE STORAGE package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Castle Storage\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-25 19:18-0700\n" -"PO-Revision-Date: 2017-09-10 22:46+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: it\n" -"X-Generator: Poedit 1.6.10\n" - -#: crate.lua:9 crate.lua:24 -msgid "Crate" -msgstr "Cassa" - -#: crate.lua:34 -msgid "@1 moves stuff in crate at @2" -msgstr "@1 mette delle cose nella cassa alle coordinate @2" - -#: crate.lua:37 -msgid "@1 moves stuff to crate at @2" -msgstr "@1 prende delle cose dalla cassa alle coordinate @2" - -#: crate.lua:40 ironbound_chest.lua:113 -msgid "@1 takes stuff from locked chest at @2" -msgstr "@1 prende delle cose dal baule chiuso a chiave alle coordinate @2" - -#: ironbound_chest.lua:35 ironbound_chest.lua:69 -msgid "Ironbound Chest" -msgstr "Baule rinforzato col ferro" - -#: ironbound_chest.lua:65 -msgid "Ironbound Chest (owned by @1)" -msgstr "Baule rinforzato col ferro (di @1)" - -#: ironbound_chest.lua:82 ironbound_chest.lua:91 ironbound_chest.lua:100 -msgid "@1 tried to access a locked chest belonging to @2 at @3" -msgstr "" -"@1 ha tentato di aprire un baule chiuso a chiave di @2 alle coordinate @3" - -#: ironbound_chest.lua:107 -msgid "@1 moves stuff in locked chest at @2" -msgstr "@1 sposta delle cose nel baule chiuso a chiave alle coordinate @2" - -#: ironbound_chest.lua:110 -msgid "@1 moves stuff to locked chest at @2" -msgstr "@1 mette delle cose nel baule chiuso a chiave alle coordinate @2" diff --git a/castle_storage/mod.conf b/castle_storage/mod.conf deleted file mode 100644 index b2b64963..00000000 --- a/castle_storage/mod.conf +++ /dev/null @@ -1 +0,0 @@ -name = castle_storage \ No newline at end of file diff --git a/castle_tapestries/init.lua b/castle_tapestries/init.lua index c4e5983f..8d703d69 100644 --- a/castle_tapestries/init.lua +++ b/castle_tapestries/init.lua @@ -69,27 +69,14 @@ minetest.register_node("castle_tapestries:tapestry", { paramtype = "light", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", - walkable = false, selection_box = { type = "wallmounted", wall_side = {-0.5,-0.5,0.4375,0.5,1.5,0.5}, }, - after_place_node = function(pos, placer, itemstack, pointed_thing) - unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) - end, - after_dig_node = unifieddyes.after_dig_node, + after_place_node = unifieddyes.fix_rotation_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) --- Crafting from wool and a stick - -minetest.register_craft({ - type = "shapeless", - output = 'castle_tapestries:tapestry', - recipe = {'wool:white', 'default:stick'}, -}) - -- Long tapestry minetest.register_node("castle_tapestries:tapestry_long", { @@ -103,27 +90,14 @@ minetest.register_node("castle_tapestries:tapestry_long", { paramtype = "light", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", - walkable = false, selection_box = { type = "wallmounted", wall_side = {-0.5,-0.5,0.4375,0.5,2.5,0.5}, }, - after_place_node = function(pos, placer, itemstack, pointed_thing) - unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) - end, - after_dig_node = unifieddyes.after_dig_node, + after_place_node = unifieddyes.fix_rotation_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) --- Crafting from normal tapestry and wool - -minetest.register_craft({ - type = "shapeless", - output = 'castle_tapestries:tapestry_long', - recipe = {'wool:white', 'castle_tapestries:tapestry'}, -}) - -- Very long tapestry minetest.register_node("castle_tapestries:tapestry_very_long", { @@ -137,20 +111,39 @@ minetest.register_node("castle_tapestries:tapestry_very_long", { paramtype = "light", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", - walkable = false, selection_box = { type = "wallmounted", wall_side = {-0.5,-0.5,0.4375,0.5,3.5,0.5}, }, - after_place_node = function(pos, placer, itemstack, pointed_thing) - unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) - end, - after_dig_node = unifieddyes.after_dig_node, + after_place_node = unifieddyes.fix_rotation_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) --- Crafting from long tapestry and wool +-- Crafting + +minetest.register_craft({ + type = "shapeless", + output = 'castle_tapestries:tapestry', + recipe = {'wool:white', 'default:stick'}, +}) + +minetest.register_craft({ + type = "shapeless", + output = 'castle_tapestries:tapestry', + recipe = {'cottages:wool', 'default:stick'}, +}) + +minetest.register_craft({ + type = "shapeless", + output = 'castle_tapestries:tapestry_long', + recipe = {'wool:white', 'castle_tapestries:tapestry'}, +}) + +minetest.register_craft({ + type = "shapeless", + output = 'castle_tapestries:tapestry_long', + recipe = {'cottages:wool', 'castle_tapestries:tapestry'}, +}) minetest.register_craft({ type = "shapeless", @@ -158,6 +151,46 @@ minetest.register_craft({ recipe = {'wool:white', 'castle_tapestries:tapestry_long'}, }) +minetest.register_craft({ + type = "shapeless", + output = 'castle_tapestries:tapestry_very_long', + recipe = {'cottages:wool', 'castle_tapestries:tapestry_long'}, +}) + + +unifieddyes.register_color_craft({ + output = "castle_tapestries:tapestry", + palette = "wallmounted", + type = "shapeless", + neutral_node = "castle_tapestries:tapestry", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE", + } +}) + +unifieddyes.register_color_craft({ + output = "castle_tapestries:tapestry_long", + palette = "wallmounted", + type = "shapeless", + neutral_node = "castle_tapestries:tapestry_long", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE", + } +}) + +unifieddyes.register_color_craft({ + output = "castle_tapestries:tapestry_very_long", + palette = "wallmounted", + type = "shapeless", + neutral_node = "castle_tapestries:tapestry_very_long", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE", + } +}) + -- Convert static tapestries to param2 color local old_static_tapestries = {} diff --git a/castle_weapons/crossbow.lua b/castle_weapons/crossbow.lua index 439f99bb..f61b752e 100644 --- a/castle_weapons/crossbow.lua +++ b/castle_weapons/crossbow.lua @@ -79,22 +79,12 @@ function crossbow:spawn_particles(pos, texture) texture = CROSSBOW_EXPLOSION_TEXTURE end local spread = {x=0.1, y=0.1, z=0.1} - minetest.add_particlespawner({ - amount = 15, - time = 0.3, - minpos = vector.subtract(pos, spread), - maxpos = vector.add(pos, spread), - minvel = {x=-1, y=1, z=-1}, - maxvel = {x=1, y=2, z=1}, - minacc = {x=-2, y=-2, z=-2}, - maxacc = {x=2, y=-2, z=2}, - minexptime = 0.1, - maxexptime = 0.75, - minsize = 1, - maxsize = 2, - collisiondetection = false, - texture = texture, - }) + minetest.add_particlespawner(15, 0.3, + vector.subtract(pos, spread), vector.add(pos, spread), + {x=-1, y=1, z=-1}, {x=1, y=2, z=1}, + {x=-2, y=-2, z=-2}, {x=2, y=-2, z=2}, + 0.1, 0.75, 1, 2, false, texture + ) end end @@ -371,7 +361,7 @@ minetest.register_entity("castle_weapons:crossbow_bolt_entity", { groups = {not_in_creative_inventory=1}, on_use = function(itemstack, user, pointed_thing) minetest.sound_play("castle_crossbow_click", {object=user}) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.setting_getbool("creative_mode") then itemstack:add_wear(65535/CROSSBOW_USES) end itemstack = "castle_weapons:crossbow 1 "..itemstack:get_wear() @@ -431,7 +421,7 @@ minetest.register_tool("castle_weapons:crossbow", { local inv = user:get_inventory() if inv:contains_item("main", "castle_weapons:crossbow_bolt") then minetest.sound_play("castle_crossbow_reload", {object=user}) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.setting_getbool("creative_mode") then inv:remove_item("main", "castle_weapons:crossbow_bolt 1") end return "castle_weapons:crossbow_loaded 1 "..itemstack:get_wear() diff --git a/castle_weapons/locale/it.po b/castle_weapons/locale/it.po deleted file mode 100644 index e83b45fd..00000000 --- a/castle_weapons/locale/it.po +++ /dev/null @@ -1,31 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE CASTLE WEAPONS MODULE -# Copyright (C) 2017 Philipbenr And DanDuncombe -# This file is distributed under the same license as the CASTLE WEAPONS package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Castle Weapons\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-25 19:35-0700\n" -"PO-Revision-Date: 2017-09-10 22:49+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: it\n" -"X-Generator: Poedit 1.6.10\n" - -#: battleaxe.lua:8 -msgid "Battleaxe" -msgstr "Ascia da guerra" - -#: crossbow.lua:244 -msgid "Bolt" -msgstr "Quadrello" - -#: crossbow.lua:357 crossbow.lua:416 -msgid "Crossbow" -msgstr "Balestra" diff --git a/coloredwood/init.lua b/coloredwood/init.lua index 765938bf..e139c31f 100644 --- a/coloredwood/init.lua +++ b/coloredwood/init.lua @@ -117,8 +117,9 @@ table.insert(coloredwood.hues_plus_greys, "grey") local function is_stairsplus(name, colorized) -- the format of a coloredwood stairsplus node is: - -- moreblocks:class_wood_color_shape - -- where class is "slab", "stair", etc. and shape is "three quarter", "alt", etc. + -- "coloredwood:$CLASS_wood_$COLOR_$SHAPE" + -- where $CLASS is "slab", "stair", etc., $SHAPE is "three quarter", "alt", etc., + -- and $COLOR is one of the 13 color sets (counting "grey") local a = string.find(name, ":") local b = string.find(name, "_") @@ -126,6 +127,7 @@ local function is_stairsplus(name, colorized) local class = string.sub(name, a+1, b-1) -- from colon to underscore is the class local shape = "" local rest + local colorshape if class == "stair" or class == "slab" @@ -153,14 +155,10 @@ minetest.register_node("coloredwood:wood_block", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, walkable = true, sunlight_propagates = false, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, - drop = "default:wood" }) for _, color in ipairs(coloredwood.hues_plus_greys) do @@ -182,74 +180,60 @@ for _, color in ipairs(coloredwood.hues_plus_greys) do paramtype2 = "colorfacedir", palette = "unifieddyes_palette_"..color.."s.png", after_place_node = function(pos, placer, itemstack, pointed_thing) - print("after_place_node on "..minetest.get_node(pos).name) minetest.rotate_node(itemstack, placer, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1, ud_param2_colorable = 1}, - after_dig_node = unifieddyes.after_dig_node } ) end end --- force replacement node type for stairsplus default wood stair/slab/etc nodes +local coloredwood_cuts = {} - if coloredwood.enable_stairsplus then +-- force settings for stairsplus default wood stair/slab/etc nodes +-- and fix other stuff for colored versions of stairsplus nodes + +if coloredwood.enable_stairsplus then for _, i in pairs(minetest.registered_nodes) do - if string.find(i.name, "moreblocks:stair_wood") + + if (string.find(i.name, "moreblocks:stair_wood") or string.find(i.name, "moreblocks:slab_wood") or string.find(i.name, "moreblocks:panel_wood") or string.find(i.name, "moreblocks:micro_wood") - or string.find(i.name, "moreblocks:slope_wood") then - local a,b = string.find(i.name, "wood_tile") - if not a then - local s1, s2 = is_stairsplus(i.name, false) - minetest.override_item(i.name, { - ud_replacement_node = "coloredwood:"..s1.."_wood_grey"..s2, - paramtype2 = "colorfacedir", - after_place_node = function(pos, placer, itemstack, pointed_thing) - print("overridden after_place_node on "..i.name) - minetest.rotate_node(itemstack, placer, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) - end, - on_place = minetest.item_place, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, not_in_creative_inventory=1, ud_param2_colorable = 1}, - }) - end - end - end + or string.find(i.name, "moreblocks:slope_wood")) + and not string.find(i.name, "wood_tile") then - -- fix drops and other stuff for colored versions of stairsplus nodes + table.insert(coloredwood_cuts, i.name) - for _, i in pairs(minetest.registered_nodes) do - if string.find(i.name, "coloredwood:stair_") - or string.find(i.name, "coloredwood:slab_") - or string.find(i.name, "coloredwood:panel_") - or string.find(i.name, "coloredwood:micro_") - or string.find(i.name, "coloredwood:slope_") - then - - mname = string.gsub(i.name, "coloredwood:", "moreblocks:") - local s1, s2 = is_stairsplus(mname, true) minetest.override_item(i.name, { - after_place_node = function(pos, placer, itemstack, pointed_thing) - print("overridden after_place_node on "..i.name) - minetest.rotate_node(itemstack, placer, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) - end, - on_place = minetest.item_place, - drop = "moreblocks:"..s1.."_wood"..s2 + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, not_in_creative_inventory=1, ud_param2_colorable = 1}, }) end end end +-- "coloredwood:slope_wood_outer_half_raised" + +for _, mname in ipairs(coloredwood_cuts) do + + local class, shape = is_stairsplus(mname, nil) + + unifieddyes.register_color_craft({ + output_prefix = "coloredwood:"..class.."_wood_", + output_suffix = shape, + palette = true, + type = "shapeless", + neutral_node = mname, + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } + }) +end + minetest.override_item("default:wood", { palette = "unifieddyes_palette_extended.png", - ud_replacement_node = "coloredwood:wood_block", - after_place_node = unifieddyes.recolor_on_place, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, ud_param2_colorable = 1}, }) @@ -260,19 +244,38 @@ default.register_fence("coloredwood:fence", { palette = "unifieddyes_palette_extended.png", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, - drop = "default:fence_wood", material = "default:wood" }) minetest.override_item("default:fence_wood", { palette = "unifieddyes_palette_extended.png", - ud_replacement_node = "coloredwood:fence", - after_place_node = unifieddyes.recolor_on_place, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, ud_param2_colorable = 1} }) +-- Crafts + +unifieddyes.register_color_craft({ + output = "coloredwood:wood_block", + palette = "extended", + type = "shapeless", + neutral_node = "default:wood", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "coloredwood:fence", + palette = "extended", + type = "shapeless", + neutral_node = "default:fence_wood", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + -- ============================ -- convert the old static nodes diff --git a/crafting_bench/init.lua b/crafting_bench/init.lua index bab8d278..b7234246 100644 --- a/crafting_bench/init.lua +++ b/crafting_bench/init.lua @@ -11,7 +11,7 @@ if minetest.get_modpath("hopper") and hopper ~= nil and hopper.add_container ~= end -local crafting_rate = minetest.settings:get("crafting_bench_crafting_rate") +local crafting_rate = minetest.setting_get("crafting_bench_crafting_rate") if crafting_rate == nil then crafting_rate = 5 end diff --git a/extranodes/init.lua b/extranodes/init.lua index eb54067a..f6ab93a0 100644 --- a/extranodes/init.lua +++ b/extranodes/init.lua @@ -151,18 +151,13 @@ if minetest.get_modpath("unifieddyes") then iclip_def.palette = "unifieddyes_palette_colorwallmounted.png" iclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end - iclip_def.after_dig_node = unifieddyes.after_dig_node iclip_def.groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1} iclipfence_def.paramtype2 = "color" iclipfence_def.palette = "unifieddyes_palette_extended.png" iclipfence_def.on_construct = unifieddyes.on_construct - iclipfence_def.after_place_node = unifieddyes.recolor_on_place - iclipfence_def.after_dig_node = unifieddyes.after_dig_node iclipfence_def.groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1} - iclipfence_def.place_param2 = 171 -- medium amber, low saturation, closest color to default:wood end minetest.register_node(":technic:insulator_clip", iclip_def) @@ -185,3 +180,29 @@ minetest.register_craft({ { "technic:raw_latex", "default:fence_wood", "technic:raw_latex"}, } }) + +if minetest.get_modpath("unifieddyes") then + + unifieddyes.register_color_craft({ + output = "technic:insulator_clip_fencepost", + palette = "extended", + type = "shapeless", + neutral_node = "technic:insulator_clip_fencepost", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } + }) + + unifieddyes.register_color_craft({ + output = "technic:insulator_clip", + palette = "wallmounted", + type = "shapeless", + neutral_node = "technic:insulator_clip", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } + }) + +end diff --git a/gloopblocks/init.lua b/gloopblocks/init.lua index 387b6e18..6e3406cd 100644 --- a/gloopblocks/init.lua +++ b/gloopblocks/init.lua @@ -175,14 +175,25 @@ if not minetest.get_modpath("usesdirt") then description = "Dirt Brick", groups = {snappy=2,choppy=1,oddly_breakable_by_hand=2}, }) - minetest.register_craft({ - output = '"usesdirt:dirt_brick" 6', - recipe = { - {'default:dirt', 'default:dirt', 'default:dirt'}, - {'default:dirt', 'default:dirt', 'default:dirt'}, - {'default:dirt', 'default:dirt', 'default:dirt'}, - } - }) + + if minetest.get_modpath("moreblocks") then + minetest.register_craft({ + output = 'usesdirt:dirt_brick 24', + recipe = { + {'moreblocks:dirt_compressed', 'moreblocks:dirt_compressed', '' }, + {'moreblocks:dirt_compressed', 'moreblocks:dirt_compressed', '' } + } + }) + else + minetest.register_craft({ + output = 'usesdirt:dirt_brick 6', + recipe = { + {'default:dirt', 'default:dirt', 'default:dirt'}, + {'default:dirt', 'default:dirt', 'default:dirt'}, + {'default:dirt', 'default:dirt', 'default:dirt'}, + } + }) + end minetest.register_node(":usesdirt:dirt_ladder", { description = "Ladder", diff --git a/homedecor/bathroom_furniture.lua b/homedecor/bathroom_furniture.lua index 2f57ddbf..4840b26b 100644 --- a/homedecor/bathroom_furniture.lua +++ b/homedecor/bathroom_furniture.lua @@ -12,12 +12,9 @@ minetest.register_node("homedecor:bathroom_tiles_dark", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("homedecor:bathroom_tiles_medium", { @@ -31,12 +28,9 @@ minetest.register_node("homedecor:bathroom_tiles_medium", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("homedecor:bathroom_tiles_light", { @@ -50,12 +44,9 @@ minetest.register_node("homedecor:bathroom_tiles_light", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node }) local tr_cbox = { diff --git a/homedecor/bedroom.lua b/homedecor/bedroom.lua index 71dcdc06..ddb7f997 100644 --- a/homedecor/bedroom.lua +++ b/homedecor/bedroom.lua @@ -52,13 +52,11 @@ homedecor.register("bed_regular", { on_rotate = screwdriver.disallow, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) if not placer:get_player_control().sneak then return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing) end end, after_dig_node = function(pos, oldnode, oldmetadata, digger) - unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger) homedecor.unextend_bed(pos) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) @@ -91,9 +89,7 @@ homedecor.register("bed_extended", { sounds = default.node_sound_wood_defaults(), expand = { forward = "air" }, on_rotate = screwdriver.disallow, - after_place_node = unifieddyes.recolor_on_place, after_dig_node = function(pos, oldnode, oldmetadata, digger) - unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger) homedecor.unextend_bed(pos) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) @@ -124,10 +120,8 @@ homedecor.register("bed_kingsize", { on_rotate = screwdriver.disallow, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, after_dig_node = function(pos, oldnode, oldmetadata, digger) - unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger) local inv = digger:get_inventory() if digger:get_player_control().sneak and inv:room_for_item("main", "homedecor:bed_regular 2") then inv:remove_item("main", "homedecor:bed_kingsize 1") @@ -137,7 +131,7 @@ homedecor.register("bed_kingsize", { on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) homedecor.beds_on_rightclick(pos, node, clicker) return itemstack - end + end, }) for _, w in pairs({ N_("mahogany"), N_("oak") }) do diff --git a/homedecor/crafts.lua b/homedecor/crafts.lua index 69616de4..a139063f 100644 --- a/homedecor/crafts.lua +++ b/homedecor/crafts.lua @@ -546,6 +546,17 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:shutter_colored", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:shutter", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ type = "fuel", recipe = "homedecor:shutter_oak", @@ -867,6 +878,28 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:curtain_closed", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:curtain_closed", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "homedecor:curtain_open", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:curtain_open", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + local mats = { { "brass", "homedecor:pole_brass" }, { "wrought_iron", "homedecor:pole_wrought_iron" }, @@ -1195,7 +1228,6 @@ minetest.register_craft( { minetest.register_craft({ output = "homedecor:glowlight_half 6", recipe = { - { "dye:white", "dye:white", "dye:white" }, { "default:glass", "homedecor:power_crystal", "default:glass", }, } }) @@ -1203,11 +1235,38 @@ minetest.register_craft({ minetest.register_craft({ output = "homedecor:glowlight_half 6", recipe = { - { "dye:white", "dye:white", "dye:white" }, {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", }, } }) +minetest.register_craft({ + output = "homedecor:glowlight_half", + recipe = { + {"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"}, + {"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"} + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_half", + type = "shapeless", + recipe = { + "homedecor:glowlight_quarter", + "homedecor:glowlight_quarter" + } +}) + +unifieddyes.register_color_craft({ + output = "homedecor:glowlight_half", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:glowlight_half", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ output = "homedecor:glowlight_quarter 6", recipe = { @@ -1215,6 +1274,17 @@ minetest.register_craft({ } }) +unifieddyes.register_color_craft({ + output = "homedecor:glowlight_quarter", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:glowlight_quarter", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ output = "homedecor:glowlight_small_cube 8", recipe = { @@ -1239,20 +1309,14 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "homedecor:glowlight_half", - recipe = { - {"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"}, - {"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"} - } -}) - -minetest.register_craft({ - output = "homedecor:glowlight_half", - type = "shapeless", - recipe = { - "homedecor:glowlight_quarter", - "homedecor:glowlight_quarter" +unifieddyes.register_color_craft({ + output = "homedecor:glowlight_small_cube", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:glowlight_small_cube", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" } }) @@ -2227,6 +2291,17 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:bathroom_tiles_light", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:bathroom_tiles_light", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft( { output = "homedecor:bathroom_tiles_medium 4", recipe = { @@ -2235,6 +2310,17 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:bathroom_tiles_medium", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:bathroom_tiles_medium", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft( { output = "homedecor:bathroom_tiles_dark 4", recipe = { @@ -2243,6 +2329,17 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:bathroom_tiles_dark", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:bathroom_tiles_dark", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + -- misc electrical minetest.register_craft( { @@ -2476,6 +2573,17 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:bed_regular", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:bed_regular", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft( { output = "homedecor:bed_kingsize", recipe = { @@ -2483,6 +2591,29 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "homedecor:bed_kingsize", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:bed_kingsize", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +unifieddyes.register_color_craft({ + output = "homedecor:bed_kingsize", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:bed_regular", + recipe = { + "NEUTRAL_NODE", + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft( { output = "homedecor:bottle_green", recipe = { @@ -2843,6 +2974,17 @@ minetest.register_craft({ }, }) +unifieddyes.register_color_craft({ + output = "homedecor:desk_lamp", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:desk_lamp", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ output = "homedecor:hanging_lantern 2", recipe = { diff --git a/homedecor/furniture.lua b/homedecor/furniture.lua index 6c4526c8..4acfa581 100644 --- a/homedecor/furniture.lua +++ b/homedecor/furniture.lua @@ -83,9 +83,7 @@ homedecor.register("kitchen_chair_padded", { sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node, on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y+0 -- where do I put my ass ? @@ -110,9 +108,7 @@ homedecor.register("armchair", { node_box = ac_cbox, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node, on_rotate = unifieddyes.fix_after_screwdriver_nsew, }) diff --git a/homedecor/furniture_recipes.lua b/homedecor/furniture_recipes.lua index fea13cfd..a995242c 100644 --- a/homedecor/furniture_recipes.lua +++ b/homedecor/furniture_recipes.lua @@ -70,6 +70,17 @@ minetest.register_craft({ }, }) +unifieddyes.register_color_craft({ + output = "homedecor:armchair", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:armchair", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ type = "shapeless", output = "homedecor:kitchen_chair_padded", @@ -79,6 +90,17 @@ minetest.register_craft({ }, }) +unifieddyes.register_color_craft({ + output = "homedecor:kitchen_chair_padded", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:kitchen_chair_padded", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ type = "fuel", recipe = "homedecor:kitchen_chair_wood", @@ -106,6 +128,17 @@ minetest.register_craft({ }, }) +unifieddyes.register_color_craft({ + output = "homedecor:standing_lamp_off", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:standing_lamp_off", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_craft({ type = "fuel", recipe = "homedecor:table_lamp_off", @@ -148,13 +181,15 @@ minetest.register_craft({ }, }) -minetest.register_craft({ - output = "homedecor:standing_lamp_off", +unifieddyes.register_color_craft({ + output = "homedecor:table_lamp_off", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:table_lamp_off", recipe = { - { "homedecor:table_lamp_off"}, - { "group:stick"}, - { "group:stick"}, - }, + "NEUTRAL_NODE", + "MAIN_DYE" + } }) minetest.register_craft({ diff --git a/homedecor/handlers/expansion.lua b/homedecor/handlers/expansion.lua index e9d2ec53..779e0770 100644 --- a/homedecor/handlers/expansion.lua +++ b/homedecor/handlers/expansion.lua @@ -211,22 +211,21 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks local rightnode = minetest.get_node(rightpos) local inv = placer:get_inventory() - local lastdye = unifieddyes.last_used_dye[placer_name] if leftnode.name == "homedecor:bed_regular" then local newname = string.gsub(thisnode.name, "_regular", "_kingsize") - local meta = minetest.get_meta(leftpos) + local meta = minetest.get_meta(pos) + local leftmeta = minetest.get_meta(leftpos) + minetest.set_node(pos, {name = "air"}) - minetest.set_node(leftpos, { name = newname, param2 = param2}) - meta:set_string("dye", lastdye) - inv:add_item("main", lastdye) + minetest.swap_node(leftpos, { name = newname, param2 = param2}) elseif rightnode.name == "homedecor:bed_regular" then local newname = string.gsub(thisnode.name, "_regular", "_kingsize") - local meta = minetest.get_meta(rightpos) + local meta = minetest.get_meta(pos) + local rightmeta = minetest.get_meta(rightpos) + minetest.set_node(rightpos, {name = "air"}) - minetest.set_node(pos, { name = newname, param2 = param2}) - meta:set_string("dye", lastdye) - inv:add_item("main", lastdye) + minetest.swap_node(pos, { name = newname, param2 = param2}) end local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z} @@ -235,14 +234,7 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then local newname = string.gsub(thisnode.name, "_regular", "_extended") local newparam2 = param2 % 8 - if inv:contains_item("main", lastdye) then - minetest.set_node(toppos, { name = thisnode.name, param2 = param2}) - if lastdye then inv:remove_item("main", lastdye.." 1") end - else - minetest.set_node(toppos, { name = thisnode.name, param2 = newparam2}) - minetest.chat_send_player(placer_name, "Ran out of "..lastdye..", using neutral color.") - unifieddyes.last_used_dye[placer_name] = nil - end + minetest.swap_node(toppos, { name = thisnode.name, param2 = param2}) minetest.swap_node(pos, { name = newname, param2 = param2}) itemstack:take_item() end diff --git a/homedecor/lighting.lua b/homedecor/lighting.lua index cca06b72..a33c7615 100644 --- a/homedecor/lighting.lua +++ b/homedecor/lighting.lua @@ -46,9 +46,7 @@ minetest.register_node("homedecor:glowlight_half", { sounds = default.node_sound_glass_defaults(), after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("homedecor:glowlight_quarter", { @@ -86,9 +84,7 @@ minetest.register_node("homedecor:glowlight_quarter", { sounds = default.node_sound_glass_defaults(), after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_node("homedecor:glowlight_small_cube", { @@ -126,9 +122,7 @@ minetest.register_node("homedecor:glowlight_small_cube", { sounds = default.node_sound_glass_defaults(), after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node }) homedecor.register("plasma_lamp", { @@ -449,7 +443,6 @@ local function reg_lamp(suffix, nxt, light, brightness) paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, walkable = false, light_source = light, selection_box = tlamp_cbox, @@ -457,14 +450,17 @@ local function reg_lamp(suffix, nxt, light, brightness) groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1, not_in_creative_inventory=((light ~= nil) and 1) or nil, }, - drop = "homedecor:table_lamp_off", on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) node.name = "homedecor:table_lamp_"..repl[suffix] minetest.set_node(pos, node) end, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node + drop = { + items = { + {items = {"homedecor:table_lamp_off"}, inherit_color = true }, + } + } + }) homedecor.register("standing_lamp_"..suffix, { @@ -480,7 +476,6 @@ local function reg_lamp(suffix, nxt, light, brightness) paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, walkable = false, light_source = light, groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1, @@ -494,9 +489,12 @@ local function reg_lamp(suffix, nxt, light, brightness) minetest.set_node(pos, node) end, on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, - expand = { top="air" }, + --expand = { top="air" }, + drop = { + items = { + {items = {"homedecor:standing_lamp_off"}, inherit_color = true }, + } + } }) -- for old maps that had the original 3dforniture mod @@ -535,9 +533,7 @@ homedecor.register("desk_lamp", { groups = {snappy=3, ud_param2_colorable = 1}, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) diff --git a/homedecor/shutters.lua b/homedecor/shutters.lua index 44aa4abd..52c03cd1 100644 --- a/homedecor/shutters.lua +++ b/homedecor/shutters.lua @@ -41,9 +41,7 @@ homedecor.register("shutter", { node_box = shutter_cbox, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node }) homedecor.register("shutter_colored", { @@ -60,10 +58,7 @@ homedecor.register("shutter_colored", { node_box = shutter_cbox, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node, - drop = "homedecor:shutter" }) minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet") diff --git a/homedecor/window_treatments.lua b/homedecor/window_treatments.lua index 71935b0c..c7eff500 100644 --- a/homedecor/window_treatments.lua +++ b/homedecor/window_treatments.lua @@ -112,10 +112,8 @@ minetest.register_node("homedecor:curtain_closed", { paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", selection_box = { type = "wallmounted" }, - after_dig_node = unifieddyes.after_dig_node, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}) @@ -141,10 +139,8 @@ minetest.register_node("homedecor:curtain_open", { paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", selection_box = { type = "wallmounted" }, - after_dig_node = unifieddyes.after_dig_node, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}) diff --git a/ilights/init.lua b/ilights/init.lua index ed6f6e58..0cad68ae 100644 --- a/ilights/init.lua +++ b/ilights/init.lua @@ -56,9 +56,7 @@ minetest.register_node("ilights:light", { node_box = lamp_cbox, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) - unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing) end, - after_dig_node = unifieddyes.after_dig_node }) minetest.register_craft({ @@ -70,6 +68,28 @@ minetest.register_craft({ }, }) +unifieddyes.register_color_craft({ + output = "ilights:light 3", + palette = "wallmounted", + neutral_node = "", + recipe = { + { "", "default:steel_ingot", "" }, + { "", "default:glass", "MAIN_DYE" }, + { "default:steel_ingot", "default:torch", "default:steel_ingot" } + } +}) + +unifieddyes.register_color_craft({ + output = "ilights:light", + palette = "wallmounted", + type = "shapeless", + neutral_node = "ilights:light", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE", + } +}) + -- convert old static nodes to param2 coloring ilights.colors = { diff --git a/lavalamp/init.lua b/lavalamp/init.lua index 54909cb7..b37f6516 100644 --- a/lavalamp/init.lua +++ b/lavalamp/init.lua @@ -28,7 +28,6 @@ minetest.register_node("lavalamp:lavalamp", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, walkable = false, light_source = 14, @@ -39,8 +38,6 @@ minetest.register_node("lavalamp:lavalamp", { groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1}, sounds = default.node_sound_glass_defaults(), on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) node.name = "lavalamp:lavalamp_off" minetest.swap_node(pos, node) @@ -59,7 +56,6 @@ minetest.register_node("lavalamp:lavalamp_off", { paramtype = "light", paramtype2 = "color", palette = "unifieddyes_palette_extended.png", - place_param2 = 240, sunlight_propagates = true, walkable = false, selection_box = { @@ -70,13 +66,16 @@ minetest.register_node("lavalamp:lavalamp_off", { sounds = default.node_sound_glass_defaults(), drop = "lavalamp:lavalamp", on_construct = unifieddyes.on_construct, - after_place_node = unifieddyes.recolor_on_place, - after_dig_node = unifieddyes.after_dig_node, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) node.name = "lavalamp:lavalamp" minetest.swap_node(pos, node) return itemstack end, + drop = { + items = { + {items = {"lavalamp:lavalamp"}, inherit_color = true }, + } + } }) minetest.register_craft({ @@ -88,6 +87,17 @@ minetest.register_craft({ } }) +unifieddyes.register_color_craft({ + output = "lavalamp:lavalamp", + palette = "extended", + type = "shapeless", + neutral_node = "lavalamp:lavalamp", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + -- convert to param2 coloring local colors = { diff --git a/led_marquee/README.md b/led_marquee/README.md index 00508dc7..b8aef6cb 100644 --- a/led_marquee/README.md +++ b/led_marquee/README.md @@ -24,7 +24,7 @@ If the program finds something other than a panel, it wraps to the next line. If Lines of panels don't need to be all the same length, the program will wrap as needed, with the left margin always being aligned with the panel the LuaController is connected to. -Strings are trimmed to 1 kB. +Strings are trimmed to 6 kB. Panels are not erased between prints. @@ -43,13 +43,13 @@ If a string is prefixed with character code 255, it is treated as UTF-8 and pass The panels also respond to these control messages: -* "clear" turns all panels in a lineup or wall off - essentially a "clear screen" command. -* "allon" fills all panels in a lineup/wall with char(144), i.e. the reverse of "clear". +* "clear" turns all panels in a lineup or wall off, or up to 2048 of them, anyway - essentially a "clear screen" command. +* "allon" fills all panels in a lineup/wall, up to a max of 2048 of them, with char(144), i.e. the reverse of "clear". * "start_scroll" starts the automatic scrolling function, repeatedly moving the last displayed message to the left one character space each time the scroll timer runs out (and automatically restarting it, natch). The scroll action will spread across the line, and down a multi-line wall (just set a new, different channel on the first row you want to exclude), and will continue until "stop_scroll" or any displayable message is received. As it advances through the message, the scroll code will search through the message for a printable character, on each scroll step, basically stripping-out color code, and using just the last one before the new start position. This is done in order to keep a constant visible speed (the text will still be colored properly though). * "stop_scroll" does just what it says - it stops the auto-scroll timer. -* "scroll_speed" followed by a decimal number (in the string, not a byte value) sets the time between scroll steps. Minimum 0.5s, maximum 5s. +* "scroll_speed" followed by a decimal number (in the string, not a byte value) sets the time between scroll steps. Minimum 0.2s, maximum 5s. * "scroll_step" will immediately advance the last-displayed message by one character. Omit the above automatic scrolling keywords, and use ONLY this keyword instead if you want to let your LuaController control the scrolling speed. Optionally, you can follow this with a number and the scroll code will skip forward that many bytes into the message, starting from the current position, before starting the above-mentioned color-vs-character search. Essentially, this value will roughly translate to the number of printable characters to skip. * "get" will read the one character (as a numerical character value) currently displayed by the master panel (by reading its node name) * "getstr" will read the last-stored message for the entire lineup/wall (from the master panel's meta). Note that even if the message has been or is being scrolled, you'll get the original stored message. @@ -59,7 +59,7 @@ During a scroll event, the printed string is padded with spaces (one in auto mod If you need vertical scrolling, you will have to handle that yourself (since the size of a screen/wall is not hard-coded). -A byte value of 0 to 27 in a string will change colors (i.e. string.char(0 to 27) ). +To change colors, put a "/" followed by a digit or a letter from "A" to "R" (or "a" to "r") into your printed string. Digits 0 to 9 trigger colors 0 to 9 (obviously :-) ), while A/a through R/r set colors 10 to 27. Any other sequence is invalid and will just be printed literally. Two slashes "//" will translated to a single char(30) internally, and displayed as a single slash (doing it that way makes the code easier). Color values 0 to 11 are: @@ -71,9 +71,9 @@ Colors 24 - 27 are white, light grey, medium grey, and dim grey (or think of the The last color that was used is stored in the left-most/upper-left "master" panel's metadata, and defaults to red. It should persist across reboots. -A byte value of 28 in a string will act as a line feed (I would have used 10, but that's a color code :-P ) +char(10) will do its job as linefeed/newline. -A byte value of 29 in a string signals a cursor position command. The next two byte values select a column and row, respectively. The next character after the row byte will be printed there, and the rest of the string then continues printing from that spot onward with normal line wrapping, colors and so forth. Note that any string that does NOT contain cursor positioning commands will automatically start printing at the upper-left. +char(29) signals a cursor position command. The next two byte values select a column and row, respectively. The next character after the row byte will be printed there, and the rest of the string then continues printing from that spot onward with normal line wrapping, colors and so forth. Note that any string that does NOT contain cursor positioning commands will automatically start printing at the upper-left. Any number of color, line feed, and cursor position commands may be present in a string, making it possible to "frame-buffer" a screen full of text into a string before printing it. diff --git a/led_marquee/init.lua b/led_marquee/init.lua index 5bfc1e08..cb52e66b 100644 --- a/led_marquee/init.lua +++ b/led_marquee/init.lua @@ -10,6 +10,89 @@ else S = function(s) return s end end +local color_to_char = { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R" +} + +local char_to_color = { + ["0"] = 0, + ["1"] = 1, + ["2"] = 2, + ["3"] = 3, + ["4"] = 4, + ["5"] = 5, + ["6"] = 6, + ["7"] = 7, + ["8"] = 8, + ["9"] = 9, + + ["A"] = 10, + ["B"] = 11, + ["C"] = 12, + ["D"] = 13, + ["E"] = 14, + ["F"] = 15, + ["G"] = 16, + ["H"] = 17, + ["I"] = 18, + ["J"] = 19, + ["K"] = 20, + ["L"] = 21, + ["M"] = 22, + ["N"] = 23, + ["O"] = 24, + ["P"] = 25, + ["Q"] = 26, + ["R"] = 27, + + ["a"] = 10, + ["b"] = 11, + ["c"] = 12, + ["d"] = 13, + ["e"] = 14, + ["f"] = 15, + ["g"] = 16, + ["h"] = 17, + ["i"] = 18, + ["j"] = 19, + ["k"] = 20, + ["l"] = 21, + ["m"] = 22, + ["n"] = 23, + ["o"] = 24, + ["p"] = 25, + ["q"] = 26, + ["r"] = 27 + +} + -- the following functions based on the so-named ones in Jeija's digilines mod local reset_meta = function(pos) @@ -60,43 +143,51 @@ end led_marquee.set_timer = function(pos, timeout) local timer = minetest.get_node_timer(pos) timer:stop() + if not timeout or timeout < 0.2 or timeout > 5 then return false end + if timeout > 0 then local meta = minetest.get_meta(pos) + meta:set_int("timeout", timeout) timer:start(timeout) end end led_marquee.scroll_text = function(pos, elapsed, skip) + skip = skip or 1 local meta = minetest.get_meta(pos) local msg = meta:get_string("last_msg") local channel = meta:get_string("channel") local index = meta:get_int("index") - if not index or index < 1 or not string.byte(msg, index) then index = 1 end + local color = meta:get_int("last_color") + local colorchar = color_to_char[color+1] + if not index or index < 1 then index = 1 end local len = string.len(msg) - skip = skip or 1 - index = index + skip + if index > len then index = 1 end - while index < len and string.byte(msg, index) < 28 do - index = index + 1 - if index > len then index = 1 break end + -- search backward to find the most recent color code in the string + local r = index + while r > 0 and not string.match(string.sub(msg, r, r+1), "/[0-9A-Ra-r]") do + r = r - 1 + end + if r == 0 then r = 1 end + if string.match(string.sub(msg, r, r+1), "/[0-9A-Ra-r]") then + colorchar = string.sub(msg, r+1, r+1) end - if string.byte(msg, index - 1) < 28 then - led_marquee.display_msg(pos, channel, string.sub(msg, index - 1)..string.rep(" ", skip + 1)) - else - local i = index - 1 - local color = "" - while i > 0 and string.byte(msg, i) > 27 do - i = i - 1 - if i == 0 then break end + -- search forward to find the next printable symbol after the current index + local f = index + while f < len do + if string.match(string.sub(msg, f-1, f), "/[0-9A-Ra-r]") then + f = f + 2 + else + break end - if i > 0 then color = string.sub(msg, i, i) end - led_marquee.display_msg(pos, channel, color..string.sub(msg, index)..string.rep(" ", skip + 1)) end + led_marquee.display_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1)) - meta:set_int("index", index) - if not elapsed or elapsed < 0.5 then return false end + meta:set_int("index", f) + if not elapsed or elapsed < 0.2 then return false end return true end @@ -118,10 +209,14 @@ local cbox = { wall_side = { -8/16, -8/16, -8/16, -7/16, 8/16, 8/16 } } +led_marquee.decode_color = function(msg) + +end + led_marquee.display_msg = function(pos, channel, msg) - msg = string.sub(msg, 1, 4096) + msg = string.sub(msg, 1, 6144).." " if string.sub(msg,1,1) == string.char(255) then -- treat it as incoming UTF-8 - msg = make_iso(string.sub(msg, 2, 4096)) + msg = make_iso(string.sub(msg, 2, 6144)) end local master_fdir = minetest.get_node(pos).param2 % 8 @@ -154,7 +249,7 @@ led_marquee.display_msg = function(pos, channel, msg) elseif string.match(node.name, "led_marquee:char_") and fdir ~= master_fdir or (setchan ~= nil and setchan ~= "" and setchan ~= channel) then break - elseif asc == 28 then + elseif asc == 10 then pos2.x = pos.x pos2.y = pos2.y-1 pos2.z = pos.z @@ -168,17 +263,34 @@ led_marquee.display_msg = function(pos, channel, msg) pos2.z = pos.z + (fdir_to_right[fdir+1][2])*c i = i + 3 wrapped = nil + elseif asc == 30 then -- translate to slash for printing + minetest.swap_node(pos2, { name = "led_marquee:char_47", param2 = master_fdir + (last_color*8)}) + pos2.x = pos2.x + fdir_to_right[fdir+1][1] + pos2.z = pos2.z + fdir_to_right[fdir+1][2] + i = i + 1 + elseif asc == 47 then -- slash + local ccode = string.sub(msg, i+1, i+1) + if ccode then + if char_to_color[ccode] then + last_color = char_to_color[ccode] + i = i + 2 + else + minetest.swap_node(pos2, { name = "led_marquee:char_47", param2 = master_fdir + (last_color*8)}) + pos2.x = pos2.x + fdir_to_right[fdir+1][1] + pos2.z = pos2.z + fdir_to_right[fdir+1][2] + i = i + 1 + end + end + master_meta:set_int("last_color", last_color) + wrapped = nil elseif asc > 30 and asc < 256 then minetest.swap_node(pos2, { name = "led_marquee:char_"..asc, param2 = master_fdir + (last_color*8)}) pos2.x = pos2.x + fdir_to_right[fdir+1][1] pos2.z = pos2.z + fdir_to_right[fdir+1][2] i = i + 1 wrapped = nil - elseif asc < 28 then - last_color = asc - master_meta:set_int("last_color", asc) + else i = i + 1 - wrapped = nil end end end @@ -210,15 +322,12 @@ local on_digiline_receive_string = function(pos, node, channel, msg) meta:set_int("index", 1) elseif msg == "start_scroll" then local timeout = meta:get_int("timeout") - if not timeout or timeout < 0.5 or timeout > 5 then timeout = 0 end led_marquee.set_timer(pos, timeout) elseif msg == "stop_scroll" then led_marquee.set_timer(pos, 0) return elseif string.sub(msg, 1, 12) == "scroll_speed" then local timeout = tonumber(string.sub(msg, 13)) - if not timeout or timeout < 0.5 or timeout > 5 then timeout = 0 end - meta:set_int("timeout", timeout) led_marquee.set_timer(pos, timeout) elseif string.sub(msg, 1, 11) == "scroll_step" then local skip = tonumber(string.sub(msg, 12)) @@ -230,20 +339,21 @@ local on_digiline_receive_string = function(pos, node, channel, msg) elseif msg == "getindex" then -- get the scroll index digilines.receptor_send(pos, digiline.rules.default, channel, meta:get_int("index")) else + msg = string.gsub(msg, "//", string.char(30)) led_marquee.set_timer(pos, 0) + local last_msg = meta:get_string("last_msg") meta:set_string("last_msg", msg) led_marquee.display_msg(pos, channel, msg) - meta:set_int("index", 1) + if last_msg ~= msg then + meta:set_int("index", 1) + end end else local asc = string.byte(msg) - if asc > 30 and asc < 256 then + if asc > 29 and asc < 256 then minetest.swap_node(pos, { name = "led_marquee:char_"..asc, param2 = fdir + (last_color*8)}) meta:set_string("last_msg", tostring(msg)) meta:set_int("index", 1) - elseif asc < 28 then - last_color = asc - meta:set_int("last_color", asc) end end elseif msg and type(msg) == "number" then @@ -258,7 +368,7 @@ end for i = 31, 255 do local groups = { cracky = 2, not_in_creative_inventory = 1} local light = LIGHT_MAX-2 - local description = S("Alphanumeric LED marquee panel ("..i..")") + local description = S("LED marquee panel ("..i..")") local tiles = { { name="led_marquee_base.png", color="white"}, { name="led_marquee_leds_off.png", color="white"}, @@ -279,7 +389,8 @@ for i = 31, 255 do if i == 32 then groups = {cracky = 2} light = nil - description = S("Alphanumeric LED marquee panel") + description = S("LED marquee panel") + wimage = "led_marquee_leds_off.png^(led_marquee_char_155.png^[multiply:red)" end minetest.register_node("led_marquee:char_"..i, { @@ -287,6 +398,8 @@ for i = 31, 255 do drawtype = "mesh", mesh = "led_marquee.obj", tiles = tiles, + inventory_image = wimage, + wield_image = wimage, palette="led_marquee_palette.png", use_texture_alpha = true, groups = groups, diff --git a/led_marquee/textures/led_marquee_char_107.png b/led_marquee/textures/led_marquee_char_107.png index 364a43d9f7e98d7155428029c5077b7ec287a715..47d7c6064db8764697d35331ecd0b6dfe31040cf 100644 GIT binary patch delta 271 zcmdnPyozapO8rMq7srr{dvC9AUfJlj)va-WbhMwa*X)@(GjZ>6FPACN0 zO!hdr`&9oib(Q*EtLHs26GS?hYsBVBzcTGkN0}af%^t-dmXP$OZO2m&`?Hl{ z(iKnS50%+&VNo~|+jl%>PotG}{L@FgYi|D363|jE<3NS%G|}ByV>Y zhX3vTXZ8bm>?NMQuI!IE_!-Pqg8liUfkGcVT^vI)?!CQ!kheuagyllunnSZwb2v|D za^Lv0hVk@AH*uBfkDC@4zNxu8;f#Hw#M}uV4!xH<@%rzaCg(%1o~P#LMLYle9WKGh zV0hrXx7~KW3(xtNy)8e`p*iLAY33a{Z}_h1aZlJ(Xce(r=fJDSW?d1rmfP38yT3d^ z{lH$+Dg93xWPZqQdea^t)<_ zYeY#(Vo9o1a#1RfVlXl=w9qxM&^0s-F)*|;GPW``*EKM)GBD`9`t}EkhTQy=%(O}r e4F*=GrdGyg5Dlryug!oO7(8A5T-G@yGywoH!l+XK diff --git a/led_marquee/textures/led_marquee_char_121.png b/led_marquee/textures/led_marquee_char_121.png index 29382c92239ae1da6af34099b8e536930387839f..454818fd37db8e2bfe41bb2df1e1a79b3f9feb6d 100644 GIT binary patch delta 318 zcmey$e1mC%ay_HGr;B4q#=W;Q4sx~_h`1atUHxI2k1Nk?AxDJ_`d2O1J3~{%8PsdcrhcNshCSo{N0@a$&Ozhm#i{=EzH1N zWx~)Pd7xwA>%*&<|5(VDq}6^B-to26ftme4YcHR=RsCi=&VcvdvgWcxlvQu_V{$q3 zI?s(o;IG?n;kl9f<3p=AbFaEqbN~z=R9ZUB=a|l1qPM});W^W6=B34o(hok#EGTX~ z-IN+goF&z^?JO`e%&;U%;*Jtk0N>8nUmmH_Q;JUMk)4ivb8cUHx3v IIVCg!0Ms0gT>t<8 literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bm>?NMQuI!IE_!%s%9ggTLFfcG`db&7KIrYpvYr#y~&rmA*a>6 zrJl!Uzuv=S@MZo=QNf9&lT6O-*mf>?)BXjw_v>BqGJgt`an`6>3}RP6aSQdO6M5D-Wwk6PYZj07RZ8OLv@oUQ6F059^5N5WVl`3 zQ)&Nz@4&Zx5)E%_L42M>Ape2%q2G)~4cos}Y14Tn_ ieoAIqC5i?EplT~qONfTRk4~vT4Gf;HelF{r5}E+3e#VLb diff --git a/led_marquee/textures/led_marquee_char_143.png b/led_marquee/textures/led_marquee_char_143.png index 4b58ec9b9a4f8404888f554efdcdf6110af9978d..6293a97159bcc79def2ec340e216e911a7878bbc 100644 GIT binary patch delta 297 zcmaFBbd70(O1-S7i(^Q|t+zK0@-`drv?fmWIb^Yc>vP4_5}Emvbd{={vQ#xDu90!7 zmw&v3eFsUPO|IRo&flNCZd)7zkMG=m-`f64RK34`%-rqwtk3QJ zd++DLGuMJng>Rmsl(ubK%>j_1<^R5X4}NezyXuhri&OHoebt}a=Rdyp$KaRD_h;=F zpYJfY@3A|+_oolzHwGI9{sYV(Ak+;Q1I$lANC5c_wnz#;Ffn|aY``c!*@2Nod|p`o XiMFMN6XPCBGXR07tDnm{r-UW|x$2J& literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU{v>XaSW-r_4bBiUyFi3>qGMb zq5j3;A8krSpINMVAa*2fW{JAhq>zXUpEnzc{P2khc{=&u&tI1EXL4evsUDTM8Wnu5 z^7i+?+rPW|f8YCc;m@>f(}McGhk99_$$88B|MkA@c2@D4OCM(~ozgdtzhc+>wf$%K zCy6BQsrh)f?)}c<`_b|<LCw*If&T#W z2L>ROzz1c3sRm291c?6(qyjEK1EK@Y2kQs(9=zUlfID>GQp4HYp+A5j$KdJe=d#Wz Gp$P!(^_~*| diff --git a/led_marquee/textures/led_marquee_char_144.png b/led_marquee/textures/led_marquee_char_144.png index 995a284a2511236c5a359b40ea0036b35e9149f0..fda87a1cc952b6154d85db34c2d9ada2a783e81f 100644 GIT binary patch delta 164 zcmV;V09*f#0*nHXB!AOML_t(|+U?fC4Z|Q1MA5OSgmUawsApT*l(Q%30^v(6B@z|D zpCg|m67P^CGrMxmo>EfpT@i7YQa<`_>279Mt#$ma);i4W+M&zc$87FCcIanHNwdA@ ztM{|_KE3dsuinpyxLa#~v9+d%xFu=zer*2>>^@!q4!{980Fkvqkv+~2t$l9ZWuYwa(#)|8p|?wwx%2XF&$0Flxok6)iHK8~$S2 z^F4oU{5z(swP0#SrRLHX}&c=B+%=?G--ecZknGYxKA7*x$bL|^P0E1;BQ(VQu!<-xPW?lOK*O`CA zJ@Y!A|MKSd*?XRS`Cyk|vb_B}qkh4!3(RZ2^8(FXaG0g!M*ekXt2f)pq9OAi?*H|7S6MVEDrLg82gb0)7Yi20MmY1{(%B2L1;21I!N?KQL4|XNy4?T( delta 389 zcmZ3*yoz~(UVZNo1s>PQONCB(MlEc6vLU)TI`Q;J&Rq^SU$5CB?C;W(`0c;4QG}7l z|BugCHg;ruyyyP>PKejc8I`<>HSudDgIu;OnbPOJbPAtR)VeD?t0f+PoSxKke5#ag zZH9Tlxz5+?ukctm1aby7jLzl)3HtcdA_fN)2EDF{_F4bcQrh@cuQ{G-FO*P#i^3aY~gNThG=cDVW?#I#PEdi0Yd?U1%nI&9|L;>^8rQy7Dpg@zeqm& W!|sB=F)J=G0D-5gpUXO@geCx}A-Dhl diff --git a/led_marquee/textures/led_marquee_char_197.png b/led_marquee/textures/led_marquee_char_197.png index 8c13e3510f8b88528ede10de1896a187d8b206b8..4445568fd711539374ee506efbeab5b90386ed8a 100644 GIT binary patch delta 350 zcmZ3){F7;dO1*=pi(^Q|t+z8S_O>X9xR$PLDcT~Mb)o;JRGfB>WsRfwk-u|&(@KO} zkDu5%f1d*9ggcXs`NUmZ)Uwx_ALFrnuGnH={k$&gY^btQa8F^iUr(X%#FfWlZ14Sk z8@lIvbnnlbHFN(q8m4`(e!24(;GJE`D3qzSCVxJ&-7eM#3^fdP4DtiYe+~b9{ z_lNqt_Wp36*WUlM3!r@*-T(9g&_0gte|iCEA4m763y=e@d7;f(`}y)hyL0aADiYMr z0oxm&-mb_4hUWluT|Eb&>*_fGUDv$aQwC4qI4(M=SKL-r$0^|VZ0n7uK2QUv{9>6?+c>pn-M`uZ diff --git a/led_marquee/textures/led_marquee_char_202.png b/led_marquee/textures/led_marquee_char_202.png index b069c41e4b2a8dd10ae49621cbdbae9d70925f35..e65878afa00cb208d2e0c9646f59c6fa64ff838f 100644 GIT binary patch delta 369 zcmV-%0gnFX0*nKYB!5#$L_t(|+U=S_Zp0uAMM*gc$4Rcj8InbN24969$1Au6O1D#~ zBQ$ay?8*O2EQs`p^gfoCU_eB)rj$yIG4$R8GjBQP?{EhZ(OPRgA608TiDaf8wuCZav1 z^!c#=$T@$R_=83qmvWwn_9y#y6FFkUaVh7u&lgi*#BnL-wa*tDFygqB^V;W&4H$7; z%6Vo!p6oyV<9tv6IpBgD)~=i8yms9@=e6tVuR$q?wd?8zNI9%sS2sY)dF?tV06F*r zT+2MCy}$QoOKLp_xHn)nr>7e*o712GgnoeU9N<1jcz^G^?+3Wg0oHSb`F;Q>03ivY zAAo)U`T^(%pdSDVKsQc;m=C~w0OkYKat7uDtoH*jAAp*+xbK~G$_F-> zu=B(ZOHQO+ue`Y%5Rqfw_vpQMr4*;CX9(flt8N+*IZ{gXo0L)&k)uc5JTb=lj~HX^ zQE%mi9)S1$^1ZcgegLJE%lFp0`2ncvnREVm%Q-t$J$uw!*?*`4i?iMFg-8EkLv{Y? z{oy)|?%%8eXq`s)Zyo?zr_ueJ2Y}XTbbqP{Q2S-gY?7z0000ctMGi6c515` zi*e-sdKac8iA%ocoVAhc=+L?M`^B8uUYe6vty64S|B_2^qUzF;JL*eII!+XIG98iV zpD&bbb8g4~bh;)qgB0YL}W=R)mKtVRYaB+_3nu=)=$J3 zYm2%y)7c*gA?%)?t#^L`rIg+Cv-R#TKvmbA^V?a@c~I50MStCzkrcQ&V~cJ;6Jtt@|IQfOk$?_dmP<@0_;oe|Q1jIc?pa6u<*6V1ix00PA@`_wxeld4RhI zc+UgeJ-~Y&;O+t5^MEcqfE2(3d|$|=`TOqz)}CO^WZmHJzYADg zfCu0KcmN)N2SAVlcmOW|55NQP06YK>AO-H`0qh5`AHaUV*E!FA0Q&*#2jB?+0000U ZJOL9mmeVOjnxy~$002ovPDHLkV1gHinGpa0 diff --git a/led_marquee/textures/led_marquee_char_212.png b/led_marquee/textures/led_marquee_char_212.png index cae030a186e3feb4094c6e86a3913ca49ee33af9..b748c3ed415da283101c6b7425dee841c65ede85 100644 GIT binary patch delta 362 zcmaFM)XF?TrQXNW#WAGf*4tSJc@Hb_xO&cPDV!8KL(y`JafPT=pZ^9{uk~xMaD}c* zUj6fb2aCtCOVv*EnwkYJ&I!^oJa(a)|ID5zbKXDXQCzh1+AjO$*LDeCtm$H!67;QH zbLkuRJM|m&9C|*k{<>e=;r(9_#bB(zcI))5*P;@hJ?;3d9#H?_$;`eA$Cuo~7iR_S zvU_{K=$yH@tjVJtQ$D+Fsk^a%*M|4e==nI lCEGE~aTj256kyqSlKFz(8b`%z>dXv4;OXk;vd$@?2>_n%txf;{ delta 338 zcmV-Y0j>Up1MLEkB!4tXL_t(|+U=UbiNr7v1npHM4#!T#@k}bZaONdtA-vyRIMxqo zu61nnQv+_01zj|=E(2s{`?hU4rL?rx7I#0+^ZXe#pITzjBmVGT zM6JwUozrqoQ0H{C|7{AWb2{4p_5##79qoU60qUHN_9q44fPX-OQ@?=dK4AL3Ai58b zbAY-JkaK{#50Gh($07*qoM6N<$g2Ef1+yDRo diff --git a/led_marquee/textures/led_marquee_char_216.png b/led_marquee/textures/led_marquee_char_216.png index b1312321b285a37569008aee257fcd57fcecfb1e..5dfa7da5d519926959bb8ece76c58e9a63e609ba 100644 GIT binary patch delta 362 zcmaFE)XF?TrQXNW#WAGf*4wC!y+;gqyzfm;nUga0%;L~Lk5_EkZcy~rR$vZyr2kR( zX=#oQW)4lCcJVZHyt%#Y>6A;CqM}2-TAcq}E|Pz>ytU)a(kZWHmrn6^`6jq0^uDa+ z^VfWq&$C(bufBhH+^S*9rQ^lgKy~sC*>4~3oVxwhZhnW*{;1dW^EXGmUbN~s$Guhe z4||FKC|dKs@bC+9wy!^zzux`ZB5MC@rh9gM*WU9TxPAQMue*#DK(YCH2V?{uuwC#J zdUg1P9pgI?F^~B|Et3uVg5N9^d=B3^OBkOuFqoT^@;Q8dSpENHF~h9(=L{zN=NU8R z={eXuVD;H6?(m)UVex_FFV&1C@d9@2KKnr;C5(?4doNtEeDLzuANd3S8DWIXhqJTi zzx@6`Oup})`i|!fFKU~r`8uFXrq~7rjwT@5ah%&fP2%1+#VUOUAnpD)vWy{XL64l=E zM*CS@V=ta8tO`+CjRX(3-h z>MpaMXp(;Lm)-ew_3w(3+H!gK*Z#2wZXdt+>oRM_Z;Pnb%X*kEZ{r%s=Kxsda8VIp~Tfoez z#!LLcZif4;KlBciGwxz2+{3s%uO{#Q@90{Ks`(G*F)#Yg`OZ=S#w=lU0{On^thD7e V7K>9e6>l>Dfv2mV%Q~loCIGa3qgVg{ diff --git a/led_marquee/textures/led_marquee_char_219.png b/led_marquee/textures/led_marquee_char_219.png index 5d978b573cab0cd486a0a81f2d85021f08292ca1..cbd447481cd7ff8e6188d02e57971b8b8e9955f0 100644 GIT binary patch delta 374 zcmaFPG?96NN_~W&I>)iz+HckAu{pbT82bW|H#me`wYp)u97D?W-TN@~FuCi9``5vK*6`d?grd<2) zp}E%m$o@?A1J(a8{<^NZ;My+`)i85;(5d-bgSwKRz3lkGTp#k_5s!OFKvbgAEN2dT z|L4;s9{x{ayI^bHlyA zJAPIkkpBDQ*+0I|`EBbyE@b+^$fjnu?D6+`zoYy4(?@K=P&%{A8bP0l+XkKQZ~7Y delta 332 zcmV-S0ki&*1Lp#eB!4bRL_t(|+U=Xc4Z|Q11np3X%duN=J=Y2;=U&hSa=wWa*$=!1 zC$mrPvC@IG!(+$c0-4!7O;ZdZ45gI8-IsM;pJ&axmYK~drR`lQrOnLdGv?hZ#<+b` zjBz_-UaNeFob%xB%YPa3T8*T@pKHA0hFia| zraAxX{_>nw`&XxcI;YkC)eBJPwA#OV0qUGq`;!82zy&1Nnk1Y4=kM;{{J*aDKTLtv z|8=$h;R0I!*VX=q3uygcSNoF!Z~!j=4uAvT05|{+AO+w6UH}{b2fzVv031LHzyZ7f zH~v{572#IK-~xEzAvEe19aaPQ1=14?+d8=0JrE1{B;T- egb+dq-BmCB=c{qFX-yLV00009v(Af|N$a z^!;Oeu;fH~58-*bKtyC+mL-M|rc%nJs@uNr&$D&c5s@{eRNs?Qsv@$Usk={%v3^U8 zv7V{-=3za65W?YktL}aPrIf?-R^9yoRCUWaf1Kr2AAmLI%?Du3c_=`B@B*xF(6qlb$IU&$n&YGUHz{Dv@zMR81F+`!=>E+CSaW=I ze<*+l@B;7vJOB^C1MmPSfCm`fkn0=n<+S_%2ECkizaP-cY4`g9y_|NxAJEI`TkHq? zH3jehOzz^}^Euupecirjjq;~zP3Y)r{^qAfB;|(Atdj;tF<~r++vJRH-i9R%{ia1$~m6^uujo{l+yW5 zDW$W=_itA>z>-5v z%l#w9_z*EcEgz@)JOJz;?(ZTvqUGaMpXaVmc7c|UQ+=MhKDhxcAE){}cYSgLT0Tzo zc|<%u+&_L%-(0{rK)?j3enBb+sLunaKCM0vp!&4>Jb>!c>hl092Mm!1Ozi^30SZWR zXpT^?t2sgZUVng_6U6TYxH&=mUVxhu%ms`C6p*0k3E<8H#B%_59w43rxbpz<9Kf9i zi01(AJU|5pOzi?wa6pI6kK769u>Y6M0owQfWEarB|0g#<`~IKYfDZeA`5Z8{3m6C3 zgcv6b%?b9O;MIA+)%7*}C&*ggT)<>9nM@{=X;%FKQ4`9c^35MmhX4Qo07*qoM6N<$ Ef>i3iCjbBd delta 353 zcmV-n0iOP}1N;JzB!5FmL_t(|+U=OZjf5}|1mPSB;Xo?HGpYE(nU|e~#eR3C6FhKV z59{tHBiYhmsY*Rh9b#tdvMf2JG_}?yci;AX|Lrvo9Wz@?DaU(CDTkS@J?7z)b3Xn` z&iUvuN9X760V$=^?|0|n7tmTe{eE{IegW>j)mlHk)mkTa-+y|{(V0bo!87;x!~cO= z+Wl-!(>;OBY4rV<6ku~2egEYG*qlb+f4KlQr_uL|0`dTvp!xvy0qO(P2dEDa1>^x_ zln(nszTOki9zmx7+an&o0JbO47r^!eQ9vH>022)T0?>Uxcn?7L0pUFW-3NsC0CXP^ z-UHBmz#}|hXj%#k;Q{DB6#50AIUU{u(3}qM0ccK#_W(4f!+QXl(~t0gp(!8_&OPyGL-{FM7| z&Vk((&pKEIF?+9&nIYt;pGKMp!4eDPn>|8+|4TP*aR*1Z3GR3xJ?=G4!7&%1e17?o*uac}JZ zJ+290uyi=cZ}7M2l1#!r{s~35YUCB3Zux2Fa4Pe2ZG#EB&qek-vzWG@U}T;&@1DF- z!oBNrh1b-d|DD7YG5`BfHZZ|6KR4NAVxo@oZo_Wu2 mrXNfYdKrUai+~fy&pvkFO+Oz6Gc3By00f?{elF{r5}E)Us;^c6 diff --git a/led_marquee/textures/led_marquee_char_238.png b/led_marquee/textures/led_marquee_char_238.png index c63a1d30255e52c639db9c0965fc6e9eba84880f..967992722a4cc606f889fa155dfa3d6ca0e25268 100644 GIT binary patch delta 360 zcmcc2)XY3VrQXZa#WAGf*4vo}dygpaxSkB+e5$fGz`5wg%7be+JpI8EyWmWz+buz< z$~lG~?hA4%S$h0W)IZ1IvZYO6()W8;qhyWq4UgHIGrMegHs`#1(K&U&wZS3^OH2N_ zd%fKA=(qiSy@v1q)_#4+6_8z|xKSW(s0>z;=N70pkaT3I-bnO$N1h z95eSR-YRDNJa2)m_=RsQpNkoD{SEBlOb0Hoy=P9zzH;sLxf4I{A&Bqk>gTe~DWM4f DL2#sx delta 312 zcmZo>zRWa1rC!R@#WAGf*4tSJd7BM*To=x4DNGQ3_EGDlg`H}&%a>bTq8_U2?tZ#w zIBi3U&foQadYsu^QsynwTt21k+N}kvPVZXxJ?`s;juSCnH|J?C%~3M?zM@_I`JTPX z&-Z*?5nXKkyK%~;cRz1d{b1a3t?c~yYlrzALZ?T)J{`HXG~nt|_xiiD1VwjPB=_6@ z;ayq!`u*C=@9YjnFJJpxepSPEzv%DwGRTxWD+3Vh;5R7Adcp*P^4AaZH^hJ-gM7kX zMfnBQ+wz<|AY6n4O{&kSQ~f`us>k_!1#lqhCz!#e4ilKUd3xW9V+H0 z%r)fRv0r%0waWbY0(RmB_39aGKi{)s6a`zO#Xs4tr^auZ#wHNg)78&qol`;+0HOeq Aw*UYD diff --git a/led_marquee/textures/led_marquee_char_244.png b/led_marquee/textures/led_marquee_char_244.png index 47e4dfd65bbec60d59b12723b9a4b1a6ab9b7366..027c715118fe1040854d3d71dd4d8d9df8bcf5a8 100644 GIT binary patch delta 360 zcmV-u0hj*R0)qpPB!5atL_t(|+U=Ra4Z|Q11aYW@a_m;9!G0t)Tq~rUdqEe-`8rY} z6kWia*?A&?r8CklyOZevBAT6Z!CGr_&W4#6@BPz^01?eG#{Ec)aVMgAhyjEU_D_Tm z_7>m2ojm|+?N95M8$izar}fJXfSH$+(%V`}$uRTM;`9|zqYo9Mxfs&3(b-wob;sKO&T&nZ6&leA%q~lVZ zXXfq8{_P*TOY{Om ztH2OGph4o(?_mvTko))T6SU|4VinMy`-=ylJ@*$6ph50`s!xClzz5(4zz4twzz4tw zzz0AD-~*5do#PYG3!oQ3FHlwIs}BIZfI%++00000ppq9PT{p*oHL0000zQHs>rC#3C#WAGf*4vqmU55>LT<88$vGgmNI>$Zyql~-uZ!xvI+XAE{B9;Ar z-@DW#G3CJTC;FKTN}JZcjw(90^837yQv1Hg=~rs9TvAqVo!5UQ%3tuN+nMFdrxfj5 zG^MC-Ms@LKJB8CW|w! zNwb}(KJH;SY2%lDf{zOrTv9&WbANs(z)Lculuz*wkFA1Iuvcca%F->JC$6|MC-vMm z24cDM|9_P*&neEI8^4Zm>6Go~^sh67&MiK-|6I|z=2hpaZR+cfFwHf7_mORFeuRtI z`@i20|21tXus*_a)h6%jo(>)Tclzxo1Wo&+ZSU{ecasUq*vW{(SikCZ_wU#BSB^6= z06`7^kDN={QU723uDkr}?)%@*azDKJy>BOD`u*=`d2b}%&ySMlW)ODZQ(&LKe8P$G z34;!U4})cc3`ArD!=FT^83ILzN{gBPb4E!YsBcm~&lv$SctQ9(UL8-Z`3GA~KwM8( KKbLh*2~7Yp9hOf3 delta 323 zcmV-J0lfa?0^S0UB!4AIL_t(|+U=V`io_rgMU(L)IZkqwoTskh9H&-#3rTNhpy@!D z&UfhdmKG?Oz<-vwE*&tlecQI2Qd(MTi@P7^d4Bh*PmP)FrIhO@rIgFe_8#@=$vI!o z$T?p<>ZAFJPLNW1IUcP~zX7eam*dg;^c&#rN3HeOSgmz&_kW{DeKad6@ZqdIzVKf} zt!#aDPRl((oztV&zfA#kPLE#yb_3KoJ$n7y4N&Lw==Dhf00000`T+qGi<;Wh9i!2G z{ps%wM)&pA_Xgp9K=iz>zBdT>1ES}3^}Rv39}qpStM3g+0X%>|01vuN^ VNLt_dDtZ6_002ovPDHLkV1mV!n&bcg diff --git a/led_marquee/textures/led_marquee_char_253.png b/led_marquee/textures/led_marquee_char_253.png index a3111a31e6445caf2fa30bef3945b8656cef6031..6282658eeafabebe3d83103205304a43bdb21479 100644 GIT binary patch delta 339 zcmV-Z0j&P*0`3BkB!4wYL_t(|+U=Un4Z|P|MoF0@<0PwO9s-^x8^QKtgW( zHQzhpn-l5zZwUa1$hNL)iZO;-Yf#nwIF9FN92ybXa?b6YoO2VAZ6pp)N~wJ#rPM~^ zJs#c@5Mw-j@5SL0P-{JX@5SL0psIT*<>RfC5>#~`iT7A&fq$E`@C(!P|LuAA7O?ib z`vh2f-hBeBJx>b|LI@#*5W`B)x{`BUDO&gQ?&k&8{k;3VfOS9belK9%&%56XSoiY~ zdx2Y9fOWtRz994;Fza#ny}_)<;qL=xJq~{#Fza#n`+!-G|HXa4tu4ShfR!G2zmGmo zxZDC)_xtV>z)br9-Urb0oCnbJ^t_$t;pYMH3Aozx@bds#fB^gf^gKQ9*YoBU@a}o@ l1bFwnc>=t9o)#eIya1jgJ`*2+M&|$k002ovPDHLkV1hFztqcGF delta 338 zcmV-Y0j>V-0__5jB!4tXL_t(|+U=Un4TCTYMxmL6abOkZ@ha&!J|$a3>9v(AK(bQ% zE8jcDH-q&2H%|c&k#$*?oKl)vYm=&O`@TP~#-S0BwUpA|DW!A~S+B(5$vO9LLgb+dqA;eG#j;`cFSBj(i`SA0C(fxe*y};;xKKx!_bUz<{FEF~F zhu90;+5)Tte((jM{{XAU;r9kskHg;wSUnDZA7J%3{C$Ac<9~4py%m%T+f>=fbMy7 k0?<8gP5`>+X#sM~3t8Mg6S3ewrvLx|07*qoM6N<$g2#`jK>z>% diff --git a/led_marquee/textures/led_marquee_char_255.png b/led_marquee/textures/led_marquee_char_255.png index 9855706ae74695d6ac448073cdbd334737120d75..58a756cbf0642e8cd2e4d54a885fd4de9c35f76f 100644 GIT binary patch delta 335 zcmaFE^onVMO1+_{i(^Q|t+z8SaxxhTxGY}z{J}j&BUIX%?&;)7=Xaj)z4*}Q$iB}L1L!u delta 337 zcmV-X0j~b)0_*~iB!4qWL_t(|+U=Op3Bxc9MBRFljFYUAdAy1{j=tD*gBJb*FArE_oj@Bl<)>%D)R^?%-zh-`OUP&=O%AcPP? z2;qAGu!*6Yns&ZwA4mJTcD{NaNBg>VKHLV+`Z(Ixwe#Ttob_?EuWRSS132sBXkXXP zrv-?E7a{HMrl1~ozXxc0-2EP)?Q!>efVRio?*ZB#53vW(0^9>^|B%px_q_M_1ak{` z@B8Khu=c$907|SqPYaL$n;<<;&)Z@C9uR&2-aYUBJ%AP<0sa7bo}Q2EdDsHcJr55c jy652mME5)`Kz?%o2LFtFgxj+J00000NkvXXu0mjfAq}bN diff --git a/led_marquee/textures/led_marquee_char_76.png b/led_marquee/textures/led_marquee_char_76.png index 36afd279c608aff230ca53e470bd009ad36002a6..7809c03b78738043a6116cfc5e25131e728f54b4 100644 GIT binary patch delta 233 zcmbQu+{!dTrT&bki(^Q}y|-633brVSuv`dTbEwBihjEeigIk-Jvkw$?Ea5)JeeT8L z#?KFV^6WXa8LiKK*u`0N?;Klm&x`3_b*|4{xaXg!8-oMahtpccZ<+S~N$7vwAZRva zXC#Fq#=p#0;81!`wIqH5D$&h zc)Q+V_EDdtvw64oZ+^RZ_57#1-Zq%6mc5X+mHF11GKbmP76IQyZQeQXizP6M{rJu# YU(9+=AhRPRfB^_RUHx3vIVCg!08mA2R{#J2 delta 362 zcmZo=n$0{xrJg0-(btiIVPik{pF~y$1_q`iZ+91l|Ly%}_5*qBC7!;n?2kD38M)cM z$ijnNaF01~Df{(PAQ*6=<9`E=pHto`dCp=cM8yqM8 z3;mwUS@+o7M&bG2FBcaow5HxYotwU@{(qM-gMxcY>eQWPrHz4dKi-xf;E{iQXK#b> zZtESd!xnVxmAO-@J;CYTwjPmJcdFWU#~<`-%uZj`|AImG$Gw*fvJ>Y^)mzN(Wi?@6 z6RDk0c3{?75c6h?Lot*YIa^*P<2P4cd4kP