From d30fa509c8cf6abb4089393724549986259e72fa Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Tue, 29 Jun 2021 13:33:16 -0400 Subject: [PATCH] make MineDOT streetlights use the new code (sorry, cheapie :) ) --- minedot.lua | 117 ++++-------------- schems/streetlight-double.mts | Bin 159 -> 0 bytes schems/streetlight-single.mts | Bin 125 -> 0 bytes schems/streetlight_minedot_1.mts | Bin 0 -> 140 bytes schems/streetlight_minedot_2.mts | Bin 0 -> 173 bytes ... => simple_streetlights_inv_minedot_1.png} | Bin ... => simple_streetlights_inv_minedot_2.png} | Bin 7 files changed, 27 insertions(+), 90 deletions(-) delete mode 100644 schems/streetlight-double.mts delete mode 100644 schems/streetlight-single.mts create mode 100644 schems/streetlight_minedot_1.mts create mode 100644 schems/streetlight_minedot_2.mts rename textures/{minedot_streetlights_single.png => simple_streetlights_inv_minedot_1.png} (100%) rename textures/{minedot_streetlights_double.png => simple_streetlights_inv_minedot_2.png} (100%) diff --git a/minedot.lua b/minedot.lua index d9f6c9d..0d40ea1 100644 --- a/minedot.lua +++ b/minedot.lua @@ -1,95 +1,32 @@ -local schems = { - single = minetest.register_schematic(string.format("schems%sstreetlight-single.mts",DIR_DELIM)), - double = minetest.register_schematic(string.format("schems%sstreetlight-double.mts",DIR_DELIM)), -} +for k,v in pairs({1, 2}) do + -- why +6? because table entries 1-6 are set in modern.lua :-) + streetlights.schematics[k+6] = + minetest.register_schematic(string.format("schems%sstreetlight_minedot_"..v..".mts",DIR_DELIM)) -local singleMaterials = { - ItemStack("streets:bigpole 6"), - ItemStack("streets:bigpole_edge 2"), - ItemStack("homedecor:glowlight_quarter 1"), -} + local s = (v == 1) and "" or "s" -local doubleMaterials = { - ItemStack("streets:bigpole 7"), - ItemStack("streets:bigpole_edge 2"), - ItemStack("streets:bigpole_tjunction 1"), - ItemStack("homedecor:glowlight_quarter 2"), -} - -local offsets = { - single = { - [0] = {x = 0,y = 0,z = 0}, - [90] = {x = 0,y = 0,z = 0}, - [180] = {x = 0,y = 0,z = -2}, - [270] = {x = -2,y = 0,z = 0}, - }, - double = { - [0] = {x = 0,y = 0,z = -2}, - [90] = {x = -2,y = 0,z = 0}, - [180] = {x = 0,y = 0,z = -2}, - [270] = {x = -2,y = 0,z = 0}, - }, -} - -local function takeMaterials(player, sneak, materials) - local name = player:get_player_name() - if creative and creative.is_enabled_for(name) then return true end - local inv = minetest.get_inventory({type = "player",name = name}) - local hasMaterials = true - for _,i in ipairs(materials) do - if not inv:contains_item("main",i) then hasMaterials = false end - end - if sneak and streetlights.basic_materials and not inv:contains_item("main", streetlights.concrete) then - hasMaterials = false - end - if hasMaterials then - for _,i in ipairs(materials) do inv:remove_item("main",i) end - if sneak then - inv:remove_item("main", streetlights.concrete) + minetest.register_tool("simple_streetlights:spawner_minedot_"..v, { + description = "Streetlight spawner (MineDOT-stylw, with "..v.." lamp"..s..")", + inventory_image = "simple_streetlights_inv_minedot_"..v..".png", + use_texture_alpha = true, + tool_capabilities = { full_punch_interval=0.1 }, + on_place = function(itemstack, placer, pointed_thing) + streetlights.check_and_place(itemstack, placer, pointed_thing, { + schematic = streetlights.schematics[k+6], + materials = { + "streets:bigpole "..(v+5), + "streets:bigpole_edge 2", + "homedecor:glowlight_quarter "..v, + (v == 2) and "streets:bigpole_tjunction 1" + }, + protection_box = { + omin = {x = (-2*v + 2), y = 0, z = 0}, + omax = {x = 2, y = 5, z = 0}, + } + }) end - return true - else - minetest.chat_send_player(name,"You don't have the necessary materials to do that!") - return false - end + }) end -local function place(itemstack,player,pointed) - if not player then return end - local sneak = player:get_player_control().sneak - local name = player:get_player_name() - if not minetest.check_player_privs(name,{streetlight = true}) then - minetest.chat_send_player(name,"*** You don't have permission to use a streetlight spawner.") - return - end - local pos = pointed.above - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass = true}) then - minetest.record_protection_violation(pos,name) - return - end - local isDouble = string.sub(itemstack:get_name(),-6,-1) == "double" - if not takeMaterials(player, sneak, isDouble and doubleMaterials or singleMaterials) then return end - local facedir = minetest.facedir_to_dir(minetest.dir_to_facedir(player:get_look_dir())) - local schemDir = 0 - if facedir.x == 1 then schemDir = 180 - elseif facedir.z == 1 then schemDir = 90 - elseif facedir.z == -1 then schemDir = 270 end - local offset = offsets[isDouble and "double" or "single"][schemDir] - if sneak and streetlights.basic_materials then - minetest.set_node({x=pos.x, y=pos.y-1, z=pos.z}, {name = streetlights.concrete}) - end - local pos = vector.add(pos,offset) - minetest.place_schematic(pos,isDouble and schems.double or schems.single,schemDir,nil,false) -end - -minetest.register_tool(":minedot_streetlights:spawner_single",{ - description = "MineDOT-style Street Light Spawner (single-sided)", - inventory_image = "minedot_streetlights_single.png", - on_place = place, -}) - -minetest.register_tool(":minedot_streetlights:spawner_double",{ - description = "MineDOT-style Street Light Spawner (double-sided)", - inventory_image = "minedot_streetlights_double.png", - on_place = place, -}) +minetest.register_alias("minedot_streetlights:spawner_single", "simple_streetlights:spawner_minedot_1") +minetest.register_alias("minedot_streetlights:spawner_double", "simple_streetlights:spawner_minedot_2") diff --git a/schems/streetlight-double.mts b/schems/streetlight-double.mts deleted file mode 100644 index 80ba16f45898823d162943ccd277aaee226ca346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeYb3HD`RVPIrnV_>ZZ0|r(G=ETe*2I-9a+|-oR1@lC09aca10avTxTGjGwWQc8DKotwKPQzz1Wh15H6=ZjfjKd=h(S6d zKQ}ccH95b?Dm^E^JSQ_fqa?ntG_j~8wWwlFazX>M8=IO%O2g(Ek`k{C8H6PoN;f*2 LFf;sCWY10at%F|&w)zqq6*HMOMJDk(F)AU`LSK`tXdH#H?SIlss% zJtx0BCo?^xB)+gTv8W`qDBjS7K?F@hd}>O1YQ>!71O_HIHVK6@Nlcq(H0GqSwN(j7 aH!}o%{rXkGl}Cc*hC!N~8^b;~mc;-*NiPxr literal 0 HcmV?d00001 diff --git a/schems/streetlight_minedot_2.mts b/schems/streetlight_minedot_2.mts new file mode 100644 index 0000000000000000000000000000000000000000..ecc1b25e8d767cd367b2eaafc26b233cc7c41ffe GIT binary patch literal 173 zcmeYb3HD`RVPIuoV_>WY10b6@F|&w)zqq6*HMOMJDk(F)AU`LSK`tXdH#H?SIlss% zJtx0BCo?^xB)+gTv8W`qDBjS7K?F@hd}>O1DuX1tXh~LSUUErheqP0#UEY;16)IVGT@N`Qr#Z2}VyQwGas0cCz=hHtaktN=+=Iidgn literal 0 HcmV?d00001 diff --git a/textures/minedot_streetlights_single.png b/textures/simple_streetlights_inv_minedot_1.png similarity index 100% rename from textures/minedot_streetlights_single.png rename to textures/simple_streetlights_inv_minedot_1.png diff --git a/textures/minedot_streetlights_double.png b/textures/simple_streetlights_inv_minedot_2.png similarity index 100% rename from textures/minedot_streetlights_double.png rename to textures/simple_streetlights_inv_minedot_2.png