Add mod.conf
[minetest_returnmirror.git] / init.lua
blobbbbab0e4052bdef5efd0a3504c681e81a542e424
1 returnmirror = {}
2 returnmirror.cost_teleport = 200
3 returnmirror.cost_set = 20
5 if tonumber(minetest.setting_get("returnmirror_cost_teleport")) ~= nil then
6 returnmirror.cost_teleport = tonumber(minetest.setting_get("returnmirror_cost_teleport"))
7 end
8 if tonumber(minetest.setting_get("returnmirror_cost_set")) ~= nil then
9 returnmirror.cost_set = tonumber(minetest.setting_get("returnmirror_cost_set"))
10 end
12 if minetest.get_modpath("mana") ~= nil then
13 returnmirror.mana = true
14 else
15 returnmirror.mana = false
16 end
18 returnmirror.mana_check = function(player, cost)
19 local allowed
20 if returnmirror.mana then
21 if mana.subtract(player:get_player_name(), cost) then
22 allowed = true
23 else
24 allowed = false
25 end
26 else
27 allowed = true
28 end
29 return allowed
30 end
32 returnmirror.set_position_inactive = function(itemstack, user, pointed_thing)
33 if returnmirror.mana_check(user, returnmirror.cost_set) then
34 local pos = user:getpos()
35 local newitem = ItemStack("returnmirror:mirror_active")
36 newitem:set_metadata(minetest.pos_to_string(pos))
37 minetest.sound_play( {name="returnmirror_set", gain=1}, {pos=pos, max_hear_distance=12})
38 return newitem
39 end
40 end
42 returnmirror.set_position_active = function(itemstack, user, pointed_thing)
43 if returnmirror.mana_check(user, returnmirror.cost_set) then
44 local pos = user:getpos()
45 itemstack:set_metadata(minetest.pos_to_string(pos))
46 minetest.sound_play( {name="returnmirror_set", gain=1}, {pos=pos, max_hear_distance=12})
47 return itemstack
48 end
49 end
51 minetest.register_tool("returnmirror:mirror_inactive", {
52 description = "Mirror of Returning",
53 inventory_image = "returnmirror_mirror_inactive.png",
54 wield_image = "returnmirror_mirror_inactive.png",
55 tool_capabilities = {},
56 range = 0,
57 on_use = function() end,
58 on_place = returnmirror.set_position_inactive,
59 on_secondary_use = returnmirror.set_position_inactive,
62 minetest.register_tool("returnmirror:mirror_active", {
63 description = "Mirror of Returning",
64 stack_max = 1,
65 inventory_image = "returnmirror_mirror_active.png",
66 wield_image = "returnmirror_mirror_active.png",
67 tool_capabilities = {},
68 range = 0,
69 on_use = function(itemstack, user, pointed_thing)
70 local dest_string = itemstack:get_metadata()
71 local dest = minetest.string_to_pos(dest_string)
72 if dest ~= nil then
73 if returnmirror.mana_check(user, returnmirror.cost_teleport) then
74 local src = user:getpos()
75 minetest.sound_play( {name="returnmirror_teleport", gain=1}, {pos=src, max_hear_distance=30})
76 minetest.add_particlespawner({
77 amount = 50,
78 time = 0.1,
79 minpos = {x=src.x-0.4, y=src.y+0.25, z=src.z-0.4},
80 maxpos = {x=src.x+0.4, y=src.y+0.75, z=src.z+0.4},
81 minvel = {x=-0.2, y=-0.2, z=-0.2},
82 maxvel = {x=0.2, y=0.2, z=0.2},
83 minexptime=3,
84 maxexptime=4.5,
85 minsize=1,
86 maxsize=1.25,
87 texture = "returnmirror_particle_departure.png",
89 user:setpos(dest)
90 minetest.sound_play( {name="returnmirror_teleport", gain=1}, {pos=dest, max_hear_distance=30})
91 minetest.add_particlespawner({
92 amount = 100,
93 time = 0.1,
94 minpos = {x=dest.x-0.4, y=dest.y+0.25, z=dest.z-0.4},
95 maxpos = {x=dest.x+0.4, y=dest.y+0.75, z=dest.z+0.4},
96 minvel = {x=-0.4, y=-0.3, z=-0.4},
97 maxvel = {x=0.4, y=0.3, z=0.4},
98 minexptime=6,
99 maxexptime=12,
100 minsize=1,
101 maxsize=1.25,
102 texture = "returnmirror_particle_arrival.png",
106 end,
107 on_place = returnmirror.set_position_active,
108 on_secondary_use = returnmirror.set_position_active,
109 groups = { not_in_creative_inventory = 1 },
112 minetest.register_alias("returnmirror:mirror_inactive", "returnmirror:returnmirror")