DUXPLIMA Documentation

Objectives

Every task type a quest can ask for, and what each one counts.

A task names a type. /uxmquests types prints every type this server feeds. A task filters on the facts its type reports: an option whose name matches a fact narrows the task, and a fact the task says nothing about counts every value. Options are written as described in quests.

Contents: Types · Trigger · Checked types · Sampled types · Anti-glitch

Types

GroupTypes and the facts each can filter on
Blocksblock-break, block-place, block-fertilize, block-shear, block-harvest, block-look: block, world. block-change: block, to. block-drop: block, item, world. block-loot, block-compost: item, world. block-interact: block, item, world.
Itemscraft, smelt, fish, item-enchant, item-brew, item-consume, item-pickup, item-drop, item-break, item-damage, item-mend, item-barter: item, world. item-launch: item, projectile, world. item-trade: item, mob, world.
Entitiesmob-kill: mob, world, spawn-reason, name, hostile, weapon, projectile. entity-breed, entity-tame, entity-shear, entity-fish, entity-cure, entity-hatch: mob, world. entity-milk, entity-bucket: mob, item, world. entity-damage-deal: mob, world, cause, counted in half hearts. entity-damage-take: cause, world, counted in half hearts. entity-totem: world.
The playerplayer-death: cause, world. player-xp, player-level, player-chat, player-walk, player-swim, player-jump, player-playtime: world. player-ride: vehicle, world. player-command: command, world. player-permission: permission.
Asked, not toldget, location, placeholder, player-permission, see checked types.
Othertrigger. shop-buy and shop-sell (item, shop) count only while uxmShop is on the server.

player-walk and player-swim count blocks, player-playtime counts seconds.

A hunt for a hostile zombie that spawned naturally:

{ id = hunt, type = mob-kill, mob = ZOMBIE, spawn-reason = [NATURAL], hostile = "true", amount = 10 }

Trigger

trigger advances by command and by nothing else:

/uxmquests trigger <player> <trigger> <amount>

Any plugin that can run a command, such as a vote listener, a crate plugin or a command block, can feed a quest with no integration on either side.

{ id = vote, type = trigger, name = daily-vote, amount = 1 }

Checked types

get, location, player-permission and placeholder describe what is the case, not what happens. They are asked when a board is looked at and again on the sampling schedule.

{ id = stock, type = get,               item = DIAMOND, amount = 64 }
{ id = stand, type = location,          world = world, x = 100, y = 64, z = 100, radius = 10, amount = 1 }
{ id = away,  type = location,          world = world, x = 0, y = 64, z = 0, radius = 200, away = true, amount = 1 }
{ id = fly,   type = player-permission, permission = "essentials.fly", amount = 1 }
{ id = rich,  type = placeholder,       placeholder = "%vault_eco_balance%", operator = above, value = "1000", amount = 1 }

operator is equals, contains, starts-with, above or below; the default is equals. A checked task never goes backwards: a player who held sixty-four diamonds and then spent them has still held them.

Sampled types

Walking, swimming, jumping, looking at a block, standing somewhere and playing for a time have no cheap event. They are looked at on a schedule, so a jump that starts and lands between two samples is not counted.

objectives {
  sampling                   = true   # false: no task runs per player
  sample-interval-ticks      = 10
  placeholder-interval-ticks = 40
  look-distance              = 5
}

A server that writes none of these types sets sampling = false.

Anti-glitch

Three separate levels stop a player finishing a mining quest by placing a block and breaking it again.

LevelWhereDefaultWhat it does
Onereverse = true on a taskper taskTakes a count back when an event undoes what the task counted, such as a block put back after it was broken.
Twoanti-glitch.sessiononRemembers every block a player placed and counts nothing for breaking it. Memory only, so it does not survive a restart. anti-glitch.remembered-blocks caps it, oldest first.
Threeanti-glitch.coreprotectoffAsks CoreProtect about a block the memory does not know, off the thread that owns the block. anti-glitch.history-days is how far back; an older block reads as natural.

Level three is off because it names a plugin the server may not run. Turned on without CoreProtect, the console says so once and the other levels keep working.

anti-glitch.bypass-permission (default uxmquests.bypass) turns every level off for the player who holds it, and the spawn-reason filter with it, so staff can test a quest. Leave it empty to give nobody a bypass.