From a5d3a258d5864940ea29a2945f6202486b03e3ca Mon Sep 17 00:00:00 2001 From: AntumDeluge Date: Fri, 5 Aug 2016 10:14:24 -0700 Subject: [PATCH] Add "compass" mod. --- README.md | 3 + mods/ui/compass/depends.txt | 1 + mods/ui/compass/init.lua | 119 ++++++++++++++++++++++++ mods/ui/compass/textures/compass_0.png | Bin 0 -> 485 bytes mods/ui/compass/textures/compass_1.png | Bin 0 -> 492 bytes mods/ui/compass/textures/compass_10.png | Bin 0 -> 499 bytes mods/ui/compass/textures/compass_11.png | Bin 0 -> 499 bytes mods/ui/compass/textures/compass_2.png | Bin 0 -> 490 bytes mods/ui/compass/textures/compass_3.png | Bin 0 -> 487 bytes mods/ui/compass/textures/compass_4.png | Bin 0 -> 499 bytes mods/ui/compass/textures/compass_5.png | Bin 0 -> 492 bytes mods/ui/compass/textures/compass_6.png | Bin 0 -> 484 bytes mods/ui/compass/textures/compass_7.png | Bin 0 -> 492 bytes mods/ui/compass/textures/compass_8.png | Bin 0 -> 495 bytes mods/ui/compass/textures/compass_9.png | Bin 0 -> 487 bytes 15 files changed, 123 insertions(+) create mode 100644 mods/ui/compass/depends.txt create mode 100644 mods/ui/compass/init.lua create mode 100644 mods/ui/compass/textures/compass_0.png create mode 100644 mods/ui/compass/textures/compass_1.png create mode 100644 mods/ui/compass/textures/compass_10.png create mode 100644 mods/ui/compass/textures/compass_11.png create mode 100644 mods/ui/compass/textures/compass_2.png create mode 100644 mods/ui/compass/textures/compass_3.png create mode 100644 mods/ui/compass/textures/compass_4.png create mode 100644 mods/ui/compass/textures/compass_5.png create mode 100644 mods/ui/compass/textures/compass_6.png create mode 100644 mods/ui/compass/textures/compass_7.png create mode 100644 mods/ui/compass/textures/compass_8.png create mode 100644 mods/ui/compass/textures/compass_9.png diff --git a/README.md b/README.md index de624b9d..d408f788 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,8 @@ The following mods are also included: * transport/ * [carts][] ([WTFPL/CC0](mods/transport/carts/README.txt)) * [helicopter][] ([GPL](mods/transport/helicopter/LICENSE) / [CC-BY-NC](mods/transport/helicopter/README.md)) +* ui/ + * [compass][] (CC-BY-SA / WTFPL) * weather/ * [lightning][] ([LGPL/CC-BY-SA](mods/weather/lightning/README.md)) * [weather][] ([LGPL/WTFPL/CC-BY-SA](mods/weather/weather/README)) @@ -109,6 +111,7 @@ The following mods are also included: [character_creator]: https://forum.minetest.net/viewtopic.php?f=9&t=13138 [chatlog]: https://forum.minetest.net/viewtopic.php?id=6220 [cme]: https://forum.minetest.net/viewtopic.php?t=8638 +[compass]: https://forum.minetest.net/viewtopic.php?t=3785 [craft_guide]: https://forum.minetest.net/viewtopic.php?t=2334 [creeper]: https://forum.minetest.net/viewtopic.php?t=11891 [farming_plus]: https://forum.minetest.net/viewtopic.php?t=2787 diff --git a/mods/ui/compass/depends.txt b/mods/ui/compass/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/ui/compass/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/ui/compass/init.lua b/mods/ui/compass/init.lua new file mode 100644 index 00000000..639576ce --- /dev/null +++ b/mods/ui/compass/init.lua @@ -0,0 +1,119 @@ +-- default to 0/0/0 +local default_spawn = {x=0, y=0, z=0} +-- default to static spawnpoint (overwrites 0/0/0) +local default_spawn_settings = minetest.setting_get("static_spawnpoint") +if (default_spawn_settings) then + pos1 = string.find(default_spawn_settings, ",", 0) + default_spawn.x = tonumber(string.sub(default_spawn_settings, 0, pos1 - 1)) + pos2 = string.find(default_spawn_settings, ",", pos1 + 1) + default_spawn.y = tonumber(string.sub(default_spawn_settings, pos1 + 1, pos2 - 1)) + default_spawn.z = tonumber(string.sub(default_spawn_settings, pos2 + 1)) +end + +local last_time_spawns_read = "default" +local pilzadams_spawns = {} +local sethome_spawns = {} +function read_spawns() + -- read PilzAdams bed-mod positions + local pilzadams_file = io.open(minetest.get_worldpath().."/beds_player_spawns", "r") + if pilzadams_file then + pilzadams_spawns = minetest.deserialize(pilzadams_file:read("*all")) + pilzadams_file:close() + end + -- read sethome-mod positions + if minetest.get_modpath('sethome') then + local sethome_file = io.open(minetest.get_modpath('sethome')..'/homes', "r") + if sethome_file then + while true do + local x = sethome_file:read("*n") + if x == nil then + break + end + local y = sethome_file:read("*n") + local z = sethome_file:read("*n") + local name = sethome_file:read("*l") + sethome_spawns[name:sub(2)] = {x = x, y = y, z = z} + end + io.close(sethome_file) + end + end +end + +minetest.register_globalstep(function(dtime) + if last_time_spawns_read ~= os.date("%M") then + last_time_spawns_read = os.date("%M") + read_spawns() + end + local players = minetest.get_connected_players() + for i,player in ipairs(players) do + -- try to get position from PilzAdams bed-mod spawn + local spawn = pilzadams_spawns[player:get_player_name()] + -- fallback to sethome position + if spawn == nil then + spawn = sethome_spawns[player:get_player_name()] + end + -- fallback to default + if spawn == nil then + spawn = default_spawn; + end + pos = player:getpos() + dir = player:get_look_yaw() + local angle_north = math.deg(math.atan2(spawn.x - pos.x, spawn.z - pos.z)) + if angle_north < 0 then angle_north = angle_north + 360 end + angle_dir = 90 - math.deg(dir) + local angle_relative = (angle_north - angle_dir) % 360 + local compass_image = math.floor((angle_relative/30) + 0.5)%12 + + local wielded_item = player:get_wielded_item():get_name() + if string.sub(wielded_item, 0, 8) == "compass:" then + player:set_wielded_item("compass:"..compass_image) + else + if player:get_inventory() then + for i,stack in ipairs(player:get_inventory():get_list("main")) do + if i<9 and string.sub(stack:get_name(), 0, 8) == "compass:" then + player:get_inventory():remove_item("main", stack:get_name()) + player:get_inventory():add_item("main", "compass:"..compass_image) + end + end + end + end + end +end) + +local images = { + "compass_0.png", + "compass_1.png", + "compass_2.png", + "compass_3.png", + "compass_4.png", + "compass_5.png", + "compass_6.png", + "compass_7.png", + "compass_8.png", + "compass_9.png", + "compass_10.png", + "compass_11.png", +} + +local i +for i,img in ipairs(images) do + local inv = 1 + if i == 1 then + inv = 0 + end + minetest.register_tool("compass:"..(i-1), { + description = "Compass", + inventory_image = img, + wield_image = img, + groups = {not_in_creative_inventory=inv} + }) +end + +minetest.register_craft({ + output = 'compass:1', + recipe = { + {'', 'default:steel_ingot', ''}, + {'default:steel_ingot', 'default:mese_crystal_fragment', 'default:steel_ingot'}, + {'', 'default:steel_ingot', ''} + } +}) \ No newline at end of file diff --git a/mods/ui/compass/textures/compass_0.png b/mods/ui/compass/textures/compass_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bb33a804229d0197d74b962f8efee1213b0febf0 GIT binary patch literal 485 zcmVr~{@v~s~_wPT$x353`A3Jjj>>VbME%pw21U18e zUw|cpuD&8TtiT3<0xY*MfGEu{keTDhz{buBW;2P32`~r?^O0nLrj{IogoGf(0AXQX zk~D(=8ygFQpddsa)4TUya4I~1bp}@PU%&n^ynFW`=i1_gS3u9H; zJcbj;uH)6bWzz|U$rCm(z!DJ%z!~UyK}AK1fr*(39AGzZJO<~5t5+T}pyvgQ+(l|` bq!<7IXXUb)Yh6?j00000NkvXXu0mjfcXH4U literal 0 HcmV?d00001 diff --git a/mods/ui/compass/textures/compass_1.png b/mods/ui/compass/textures/compass_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7646828721c46921521d5c31f2ac05156959112 GIT binary patch literal 492 zcmVf;>OWEYum2 zQ#~2f)Mdcp|Nj1CxO(*=!?ekp7<^Hn(*pF&G)EV%2DI?=SKMRI`|Nb+4`}*Vmu`{Q@ zhA@HrZ112)P%{kp1z0lZ>MMf73Tyxkq@bcb_2!yn6AT;qBW` zB)Q=FwMPsuU%rRB0BF+W{tYA{Ai&7000SaNLh0L01m_e01m_fl`9S#00004XF*Lt006O%3;baP0004kNkl1OJ7Dcp3NvxEc6(IT=2D_{#7Rgg<@-$uS};ym0Lz0}HZ%fFRF*GYfTw z@1VzEWUR_S4DbuE zWYE=D1cw#a08oJC76yPN4Yf0fG9)v{kAaPy72*O>F#!f)VLmYD{M8v?LkJn9sU^oC zAt4B6vj_|GqDX=aL3Ry{j||w@SQrEaA^KR}z5jyM7Hk?};McD|4Da53hIrxCi}ws~ z-+m&>?=W!v+9QUSFW*B90GTwoe*;MdOrNre;n&aK5Cedi@!)|=4Cl_?CQ9?B4aXTS zU%U@uGQtdC`0)MK{003bvnjqWy_0a$T002ovPDHLkV1lV~%eVjl literal 0 HcmV?d00001 diff --git a/mods/ui/compass/textures/compass_11.png b/mods/ui/compass/textures/compass_11.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf7fc039966e911ecc3dd8d0e56861f6918fbac GIT binary patch literal 499 zcmVH?J47k9S zO(z&8_N`~wbMO!&iVHwCw{;~k7#XXA1r4<`7|vgvfnk7;p9RCefBzZ2ef{zO*qKvc zLzqB*ws+8jYX$+3W{@G+fM0+mgRZ_JIIO@1fC4PHFo1y+keTDhz{buBW;2P32`~r? z^I<5$=L$_NIR*&{L5Kmu!n`Ee4gzd!EDVBz5PeMV-haWV5L-Zkz^`9_7~Z}63^Cx< zi}ws~-+m&=1=p`VVtD!TJ=6t2lP33XAjyE~Q#LXD`uQ7T04RALJaCEO+}YbiY2LKq zIK$1OJ7Dcp3NvxEc6(IT=2D_{#7Rgg<@-$uS};ym0Lz0}HZ%fFRF*GYfTw z@1VzEWUR_S4DbuE zWYE=D1cw#a08oJC76uTd*-$$JOlRi!F|e_-g4ryhVgd}p!hA$&Jb!ftnAX&iV~~&# zgcu+!%uBRJ7+_;#VGtCA=wo^J{tHe6&^5xquU~%{-o5(_3B*?~-ZQ*?`-!M9fPw4R z9x=Rp`5s~b$fU{r8%Q!>`jkx!zkdFP7y!hK2M=6gICu6oQJObxIL>hS;(ZX45oQ3x zhxcC?tIFmvoH%wJuVzq6oIGIz!?$lg;mMg1IWr;W1r-%31}0`EaDd&s@femD7?AS< gC@C{inj0ww01f1qBI31NB>(^b07*qoM6N<$g7k;QQ2+n{ literal 0 HcmV?d00001 diff --git a/mods/ui/compass/textures/compass_3.png b/mods/ui/compass/textures/compass_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3b07e41f54a6b70521f294aa48e7be775f2c8ee4 GIT binary patch literal 487 zcmVH?J47k9S zO(z&8_N`~wbMO!&iVHwCw{;~k7#XWF-~&E>77YLX{b%_0^~e8XXHJ0)VFLNt-a(I` zW*G1buw>BHR|JO@*Z@#~27nY|1HXR#VR-lMGsFw8Uc6^``}Pw_Ubuek z5yQ)u?;!?&Oq$%kfg}T_Puaxq>*sHX0ifi0@W3U8b7yZ8rFqka;|!NC-iIe^CJ^!A z{TIfnvUvH?J47k9S zO(z&8_N`~wbMO!&iVHwCw{;~k7#XWF-~&E>77YLX{b%_0^~e8XXHJ0)VFLNt-a(I` zW*G1buw>BHR|JO@*Z@#~Y zEX<2jp`msL7^4F=HWmg!L5Mzsr)*;Q_47Bx08sKgc;FJlxwE&4GGx<+ z;|!NC-iIe^CJ^!A{TIfnvUvH?J47k9S zO(z&8_N`~wbMO!&iVHwCw{;~k7#XWF-~&E>77YLX{b%_0^~e8XXHJ0)VFLNt-a(I` zW*G1buw>BHR|JO@*Z@#~Y zEX<2jp`msLR&h2q76w5K|tP0Oxoq^RA z*RMTdc=_@@)CEA3Ciib3$pzD=Y-0HJ^Ebo*Q1U!@;1a{Rv$u(I#ik9%87^PE4^P%i zAmYROFN{@X^B7JXyN=Tk5CEmb$rCm(z!DJ%z!~UyK}AK1fr*(39AGzZJO<~5t5+T} iV9g82fYjVbF#rHq`k@k3d;rh@0000|_`K!-000SaNLh0L01m_e01m_fl`9S#00004XF*Lt006O%3;baP0004VNklH?J47k9S zO(z&8_N`~wbMO!&iVHwCw{;~k7#XWF-~&E>77YLX{b%_0^~e8XXHJ0)VFLNt-a(I` zW*G1buw>BHR|JO@*Z@#~Y zEX<2jp`msLR&h2q76w5K|k_@S-~hXM<1sidT)py;0c&1B2BhXj aiU9x$MVQu+7Y7jl0000H?J47k9S zO(z&8_N`~wbMO!&iVHwCw{;~k7#XWF-~&E>77YLX{b%_0^~e8XXHJ0)VFLNt-a(I` zW*G1buw>BHR|JO@*Z@#~Y zEX<2jp`msLR&h2q76w5K|thS%OIs>Z# z*RMTdc=_@@)CEA3Ciib3$pzD=Y-0HJ^Ebo*Q1U!@;1a{Rv$u(|eba{H43{t7hbL<$ z5b@#t7sjfxc?>6xT?Z?|r5ThGCr{YG082z50B4}*1r-%31}0`EaDd&s@fe&Ju3mY_ ifHf~515$G%#Q*@H`k@kY8vc0z00001OJ7Dcp3NvxEc6(IT=2D_{#7Rgg<@-$uS};ym0Lz0}HZ%fFRF*GYfTw z@1VzEWUR_S4DbuE zWYE=D1cw#a08oJC76uTd83r^yeAqD_3M9xgec|k=*ih+rl2^?TIZ#;(O l1qS5207}Y?l;%c?0RSM(m>7t^7@7b8002ovPDHLkV1mx^$b0|* literal 0 HcmV?d00001 diff --git a/mods/ui/compass/textures/compass_9.png b/mods/ui/compass/textures/compass_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5243b798e648e91d35f31fa34832dbe00a0e8764 GIT binary patch literal 487 zcmV1OJ7Dcp3NvxEc6(IT=2D_{#7Rgg<@-$uS};ym0Lz0}HZ%fFRF*GYfTw z@1VzEWUR_S4DbuE zWYE=D1cw#a08oJC76uTd83r0}2 z)Xu=F`25uw7-DQ}EDVBz5PdA~-haWV5EuCM>kq@bcb_3%c=h5v!`ru?Nb_^MZ