Configurations - Atherys/AtherysRPG GitHub Wiki

The AtherysRPG plugin provides several configurations which can be used to tweak the experience for players to no end. Here you will find annotated example configurations, with comments explaining the purpose of each configuration node:

config.conf

This is the main AtherysRPG configuration file, and is responsible for tweaking the overall experience.

# The maximum amount of any one attribute a player can have as base
attribute-max=99.0

# The minimum amount of any one attribute a player can have as base
attribute-min=0.0

# How much experience players are allowed to spend on attributes
attribute-spending-limit=100000.0

# How much it costs to add a single point of an attribute
attribute-upgrade-cost=100.0

# How much experience players are allowed to spend on skills
skill-spending-limit=100000.0

# The maximum amount of unspent experience a player can have stored
experience-max=100000.0

# The minimum amount of unspent experience a player can have stored
experience-min=0.0

# The maximum amount of experience a player can spend overall.
experience-spending-limit=100000.0

# How much experience a player starts with
experience-start=0.0

# Definitions for damage type calculations. Refer to Damage article for more information
damage-production-calculations {
    "atherys:ballistic"="CLAMP(SOURCE_DEX, 1.0, 15.0)"
    "atherys:blunt"="CLAMP(SOURCE_CON, 1.0, 15.0)"
    "atherys:pierce"="CLAMP(SOURCE_DEX, 1.0, 15.0)"
    "atherys:slash"="CLAMP(SOURCE_STR, 1.0, 15.0)"
    "atherys:stab"="CLAMP(SOURCE_STR, 1.0, 15.0)"
    "atherys:unarmed"="CLAMP(SOURCE_INT, 1.0, 15.0)"
}

# Which damage type to deal if no damage type could be linked to the item held by the player
default-melee-damage-type="atherys:unarmed"

# Which damage type to deal if no damage type could be linked to the item held by the player ( for ranged damage, when the damage comes from projectiles like arrows )
default-ranged-damage-type="atherys:pierce"

# Whether to display the root skill when viewing the skill graph. Refer to Skills article for more information
display-root-skill=true

# How much damage to deal to the player when the source of the damage is envrionmental. Configured by damage type, refer to https://jd.spongepowered.org/7.3.0/org/spongepowered/api/event/cause/entity/damage/DamageTypes.html for possible values
environmental-damage-calculations {
    "minecraft:fall"="(20*(DISTANCE-3))*(1-SOURCE_DEX*0.004)"
    "minecraft:drown"="50"
    "minecraft:suffocate"="25"
    "minecraft:fire"="25*(100/(100+SOURCE_MAGICRES))"
    "minecraft:magma"="15*(100/(100+SOURCE_MAGICRES))"
    "minecraft:hunger"="35"
}

# Experession to calculate the maximum health of a player
health-limit-calculation="100.0 + SOURCE_CON * 1.5"

# Expression to calculate how much health a player regenerates per health regen tick
health-regen-calculation="1.33 * SOURCE_CON"

# How often to trigger the health regen tick. 1 tick = 20ms
health-regen-duration-in-ticks=1

# Map for assigning different damage-production-calculations to item types. If the player is holding an item of that type in their hand at the time of dealing the damage, the corresponding damage calculation will be used to calculate the final damage amount.
item-damage-types {
    "minecraft:air"="atherys:unarmed"
    "minecraft:diamond_axe"="atherys:slash"
    "minecraft:diamond_hoe"="atherys:blunt"
    "minecraft:diamond_pickaxe"="atherys:stab"
    "minecraft:diamond_shovel"="atherys:blunt"
    "minecraft:diamond_sword"="atherys:stab"
    "minecraft:golden_axe"="atherys:slash"
    "minecraft:golden_hoe"="atherys:blunt"
    "minecraft:golden_pickaxe"="atherys:stab"
    "minecraft:golden_shovel"="atherys:blunt"
    "minecraft:golden_sword"="atherys:stab"
    "minecraft:iron_axe"="atherys:slash"
    "minecraft:iron_hoe"="atherys:blunt"
    "minecraft:iron_pickaxe"="atherys:stab"
    "minecraft:iron_shovel"="atherys:blunt"
    "minecraft:iron_sword"="atherys:stab"
    "minecraft:stone_axe"="atherys:slash"
    "minecraft:stone_hoe"="atherys:blunt"
    "minecraft:stone_pickaxe"="atherys:blunt"
    "minecraft:stone_shovel"="atherys:blunt"
    "minecraft:stone_sword"="atherys:slash"
    "minecraft:wooden_axe"="atherys:blunt"
    "minecraft:wooden_hoe"="atherys:blunt"
    "minecraft:wooden_pickaxe"="atherys:blunt"
    "minecraft:wooden_shovel"="atherys:blunt"
    "minecraft:wooden_sword"="atherys:blunt"
}

# Map for assigning different damage-production-calculations to projectile types. For possible values, consult with https://jd.spongepowered.org/7.3.0/org/spongepowered/api/entity/EntityTypes.html
projectile-damage-types {
    "minecraft:arrow"="atherys:pierce"
}

# Expression to calculate how much magical damage will be mitigated based on the receiving entity's attributes. Magical damage is only dealt by skills
magical-damage-mitigation-calculation="1.33 * SOURCE_INT"

# Which items, when equipped in the player's main hand, will contribute to that player's attribute totals
mainhand-item-types=[
    "minecraft:iron_hoe",
    "minecraft:iron_sword",
    "minecraft:stone_hoe",
    "minecraft:bow"
]

# If using AtherysParties integration, this will limit the distance at which players in the same party will be awarded experience for a kill
max-reward-distance=30.0

# Which items, when equipped in the player's off-hand, will contribute to that player's attribute totals
offhand-item-types=[
    "minecraft:shield"
    "minecraft:shears"
]

# Expression to calculate how much magical damage will be mitigated based on the receiving entity's attributes.
physical-damage-mitigation-calculation="1.33 * SOURCE_CON"

# If keepInventory gamerule is active, this can be used to override it, in the case of a player-vs-player kill
players-keep-inventory-on-pvp=false

# Expression for calculating maximum resource amount a player can have. See Skills article for more information
resource-limit-calculation="100.0 + SOURCE_INT * 1.5"

# Expression for calculating how much resource a player will regenerate per tick. Tick duration is configured separately in the AtherysSkills configuration.
resource-regen-calculation="1.33 * SOURCE_INT"

# When casting a skill, this radius defined how far away another player must be before they stop seeing the skill casting messages
skill-message-distance=25.0

attributes.conf

This configuration represents the attributes that players will use.

attribute-types=[
    {
        # Color of the attribute. Consult with https://jd.spongepowered.org/7.3.0/org/spongepowered/api/text/format/TextColors.html for possible values
        color=RED

        # Default value for this attribute, if not other value could be found
        default-value=1.0

        # Description of this attribute
        description=""

        # Whether this attribute is hidden. If so, it will not be upgradable, as the player will be unable to see the buttons for upgrading it.
        hidden=false

        # The id of this attribute. All attribute ids must be unique, and it is recommended they have a prefix such as "atherys:" in this case
        id="atherys:strength"

        # The name of the attribute
        name=Strength

        # The short name of this attribute. This is used in Expressions ( refer to article )
        short-name=str

        # Whether the player can purchase additional points for themselves in this attribute.
        upgradable=true

        reset-on-login=

        # How the attribute will get displayed on item templates. By default, attributes show up as "name: amount", where name is colored.
        display="+%value% Strength"
    },
    {
        color=YELLOW
        default-value=1.0
        description=""
        hidden=false
        id="atherys:constitution"
        name=Constitution
        short-name=con
        upgradable=true
    }
]

monsters.conf

This configuration defines properties for entities with the given names. Note that any entity in-game which is named per this configuration will have these properties.

mobs {
    # The name of the entity
    "Initiate" {

        # The health limit expression. Same as the health-limit-expression in config.conf, but used for this mob specifically
        health-limit-expression="120.0"

        # Expression for how the damage dealt by this mob is calculated. Refer to Expressions article
        damage-expression="25.0*(100/(100+TARGET_MAGICRES))"

        # The attributes this mob will have by default. Any items with attributes on them will count towards the attributes of the entity, added on top of these values
        default-attributes {
            "atherys:base_damage"=0.0,
            "atherys:physical_resistance"=10.0,
            "atherys:magical_resistance"=10.0,
        }
        
        # Loot table for this mob. The chance for each item in this list to drop is evaluated separately from the others
        loot=[
            {
                # Percentage drop chance value ranging from 0% ( 0.0 ) to 100% ( 1.0 )
                drop-rate = 0.05

                # This node drop an item
                item = {
                    # The item group from which to select a random item to drop. See the Items article and the items.conf for more information
                    item-group = "tier-1"
                    
                    # Amount of this item to drop. If this node drops a group of items, the randomly selected item will be dropped this many times.
                    quantity = 1
                }
            },
            {
                drop-rate = 0.01
                item = {
                    # it is also possible to provide a list of item ids, as defined in the items.conf file. A random one of these will be selected for dropping.
                    item-id = ["osage-staff-1", "osage-staff-2"]
                    quantity = 1
                }
            },
            {
                drop-rate = 1.0
                
                # this node drops experience, defined with a minimum and maximum amount. A random value between these will be awarded.
                experience = {
                    minimum = 5
                    maximum = 7
                }
            },
            {
                drop-rate = 1.0
                # this node drops currency, which only works if there is an Economy plugin present.
                # The currency awarded is the id of the currency defined in the economy plugin
                # a random amount of this currency between the defined minimum and maximum will be awarded
                currency = {
                    currency = "atherys:sickles"
                    minimum = 2
                    maximum = 4
                }
            }
        ]
        
        # if this mob has the possibility to drop multiple item nodes, this will limit the amount. However, if there is a single item node with a quantity higher than 1, that will still drop that quantity of items.
        item-drop-limit = 1
    }
}

items.conf

This configuration defines the items available for loot tables ( see monsters.conf ), and general spawning through the /spawnitem command. There may be multiple item configurations, and all of them must be placed in config/atherysrpg/items/. The file names do not matter.

items=[
      {
         # the id of the item. Each item must have a unique id
         "id": "osage-staff-1",

         # name of the item, which can contain color and formatting codes
         "name": "&6Osage Staff",

         # type of the item
         "type": "minecraft:iron_hoe",

         # The item lore, which can contain color and formatting codes. Defined as a list of strings, each new string is a new line.
         "lore": [
            "&7Staff (Main Hand)",
            "",
            "&c▶ Physical Damage&7: 10.5",
			"&b3.0 &7Attack Speed",
            "",
            "&a+5 &7Intelligence",
            "&a+1 &7Wisdom",
            "",
            "&6Relic Item"
         ],
         
         # Attributes this item contains. Unless described in the item lore, these will remain hidden. The plugin does not show them explicitly to the player in any other way.
         "attributes": {
            "atherys:intelligence": 5,
            "atherys:wisdom": 1,
            "atherys:base_damage": 10.5
         },

         # Whether to hide the item flags
         "hide-flags": true,

         # Enchantments of this item
         "enchantments": {
            "unbreaking": 25
         },

         # The item's group
         "group": "tier-4",

         # The item's rarity; this has no functional purpose except for use in templates
         "rarity": "uncommon",

         # The item's category; this has no functional purpose except for use in templates
         "category": "staff",

         # The item's description; this has no functional purpose except for use in templates
         "description": "A powerful, finely crafted staff.",

         # The item template to use to generate the lore for this item--this will replace the "lore" field, so it is pointless to have both
         "template": "weapon"
      }
]

item-templates.conf

# Map of item templates: available placeholders are %attribute-id-goes-here%, %attributes%, %category%, %rarity%, and %description%
item-templates {
  weapon=[
    "%atherys:base_damage%",
    "",
    "%attributes%"
    "",
    "%category%"
  ]
}

categories {
  staff="&cStaff"
}

rarities {
  uncommon="&aUncommon"
}

skill-graph.json

The skill graph configuration describes both the properties of skills as well as how skills can be unlocked by players. It is highly recommended to use the online editor to create this configuration.

  # The list of skill nodes
  "skill-nodes": {
    "e1de3281-bb3c-439b-b2cf-10247c6f5238": {
      # id of the skill for this node
      "skill-id": "sprint",

      # the mana cost for this skill
      "cost": "30",

      # the cooldown in milliseconds for this skill
      "cooldown": "10000",

      # additional properties for this skill
      "properties": {}
    },
    "d3192659-2e5e-4e7e-8f84-2e07c7017236": {
      "skill-id": "fireball",
      "cost": "20",
      "cooldown": "4000",
      "properties": {}
    }
  },
  # The list of skill links, the path of the tree
  "skill-links": [
    {
      # The child node for this link
      "child-node": "d3192659-2e5e-4e7e-8f84-2e07c7017236",

      # The parent node for this link
      "parent-node": "root-skill",

      # The type of link. Unidirectional means you can only go parent -> child, while bidirectional means you can go parent <-> child.
      "type": "UNIDIRECTIONAL"
    },
    {
      "child-node": "e1de3281-bb3c-439b-b2cf-10247c6f5238",
      "parent-node": "root-skill",
      "type": "UNIDIRECTIONAL"
    },
    {
      "child-node": "d3192659-2e5e-4e7e-8f84-2e07c7017236",
      "parent-node": "e1de3281-bb3c-439b-b2cf-10247c6f5238",
      "type": "BIDIRECTIONAL"
    }
  ],

  # A root skill is required for the graph
  "root-skill": {
    "skill-id": "root",
    "cost": "0",
    "cooldown": "0",
    "properties": {}
  },

  # Skills that are mutually exclusive. If "fireball" and "sprint" are listed, they cannot both be unlocked by a player.
  "unique-skills": []
}

archetypes.conf

The archetypes.conf configuration can be used to label groups of skills, which is displayed to the player.

# The default archetype name if no others match
default-archetype="None"

archetypes=[
  {
    # The name that gets displayed if they have this set of skills
    display-name="Initiate"
   
    # The list of skills corresponding to this archetype
    skills=[
      "fireball"
    ]
  },
  {
    display-name="Acolyte"
    skills=[
      "invocation"
    ]
  }
]