Go to file
SX 081a016c38
Optional QoS support (#50)
* Wrap HTTP API with QoS when available
* Optional QoS support
* Add QoS to luacheck read only globals
2021-03-15 07:28:01 +01:00
.github/workflows update luacheck and worlkflow 2021-01-05 16:27:04 +11:00
sounds proper hud / rank congrats 2018-05-08 14:37:05 +02:00
textures refactor level-up dialogue 2020-12-10 14:31:38 +01:00
.luacheckrc Optional QoS support (#50) 2021-03-15 07:28:01 +01:00
LICENSE.txt textures / skeleton 2018-05-08 09:18:34 +02:00
README.md optional discord webhook 2020-01-24 10:43:11 +01:00
areas.lua fix typo 2020-06-02 07:31:50 +02:00
builtin.lua Dig rate limiter (#48) 2021-02-07 11:32:41 +01:00
chatcmd.lua luacheck 2019-10-07 14:54:55 +02:00
entities.lua configurable entity props 2019-10-21 10:17:49 +02:00
functions.lua refactor level-up dialogue 2020-12-10 14:31:38 +01:00
globalstep.lua luacheck 2019-10-07 14:54:55 +02:00
highscore.lua luacheck 2019-10-07 14:54:55 +02:00
hooks.lua add hooks 2019-12-16 12:50:59 +01:00
hud.lua remove [] around rank name 2020-12-10 14:45:19 +01:00
init.lua Optional QoS support (#50) 2021-03-15 07:28:01 +01:00
integration_test.lua travis tests 2019-11-07 11:01:02 +01:00
json.lua luacheck 2019-08-28 15:06:45 +02:00
mobs.lua luacheck 2019-08-28 15:06:45 +02:00
mod.conf Optional QoS support (#50) 2021-03-15 07:28:01 +01:00
privs.lua bugfix 2019-06-12 20:02:59 +02:00
protector.lua remove protector display entity after digging 2021-02-09 20:30:30 +11:00
ranks.lua check if entities enabled before registering rank entity 2020-04-30 08:47:11 +02:00
stats.lua [gs]et_attribute -> meta methods 2020-02-16 22:13:38 +02:00
test.sh test script for areas 2019-11-07 11:31:59 +01:00
utils.lua refactor level-up dialogue 2020-12-10 14:31:38 +01:00
webhook.lua optional discord webhook 2020-01-24 10:43:11 +01:00
xpgate.lua xp gate mode 2019-10-29 12:54:35 +01:00

README.md

Minetest XP mod (xp_redo)

Minetest mod for player experience management (xp) It adds an xp counter per player and ranks according to your xp level. The xp level, your rank and a progress bar to the next rank will show up in your hud. On every rank level up you get a award-like notification. There is also a xpgate block which, when placed under a wooden door will only allow players with a certain xp level to go through.

Installation

  • Unzip the archive, rename the folder to xp_redo and place it in ..minetest/mods/

  • GNU/Linux: If you use a system-wide installation place it in ~/.minetest/mods/.

  • If you only want this to be used in a single world, place the folder in ..worldmods/ in your world directory.

For further information or help, see:
https://wiki.minetest.net/Installing_Mods

Privileges

  • givexp: Manage XP of your users.

Commands

Add or remove (amount with negative sign) XP from a user:

/givexp (username) (amount)

Example:

Give player somedude 200 XP points:

/givexp somedude 200

Remove 100 XP points from player somedude:

/givexp somedude -100

Dependencies

  • default

Optional dependencies

  • doors
  • mobs_redo
  • mobs_animal
  • mobs_monster

Areas integration

There are additional commands available if the areas mod is available:

  • /area_xp_set_min <id> <xp> assign a min-value that a aplayer needs to interact with the area
  • /area_xp_get_min <id> returns the min-value, if any for that area

For this to work the area has to be opened with /area_open <id>

Builtin XP events

Digging

Every node dig gives you 1 xp point

Punching

Every mob punch gives you the amount of damage on the mob in xp

Ranks

See:

Settings

  • xp_redo.discord.webhook_url discord webhook url (optional)
  • xp_redo.discord.texture_baseurl baseurl for the webhook avatar image (optional)

For the webhook, the mod has to be in the secure.http_mods setting:

minetest.conf

secure.http_mods = xp_redo

Lua api

Ranks

xp_redo.register_rank(rankDef)

rankDef = {
	name = "Rank name",
	icon = "myicon.png" -- Should fit withing the background icon (16x32px)
	color = {r=255, g=255, b=255}, -- Player name tag color
	xp = 100 -- xp threshold
}

ranks are held in xp_redo.ranks as a table.

xp_redo.get_rank(xpAmount)

Returns the rankDef for given xp amount

Hooks

xp_redo.register_hook({
  xp_change = function(playername, xp)
    -- new xp value
  end,

  rank_change = function(playername, xp, rank)
    -- new rank
  end,

  stat_change = function(playername, name, value)
    -- see stats.lua
  end
})

XP

xp_redo.get_xp(playername)

Returns the xp level for given playername (always a number).

xp_redo.add_xp(playername, xp)

Adds the amount of xp to given playername (can be negative for xp removal).

License

See LICENSE.txt

Pull requests / bugs

I'm happy for any bug reports or pull requests (code and textures).

TODO / Ideas

  • Scoreboard (block)
  • More doors
  • Door-teleport alternative
  • XP Regions
  • XP entities/items