Auto-teleport if player has only 1 home
If the player only has one home, allow teleporting to that home even if they do not specify it by name.
This commit is contained in:
parent
65bfd2e3f1
commit
a8b2822e65
6
API.md
6
API.md
@ -20,6 +20,12 @@ The MultiHome mod provides a simplistic API allowing creation, deletion, access,
|
||||
* `player`: PlayerRef
|
||||
* `name`: Home name
|
||||
|
||||
`multihome.get_default(player)`
|
||||
|
||||
* Returns a "default" home if the player has only one home set
|
||||
* Allows the player to be automatically teleported without specifying the home name
|
||||
* `player`: PlayerRef
|
||||
|
||||
`multihome.list(player)`
|
||||
|
||||
* List a player's homes in format suitable for chat
|
||||
|
@ -15,6 +15,8 @@ MultiHome provides exactly two compatibility modes allowing the mod to work with
|
||||
|
||||
The first two compatibility modes use the same chatcommand (`/multihome`) as documented below, however, `deprecate` overrides chatcommands from sethome causing them to display a message stating that they are deprecated and `/multihome` should be used instead. __Note:__ If a compatibility mode is set and the sethome mod is not found, compatibility is automatically set to `none`.
|
||||
|
||||
When attempting to vist a home using any compatibility mode, if the player does not specify a home to teleport to and they only have one home, the player will be automatically teleported to that home.
|
||||
|
||||
#### Compatibility: None/Deprecate
|
||||
Both the `none` and `deprecate` compatibility modes use the same chatcommand, however `deprecate` adds deprecation messages as mentioned above. The best way to learn how to use this `/multihome` chatcommand is to use the in-game help, `/help multihome`, however, an overview of the usage can be found below.
|
||||
|
||||
|
36
init.lua
36
init.lua
@ -98,6 +98,25 @@ function multihome.get(player, name)
|
||||
return homes[name]
|
||||
end
|
||||
|
||||
-- [function] Get player's default home
|
||||
function multihome.get_default(player)
|
||||
if type(player) == "string" then
|
||||
player = minetest.get_player_by_name(player)
|
||||
end
|
||||
|
||||
local default
|
||||
local count = 0
|
||||
local homes = minetest.deserialize(player:get_attribute("multihome"))
|
||||
for home, pos in pairs(homes) do
|
||||
count = count + 1
|
||||
default = home
|
||||
end
|
||||
|
||||
if count == 1 then
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
-- [function] List homes
|
||||
function multihome.list(player)
|
||||
if type(player) == "string" then
|
||||
@ -182,8 +201,16 @@ if compat == "none" or compat == "deprecate" then
|
||||
return multihome.set(name, params[2])
|
||||
elseif #params == 2 and params[1] == "del" then
|
||||
return multihome.remove(name, params[2])
|
||||
elseif #params == 2 and params[1] == "go" then
|
||||
return multihome.go(name, params[2])
|
||||
elseif params[1] == "go" then
|
||||
local home = params[2]
|
||||
if not home then
|
||||
home = multihome.get_default(name)
|
||||
if not home then
|
||||
return false, "Invalid parameters (see /help multihome)"
|
||||
end
|
||||
end
|
||||
|
||||
return multihome.go(name, home)
|
||||
elseif params[1] == "list" then
|
||||
return multihome.list(name)
|
||||
else
|
||||
@ -221,6 +248,11 @@ if compat == "override" then
|
||||
if param and param ~= "" then
|
||||
return multihome.go(name, param)
|
||||
else
|
||||
local home = multihome.get_default(name)
|
||||
if home then
|
||||
return multihome.go(name, home)
|
||||
end
|
||||
|
||||
return false, "Invalid parameters (see /help home)"
|
||||
end
|
||||
end,
|
||||
|
Loading…
x
Reference in New Issue
Block a user