From 89d1fdad21512d80191c6323029a65556b8a1371 Mon Sep 17 00:00:00 2001 From: unknown <24964441+wsor4035@users.noreply.github.com> Date: Sat, 16 Oct 2021 20:33:37 -0400 Subject: [PATCH] add signs --- mods/fl_signs/init.lua | 168 ++++++++++++++++++ mods/fl_signs/readme.txt | 3 + mods/fl_signs/textures/farlands_sign_wood.png | Bin 0 -> 972 bytes .../textures/farlands_sign_wood_inv.png | Bin 0 -> 3228 bytes mods/fl_signs/textures/font_1.png | Bin 0 -> 3145 bytes mods/fl_signs/textures/font_1.png~ | Bin 0 -> 3305 bytes mods/fl_signs/textures/font_1_raw.png | Bin 0 -> 3494 bytes 7 files changed, 171 insertions(+) create mode 100644 mods/fl_signs/init.lua create mode 100644 mods/fl_signs/readme.txt create mode 100644 mods/fl_signs/textures/farlands_sign_wood.png create mode 100644 mods/fl_signs/textures/farlands_sign_wood_inv.png create mode 100644 mods/fl_signs/textures/font_1.png create mode 100644 mods/fl_signs/textures/font_1.png~ create mode 100644 mods/fl_signs/textures/font_1_raw.png diff --git a/mods/fl_signs/init.lua b/mods/fl_signs/init.lua new file mode 100644 index 0000000..3ac7b34 --- /dev/null +++ b/mods/fl_signs/init.lua @@ -0,0 +1,168 @@ +minetest.register_entity("fl_signs:text", { + initial_properties = { + visual = "upright_sprite", + textures = {"[combine:16x16"}, + static_save = true, + collisionbox = {-0.5, -0.5, -0.01, 0.5, 0.5, 0.01}, + selectionbox = {0,0,0,0,0,0}, + }, + get_staticdata = function(self) + local tmp = {memory = self.memory} + return minetest.serialize(tmp) + end, + on_activate = function(self, staticdata, dtime_s) + local sdata = minetest.deserialize(staticdata) + if sdata then + for k,v in pairs(sdata) do + self[k] = v + end + end + if not self.memory then self.memory = {} end + if self.memory.textures then self.object:set_properties({textures = {self.memory.textures}}) end + end, +}) + +local NCalphabelt = "0123456789.:,;(*!?}^)#${%^&_+@" +local Ualphabelt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +local Lalphabelt = string.lower(Ualphabelt) +local location = {} +location[" "] = "27,0" + +for i = 1, #NCalphabelt do + local c = NCalphabelt:sub(i,i) + -- do something with c + location[c] = i-1 .. ",2" +end + +for i = 1, #Ualphabelt do + local c = Ualphabelt:sub(i,i) + -- do something with c + location[c] = i-1 .. ",1" +end + +for i = 1, #Lalphabelt do + local c = Lalphabelt:sub(i,i) + -- do something with c + location[c] = i-1 .. ",0" +end + +local function create_text_ent(pos, param, rot) + local ent = minetest.add_entity(pos, "fl_signs:text") + local texture = "[combine:256x256" + local text_table = param:split(" ") + local max_length = 23 --defined to limit words to sign, max: 256x256 28 --128x128 is 14 + local line_length = 3 --starting 4 chars in + local line_number = 54 --start at line 4 + for _, word in pairs(text_table) do + if #word+line_length > max_length and #word < max_length then + line_number = line_number+18 + line_length = 3 + end + if line_number >= 198 then break end--line_number = 260 end + for i = 1, #word do + local c = word:sub(i,i) + local loc = location[c] + if not loc then loc = location[" "] end + texture = texture .. ":".. line_length*9 ..","..line_number.."=font_1.png\\^[sheet\\:28x3\\:" .. loc + line_length = line_length+1 + end + texture = texture .. ":".. line_length*9 ..","..line_number.."=font_1.png\\^[sheet\\:28x3\\:" .. location[" "] + line_length = line_length+1 + end + ent:set_properties({textures = {texture}}) + ent:get_luaentity().memory.textures = texture + ent:set_yaw(rot) +end + +local offsets = { + [2] = { + rot = 90*(math.pi/180), + pos = vector.new(0.425,0,0), + }, + [3] = { + rot = 90*(math.pi/180), + pos = vector.new(-0.425,0,0), + }, + [4] = { + rot = 0, + pos = vector.new(0,0,0.425), + }, + [5] = { + rot = 0, + pos = vector.new(0,0,-0.425), + }, +} + +minetest.register_node("fl_signs:sign_wood", { + description = "wood sign", + inventory_image = "farlands_sign_wood_inv.png", + wield_image = "farlands_sign_wood_inv.png", + tiles = {"farlands_sign_wood.png"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + node_box = { + type = "wallmounted", + wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375}, + wall_top = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375}, + wall_bottom = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375}, + }, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local text = minetest.get_meta(pos):get("text") or "" + local formspec = { + "formspec_version[4]", + "size[10.4,5.25]", + "no_prepend[]", + "style_type[box;colors=#77777710,#77777710,#777,#777]", + "style_type[list;size=1;spacing=0.1]", + "listcolors[#0000;#ffffff20]", + "bgcolor[black;neither]", + "background9[0,0;10.4,5.25;i3_bg_full.png;false;10]", + "textarea[0.5,0.5;9.4,3;" .. "Pos: " .. minetest.pos_to_string(pos, 2) .. ";;" .. text .. "]", + "field_close_on_enter[test;false]", + "button[4.2,4;2,0.75;enter;Write]", + } + minetest.show_formspec(clicker:get_player_name(), "fl_signs:sign_wood", table.concat(formspec, "")) + end, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then return itemstack end + if pointed_thing.under.y+1 == pointed_thing.above.y then return itemstack end + return minetest.item_place(itemstack, placer, pointed_thing) + end, + groups = {sign = 1, dig_generic = 4} +}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "fl_signs:sign_wood" then return end + --minetest.chat_send_all(dump(fields)) + local text = {} + if fields.enter then + for key, data in pairs(fields) do + if key:find("Pos: ") then + text = {key, data} + end + end + end + if fields.enter and text then + local split = text[1]:split(" ") + local pos = minetest.string_to_pos(split[2]) + local node = minetest.get_node_or_nil(pos) + if not node then return end + if not offsets[node.param2] then return end + minetest.get_meta(pos):set_string("text", text[2]) + local ents = minetest.get_objects_inside_radius(pos, 0.5) + + for _, ent in pairs(ents) do + local entn = ent:get_luaentity().name + if entn == "fl_signs:text" then + ent:remove() + end + end + + pos = vector.add(pos, offsets[node.param2].pos) + create_text_ent(pos, text[2], offsets[node.param2].rot) + end + + --minetest.chat_send_all(dump(minetest.get_position_from_hash())) +end) \ No newline at end of file diff --git a/mods/fl_signs/readme.txt b/mods/fl_signs/readme.txt new file mode 100644 index 0000000..74bb439 --- /dev/null +++ b/mods/fl_signs/readme.txt @@ -0,0 +1,3 @@ +font +license: Public Domain +link: https://www.fontspace.com/fifaks-font-f67877 \ No newline at end of file diff --git a/mods/fl_signs/textures/farlands_sign_wood.png b/mods/fl_signs/textures/farlands_sign_wood.png new file mode 100644 index 0000000000000000000000000000000000000000..5dca141b3101e1e786e8ba24fb356f1e353242a5 GIT binary patch literal 972 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 O0000@CzUoeuyqShX}VDoo)Hdjlyt>A!UI|^ zkrF-<_8D?O;cKNQ8~ma;+u#qyMl3Q5cGc69ZR2DcYdNDJJTB}l%;ZF)yDJEt&zAK*3SGNUt6J9gv1Qdx!0`l^#g>0va+>}Wz1q^ehv43V^Q)GY z+=Gj47<$wbMxrh`WZE+scsqmMIP~9wbET10bDh%%h;7Of-N60JRk| z_Ydly!4`i#=ze_s`~%Ww$#(hw_7M2{{pFy+?zzCETjEWHEnsdKAxRxAT_z zf0xwimn40be22emo8@zY-s6eL+OZ{z`Loj_cs{$0x77cKTWXb8ibf#%_h-Iox&=>2$96hQFM)bd`SypA$4cIq2<7A0*4{RHDm9Bq(-l?9vm_VMmsSzvp)kH$(>n zb1ycK&%5|%`Lxo@%EKD{tjw!N_e!SbtgT0D{y&oOB@dKd^VjnAh%04uPbE60TBK8i z|E|9zW*$Bf{wU5UCfXO-%B|9gJl)s_j5BJ3)?rlvRrEdHCYrWr1*k;KW_sp9rB~)3 zm!p|BRoWf9vNE61t}c8$J~}q^TF;5((ADY5|D-=vG+k>{U3{{!nWE25TPSf<97%2T z`a+~=HAzK$t?#RLRb^G$RoZmfb&`*ajY@1)aOrMCu`PA)vZISnx4r-K^woA*fe2VBpe0W-C@yu548Qe>>JZ(Wocxx(wmYuxHZOPJ~q54Ed zBeEhM{JmVI@0wD{a<^+Y0kwzdJe>73v*PzIAF`fS=g~4&J7SSOySqiqAMvS&eRjt% zQuUjIPone4@ibnFBMCJ}7V* zKHec8`rLa8fIs(WP(7Irkwvr_yH+|xd=S4Q`XI4^*zRqU>eHf#zesQ04>TW?#=`iP zSMp`@u$)raH8^qQSprJ@DS4o$2P1uuAR_q@pH;_Votcl7{16(M7@}az$Xe-+cKRKB zw12aSlIal)B@H6SqtEg|WO+1K%7XROcUyErD}(Q5SeCKkRAef${*}-U~SN3(d)wF`Y+r1;B`JA$S+g~zyppVq( z06l4(lx4}0IwOlpp6;ma+kk&&Kzf|StulpL*=FHW)qfQ~oD8pwG1RB4DH1ZJMQB); zr4GW$bD7NnR!a zRP~W|c``lQvlv!&{XFd}^r z@X*)2G6CbgB-Uv=Vp|73BuDdEO<^)GZdH@s3A>o*i5-xu{f@+jOOvfUqPefOSF7GYHGl!8-eGm|%m&7btQP6v@PF?k)R2M!g+dY4wFK!{e(KILQl00=hS9G-6 zT;=x`efdhhH$uF{q8@5kmu|0Qdlx3s2Pb%7a!IZJ;2s2_cY#R{_>Dm^b!=heTVQtXrw%*mwWB2!&u&*Ze*S(_z>@`U1i4| zY8aiNLAGsIGzdPC4rm-Ad}Lf%F{XWrJaOR3_4r$^L@WYu0 z&iW;>)s0!?*tHjc@^gg7a)<}WDgz@O!fP+>MRZ1Jx}16?pDw$)_>k>7p6LH4Mq)2+ zk+|}b%Bn9!b|L*J8yl-bl2#)8qJww0rTVNL2}92OBQ*LhiFI@rxod;aprc3DF;#k< zsH+{Li;wKE`VEzgjfmePe%dDQeh|V({#APUJMuP6#TIKoVm@7VMRr@?N4LAp1mi83 zTIC9tfvZ49&io@ZWT3pB?49|K?%EI^gr)-ctF+;Tz~}}n+sk;Oe&lvp`Uqc+L+_4^ zlq-{;+RW%*d^m| z6?>~cs%^bzvwD$FS43Yh_MRcElw@9TtQ@*Z7}B6@Ntp>ENn4)(2_`Ps38lJ{QWqaD z9;$JIU?e+q0y>zKbU>ypR;Skq0C~ix>iI1YA1=ha*jmG$g&-qcSI2FQ-aTVtVP6*(m4>8z)C9JiUNpVxN~%&S?gb zQvhDYH~RqcReFt_7y)E^5TTKhs-st|Elz>#Tp-*|*b+@KUUkvj#Cs|aBnX*CJJt;X#}N1rtw8W=PUY^S00000NkvXXu0mjfusI1c literal 0 HcmV?d00001 diff --git a/mods/fl_signs/textures/font_1.png~ b/mods/fl_signs/textures/font_1.png~ new file mode 100644 index 0000000000000000000000000000000000000000..7eb1de9404a470fab09c8868fc8c16211e31d2c6 GIT binary patch literal 3305 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 Ie^`h94>uQv>i_@% literal 0 HcmV?d00001 diff --git a/mods/fl_signs/textures/font_1_raw.png b/mods/fl_signs/textures/font_1_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..252cbe222a7c5bcc81fa2db3e53733e716f96f12 GIT binary patch literal 3494 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 literal 0 HcmV?d00001