From fe3e837e1be767d1935c0774153892eec58ff555 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sat, 11 Dec 2021 17:16:10 +0100 Subject: [PATCH 1/2] Reskin chests as presents on December 24th to 26th --- mods/ITEMS/mcl_chests/init.lua | 71 +++++++++++++----- .../textures/mcl_chests_ender_present.png | Bin 0 -> 286 bytes .../mcl_chests_normal_double_present.png | Bin 0 -> 307 bytes .../textures/mcl_chests_normal_present.png | Bin 0 -> 285 bytes .../mcl_chests_trapped_double_present.png | Bin 0 -> 307 bytes .../textures/mcl_chests_trapped_present.png | Bin 0 -> 286 bytes 6 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_ender_present.png create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_normal_double_present.png create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_normal_present.png create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_trapped_double_present.png create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_trapped_present.png diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 8326822a..df097b47 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1,6 +1,41 @@ local S = minetest.get_translator("mcl_chests") local mod_doc = minetest.get_modpath("doc") +-- Christmas chest setup +local it_is_christmas = false +local date = os.date("*t") +if ( + date.month == 12 and ( + date.day == 24 or + date.day == 25 or + date.day == 26 + ) +) then + it_is_christmas = true +end + +local tiles_chest_normal_small = {"mcl_chests_normal.png"} +local tiles_chest_normal_double = {"mcl_chests_normal_double.png"} + +if it_is_christmas then + tiles_chest_normal_small = {"mcl_chests_normal_present.png"} + tiles_chest_normal_double = {"mcl_chests_normal_double_present.png"} +end + +local tiles_chest_trapped_small = {"mcl_chests_trapped.png"} +local tiles_chest_trapped_double = {"mcl_chests_trapped_double.png"} + +if it_is_christmas then + tiles_chest_trapped_small = {"mcl_chests_trapped_present.png"} + tiles_chest_trapped_double = {"mcl_chests_trapped_double_present.png"} +end + +local tiles_chest_ender_small = {"mcl_chests_ender.png"} + +if it_is_christmas then + tiles_chest_ender_small = {"mcl_chests_ender_present.png"} +end + -- Chest Entity local animate_chests = (minetest.settings:get_bool("animated_chests") ~= false) local entity_animations = { @@ -221,12 +256,12 @@ local chest_update_after_close = function(pos) minetest.swap_node(pos, {name="mcl_chests:trapped_chest_small", param2 = node.param2}) if animate_chests then - find_or_create_entity(pos, "mcl_chests:trapped_chest_small", {"mcl_chests_trapped.png"}, node.param2, false, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_small") + find_or_create_entity(pos, "mcl_chests:trapped_chest_small", tiles_chest_trapped_small, node.param2, false, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_small") end mesecon.receptor_off(pos, trapped_chest_mesecons_rules) elseif node.name == "mcl_chests:trapped_chest_on_left" then minetest.swap_node(pos, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - find_or_create_entity(pos, "mcl_chests:trapped_chest_left", {"mcl_chests_trapped_double.png"}, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") + find_or_create_entity(pos, "mcl_chests:trapped_chest_left", tiles_chest_trapped_double, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") mesecon.receptor_off(pos, trapped_chest_mesecons_rules) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") @@ -238,7 +273,7 @@ local chest_update_after_close = function(pos) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - find_or_create_entity(pos_other, "mcl_chests:trapped_chest_left", {"mcl_chests_trapped_double.png"}, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") + find_or_create_entity(pos_other, "mcl_chests:trapped_chest_left", tiles_chest_trapped_double, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) end end @@ -849,8 +884,8 @@ register_chest("chest", chestusage, S("27 inventory slots") .. "\n" .. S("Can be combined to a large chest"), { - small = {"mcl_chests_normal.png"}, - double = {"mcl_chests_normal_double.png"}, + small = tiles_chest_normal_small, + double = tiles_chest_normal_double, inv = {"default_chest_top.png", "mcl_chests_chest_bottom.png", "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", "mcl_chests_chest_back.png", "default_chest_front.png"}, @@ -865,8 +900,8 @@ register_chest("chest", ) local traptiles = { - small = {"mcl_chests_trapped.png"}, - double = {"mcl_chests_trapped_double.png"}, + small = tiles_chest_trapped_small, + double = tiles_chest_trapped_double, inv = {"mcl_chests_chest_trapped_top.png", "mcl_chests_chest_trapped_bottom.png", "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", "mcl_chests_chest_trapped_back.png", "mcl_chests_chest_trapped_front.png"}, @@ -892,7 +927,7 @@ register_chest("trapped_chest", function(pos, node, clicker) minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on_small", param2 = node.param2}) if animate_chests then - find_or_create_entity(pos, "mcl_chests:trapped_chest_on_small", {"mcl_chests_trapped.png"}, node.param2, false, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_small") + find_or_create_entity(pos, "mcl_chests:trapped_chest_on_small", tiles_chest_trapped_small, node.param2, false, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_small") end mesecon.receptor_on(pos, trapped_chest_mesecons_rules) end, @@ -901,7 +936,7 @@ register_chest("trapped_chest", meta:set_int("players", 1) minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on_left", param2 = node.param2}) - find_or_create_entity(pos, "mcl_chests:trapped_chest_on_left", {"mcl_chests_trapped_double.png"}, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_left") + find_or_create_entity(pos, "mcl_chests:trapped_chest_on_left", tiles_chest_trapped_double, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_left") mesecon.receptor_on(pos, trapped_chest_mesecons_rules) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") @@ -915,7 +950,7 @@ register_chest("trapped_chest", mesecon.receptor_on(pos, trapped_chest_mesecons_rules) minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_on_left", param2 = node.param2}) - find_or_create_entity(pos_other, "mcl_chests:trapped_chest_on_left", {"mcl_chests_trapped_double.png"}, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_left") + find_or_create_entity(pos_other, "mcl_chests:trapped_chest_on_left", tiles_chest_trapped_double, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_left") mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules) end ) @@ -937,14 +972,14 @@ local function close_if_trapped_chest(pos, player) if node.name == "mcl_chests:trapped_chest_on_small" then minetest.swap_node(pos, {name="mcl_chests:trapped_chest_small", param2 = node.param2}) if animate_chests then - find_or_create_entity(pos, "mcl_chests:trapped_chest_small", {"mcl_chests_trapped.png"}, node.param2, false, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_small") + find_or_create_entity(pos, "mcl_chests:trapped_chest_small", tiles_chest_trapped_small, node.param2, false, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_small") end mesecon.receptor_off(pos, trapped_chest_mesecons_rules) player_chest_close(player) elseif node.name == "mcl_chests:trapped_chest_on_left" then minetest.swap_node(pos, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - find_or_create_entity(pos, "mcl_chests:trapped_chest_left", {"mcl_chests_trapped_double.png"}, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") + find_or_create_entity(pos, "mcl_chests:trapped_chest_left", tiles_chest_trapped_double, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") mesecon.receptor_off(pos, trapped_chest_mesecons_rules) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") @@ -958,7 +993,7 @@ local function close_if_trapped_chest(pos, player) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - find_or_create_entity(pos_other, "mcl_chests:trapped_chest_left", {"mcl_chests_trapped_double.png"}, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") + find_or_create_entity(pos_other, "mcl_chests:trapped_chest_left", tiles_chest_trapped_double, node.param2, true, "default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_left") mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) player_chest_close(player) @@ -1006,7 +1041,7 @@ minetest.register_node("mcl_chests:ender_chest", { _doc_items_usagehelp = S("Rightclick the ender chest to access your personal interdimensional inventory."), drawtype = "mesh", mesh = "mcl_chests_chest.obj", - tiles = {"mcl_chests_ender.png"}, + tiles = tiles_chest_ender_small, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, paramtype = "light", paramtype2 = "facedir", @@ -1059,8 +1094,8 @@ minetest.register_node("mcl_chests:ender_chest_small", { type = "fixed", fixed = {-0.4375, -0.5, -0.4375, 0.4375, 0.375, 0.4375}, }, - tiles = animate_chests and {"mcl_chests_blank.png"} or {"mcl_chests_ender.png"}, - _chest_entity_textures = {"mcl_chests_ender.png"}, + tiles = animate_chests and {"mcl_chests_blank.png"} or tiles_chest_ender_small, + _chest_entity_textures = tiles_chest_ender_small, _chest_entity_sound = "mcl_chests_enderchest", _chest_entity_mesh = "mcl_chests_chest", _chest_entity_animation_type = "chest", @@ -1082,11 +1117,11 @@ minetest.register_node("mcl_chests:ender_chest_small", { meta:set_string("formspec", formspec_ender_chest) if animate_chests then - create_entity(pos, "mcl_chests:ender_chest_small", {"mcl_chests_ender.png"}, minetest.get_node(pos).param2, false, "mcl_chests_enderchest", "mcl_chests_chest", "chest") + create_entity(pos, "mcl_chests:ender_chest_small", tiles_chest_ender_small, minetest.get_node(pos).param2, false, "mcl_chests_enderchest", "mcl_chests_chest", "chest") end end, on_rightclick = function(pos, node, clicker) - player_chest_open(clicker, pos, "mcl_chests:ender_chest_small", {"mcl_chests_ender.png"}, node.param2, false, "mcl_chests_enderchest", "mcl_chests_chest") + player_chest_open(clicker, pos, "mcl_chests:ender_chest_small", tiles_chest_ender_small, node.param2, false, "mcl_chests_enderchest", "mcl_chests_chest") end, on_receive_fields = function(pos, formname, fields, sender) if fields.quit then diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_ender_present.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_ender_present.png new file mode 100644 index 0000000000000000000000000000000000000000..85df1bfba0c5d08e3224ffb8dfef2128592962b2 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|ei2$Dv*Tez_Ee0(IQHL1Qw95$RxHfYh{y5d1bzJkhNcS_E)*$*1qErb zC$Xsn#KrL~a*ByL6&n*1dSHsM9IKatLn>>4Lx7{DNQ3B<$%`9`%me%x(*m3s-<@d6 zI_foX#Q|O2RyVE%4xCIqy}hR!CA!TU85vmoDnvM%4lD>@@C_HykcfyE;L5r)k=3_n z;ljksl?hUZn1c=0PWZEI+BBAvHn z9|RjT1k3;c?(R9M69l}iqS zFc5~j@B&_;CLX{>-MaX1V7LG#asU&0eUVQ3vLF@$80Xu}FpIA((}&pLA{w*-6r}+a zMGpX8p}x1kglZprmKg%+vvL73T7ZZ^fH?%q|AX}jhHqse|1j0UM2tl002ovPDHLk FV1ifUc7^}| literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_normal_present.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_normal_present.png new file mode 100644 index 0000000000000000000000000000000000000000..23faf46b890e0a2f10f34f4db01f1e4807673d50 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|ei2$Dv*Tez_Ee3{F3=9pTqGuQw z-fL>Uy~6P4rT-SYx-URAj3q&S!3+-1ZlnP@n>}3|Lp+YZoqU$}kO7Zd@#8aGb{iT5 zxlIfh(-`WCo;~|on8WP4ME8PH*A?~1`AU0DdMCF?&Tn>b(P{0_5zR6v?#u0wd0e$J za4W|Q$%q0g*0PWX{w@Fh8_fA|Cu{l74K-PY_e9KI{!l&W$jlJ2YJ+cPL%>#!&u27P z_J`ZH+<&)d_0_ZOPp41JnC>^r?9vXut>3qKu~(N@aEty~%+S5%`j(5eORu*&^|)2s gsa(h}Ed2i%>-vo28$?zf0r{7~)78&qol`;+02_UBCIA2c literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_trapped_double_present.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_trapped_double_present.png new file mode 100644 index 0000000000000000000000000000000000000000..2d10331f32669d2eb7e6d375fc8d594c164fb3d6 GIT binary patch literal 307 zcmV-30nGl1P)H+ z3IISA03b?-G-af(R9M69l}iqS zFc5~j@B&_;CLX{>-MaX1V7LG#asU&0eUVQ3vLF@$80Xu}FpIA((}&pLA{w*-6r}+a zMGpX8p}x1kglZprmKg%+vvL73T7ZZ^fH?%q|AX}jhHqse|1j0UM2tl002ovPDHLk FV1kmecgg?& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_trapped_present.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_trapped_present.png new file mode 100644 index 0000000000000000000000000000000000000000..473f24c573614c7b5c7bfb886255dd197ac6c312 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|ei2$Dv*Te!KOG{KVQNgR-By~yA z{PUNupMUr6&C^?H3P2ggk|4ie28U-i(tw;To-U3d9>KZsjLAG0gjd;4Wd&fFK#F@5AbJ93vgz9ccLll zsMo|52Xu8?-MAJwa5DAu_MUE(=r(U;WMJ{D5aDP#upofJH(W$RA|hUZE9=fgR^Oh5 z3llR}CP*D(4mMaj;m@*Z(^yWHdlhi4VaQssabskZ(Tuha0%n5i8MsX|L>By#@wVt` e3N*OFz)-j4?A_hFR*3=K&*16m=d#Wzp$Pz8q+#y> literal 0 HcmV?d00001 From df7bd78af546379fa07f4a7fbb5ea9e6228bc06a Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sat, 11 Dec 2021 21:06:00 +0100 Subject: [PATCH 2/2] Add noise to christmas chest textures --- mods/ITEMS/mcl_chests/init.lua | 10 +++++----- .../mcl_chests/textures/mcl_chests_noise.png | Bin 0 -> 5338 bytes .../textures/mcl_chests_noise_double.png | Bin 0 -> 9345 bytes 3 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_noise.png create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_noise_double.png diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index df097b47..01c476ed 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -18,22 +18,22 @@ local tiles_chest_normal_small = {"mcl_chests_normal.png"} local tiles_chest_normal_double = {"mcl_chests_normal_double.png"} if it_is_christmas then - tiles_chest_normal_small = {"mcl_chests_normal_present.png"} - tiles_chest_normal_double = {"mcl_chests_normal_double_present.png"} + tiles_chest_normal_small = {"mcl_chests_normal_present.png^mcl_chests_noise.png"} + tiles_chest_normal_double = {"mcl_chests_normal_double_present.png^mcl_chests_noise_double.png"} end local tiles_chest_trapped_small = {"mcl_chests_trapped.png"} local tiles_chest_trapped_double = {"mcl_chests_trapped_double.png"} if it_is_christmas then - tiles_chest_trapped_small = {"mcl_chests_trapped_present.png"} - tiles_chest_trapped_double = {"mcl_chests_trapped_double_present.png"} + tiles_chest_trapped_small = {"mcl_chests_trapped_present.png^mcl_chests_noise.png"} + tiles_chest_trapped_double = {"mcl_chests_trapped_double_present.png^mcl_chests_noise_double.png"} end local tiles_chest_ender_small = {"mcl_chests_ender.png"} if it_is_christmas then - tiles_chest_ender_small = {"mcl_chests_ender_present.png"} + tiles_chest_ender_small = {"mcl_chests_ender_present.png^mcl_chests_noise.png"} end -- Chest Entity diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_noise.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_noise.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc99c17e29b38e830a27bd7c64e4184b09742b7 GIT binary patch literal 5338 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 literal 0 HcmV?d00001