Merge


Merge

The Merge feature allows transferring data from a main item to a target result item. You will need both the item to be transferred and the result item. The functionality can be customized according to your preferences.

Merge GUI

How Merge Works

When you place both the item to be transferred and the result item, then press the confirm button, the stats from the transfer item will be moved to the result item. You can fully customize how this process works.

Permission

Each station has its own permission requirement in order to be used. Of course, you can customize or change the permission to suit your needs.

settings:
  permission: nwmmoupgrade.merge.sword

Features

1. Material Item

If enabled, this means the operation of the station will require the specified materials in order to function as intended. You can define one or more material items, and the station will only execute if the player provides the required materials.

materials:
  enabled: false
  items:
    - type: MATERIAL
      id: STEEL_INGOT
      amount: 5
      slot: 30
      #match-item-type: SWORD #filter option
      #match-result-type: SWORD #filter option
      #match-tier-type: RARE #filter option

Note:

  • type is the type of the MMOItem.

  • id is the ID of the MMOItem.

  • amount is the quantity of the material required.

  • slot is the GUI slot where the material must be placed.

Options

These are additional conditions that enhance material requirements:

  • match-item-type: The material will only be accepted if the item placed in the item slot has the matching type specified here.

  • match-result-type: The material will only be accepted if the item placed in the result item slot has the matching type specified here.

  • match-item-tier: The material will only be accepted if the item placed in the item slot has the matching tier specified here.


2. Chance Item

If enabled and used in conjunction with chance-based mechanics, the Chance Item provides an additional success rate boost on top of the existing base chance. This item acts as a support to increase the overall likelihood of success during actions such as upgrading

chance-item:
  enabled: false
  items:
    - type: MATERIAL
      id: RARE_DIAMOND
      amount: 5
      slot: 32
      chance: 50
      #match-item-type: SWORD #filter option
      #match-result-type: SWORD #filter option
      #match-tier-type: RARE #filter option
    - type: MATERIAL
      id: SILVER_INGOT
      amount: 1
      slot: 32
      chance: 50
      #match-item-type: ARMOR #filter option
      #match-result-type: SWORD #filter option
      #match-tier-type: RARE #filter option

Note:

  • type is the type of the MMOItem.

  • id is the ID of the MMOItem.

  • amount is the quantity of the material required.

  • slot is the GUI slot where the material must be placed.

  • chance This sets the success chance for the Chance Item

Options

These are additional conditions that enhance material requirements:

  • match-item-type: The material will only be accepted if the item placed in the item slot has the matching type specified here.

  • match-result-type: The material will only be accepted if the item placed in the result item slot has the matching type specified here.

  • match-item-tier: The material will only be accepted if the item placed in the item slot has the matching tier specified here.


3. Material Formula

The Material Formula feature provides a highly flexible way to dynamically calculate the cost and material requirements for item.

Material Increase

When this feature is enabled (enabled: true), the quantity of material items required for an gem add socket will increase as the item's level rises. This ensures that higher-level upgrades demand a greater investment from players, providing a more balanced progression.

The increase is determined by a custom formula you define, giving you precise control over the scaling.

In Short:

  • Level Up = Material Requirements.

Formula Configuration

The core of this feature lies in the formula field, where you can define a mathematical expression.

  • Basic: you can use the basic default chance calculation or create your own custom formula to control how the chance is calculated.

  • Custom Placeholders: The formula supports specific placeholders that will be replaced with dynamic values during calculation.

material-formula:
  enabled: true
  formula: "1"

4. Merge Whitelist This feature allows specific stats to be transferred from the source item to the result item. You can configure exactly which stats are allowed to be transferred.

Note: If this feature is disabled, all stats from the MMOItems will be transferred by default. Therefore, enabling and defining specific stats is recommended for better control.

options:
  .....  
  whitelist-stats:
      #Item Stats.
      #Check your main item for Stats lists
      #https://gitlab.com/phoenix-dvpmt/mmoitems/-/blob/master/MMOItems-API/src/main/java/net/Indyuce/mmoitems/ItemStats.java
      enabled: true
      stats:
        - REQUIRED_LEVEL
        - REQUIRED_CLASS
        - ATTACK_DAMAGE
        - ATTACK_SPEED
        - CRITICAL_STRIKE_CHANCE
        - CRITICAL_STRIKE_POWER
        - SKILL_CRITICAL_STRIKE_CHANCE
        - SKILL_CRITICAL_STRIKE_POWER
        - BLOCK_POWER
        - BLOCK_RATING
        - BLOCK_COOLDOWN_REDUCTION
        - DODGE_RATING
        - DODGE_COOLDOWN_REDUCTION
        - PARRY_RATING
        - PARRY_COOLDOWN_REDUCTION
        - COOLDOWN_REDUCTION
        - RANGE
        - MANA_COST
        - STAMINA_COST
        - ARROW_VELOCITY
        - ARROW_POTION_EFFECTS
        - PVE_DAMAGE
        - PVP_DAMAGE
        - BLUNT_POWER
        - BLUNT_RATING
        - WEAPON_DAMAGE
        - SKILL_DAMAGE
        - PROJECTILE_DAMAGE
        - MAGIC_DAMAGE
        - PHYSICAL_DAMAGE
        - DEFENSE
        - DAMAGE_REDUCTION
        - FALL_DAMAGE_REDUCTION
        - PROJECTILE_DAMAGE_REDUCTION
        - PHYSICAL_DAMAGE_REDUCTION
        - FIRE_DAMAGE_REDUCTION
        - MAGIC_DAMAGE_REDUCTION
        - PVE_DAMAGE_REDUCTION
        - PVP_DAMAGE_REDUCTION
        - UNDEAD_DAMAGE
        - LIFESTEAL
        - SPELL_VAMPIRISM

Or you can view the available stats here, or inspect them directly from the item using NBT viewers.

Example

5. Custom Merge

This is an additional feature for the Merge function that can be enabled or disabled. When enabled, it allows you to configure additional behavior through the options section.

5.1. Replace A Lower Stat

The replace-a-lower-stat function works by replacing the stat from the Main Item to the Result Item, but only if the stat value on the Result Item is lower than that of the Main Item.

custom-merge:
  enabled: true
  replace-a-lower-stat: true
  skip-lower-stat-cant-merge: false
  check-match-upgrade-template: false
  merge-stat-percentage:
    enabled: false
    percentage: 50

5.2. Skip Lower Stat Cant Merge

The skip-lower-stat-cant-merge function will skip transferring the stat from the Main Item to the Result Item if the stat on the Result Item is higher than the stat on the Main Item.

custom-merge:
  enabled: true
  replace-a-lower-stat: false
  skip-lower-stat-cant-merge: true
  check-match-upgrade-template: false
  merge-stat-percentage:
    enabled: false
    percentage: 50

5.3. Check Match Upgrade Template

The check-match-upgrade-template function checks whether the upgrade-template of the Main Item and the Result Item are the same. If they do not match, the merge cannot proceed. (This is designed to support UPGRADE transfers.)

custom-merge:
  enabled: true
  replace-a-lower-stat: false
  skip-lower-stat-cant-merge: false
  check-match-upgrade-template: true
  merge-stat-percentage:
    enabled: false
    percentage: 50

5.4. Merge Stat Percentage

The merge-stat-percentage function transfers stats that are of type Double, such as ATTACK_DAMAGE, based on a percentage value. For example, if the Main Item has ATTACK_DAMAGE of 10, and the transfer percentage is set to 50%, the Result Item will receive ATTACK_DAMAGE of 5 after the merge.

Note: Supports the use of Custom Placeholders.

custom-merge:
  enabled: true
  replace-a-lower-stat: false
  skip-lower-stat-cant-merge: false
  check-match-upgrade-template: false
  merge-stat-percentage:
    enabled: true
    percentage: 50

6. Cost Upgrade

This feature allows you to use Vault (Money) for each Upgrade addition. And it also supports using custom placeholders from the system itself.

cost:
    enabled: false #Cost
    amount: 5000
cost:
    enabled: true # Enable/disable cost system
    amount: "{merge_custom_advance_cost_item}" # cost amount

7. Default Chance

This feature allows you to set the success chance of this station yourself, in cases where Tier is not enabled.

options:
    ....
    default-chance: 0

8. Tiers

This feature allows you to set the success chance based on the tiers of the item placed in the item slot. If the item's tier matches the specified tiers, the chance will be applied accordingly. If none of the tier conditions are met, the chance will be taken from the no-tier-chance setting.

options:
    ....
    tiers:
      enabled: false
      no-tier-chance: 10
      tier-list:
        - tier: COMMON
          chance: 2
        - tier: RARE
          chance: 15

8. Filter Merge Enchantments

filter-merge-enchantments is used to limit how many enchantments can exist on the Result Item after merging.

For example, if the Main Item has 5 enchantments and the Result Item already has 7, the merge will fail if you have set max-enchants to 11, since the total (12) exceeds the allowed maximum.

filter-merge-enchantments:
  enabled: true
  max-enchants: 11

9. Filter Gem Socket Merge Item

filter-gem-socket-merge-item filters the maximum number of Gem Sockets that can be transferred during a merge. For example, if the Main Item has 1 socket and the Result Item already has 3 sockets, the merge will fail if max-socket is set to 3, because the total (4) exceeds the allowed maximum.

filter-gem-socket-merge-item:
  enabled: true
  max-socket: 3

10. Match Item Type

match-item-type checks whether the Main Item and the Result Item have the same Type. If they do not match, the merge will not be allowed.

applies-to:
  - SWORD
  - PICKAXE

11. Applies To

You can specify more than one MMOItem type that this configuration applies to.

applies-to:
  - SWORD
  - PICKAXE

Example Full Config

##########################################################################
#
#                         nwMMOUpgrade - Merge
#      Created By Discord NN#7999 (Newworld Server)
#
#      Supports RGB and standard color codes.
#      1.RGB = &#ffffff
#      2.Standard = &f
#      3. MiniMessage = <red>
#      4. Legacy Hex = &x
#      https://www.birdflop.com/resources/rgb/
#
##########################################################################

#Contact&Support: https://discord.gg/gwXcr7c6Gq

#MMOItems Type
applies-to:
  - SWORD
  - TOOL

# Sound settings
#https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
sounds:
  confirm-success: ENTITY_EXPERIENCE_ORB_PICKUP
  confirm-fail: BLOCK_ANVIL_DESTROY
  confirm-no-item: BLOCK_NOTE_BLOCK_PLING

#GUI customization
gui:
  #GUI title, should support images normally.
  title: "&#FF0000M&#FF0202e&#FF0505n&#FF0707u&#FF0A0A: &#FF0E0EM&#FF1111e&#FF1313r&#FF1616g&#FF1818e"
  rows: 5 #GUI slots
  display-slots:
    item:
      material: LIME_STAINED_GLASS_PANE
      name: "<color:#00FF4F>Place the item to upgrade<color:#57E342>"
      lore:
        - "&7Drag and drop your item here"
      cmd: 1
    result:
      material: RED_STAINED_GLASS_PANE
      name: "<color:#FF0000>Place the result item to merge<color:#FF1818>"
      lore:
        - "&7Drag and drop your item here"
      cmd: 1
    material:
      material: YELLOW_STAINED_GLASS_PANE
      name: "<color:#E7FF00>Place the materials<color:#F2FF08>"
      lore:
        - "&7Drag and drop the required materials here"
      cmd: 1
    chance:
      material: PINK_STAINED_GLASS_PANE
      name: "<color:#FF00F8>Place a chance-enhancing stone (if any)<color:#E68DFF>"
      lore:
        - "&7Drag and drop the chance-enhancing stone here"
      cmd: 1
  slots:
    #Slot for the item you want to add Gem slots to.
    item: 20
    result: 24
    confirm:
      material: BRICK
      name: "&a&lConfirm" #Button name
      lore: #Add your messages here.
        - "&7Click to add a merge item"
        # - ""
        # - "&fCost: &a{cost}"
        # - "&fSuccess Chance: &6{chance}%"
        # - "&fMaterials:"
        # - "{material}" # edit custom line -> missing-material-line: "- &4<gray>{material} <red>{amount}"
      slot:
        - 39-41
      #Supports custom model data.
      cmd: 2600
    filter:
      name: "&f" #Name
      material: BLACK_STAINED_GLASS_PANE
      cmd: 1

materials:
  enabled: false
  items:
    - type: MATERIAL
      id: STEEL_INGOT
      amount: 1
      slot: 30
      #match-item-type: SWORD #จะใส่หรือไม่ใส่ก็ได้
      #match-result-type: GEM_STONE #จะใส่หรือไม่ใส่ก็ได้
      #match-tier-type: RARE #จะใส่หรือไม่ใส่ก็ได้

chance-item:
  enabled: false
  items:
    - type: MATERIAL
      id: RARE_DIAMOND
      amount: 5
      slot: 15
      chance: 1
      # match-item-type: SWORD #จะใส่หรือไม่ใส่ก็ได้
      # match-result-type: GEM_STONE #จะใส่หรือไม่ใส่ก็ได้
      # match-tier-type: RARE #จะใส่หรือไม่ใส่ก็ได้

settings:
  permission: nwmmoupgrade.merge.default
  cost:
    enabled: false #Cost
    amount: 5000
  options:
    material-formula:
      enabled: false
      formula: 1
    default-chance: 100
    tiers:
      enabled: false
      no-tier-chance: 10
      tier-list:
        - tier: COMMON
          chance: 2
        - tier: RARE
          chance: 15
    filter-merge-enchantments:
      enabled: false
      max-enchants: 11 # จำนวน Enchant สูงสุดที่อนุญาต
    match-item-type:
      enabled: false # เช็คเรื่อง type ของ item ว่าตรงกันมั้ย
    filter-gem-socket-merge-item:
      enabled: false # เช็คว่าถ้าเจ็ม socket เยอะเกินจะไม่ให้ merge item
      max-socket: 3
    whitelist-stats:
      #Item Stats.
      #Check your main item for Stats lists
      #https://gitlab.com/phoenix-dvpmt/mmoitems/-/blob/master/MMOItems-API/src/main/java/net/Indyuce/mmoitems/ItemStats.java
      enabled: true
      stats:
        - REQUIRED_LEVEL
        - REQUIRED_CLASS
        - ATTACK_DAMAGE
        - ATTACK_SPEED
        - CRITICAL_STRIKE_CHANCE
        - CRITICAL_STRIKE_POWER
        - SKILL_CRITICAL_STRIKE_CHANCE
        - SKILL_CRITICAL_STRIKE_POWER
        - BLOCK_POWER
        - BLOCK_RATING
        - BLOCK_COOLDOWN_REDUCTION
        - DODGE_RATING
        - DODGE_COOLDOWN_REDUCTION
        - PARRY_RATING
        - PARRY_COOLDOWN_REDUCTION
        - COOLDOWN_REDUCTION
        - RANGE
        - MANA_COST
        - STAMINA_COST
        - ARROW_VELOCITY
        - ARROW_POTION_EFFECTS
        - PVE_DAMAGE
        - PVP_DAMAGE
        - BLUNT_POWER
        - BLUNT_RATING
        - WEAPON_DAMAGE
        - SKILL_DAMAGE
        - PROJECTILE_DAMAGE
        - MAGIC_DAMAGE
        - PHYSICAL_DAMAGE
        - DEFENSE
        - DAMAGE_REDUCTION
        - FALL_DAMAGE_REDUCTION
        - PROJECTILE_DAMAGE_REDUCTION
        - PHYSICAL_DAMAGE_REDUCTION
        - FIRE_DAMAGE_REDUCTION
        - MAGIC_DAMAGE_REDUCTION
        - PVE_DAMAGE_REDUCTION
        - PVP_DAMAGE_REDUCTION
        - UNDEAD_DAMAGE
        - LIFESTEAL
        - SPELL_VAMPIRISM
    custom-merge:
      enabled: false
      replace-a-lower-stat: false
      skip-lower-stat-cant-merge: false
      check-match-upgrade-template: false
      merge-stat-percentage:
        enabled: false
        percentage: 50

Last updated