Classes

One of the main features of MMOCore is the class system. Setting up classes and giving them detailed and individualized statistics per class is one of the greatest things you can do. Each class can have its own stats, skills, leveling curves, etc.

Our class system aims to provide a completely user created class system that looks good, and works great. We are trying to fill in the holes where other plugins fell short.

Choosing a class for a player is as simple as having them run (or running for them) /class, and they can view the customized class selection GUI from there. There is also a command to force a player into a class.

Players will always belong to a default class that you setup, so even if you don't plan on using MMOCores class system, you are able to utilize every feature of this plugin while the class system remains hidden.

Class Points

Choosing a class requires a “class point” and these can be given via admin command however you want. This is our way of letting the admins decide how often or when players should get to choose or change classes.

Classes tie into plugins like MMOItems in order to provide class restrictions on items and even class bonuses. MMOItems also has these restrictions and benefits built into the Crafting Stations that the plugin offers. A smithing profession can gain experience from using custom MMOItems smithing stations.

Class Triggers

Class triggers are one of the most versatile part of classes. These can be used to perform very specific actions, and the list will always continue to grow. They can be used to give leveling rewards on certain levels, or even give a special mana to certain classes when they deal damage.

Currently the available events are:

  level-up
  level-up-(x)
  level-up-(profession)
  level-up-(profession)-(x)
  melee-damage
  physical-damage
  magic-damage
  class-chosen
  

In those examples, the placeholders (x) stand for you being able to put in a specific level that the actions happen.

All of those listed triggers go under the triggers: header in your class files. The full list of actions will be available on the actions page located elsewhere in the manual. These triggers listed above will cause the actions to occur. A few of the possible ones are command, item, mmoitem, experience, and money.

Class Behavior

Within the classes folder on your server, each YML file stands for a specific class. You can only have one class per YML file and you can not sub folder them currently. We provide 7 class files by default for you to learn with, mess with, or use. 5 of the classes are normal classes, 1 is a default class, and 1 is a subclass example.

Something to note is that player data is saved per class. If you level up a mage to level 5, and decide to switch to warrior, you will be reset to a level 1 warrior where none of your MMOCore information saves. If you switch back to the mage, you will get back your level 5 profile with all of that data. This can not affect inventories or location in the world. But you can use the class-chosen triggers to do as you wish.

Every class must have:

      display:
      name: 'Human'
  options:
      default: true
      display: false
      

configured in order for it to work. You only want ONE of your classes to have default set to true. Your default class should also have display set to false. All of your main classes should have display set to true in order to show up in the /class menu. Your subclasses should have display set to false, as they will not show up until the requirements are met.

Example

  display:
      name: 'Mage'
      lore:
      - 'The Mage has mastered the power of the'
      - 'Arcanes, taking down any enemy on his path'
      - 'using powerful magic & ranged abilities.'
      attribute-lore:
      - '&a+ &7Mana Regeneration'
      - '&a+ &7Health Regeneration'
      - '&a+ &7Max Mana'
      - '&c- &7Max Health'
      - ''
      - '&8&lStrength'
      - '&7  Attack Damage: &c1 &7(+&c0&7)'
      - '&7  Attack Speed: &c4 &7(+&c0&7)'
      - '&7  Max Health: &c18 &7(+&c0&7)'
      - ''
      - '&8&lDexterity'
      - '&7  Knockback Resistance: &a0% &7(+&a0%&7)'
      - '&7  Movement Speed: &a20 &7(+&a0&7)'
      - '&7  Speed Malus Reduction: &a0% &7(+&a0%&7)'
      - ''
      - '&8&lIntellect'
      - '&7  Max Mana: &927 &7(+&91.2&7)'
      - '&7  Health Regen: &90.13 &7(+&90&7)'
      - '&7  Mana Regen: &90.2 &7(+&90.04&7)'
      item: BLAZE_POWDER
  # Players cannot go further than Lvl 100
  max-level: 100
  triggers:
      level-up:
      - 'command{format="mmocore admin skill-points give %player% 1"}'
  mana:
      char: ■
      color: BLUE
      name: 'Mana'
  cast-particle:
      particle: SPELL_INSTANT
  options:
      off-combat-health-regen: true
  attributes:
      max-health:
          base: 18
          per-level: 0
      max-mana:
          base: 27
          per-level: 1.2
      mana-regeneration:
          base: .2
          per-level: .04
      health-regeneration:
          base: 0.13
          per-level: 0
  subclasses:
      ARCANE_MAGE: 10
  skills:
      FIRE_STORM:
          level: 1
          max-level: 30 
      # Specific skill modifiers based on class.
      # Arcane mage's fire storm may deal more damage
      # than an apprentice mage's fire storm.
      damage:
          base: 5.0
          per-level: 3.0
      ignite:
          base: 2.0
          per-level: 0.1
      mana:
          base: 15.0
          per-level: 2.0
      cooldown:
          base: 5.0
          per-level: -0.1
          max: 5.0
          min: 1.0
  POWER_MARK:
      level: 3
      max-level: 30
  FIREBALL:
      level: 5
      max-level: 30
  MINOR_HEALINGS:
      level: 6
      max-level: 30
  ICE_SPIKES:
      level: 8
  AMBERS:
      level: 9
      max-level: 30
  WEAKEN:
      level: 10
      max-level: 30
  WARP:
      level: 13
      max-level: 30
  GREATER_HEALINGS:
      level: 15
      max-level: 30
  # Experience sources for main class experience.
  main-exp-sources:
  - 'killmob{type=ZOMBIE;amount=1-3}'
  - 'killmob{type=ENDERMAN;amount=6-9}'

To explain some of the options, display and lore are fairly self explanatory. This is where you set the display name of the class, and the lore that is shown in the /class menu.

The item: option is where you select what item you want to represent the class in /class selection.

Under that you can set the max level the class can achieve.

Next is your triggers section. This is where the previously talked about triggers go.

Next you have several cosmetic options like mana and casting particle. Warrior.yml has a good example of how you can setup a special type of mana that DEGENERATES and only regenerates inside of combat. We called this one “rage” as an example. It is constantly degenerating unless you are in combat, in which case we use weapon-damage triggers to give mana.

Finally at the bottom of the file you can edit the classes specific attributes and skills. Any attributes not given here will make that class inherit the stats.yml for it. If you leave this blank, that is fine and it will use stats.yml. Any attributes you put here will override stats.yml. The last thing you can do is set which skills that class is supposed to have. As well as modify at what level they get the skill, and modify specific skill modifiers based on the class. Any specific skill modifiers left blank will just inherit that global skills attributes.

classes.txt · Last modified: 2020/06/30 21:13 (external edit)