From 8ba15919ffb276b510ddf952b0176e0efc96283e Mon Sep 17 00:00:00 2001 From: Tuxilio <mail@tuxil.io> Date: Sun, 1 Dec 2024 12:05:38 +0100 Subject: [PATCH] First working version --- README.md | 4 -- init.lua | 85 +++++++++++++++++++++++++++++++------------ mod.conf | 1 + settingtypes.txt | 1 + textures/black.png | Bin 0 -> 550 bytes textures/blue.png | Bin 0 -> 560 bytes textures/cyan.png | Bin 0 -> 560 bytes textures/gray.png | Bin 0 -> 560 bytes textures/green.png | Bin 0 -> 558 bytes textures/magenta.png | Bin 0 -> 560 bytes textures/red.png | Bin 0 -> 556 bytes textures/white.png | Bin 0 -> 560 bytes textures/yellow.png | Bin 0 -> 558 bytes 13 files changed, 64 insertions(+), 27 deletions(-) create mode 100644 settingtypes.txt create mode 100644 textures/black.png create mode 100644 textures/blue.png create mode 100644 textures/cyan.png create mode 100644 textures/gray.png create mode 100644 textures/green.png create mode 100644 textures/magenta.png create mode 100644 textures/red.png create mode 100644 textures/white.png create mode 100644 textures/yellow.png diff --git a/README.md b/README.md index a046345..bd63bdb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1 @@ # Luanti LED Tree - -You have to add the mod to the trusted mods in minetest.conf: - -secure.http_mods = ledtree diff --git a/init.lua b/init.lua index 17e9b2e..7615935 100644 --- a/init.lua +++ b/init.lua @@ -2,40 +2,79 @@ -- -- SPDX-License-Identifier: GPL-3.0-or-later -local HTTPApiTable = core.request_http_api() +local modname = core.get_current_modname() +local modpath = core.get_modpath(modname) local data = { - url = "https://mqtt.felix-zauberer.de:443", + url = "mqtt.felix-zauberer.de", clientId = "ledtree_luanti", username = "kalle1", - token = "eZcKn1zBE6KtbeFnZ33lV1EKnr9Bcn8B", + password = "eZcKn1zBE6KtbeFnZ33lV1EKnr9Bcn8B", } -change_color = function(led_id) - local request = { - url = data.url, - method = 'POST', - timeout = 15, - username = data.username, - clientId = data.clientId, - extra_headers = { - "Authorization: Bearer "..data.token, - } - } - HTTPApiTable.fetch(request, function(response) - print(dump(request)) - if response.code ~= 200 then - return false - else - return true - end - end) +local mqttBaseTopic = core.settings:get("ledtree_base_topic") or "ledtree" + +local client = mqtt.connect(data.url, data.clientId, data.username, data.password) + +local change_color = function(player, led_id) + local formspec = "size[3,3]" .. + "image_button[0,0;1,1;red.png;red;red;false;false;]" .. + "image_button[1,0;1,1;green.png;gren;green;false;false;]" .. + "image_button[2,0;1,1;blue.png;blue;blue;false;false;]" .. + "image_button[0,1;1,1;yellow.png;yellow;yellow;false;false;]" .. + "image_button[1,1;1,1;cyan.png;cyan;cyan;false;false;]" .. + "image_button[2,1;1,1;magenta.png;magenta;magenta;false;false;]" .. + "image_button[0,2;1,1;white.png;white;white;false;false;]" .. + "image_button[1,2;1,1;black.png;black;black;false;false;]" .. + "image_button[2,2;1,1;gray.png;gray;gray;false;false;]" + + core.show_formspec(player:get_player_name(), "ledtree:colorpicker", formspec) +end + +local function send_mqtt(id, rgb) + mqtt.publish(client, mqttBaseTopic.."/led/"..id, "["..rgb.."]") end for id=1, 10, 1 do core.register_node("ledtree:led"..id, { description = "LED"..id, --tiles = "", - on_rightclick = change_color(id), + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + change_color(player, id) + end, }) end + +core.register_on_player_receive_fields(function(player, formname, fields) + if formname == "ledtree:colorpicker" then + for color, _ in pairs(fields) do + if color then + local rgb = "" + if color == "red" then + rgb = "255,0,0" + elseif color == "green" then + rgb = "0,255,0" + elseif color == "blue" then + rgb = "0,0,255" + elseif color == "yellow" then + rgb = "255,255,0" + elseif color == "cyan" then + rgb = "0,255,255" + elseif color == "magenta" then + rgb = "255,0,255" + elseif color == "white" then + rgb = "255,255,255" + elseif color == "black" then + rgb = "0,0,0" + elseif color == "gray" then + rgb = "128,128,128" + end + + if rgb ~= "" then + core.chat_send_player(player:get_player_name(), "RGB: " .. rgb) + send_mqtt(1, rgb) + end + end + end + end +end) diff --git a/mod.conf b/mod.conf index d7d6ed5..77503c3 100644 --- a/mod.conf +++ b/mod.conf @@ -1,4 +1,5 @@ name = ledtree title = Teckids LED-Weihnachtsbaum description = Teckids LED-Weihnachtsbaum +depends = mqtt author = Tuxilio <mail@tuxil.io> diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..6c24e52 --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1 @@ +ledtree_base_topic (Base topic (e.g. /[base_topic]/led/1)) string ledtree diff --git a/textures/black.png b/textures/black.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e1417a7650a8f614768d3ba8813b7a2d5518c6 GIT binary patch literal 550 zcmV+>0@?kEP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYt*6j5qF0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN o5J^NqR4C75U>F6XU=+Xr00R&J0ceqJ!vFvP07*qoM6N<$f<5usuK)l5 literal 0 HcmV?d00001 diff --git a/textures/blue.png b/textures/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..b070f2dd5f37fd10a3b20a476fc505aa876a0dc6 GIT binary patch literal 560 zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYq@BFscw0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN y8c9S!R4C75WYGK1Knh@DAQ6me7}YRzGynj~v;j>ESnGNK0000<MNUMnLSTYrli)f4 literal 0 HcmV?d00001 diff --git a/textures/cyan.png b/textures/cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7989147f98e8fdaee2d01ce9bb3b43f1ff20f3 GIT binary patch literal 560 zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SY!XnYU@H0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN y8c9S!R4C75%&UCPKnh@DAQ6me7}YRzGynj%CIRk$qacw00000<MNUMnLSTZoe&GiI literal 0 HcmV?d00001 diff --git a/textures/gray.png b/textures/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..2f11ee97e6affeb88d069fbbbeaa308b84c1c65e GIT binary patch literal 560 zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYt}=ja=E0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN y8c9S!R4C75oH1ht11W%sfkZH>VN}D=(EtFYO9ANLjlw<v0000<MNUMnLSTZf#NqJ( literal 0 HcmV?d00001 diff --git a/textures/green.png b/textures/green.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c634be1dad16c9a4bad6f1b7dc655a9816ee70 GIT binary patch literal 558 zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYq$Tzxp<0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN w7)eAyR4C75jQ!6*5@2Fr7}YSUVYq4l09&yEeAfNpC;$Ke07*qoM6N<$g5N>mfB*mh literal 0 HcmV?d00001 diff --git a/textures/magenta.png b/textures/magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..edf8e7203dce11c800b15a9f76b5b039fdb5c886 GIT binary patch literal 560 zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SY$<NP7ut0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN y8c9S!R4C75{LXNbffT^RKq45`FsfnbXaE4c*#Yo0Vl{gJ0000<MNUMnLSTY_V&UNc literal 0 HcmV?d00001 diff --git a/textures/red.png b/textures/red.png new file mode 100644 index 0000000000000000000000000000000000000000..45b8162bdfe67026e12afb8f06126f83db8becfb GIT binary patch literal 556 zcmV+{0@MA8P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYk{?U>)B0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN u7D+@wR4C75{LerdU}6~6FsfnLY5)L0E&(60kity>0000<MNUMnLSTYpPvBVq literal 0 HcmV?d00001 diff --git a/textures/white.png b/textures/white.png new file mode 100644 index 0000000000000000000000000000000000000000..20fd88347972bc0420fb4d83fa18576559eca54b GIT binary patch literal 560 zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYk*`I&?30000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN y8c9S!R4C75{Qv(y11W%sfkZH>VN}D=(EtEdZ37*jE)}8x0000<MNUMnLSTXoFyf{F literal 0 HcmV?d00001 diff --git a/textures/yellow.png b/textures/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ee4a7b914127fe51cb183ea9fa7848306ce0c2 GIT binary patch literal 558 zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvQ$;Bi2Rn#3WT;LS#ELl9DionYs1;guFnQ@8G-*gu zTpR`0f`dPcRR<SmT^(EnLGTB}*}+NCMM}IcDYS_3!sC6MchBLy`v9R?Wt!EK05sh; zGpVGQ%dd)kuLvW65GE0qnPtpLQX0PXbx*xicQKyj-}h$?s0E7w0g*Vt4AUmwAfDN@ z4bJ<-5muH};&b8&lP*a7$aTfzH_j!O1)do(vzd9~2(eh|Vx@~&+0=-qiKD8fQ@)V% zSmnIMS*zAr`=0!T;ex)h%yn9$NMR96kRU=q9TikzBSyPUiiHfFCw=@Qu3sXTLaquJ zITlcZ2HEw4|H1FsTE+O3mlRF{y)TaQF$VPQ0<DJQd>=bb>jVfs16O*-Uuy!hpQJZB zTJ#7Q+y*YLJDRcwT<!qFPljyDt`wvt6pO(78GTb87`g>QYu?=2=Qw=;vNWso4RCM> zjF%{T-RIr?-E;f5r#-(P&MR`uGXGa<00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;2%0SYr4I2Mp00000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN w7)eAyR4C75{C|jnB*4VLFsflx!*JCA0FdYb;VpxYb^rhX07*qoM6N<$g1hkHy#N3J literal 0 HcmV?d00001 -- GitLab