diff --git a/README.md b/README.md index 4916741..dcd855e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ https://forum.minetest.net/viewtopic.php?f=9&t=9234 Change log: -- 1.5 - Use moveresult when throwing teleport potion, has switcharoo effect +- 1.5 - Use moveresult when throwing teleport potion, has switcharoo effect, add "teleport_potion_enable_protection" to enable protection checks. - 1.4 - Change Pad texture so it's not as contrasting, check for attached player before tp. - 1.3 - Added some formspec checks and switch to enable old teleport pad texture (thanks mazes 80) - 1.2 - New teleport pad texture, code tweaks to work with minetest 5.x diff --git a/init.lua b/init.lua index 5f4ceef..34dd745 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,7 @@ local S = core.get_translator("teleport_potion") local mcl = core.get_modpath("mcl_core") local dist = tonumber(core.settings:get("map_generation_limit") or 31000) +local use_protection = core.settings:get_bool("teleport_potion_enable_protection") -- creative check @@ -85,6 +86,10 @@ local teleport_destinations = {} local function set_teleport_destination(playername, dest) + if use_protection and core.is_protected(dest, playername) then + core.chat_send_player(playername, S("Destination protected!")) ; return + end + teleport_destinations[playername] = dest effect(dest, 20, "teleport_potion_particle.png", 0.5, 1.5, 1, 7, 15) @@ -185,7 +190,17 @@ potion_entity.on_step = function(self, dtime, moveresult) local oldpos = self.player:get_pos() -- if we hit a player or mob then switch positions - local def = moveresult.collisions and moveresult.collisions[1] + local def = moveresult.collisions and moveresult.collisions[1] or {} + local playername = self.player:get_player_name() or "" + + -- if protection enabled check if we can teleport or drop potion + if use_protection and core.is_protected(pos, playername) then + + core.chat_send_player(playername, S("Destination protected!")) + core.add_item(pos, "teleport_potion:potion") + + self.object:remove() ; return + end if def.object then def.object:set_pos(oldpos) @@ -311,12 +326,8 @@ core.register_node("teleport_potion:pad", { wield_image = teleport_pad_texture, light_source = 5, groups = {snappy = 3}, - node_box = { - type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} - }, - selection_box = { - type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} - }, + node_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}}, + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}}, -- Save pointed nodes coordinates as destination for further portals on_use = function(itemstack, user, pointed_thing) diff --git a/settingtypes.txt b/settingtypes.txt index 32aa894..f346186 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -1,2 +1,5 @@ # If enabled texture pad will use the old texture teleport_potion_use_old_texture (Use old texture for teleport pad) bool false + +# If enabled players cannot bookmark protected positions +teleport_potion_enable_protection (Cannot set teleport to protected areas) bool false