### Full Skill Tree Node Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Skill-Trees A comprehensive example showcasing a complete skill tree node configuration, including ID, display name, max level, children limits, experience table, size, and detailed lore for different states. ```yaml #id of the node archery3: #display name of the node name: 'Archery3' #The node can be level 0,1 or 2. max-level: 2 max-children: 2 experience-table: test-exp-table #Explained later in the wiki. size: 1 #The lore corresponding to each level/state of the node #It will replace the placeholder {description} in language/gui/skilltree.yml. lores: unlocked: 1 : - "&eYou are level 1" 2: - "&eYou are level 2" locked: - "&4This skill is locked" unlockable: - "&aThis skill is unlockable" fully-locked: - '&cThis skill is fully locked' ``` -------------------------------- ### MMOCore Drop Table Configuration Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Drop-Tables/diff Illustrates a basic configuration for a drop table where each item has a weight of 1. This setup is used to demonstrate how capacity affects the number of items that can be dropped. ```config weighted-drop-table: | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... ``` -------------------------------- ### Skill Tree Basic Configuration Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Skill-Trees Demonstrates the fundamental structure for defining a custom skill tree, including its ID, name, type, and GUI item representation. ```yaml id: customcombat name: CustomCombat #Will be explained later type: custom #The item representing the skill tree in the GUI. item: GOLDEN_AXE lore: - '&6This autoskill tree is used for combat abilities!' ``` -------------------------------- ### MMOCore Configuration Line Syntax Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API/diff Example of a configuration line syntax used by MMOCore for defining item properties, similar to the MythicMobs API. It specifies item type, quantity, and range. ```Config vanilla{type=DIAMOND} 0.5 1-3 ``` -------------------------------- ### Skill Tree Node Coordinates Configuration Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Skill-Trees Provides an example of setting the X and Y coordinates for a skill tree node, which determines its visual placement in the GUI. ```yaml #Example coordinates: x: 0 y: 0 ``` -------------------------------- ### MMOLoader Example: Custom Triggers, Drop Items, Objectives Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API This Java code demonstrates implementing a custom MMOLoader by overriding methods to load specific triggers, drop items, and objectives. It uses MMOLineConfig for parsing configuration and returns specific implementations or null if the key doesn't match. This allows MMOCore to recognize custom game logic elements. ```Java @Override public Trigger loadTrigger(MMOLineConfig config) { if (config.getKey().equals("message")) return new MessageTrigger(config); if (config.getKey().equals("sound")) return new SoundTrigger(config); if (config.getKey().equals("command")) return new CommandTrigger(config); if (config.getKey().equals("item")) return new ItemTrigger(config); if (config.getKey().equals("exp")) return new ExperienceTrigger(config); return null; } @Override public DropItem loadDropItem(MMOLineConfig config, DropTableManager tables) { if (config.getKey().equals("droptable")) return new DropTableDropItem(tables, config); if (config.getKey().equals("vanilla")) return new VanillaDropItem(config); if (config.getKey().equals("note")) return new NoteDropItem(config); if (config.getKey().equals("gold")) return new GoldDropItem(config); return null; } @Override public Objective loadObjective(MMOLineConfig config, ConfigurationSection section) { if (config.getKey().equals("goto")) return new GoToObjective(section, config); if (config.getKey().equals("mine")) return new MineBlockObjective(section, config); if (config.getKey().equals("kill")) return new KillMobObjective(section, config); if (config.getKey().equals("getitem")) return new GetItemObjective(section, config); if (config.getKey().equals("clickon")) return new ClickonObjective(section, config); return null; } @Override public Condition loadCondition(MMOLineConfig config) { // TODO Auto-generated method stub return null; } ``` -------------------------------- ### Drop Table Configuration Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Mining%20and%20Block%20Regen Specifies the drop table to be used when a defined block is broken. The `drop-table` section lists items with their quantities and drop chances. It supports vanilla items, MMOItems, or references to other drop tables defined elsewhere. ```yaml drop-table: items: - 'vanilla{type=DIAMOND} 1 1-3' - 'mmoitem{type=material;id=RARE_DIAMOND} .1 1-3' - 'droptable{id=other-drop-table} .1' ``` -------------------------------- ### Advanced MMOCore Item Configuration with Block Regen Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Mining%20and%20Block%20Regen An example demonstrating a full item configuration, including material, conditions, drop tables, options, block regeneration settings, and triggers. It shows how to define custom items like 'VOID_SHROOM' with specific mining behaviors. ```yaml VOID_SHROOM: material: vanilla{type=BROWN_MUSHROOM} conditions: - 'region{name=lapis,redstone}' drop-table: items: - 'mmoitem{type=QUEST;id=VOID_SHROOM} 1 1' options: vanilla-drops: false regen: time: 150 temp-block: vanilla{type=BLACK_CONCRETE} triggers: - 'exp{profession=mining;amount=4}' ``` -------------------------------- ### Default Mage Setup Configuration Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Player-Resources/diff Example YAML configuration for a default mage setup, including enabling off-combat health regeneration. This configuration affects how player health regenerates outside of combat. ```yaml options: off-combat-health-regen: true ``` -------------------------------- ### MMOCore Block Age Option Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Block-Types Illustrates the use of the 'age' option for vanilla block types to manage crop growth states. This example shows how to configure a block to respawn as a fully grown wheat crop. ```yaml vanilla{type=WHEAT,age=7} ``` -------------------------------- ### MMOCore System Placeholders Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Placeholders/diff Documentation for system placeholders used within MMOCore. These placeholders are used to dynamically retrieve specific game or system information, such as guild names or tags. They are typically integrated into game messages, configurations, or scripts. ```APIDOC %mmocore_guild_name% | Returns the guild name or '' if none ``` ```APIDOC %mmocore_guild_tag% | Returns the guild tag or '' if none ``` -------------------------------- ### Mining Profession Configuration Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Mining%20and%20Block%20Regen An example configuration for the `on-mine` section in a profession file (e.g., `professions/mining.yml`). It defines the block to be mined (`material`), the items dropped (`drop-table`), triggers for events like gaining experience (`triggers`), options like disabling vanilla drops (`options`), and block regeneration settings (`regen`). ```yaml on-mine: diamond: material: vanilla{type=DIAMOND_ORE} drop-table: items: - 'vanilla{type=DIAMOND} 1 1-3' triggers: - 'exp{profession=mining;amount=20}' options: vanilla-drops: false regen: time: 2000 temp-block: vanilla{type=STONE} ``` -------------------------------- ### Java: Load Objective by Config Key Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API/diff This Java code snippet demonstrates a method for loading specific objective types (GoTo, MineBlock, KillMob) based on a configuration key. It utilizes MMOLineConfig and ConfigurationSection to instantiate the appropriate objective object, handling different objective types through conditional logic. ```java @Override public Objective loadObjective(MMOLineConfig config, ConfigurationSection section) { if (config.getKey().equals("goto")) return new GoToObjective(section, config); if (config.getKey().equals("mine")) return new MineBlockObjective(section, config); if (config.getKey().equals("kill")) return new KillMobObjective(section, config); } ``` -------------------------------- ### Instantiate DropTableDropItem Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API/diff Creates a new instance of `DropTableDropItem`, which is used for handling item drops from tables. It requires tables and configuration parameters. ```Java return new DropTableDropItem(tables, config); ``` -------------------------------- ### Default Stat Values Configuration Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Default-Stat-Values/diff This snippet illustrates default stat values, likely from a YAML configuration file. It stresses the case-sensitive nature of these definitions and provides examples for stats like ATTACK_DAMAGE. ```yaml # Caution, these are very case sensitive! default: ATTACK_DAMAGE: base: 1 ... default: # ... base: 20 ``` -------------------------------- ### Load ClickonObjective from Config Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API/diff This snippet shows how to handle the 'clickon' configuration key. When matched, it returns a new ClickonObjective instance, passing the section and configuration details. ```Java if (config.getKey().equals("clickon")) { return new ClickonObjective(section, config); } ``` -------------------------------- ### Load Trigger from MMOLineConfig Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API/diff This Java code snippet demonstrates how to load different trigger types (Message, Sound, Command) based on the key provided in an MMOLineConfig object. It acts as a factory or dispatcher for trigger instantiation. ```Java @Override public Trigger loadTrigger(MMOLineConfig config) { if (config.getKey().equals("message")) return new MessageTrigger(config); if (config.getKey().equals("sound")) return new SoundTrigger(config); if (config.getKey().equals("command")) return new CommandTrigger(config); return null; } ``` -------------------------------- ### MMOCore Loot Chest Region Configuration Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Loot-Chests/diff Example configuration for a specific loot chest region. It specifies the region identifier, defines loot tiers with associated chances and effects, and lists the items that can be dropped. ```yaml loot-chest-region-id: tiers: normal: effect: type: OFFSET particle: FLAME period: 60 chance: 0.9 drops: items: ``` -------------------------------- ### MMOCore Waypoints Commands and Configuration Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Waypoints/diff Provides details on player-facing commands and configuration aspects related to the MMOCore Waypoints system. This includes accessing the waypoint menu and understanding configuration files. ```APIDOC Player Commands: /waypoints Description: Opens the waypoints menu, displaying all waypoints on the server, both locked and unlocked. This menu is primarily for visualization. Usage: Players can only teleport to waypoints by standing on them and pressing the sneak key. Configuration: waypoints.yml Description: Configuration file that specifies default waypoint settings and potentially lists waypoints unlocked by default or through specific game events. Details: Some waypoints may require administrative commands to unlock, bypassing the standard player interaction method. ``` -------------------------------- ### Skill Modifiers Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Player-Classes Illustrates how to apply modifiers to specific skill characteristics, such as damage. This allows different classes or situations to have unique scaling for the same skill, based on skill level. ```YAML FIRE_STORM: level: 1 max-level: 30 # There damage: base: 5.0 per-level: 3.0 ``` -------------------------------- ### MMOCore Block Configuration Example Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Block-Types This configuration defines custom behavior for a block, specifying its material, drop table, and regeneration properties. It allows for custom drops and temporary block replacements after breaking. ```yaml on-mine: emerald: material: vanilla{type=EMERALD_ORE} drop-table: items: - 'vanilla{type=EMERALD} 1 1-9' vanilla-drops: false regen: time: 2000 temp-block: skull{value="long_texture_value_here"} ``` -------------------------------- ### Default Chest Configuration Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/chests.yml/diff Example of a default configuration for chests.yml, defining a specific location ('world 59 71 131') and its associated drop table with various items. This file is used to manage RPG random loot chests. ```yaml 'world 59 71 131': # Create directly your drop table here. drop-table: items: - 'vanilla{type=DIAMOND} 1 1-3' - 'gold{} .9 1-3' - 'gold{} .9 1-3' - 'gold{} .9 1-3' - 'gold{} .9 1-3' - 'gold{} .9 1-3' ``` -------------------------------- ### Load GetItemObjective from Config Source: https://gitlab.com/phoenix-dvpmt/mmocore/-/wikis/Plugin-API/diff This snippet demonstrates the logic for creating a GetItemObjective. It checks if the configuration key is 'getitem' and, if so, instantiates the GetItemObjective with the provided section and config objects. ```Java if (config.getKey().equals("getitem")) { return new GetItemObjective(section, config); } ```