From 9378d4dbd555e075c4aba58a1a849d0c04d8dd29 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sun, 28 Apr 2019 21:51:26 +0200 Subject: [PATCH] restructured --- basic_machines/blackhole.lua | 21 ++-- basic_machines/forceload.lua | 56 ++++----- basic_machines/mark.lua | 185 ++++++++++++++-------------- init.lua | 2 + textures/techage_appl_forceload.png | Bin 0 -> 1310 bytes textures/techage_cube_mark.png | Bin 0 -> 305 bytes 6 files changed, 131 insertions(+), 133 deletions(-) create mode 100644 textures/techage_appl_forceload.png create mode 100644 textures/techage_cube_mark.png diff --git a/basic_machines/blackhole.lua b/basic_machines/blackhole.lua index f99fff2..2abf82b 100644 --- a/basic_machines/blackhole.lua +++ b/basic_machines/blackhole.lua @@ -8,9 +8,6 @@ LGPLv2.1+ See LICENSE.txt for more information - The autocrafter is derived from pipeworks: - Copyright (C) 2004 Sam Hocevar WTFPL - All items disappear. ]]-- @@ -19,12 +16,12 @@ minetest.register_node("techage:blackhole", { description = "Techage Black Hole", tiles = { -- up, down, right, left, back, front - "techage_filling_ta3.png^techage_frame_ta3.png", - "techage_filling_ta3.png^techage_frame_ta3.png", - "techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_blackhole.png", - "techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_blackhole.png^techage_appl_inp.png", - "techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_blackhole.png", - "techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_blackhole.png", + "techage_filling_ta2.png^techage_frame_ta2.png", + "techage_filling_ta2.png^techage_frame_ta2.png", + "techage_filling_ta2.png^techage_frame_ta2.png^techage_appl_blackhole.png", + "techage_filling_ta2.png^techage_frame_ta2.png^techage_appl_blackhole.png^techage_appl_inp.png", + "techage_filling_ta2.png^techage_frame_ta2.png^techage_appl_blackhole.png", + "techage_filling_ta2.png^techage_frame_ta2.png^techage_appl_blackhole.png", }, after_place_node = function(pos, placer) @@ -46,9 +43,9 @@ minetest.register_node("techage:blackhole", { minetest.register_craft({ output = "techage:blackhole", recipe = { - {"group:wood", "", "group:wood"}, - {"tubelib:tubeS", "default:coal_lump", ""}, - {"group:wood", "", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"tubelib:tubeS", "default:coal_lump", ""}, + {"group:wood", "techage:iron_ingot", "group:wood"}, }, }) diff --git a/basic_machines/forceload.lua b/basic_machines/forceload.lua index 0f214bb..80ae13b 100644 --- a/basic_machines/forceload.lua +++ b/basic_machines/forceload.lua @@ -1,14 +1,14 @@ --[[ - Tube Library - ============ + TechAge + ======= - Copyright (C) 2017-2019 Joachim Stolberg + Copyright (C) 2019 Joachim Stolberg LGPLv2.1+ See LICENSE.txt for more information - forceload.lua: + Forceload block ]]-- @@ -50,7 +50,7 @@ local function remove_list_elem(list, x) end local function chat(player, text) - minetest.chat_send_player(player:get_player_name(), "[Tubelib] "..text) + minetest.chat_send_player(player:get_player_name(), "[Techage] "..text) end local function get_node_lvm(pos) @@ -72,33 +72,33 @@ local function get_node_lvm(pos) end local function add_pos(pos, player) - local lPos = minetest.deserialize(player:get_attribute("tubelib_forceload_blocks")) or {} - if not in_list(lPos, pos) and #lPos < tubelib.max_num_forceload_blocks then + local lPos = minetest.deserialize(player:get_attribute("techage_forceload_blocks")) or {} + if not in_list(lPos, pos) and #lPos < techage.max_num_forceload_blocks then lPos[#lPos+1] = pos - player:set_attribute("tubelib_forceload_blocks", minetest.serialize(lPos)) + player:set_attribute("techage_forceload_blocks", minetest.serialize(lPos)) return true end return false end local function del_pos(pos, player) - local lPos = minetest.deserialize(player:get_attribute("tubelib_forceload_blocks")) or {} + local lPos = minetest.deserialize(player:get_attribute("techage_forceload_blocks")) or {} lPos = remove_list_elem(lPos, pos) - player:set_attribute("tubelib_forceload_blocks", minetest.serialize(lPos)) + player:set_attribute("techage_forceload_blocks", minetest.serialize(lPos)) end local function get_pos_list(player) - return minetest.deserialize(player:get_attribute("tubelib_forceload_blocks")) or {} + return minetest.deserialize(player:get_attribute("techage_forceload_blocks")) or {} end local function set_pos_list(player, lPos) - player:set_attribute("tubelib_forceload_blocks", minetest.serialize(lPos)) + player:set_attribute("techage_forceload_blocks", minetest.serialize(lPos)) end local function get_data(pos, player) local pos1, pos2 = calc_area(pos) - local num = #minetest.deserialize(player:get_attribute("tubelib_forceload_blocks")) or 0 - local max = tubelib.max_num_forceload_blocks + local num = #minetest.deserialize(player:get_attribute("techage_forceload_blocks")) or 0 + local max = techage.max_num_forceload_blocks return pos1, pos2, num, max end @@ -123,14 +123,14 @@ local function formspec(player) end -minetest.register_node("tubelib:forceload", { - description = "Tubelib Forceload Block", +minetest.register_node("techage:forceload", { + description = "Techage Forceload Block", tiles = { -- up, down, right, left, back, front - 'tubelib_front.png', - 'tubelib_front.png', + 'techage_filling_ta2.png^techage_frame_ta2_top.png', + 'techage_filling_ta2.png^techage_frame_ta2_top.png', { - image = "tubelib_forceload.png", + image = "techage_filling_ta2.png^techage_frame_ta2_top.png^techage_appl_forceload.png", backface_culling = false, animation = { type = "vertical_frames", @@ -148,7 +148,7 @@ minetest.register_node("tubelib:forceload", { M(pos):set_string("infotext", "Area "..S(pos1).." to "..S(pos2).." loaded!\n".. "Punch the block to make the area visible.") chat(placer, "Area ("..num.."/"..max..") "..S(pos1).." to "..S(pos2).." loaded!") - tubelib.mark_region(placer:get_player_name(), pos1, pos2) + techage.mark_region(placer:get_player_name(), pos1, pos2) M(pos):set_string("owner", placer:get_player_name()) else chat(placer, "Area already loaded or max. number of Forceload Blocks reached!") @@ -163,38 +163,38 @@ minetest.register_node("tubelib:forceload", { del_pos(pos, player) end minetest.forceload_free_block(pos, true) - tubelib.unmark_region(oldmetadata.fields.owner) + techage.unmark_region(oldmetadata.fields.owner) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) if M(pos):get_string("owner") == clicker:get_player_name() or minetest.check_player_privs(clicker:get_player_name(), "server") then local s = formspec(clicker) - minetest.show_formspec(clicker:get_player_name(), "tubelib:forceload", s) + minetest.show_formspec(clicker:get_player_name(), "techage:forceload", s) end end, on_punch = function(pos, node, puncher, pointed_thing) local pos1, pos2 = calc_area(pos) - tubelib.switch_region(puncher:get_player_name(), pos1, pos2) + techage.switch_region(puncher:get_player_name(), pos1, pos2) end, paramtype = "light", sunlight_propagates = true, groups = {choppy=2, cracky=2, crumbly=2, - not_in_creative_inventory = tubelib.max_num_forceload_blocks == 0 and 1 or 0}, + not_in_creative_inventory = techage.max_num_forceload_blocks == 0 and 1 or 0}, is_ground_content = false, sounds = default.node_sound_wood_defaults(), }) -if tubelib.max_num_forceload_blocks > 0 then +if techage.max_num_forceload_blocks > 0 then minetest.register_craft({ - output = "tubelib:forceload", + output = "techage:forceload", recipe = { {"group:wood", "", "group:wood"}, {"", "basic_materials:energy_crystal_simple", ""}, - {"group:wood", "tubelib:wlanchip", "group:wood"}, + {"group:wood", "techage:iron_ingot", "group:wood"}, }, }) end @@ -203,7 +203,7 @@ minetest.register_on_joinplayer(function(player) local lPos = {} for _,pos in ipairs(get_pos_list(player)) do local node = get_node_lvm(pos) - if node.name == "tubelib:forceload" then + if node.name == "techage:forceload" then minetest.forceload_block(pos, true) lPos[#lPos+1] = pos end diff --git a/basic_machines/mark.lua b/basic_machines/mark.lua index 73328db..185cdeb 100644 --- a/basic_machines/mark.lua +++ b/basic_machines/mark.lua @@ -1,93 +1,92 @@ ---[[ - - Tube Library - ============ - - Copyright (C) 2019 Joachim Stolberg - Code derived from wordedit (sfan5, Anthony Zhang (Uberi/Temperest), and Brett O'Donnell (cornernote)) - - LGPLv2.1+ - See LICENSE.txt for more information - - mark.lua: - -]]-- - -local marker_region = {} - -function tubelib.unmark_region(name) - if marker_region[name] ~= nil then --marker already exists - --wip: make the area stay loaded somehow - for _, entity in ipairs(marker_region[name]) do - entity:remove() - end - marker_region[name] = nil - end -end - -function tubelib.mark_region(name, pos1, pos2) - - tubelib.unmark_region(name) - - local thickness = 0.2 - local sizex, sizey, sizez = (1 + pos2.x - pos1.x) / 2, (1 + pos2.y - pos1.y) / 2, (1 + pos2.z - pos1.z) / 2 - local markers = {} - - --XY plane markers - for _, z in ipairs({pos1.z - 0.5, pos2.z + 0.5}) do - local marker = minetest.add_entity({x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}, "tubelib:region_cube") - if marker ~= nil then - marker:set_properties({ - visual_size={x=sizex * 2, y=sizey * 2}, - collisionbox = {-sizex, -sizey, -thickness, sizex, sizey, thickness}, - }) - marker:get_luaentity().player_name = name - table.insert(markers, marker) - end - end - - --YZ plane markers - for _, x in ipairs({pos1.x - 0.5, pos2.x + 0.5}) do - local marker = minetest.add_entity({x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}, "tubelib:region_cube") - if marker ~= nil then - marker:set_properties({ - visual_size={x=sizez * 2, y=sizey * 2}, - collisionbox = {-thickness, -sizey, -sizez, thickness, sizey, sizez}, - }) - marker:setyaw(math.pi / 2) - marker:get_luaentity().player_name = name - table.insert(markers, marker) - end - end - - marker_region[name] = markers -end - -function tubelib.switch_region(name, pos1, pos2) - if marker_region[name] ~= nil then --marker already exists - tubelib.unmark_region(name) - else - tubelib.mark_region(name, pos1, pos2) - end -end - -minetest.register_entity(":tubelib:region_cube", { - initial_properties = { - visual = "upright_sprite", - visual_size = {x=1.1, y=1.1}, - textures = {"tubelib_cube.png"}, - use_texture_alpha = true, - visual_size = {x=10, y=10}, - physical = false, - }, - on_step = function(self, dtime) - if marker_region[self.player_name] == nil then - self.object:remove() - return - end - end, - on_punch = function(self, hitter) - tubelib.unmark_region(self.player_name) - end, -}) - +--[[ + + TechAge + ======= + + Copyright (C) 2019 Joachim Stolberg + + LGPLv2.1+ + See LICENSE.txt for more information + + mark.lua: + +]]-- + +local marker_region = {} + +function techage.unmark_region(name) + if marker_region[name] ~= nil then --marker already exists + --wip: make the area stay loaded somehow + for _, entity in ipairs(marker_region[name]) do + entity:remove() + end + marker_region[name] = nil + end +end + +function techage.mark_region(name, pos1, pos2) + + techage.unmark_region(name) + + local thickness = 0.2 + local sizex, sizey, sizez = (1 + pos2.x - pos1.x) / 2, (1 + pos2.y - pos1.y) / 2, (1 + pos2.z - pos1.z) / 2 + local markers = {} + + --XY plane markers + for _, z in ipairs({pos1.z - 0.5, pos2.z + 0.5}) do + local marker = minetest.add_entity({x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}, "techage:region_cube") + if marker ~= nil then + marker:set_properties({ + visual_size={x=sizex * 2, y=sizey * 2}, + collisionbox = {-sizex, -sizey, -thickness, sizex, sizey, thickness}, + }) + marker:get_luaentity().player_name = name + table.insert(markers, marker) + end + end + + --YZ plane markers + for _, x in ipairs({pos1.x - 0.5, pos2.x + 0.5}) do + local marker = minetest.add_entity({x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}, "techage:region_cube") + if marker ~= nil then + marker:set_properties({ + visual_size={x=sizez * 2, y=sizey * 2}, + collisionbox = {-thickness, -sizey, -sizez, thickness, sizey, sizez}, + }) + marker:setyaw(math.pi / 2) + marker:get_luaentity().player_name = name + table.insert(markers, marker) + end + end + + marker_region[name] = markers +end + +function techage.switch_region(name, pos1, pos2) + if marker_region[name] ~= nil then --marker already exists + techage.unmark_region(name) + else + techage.mark_region(name, pos1, pos2) + end +end + +minetest.register_entity(":techage:region_cube", { + initial_properties = { + visual = "upright_sprite", + visual_size = {x=1.1, y=1.1}, + textures = {"techage_cube_mark.png"}, + use_texture_alpha = true, + visual_size = {x=10, y=10}, + physical = false, + }, + on_step = function(self, dtime) + if marker_region[self.player_name] == nil then + self.object:remove() + return + end + end, + on_punch = function(self, hitter) + techage.unmark_region(self.player_name) + end, +}) + diff --git a/init.lua b/init.lua index 01ca74f..4cc2038 100644 --- a/init.lua +++ b/init.lua @@ -75,6 +75,8 @@ else dofile(MP.."/basic_machines/gravelsieve.lua") dofile(MP.."/basic_machines/chest.lua") dofile(MP.."/basic_machines/autocrafter.lua") + dofile(MP.."/basic_machines/mark.lua") + dofile(MP.."/basic_machines/forceload.lua") if techage.basalt_stone_enabled then dofile(MP.."/basic_machines/basalt.lua") end diff --git a/textures/techage_appl_forceload.png b/textures/techage_appl_forceload.png new file mode 100644 index 0000000000000000000000000000000000000000..b45f8d251427404e38f8295b3938ae58a76c955f GIT binary patch literal 1310 zcmV+(1>yRMP)gV((P5v$L~1@4cD#|9KqReDoDF>PBf(o4zAy zF=o`6Z8?T1YpP?I01!`S0N|)n_Uc|SX%%~_B*~1rPALF{YKLxOEJ}z@X_OFw8TH20 z{JQoovn_l~B}rxW!CEaHPiLZp997D8s<>gz#M2p*Rsnz+bvspDE`?Q+#P6_E#g*Mr z0FX7+O^nH!+L)T(ux6NT4c-6Xoz>qCa`}RCS_OciaO9{`e)8vWE?;n~zcAZsFou`n z@iTB6&hbB1{a>#|uN?vaUPi3)i_=pvEJ+as$8-;V4Lx1@OwwZbUCop5T2zw6565=T z6j4I3zhjtQ9RQ?=0szdmup%0z&G5t|n)|(_yKteX=atOG#&PIbekiPlCnoVb1UE5; zt+J*9r{X5Y(D?u$LQ9|$?qNK%Ec1Lsf3PW4pd$-5m8uc;g{=su^^p)Mw zTz>w=(?tOQa{0nft3P^Pdi5e{F&tBhD56QLKo{o{z|lk|tvZ#3tO5W;Y!0mUuBq|M zZMC=myuA_EGqWuLLmrm`ui_YHcw#b2h!jx-09e@_wNpioCW@ysYqfM^Y90VY&&hL% zUQWI}PFh<2+NVAGR~foN)>Li!j({&@ zw$-xNze-U_GE_Ts43pWGh*5MlFW~l$k+-vG8^NU2c(stuM?aRFeWn6ItsESp{5WOyC|rEioy2TEWYUm+muH*-d5JQc3ct zQWhjF#@)%xsIS%1IOfZIz|%zM`5>Ooh|H+tR?%!YFE{xvk-g=tQf3AbaYlTdj4}|5 zV3am>N*%*QmBDMfZd7&vK&Lc>+7xvXYE!&{xw|D7d69 zwoa*}#gy3x8`g}Z#dJzhn=Y5axJNpMsgh)4Y97TX8UQcxt+?%X)}|({4v*jVw5fRf z%sq9QwW)jRh+&CY`s3gK&gBay+fRl@M!XK@)>?xx08oa9J7`m!KB`Zgji*YnQPN^~ zd9t&O@~v4CcH0p|v|~p;Xl4SPQlJ#;%{x3AB;W&XeDL$F&(B<=pZiD#&;ew)(0&U= z`gyzDR0jYT=C(fRdp`L3+lM{|{q+9(Z=4U@*UblVYuBr=RLAVpw|pRXeWsnIdMlbP zd>{vWa2X%S+-C5m_&~oNZC{@c_?hU&@PR)S+|PXAw&tdQ4+1_2_#oheHa_^G^dXmp z_9gkI@A)72l2gEl_+_;Iew(wVr{Li_ISQs48zRsJ*6<9EG*;)AQORLATz zfPB!-QoR*Tzz4qhV1m~>ZXO?8R|R+D18yd|F?`@p1rGur`1|Kozy|>zye2;Q4}rR! Uz>y|0-v9sr07*qoM6N<$f(34Lg#Z8m literal 0 HcmV?d00001 diff --git a/textures/techage_cube_mark.png b/textures/techage_cube_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..767e9d46f36422d0ef9051c5763e1bb565834b6a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSK$uZf!>a)($X?><>&pI!N1V%8YW9!rNkE}}o-U3d7N_T4w&gplz{C1r`WENs za?PA8?^!Rs{_=$6p075c{Ra*l5nSXUS=FjHA)x7Gzc^dcJ$3iIb>GD&hiy3b_{2?{ zdHLJUF*h9Cm&A~fY@B)2dNyxn>$ELQ3=z+LYqo|do@klpDUj`ZNKwPij62D5l8NQd zGQ|lh^(R9e^)yxU1${WPzb{fq>~0oiwcKrVW6=VO4U