From 904b226f00e14c25c020d4087e235cc0904ec1ef Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 12 Oct 2014 23:23:01 +0200 Subject: [PATCH] Make dependency on Technic optional --- depends.txt | 2 +- init.lua | 54 ++++++++++++++++++++++++++++++++--------------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/depends.txt b/depends.txt index f568272..048e8bf 100644 --- a/depends.txt +++ b/depends.txt @@ -1,3 +1,3 @@ intllib? -technic +technic? default? diff --git a/init.lua b/init.lua index b744e4d..9aaba04 100644 --- a/init.lua +++ b/init.lua @@ -5,6 +5,26 @@ else S = function ( s ) return s end end +teletool = {} + +function teletool.teleport(player, pointed_thing) + local pos = pointed_thing.above + local over1 = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + local over2 = minetest.get_node({x=pos.x,y=pos.y+2,z=pos.z}) + local src = player:getpos() + local dest = {x=pos.x, y=math.ceil(pos.y)-0.5, z=pos.z} + minetest.sound_play( {name="teletool_teleport1", gain=1}, {pos=src, max_hear_distance=12}) + player:setpos(dest) + minetest.after(0.5, function(dest) minetest.sound_play( {name="teletool_teleport2", gain=1}, {pos=dest, max_hear_distance=12}) end, dest) +end + +if(minetest.get_modpath("technic") ~= nil) then + technic.register_power_tool("teletool:teletool", 50000) + teletool.on_refill = technic.refill_RE_charge +else + teletool.on_refill = nil +end + minetest.register_tool("teletool:teletool", { description = S("point teleporter"), range = 20.0, @@ -13,23 +33,18 @@ minetest.register_tool("teletool:teletool", { inventory_image = "teletool_teletool.png", on_use = function(itemstack, user, pointed_thing) if(pointed_thing.type == "node") then - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.charge then return end - - if meta.charge >= 1000 then - meta.charge = meta.charge - 1000 - - pos = pointed_thing.above - local over1 = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) - local over2 = minetest.get_node({x=pos.x,y=pos.y+2,z=pos.z}) - local src = user:getpos() - local dest = {x=pos.x, y=math.ceil(pos.y)-0.5, z=pos.z} - minetest.sound_play( {name="teletool_teleport1", gain=1}, {pos=src, max_hear_distance=12}) - user:setpos(dest) - minetest.after(0.5, function(dest) minetest.sound_play( {name="teletool_teleport2", gain=1}, {pos=dest, max_hear_distance=12}) end, dest) - - technic.set_RE_wear(itemstack, meta.charge, 50000) - itemstack:set_metadata(minetest.serialize(meta)) + local has_technic = minetest.get_modpath("technic") ~= nil + if(has_technic) then + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.charge then return end + if meta.charge >= 1000 then + meta.charge = meta.charge - 1000 + teletool.teleport(user, pointed_thing) + technic.set_RE_wear(itemstack, meta.charge, 50000) + itemstack:set_metadata(minetest.serialize(meta)) + end + else + teletool.teleport(user, pointed_thing) end return itemstack end @@ -37,7 +52,7 @@ minetest.register_tool("teletool:teletool", { -- Technic data wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge + on_refill = teletool.on_refill, }) if(minetest.get_modpath("default") ~= nil and minetest.get_modpath("technic") ~= nil) then @@ -51,6 +66,3 @@ if(minetest.get_modpath("default") ~= nil and minetest.get_modpath("technic") ~= }) end -if(minetest.get_modpath("technic") ~= nil) then - technic.register_power_tool("teletool:teletool", 50000) -end