Skip to content

qWojtpl/AchievementsEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation


AchievementsEngine

Add achievements to your Minecraft server.

Tested minecraft versions:

1.18.2 1.19.3

Installation

Put achievementsengine.jar to your plugins folder and restart the server.

Configuration

%nl% - new line
Use § sign instead of & for colors

achievements.yml

* means anything, eg. kill 10 * (means kill 10 any entity), drop 64 * (means drop 64 of any item)
*% means anything like, eg. break 64 *%ore (means break 64 any block which name contains ore)

Supported events:

- join        // Join event, eg. join 1 server
- kill*       // Kill event, eg. kill 20 zombie named Super Zombie!!
- break       // Break block event, eg. break 64 dirt
- place       // Place block event, eg. place 128 spruce_log
- pickup*     // Pickup (how many items, not how many times) item event, eg. pickup 32 slime_ball
- T_pickup*   // Pickup (how many times, not how many items) item event, eg. T_pickup 5 dirt
- drop*       // Drop (how many items, not how many times) item event, eg. drop 64 stone
- T_drop*     // Drop (how many times, not how many items) item event, eg. T_drop 10 diamond_sword
- craft*      // Craft (how many items, not how many times) item event, eg. craft 1 cake
- T_craft*    // Craft (how many times, now how many items) item event, eg. craft 10 diamond_pickaxe
- enchant*    // Enchant item event, eg. enchant 1 diamond_sword named Magic sword!
- fish        // Fish (using fishing rod) event, eg. fish 64 pufferfish
- catch       // Catch (using fishing rod) entity, eg. catch 10 wolf
- shoot*      // Shoot event, eg. shoot 20 bow
- throw       // Throw event, eg. throw 64 snowball, throw 10 trident
- command     // Send command event (without arguments), eg. command 30 /ae
- chat        // Send chat message event, eg. chat 10 Wiggle-Wiggle
- breed       // Breed animals event, eg. breed 10 cow
- complete    // Complete achievement event, eg. complete 1 <other achievement key>
- sign        // Edit sign event, eg. sign 10 This_is_my_house
- furnace     // Take from furnace event, eg. furnace 15 glass (glass is a product)
- eat         // Eat event, eg. eat 64 apple

* - event that supports names, eg. kill 1 villager named Some Villager

YML Fields:

Every key must be child of "achievements"
Before below fields add parent key

enabled - Mark if achievemnt is enabled
name - Achievement name
description - Achievement description
item - GUI item (default is bedrock)
showProgress - If true shows the progress in GUI and e
announceProgress - If true announce when player will progress in achievement by sending chat message to him
requiredProgress - Is a number. You can specify what sum of progress player need to complete this achievement. Set to 0 to disable.

In this case player needs to mine total 10 of these ores Player can mine 5 iron ores and 5 gold ores to complete this achievement

requiredProgress: 10
events:
- break 10 iron_ore
- break 10 gold_ore

world - Specify in which world player have to be to make progress in this achievement
events - List of events required to complete this achievement (syntax: {EVENT} {HOW_MANY_TIMES} {BLOCK/ENTITY/ITEM/TEXT} [named] [TEXT]), eg.

events:
- break 64 dirt
- fish 10 cod

actions - List of actions (commands) which will be fired when player will complete achievement

{0} - player nickname
{1} - achievement name
actions:
- say {0} completed achievement {1}!
- give {0} minecraft:diamond 1

Example configuration:

achievements:
  '0':
    enabled: true
    name: '§6§lMarksman'
    description: '§aShoot 64 times from bow%nl%§aRewards:%nl%§b12 diamonds'
    item: BOW
    showProgress: false
    announceProgress: false
    events:
    - shoot 64 bow
    actions:
    - give {0} minecraft:diamond 12
  'fisherman':
    enabled: true
    name: '§1§lFisherman'
    description: '§aFish 50 cods%nl%§aRewards:%nl%§232 emeralds'
    item: FISHING_ROD
    showProgress: true
    announceProgress: tre
    events:
    - fish 50 cod
    actions:
    - give {0} minecraft:emerald 32
  'fame':
    enabled: true
    name: '§6§lIm fame!'
    description: '§aComplete all achievements'
    item: GOLD_BLOCK
    showProgress: false
    announceProgress: false
    events:
    - complete 1 0
    - complete 1 fisherman
    actions:
    - give {0} minecraft:gold_block 64
    - 'say {0} Completed all achievements! ;O'

Default configuration:

achievements:
  '0':
    enabled: true
    name: §2§lSample Achievement
    description: §aUse /ae command and get 1 diamond.
    item: BEDROCK
    showProgress: false
    announceProgress: false
    events:
    - command 1 /ae
    actions:
    - give {0} minecraft:diamond 1
messages.yml

YML Fields:


prefix - Commands prefix.
gui-title - GUI title
gui-next - Next GUI page
gui-previous - Previous GUI page
complete-message - Complete achievement chat message. {0} is achievement name, {1} is description, {2} is events, {3} is actions
progress-message - Progress achievement chat message. {0} is achievement name
progress - Progress (text in GUI)
progress-field-prefix: Prefix in GUI progress list
completed - Completed (text in GUI)
not-downloaded - Let the user know that his data is not downloaded yet (mostly for SQL)


event-translation - Syntax: eventName: translation - shows event differently in GUIHandler when showProgress is set to true

Default configuration:

messages:
  prefix: '§2[§6AchievementsEngine§2] '
  gui-title: Achievements (Page {0}/{1})
  gui-next: §f§lNext page
  gui-previous: §f§lPrevious page
  complete-message: "§6§k--------------%nl%%nl%§a§lNew achievement!%nl%§a§lUnlocked:
    {0}%nl%%nl%§6§k--------------"
  progress-message: §aYou made progress in achievement {0}§a!
  progress: "§6§lProgress:"
  progress-field-prefix: §7§l- §b
  completed: §aCOMPLETED!
  not-downloaded: '§cWhoaa! Not too fast? Your data is not downloaded yet, please try again later!'

event-translation:
  any: "Any item/entity/block"
  named: "named"
  join: "Join"
  kill: "Kill"
  break: "Break"
  place: "Place"
  pickup: "Pickup"
  T_pickup: "Pickup (times)"
  drop: "Drop"
  T_drop: "Drop (times)"
  craft: "Craft"
  T_craft: "Craft (times)"
  enchant: "Enchant"
  fish: "Fish"
  catch: "Catch"
  shoot: "Shoot"
  throw: "Throw"
  command: "Command"
  chat: "Chat"
  breed: "Breed"
  complete: "Complete"
  sign: "Sign"
  furnace: "Furnace"
  eat: "Eat"
config.yml

useYAML - When set to true plugin will be using YAML to save data
useSQL - When set to true plugin will be using SQL to save data
saveInterval - Interval between data saves (in seconds)
logSave - When set to true every save will send message to console
keepPlayersInMemory - When set to true, all player's states (completed achievements, progress) etc. is saved in memory. When set to false it destroys when player left the server
disableOnException - If set to true then when SQL exception appear the plugin will be disabled

Default configuration:

config:
  useYAML: true
  useSQL: false
  saveInterval: 300 # 5 minutes
  logSave: true
  keepPlayersInMemory: false
  disableOnException: true

sql:
  host: ''
  user: ''
  password: ''
  database: ''
  port: 3306

Commands & Permissions

/ae - Show achievements list, permission to receive any achievement ae.use
/ae help - Shows help page, permission that let using below commands (and /ae help) ae.manage
/ae reload - Reload config ae.reload
/ae achievements - Print all achievements and requirements to complete ae.achievements
/ae complete <nick> <achievement> - Complete achievement for some player ae.complete
/ae remove <nick> <achievement> - Remove player's completed achievement ae.remove
/ae reset <nick> <achievement> - Reset player's achievement progress ae.reset
/ae transfer <from> <to> - Transfer player's completed achievements and progress to other player ae.transfer