mcMMO icon

mcMMO 2.2.035

The #1 RPG experience for Minecraft!

Page 1 2 3 4 5
2.2.015 Jun 30, 2024
Maces!
Added Maces skill
Added Mace to repair.vanilla.yml (see notes)
Fixed a bug where spamming attacks would still apply full bonus dmg and full chance to proc abilities (see notes)
Fixed some misc missing permissions for crossbows/tridents

NOTES:
You shouldn't need to update repair.vanilla.yml, it should update automatically
Maces is a new skill that is in early development, feedback is appreciated.
Some ideas I had for the Maces are on hold as they are lacking proper API from Spigot.
This is mostly pertaining to smash attacks, I had some ideas for enhancing them but without the proper API I will hold off for now.
While working on Maces, I noticed a bug where spamming attacks would still apply full bonus damage and full chance to proc abilities, this has been fixed.
When you swing your weapon in Minecraft, you gain an "Attack Strength" value, which is relative to your cooldown, mcMMO was supposed to be making use of this value, but at some point in the past this was broken.
I have fixed this and now mcMMO will use the attack strength value to determine the bonus damage and chance to proc abilities.
For servers modifying Minecraft combat to not have this "cooldown", mcMMO should behave as you would expect, with full damage and full chance to proc abilities even when spamming attacks.
2.2.014 Jun 29, 2024
HotFix for Enchantment bug for Super Abilities
Fixed a bug where Luck Of The Sea was being applied for Super Breaker (and other abilities)
2.2.013 Jun 22, 2024
Update for 1.21 + Locale Changes + API Updates
Added Breeze to experience.yml
Added Bogged to experience.yml
(Locale) Updates to zh_TW (thanks chunkiuu)
(Locale) Updates to zh_CN (thanks haha44444)
Modified the RNG for dropping non-ore blocks from Blast Mining to yield about 50% of what was destroyed
(API) Deprecated com.gmail.nossr50.mcMMO.getPlaceStore
(API) Added com.gmail.nossr50.mcMMO.getUserBlockTracker
(API) Added com.gmail.nossr50.mcMMO.getChunkManager
(API) Added new methods to com.gmail.nossr50.util.blockmeta.UserBlockTracker for easier readability
(API) Deprecated many poorly named methods in UserBlockTracker (see notes)
(Codebase) Cleaned up and organized unit tests relating to UserBlockTracker
Added missing entries for Tridents/Xbows/Maces to config.yml (see notes)

NOTES:
Some settings such as Hardcore.Death_Stat_Loss.Enabled were missing entries for the new skills, I have added them to the default config.
Missing entries does not mean these things wouldn't work without them present, as default values will be used when config entries are not present.
These missing entries should be added to your config upon start up with this update.
Regarding the API changes, not planning to delete the deprecated methods in UserBlockTracker anytime soon, as nothing has really changed other than the names.
For anyone consuming mcMMO API, I would still recommend switching off these deprecated methods as soon as you can, just for future-proofing.
2.2.012 May 18, 2024
Daze error fix for 1.20.4 and older
Fixed a bug where Daze would cause an exception in older game versions (1.20.4 and older)
2.2.011 May 18, 2024
Fixed alchemy bugs for 1.20.4 and older
Version 2.2.011
Fixed bug where some potions on older versions (1.20.4 and older) were not brewable (night vision extended, etc)
Improved logging for Alchemy potion look up (see notes)

NOTES:
Added detailed logging when multiple configured potions match an ItemStack.
This will help identify issues with potion configuration.
2.2.010 May 15, 2024
More alchemy fixes and other bug fixes!
Fixed being unable to load REGEN potion type on new versions of Paper/Spigot 1.20.6
Fixed some potions not gaining XP when brewed (Level 2 potions, etc)
BrewingStands will now remember who owns them, this persists across restarts (see notes)
Fixed rare NPE in mcMMO events when player data was unable to be retrieved
Fixed a NPE that could happen when damaging armor with Axes
Fixed a bug where Alchemy brewing would be cancelled if the player died
(API) Added getMcMMOPlayer() to McMMOPlayerSkillEvent
(API) Added new ctor McMMOPlayerSkillEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType)
(API) Deprecated ctor McMMOPlayerSkillEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Added ctor McMMOPlayerAbilityEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Deprecated ctor McMMOPlayerAbilityEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Deprecated ctor McMMOPlayerAbilityActivateEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Added ctor McMMOPlayerAbilityActivateEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Deprecated ctor McMMOPlayerCatalysisEvent(org.bukkit.entity.Player, double)
(API) Added ctor McMMOPlayerCatalysisEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, double)
(API) Deprecated util method EventUtils.callPlayerAbilityActivateEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Added util method EventUtils.callPlayerAbilityActivateEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Deprecated ctor McMMOPlayerFishingEvent(org.bukkit.entity.Player)
(API) Added ctor McMMOPlayerFishingEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer)
(API) Deprecated ctor McMMOPlayerFishingTreasureEvent.McMMOPlayerFishingTreasureEvent(org.bukkit.entity.Player, org.bukkit.inventory.ItemStack, int)
(API) Added ctor McMMOPlayerFishingTreasureEvent.McMMOPlayerFishingTreasureEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, org.bukkit.inventory.ItemStack, int)
(API) Deprecated ctor McMMOPlayerMagicHunterEvent(org.bukkit.entity.Player, org.bukkit.inventory.ItemStack, int, java.util.Map<org.bukkit.enchantments.Enchantment,java.lang.Integer>)
(API) Added ctor McMMOPlayerMagicHunterEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, org.bukkit.inventory.ItemStack, int, java.util.Map<org.bukkit.enchantments.Enchantment,java.lang.Integer>)
(API) Deprecated ctor McMMOPlayerAbilityDeactivateEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Added ctor McMMOPlayerAbilityDeactivateEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.PrimarySkillType)
(API) Deprecated util method EventUtils.callAbilityDeactivateEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.SuperAbilityType)
(API) Added util method EventUtils.callAbilityDeactivateEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.SuperAbilityType)
(API) Deprecated util EventUtils.callSubSkillEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.SubSkillType)
(API) Added util EventUtils.callSubSkillEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.SubSkillType)
(API) Deprecated ctor SubSkillEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.SubSkillType)
(API) Added ctor SubSkillEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.SubSkillType)
(API) Deprecated ctor SubSkillEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.SubSkillType, double)
(API) Added ctor SubSkillEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.SubSkillType, double)
(API) Deprecated ctor SubSkillEvent(org.bukkit.entity.Player, com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill)
(API) Added ctor SubSkillEvent(com.gmail.nossr50.datatypes.player.McMMOPlayer, com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill)
(API) Deprecated ctor AlchemyBrewCheckTask(org.bukkit.entity.Player, org.bukkit.block.BrewingStand)
(API) Added ctor AlchemyBrewCheckTask(org.bukkit.block.BrewingStand)

NOTES:
You can now use hoppers and brewing stands and not have to worry about having to re-interact with the brewing stand over and over again
Ownership of a brewing stand is whoever last interacted with it, this persists across restarts
This is not an exhaustive list of API changes in this update, but most of the important ones should be documented here.
2.2.009 May 12, 2024
Fixed mcMMO not loading on older versions
  • Fixed a bug that prevented mcMMO from loading on MC versions older than 1.20.6
  • Dramatically increased the base XP for Alchemy again (see notes)

    NOTES:
    Alchemy leveling still felt too slow, so I've increased it again. You can either delete experience.yml to get the new values or adjust them manually.
    If you haven't updated mcMMO since 2.2.006 or older you don't need to do anything to get these new values.
    The new default values are..
    Potion_Brewing:
        Stage_1: 666
        Stage_2: 1111
        Stage_3: 1750
        Stage_4: 2250
2.2.008 May 11, 2024
Alchemy fixes and more!
Fixed alchemy potions not upgrading correctly (This will only affect new potions made, see notes)
Fixed a bug where alchemy potions had italicized names
Fixed a bug where messages were not being sent to the action bar in 1.20.6
(SQL) Fixed bug that broke /mccooldowns and /archery in some circumstances
Fixed some exceptions that could happen with parties disabled (thanks IAISI)

NOTES:
mcMMO-exclusive Potions (haste, etc) made on version 2.2.007 of mcMMO will not upgrade correctly, you'll just have to make new ones. Sorry for the inconvenience.
Alchemy potions will now be brewed as type "Mundane" behind the scenes, this used to be Uncraftable/Water. This led to some issues. So I've changed it to be Mundane.
2.2.007 May 4, 2024
1.20.6 Compatibility + Alchemy Fixes + Misc Changes
Compatibility with the 1.20.5 / 1.20.6 MC Update
Fixed bug where Alchemy was not brewing certain potions (haste, etc)
Tree Feller no longer restricts how many saplings can drop
Tree Feller now drops leaves 25% of the time (up from 10%)
Alchemy XP has been DRAMATICALLY increased, it was extremely grindy by default
Alchemy experience values in experience.yml are now found under 'Experience_Values.Alchemy.Potion_Brewing'
Fixed bug where the probability of success of Graceful Roll was not being calculated correctly
Fixed bug where Green Thumb did not replant if seed was in the off hand
Added armadillo to combat experience in experience.yml

NOTES:
While fixing various Alchemy bugs, I noticed Alchemy leveled SUPER slow, I have increased it dramatically. Feel free to change it back by modifying the new values in experience.yml
I did my best to keep mcMMO compatible with older versions of Minecraft for this update.
This update to MC was quite large, with breaking changes to a lot of code relating to Alchemy, and some other things.
I expect there to be bugs, please report them on GitHub or Discord, but preferably GitHub.
I will be working on fixing these bugs as they come in, so please be patient.
2.2.006 Apr 13, 2024
Hex color codes in locale + new custom item support config
  • Added new config custom_item_support.yml
  • Added support for hex color codes in the locale file, uses the format &#RRGGBB (see notes)
  • Added setting to disable repair on items with custom models, this is not on by default
  • Fixed a bug where sometimes the locale name of a skill would get lowercased
  • Fixed a bug where JSON text components did not get colored properly some of the time
  • Fixed en_US locale string 'Commands.Skill.Leaderboard' not being colored properly
  • Fixed skill commands incorrectly telling you to use their locale name, this isn't currently possible
  • Updated outdated wiki URLs in commands to point to the new wiki
  • Removed the msg about skills being migrated to a new system when using /mmoinfo command
  • Added new locale entry 'Anvil.Repair.Reject.CustomModelData'
  • Added new locale entry 'Anvil.Salvage.Reject.CustomModelData'
  • Updated en_US locale entry 'JSON.DescriptionHeader'
  • (API/Codebase) Added some util methods and basic unit tests for LocaleLoader

    NOTES:
    Hex Color support in locale files is here!
    The hex color code format for the locale files is &#RRGGBB
    An example entry applying yellow as a hex color code would look like this:
    Axes.SkillName=&#FFFF00Axes
    In general, JSON locale entries will either not work with hex color codes or will have the color code stripped out, in the future I will add support for the JSON components to use hex colors from the locale

    Let me know in detail what kind of support you'd like to see in mcMMO regarding custom items, I'm open to suggestions.
    This update adds a new config file to allow server owners to disable repair or salvage on items with custom models,
    This prevention mechanism is not enabled by default, change the settings in custom_item_support.yml if you want to enable it.
    This feature is off by default for now to keep compatibility with existing servers, but it may be enabled by default in the future if feedback suggests it should be.
    As a reminder, anyone can update the wiki by clicking on the "edit on github" link on various pages, this will take you to the wiki's source code on GitHub, submit a PR to make changes
2.2.005 Apr 6, 2024
Fixed some skills ignoring maxBonusLevel from config
Fixed a bug where certain skills such as Dodge/Arrow Deflect had no skill cap and would continue improving forever
Reduced messages on startup for SQL DB
(API) Constructor for ProbabilityImpl now takes a raw value between 0 and 1 instead of an inflated percentage
(API) Added some convenience methods to Probability, and ProbabilityUtil classes
(Codebase) Added more unit tests revolving around Probability/RNG
2.2.004 Apr 2, 2024
Fixed Experience_Formula.Skill_Multiplier config setting
Fixed bug where values from Experience_Formula.Skill_Multiplier were not functioning

NOTES:
A reminder that these values are multipliers and no longer divisors, if you want 10x lower XP, a value of .1 would do the job.
2.2.003 Mar 31, 2024
SQL Fixes
(SQLDB) Fixed a bug where lastlogin was using a value that was too large
(SQLDB) Fixed bug where crossbows was not getting added to SQL schema for some users
2.2.002 Mar 31, 2024
Fixed bug with trickshot and thrown tridents
Fixed bug where thrown tridents did not grant XP or benefit from subskills
Fixed bug where trickshot marked bounced arrows as being shot from a bow instead of being shot from a crossbow
2.2.001 Mar 30, 2024
Fix crossbows command showing incorrect description for powered shot
Version 2.2.001

Fix crossbows command showing incorrect description for powered shot

Version 2.2.000

This update has been a long time coming, I decided to include a preview of Tridents/Crossbows as part of this update, I hope you enjoy.

General

  • Added Crossbows Skill, this skill is an early preview / WIP and feedback on discord is appreciated
  • Added Tridents Skill, this skill is an early preview / WIP and feedback on discord is appreciated
  • Added the "endgame" triple drop subskill 'Mother Lode' to Mining
  • Added the "endgame" triple drop subskill 'Clean Cuts' to Woodcutting
  • Added the "endgame" triple drop subskill 'Verdant Bounty' to Herbalism
  • Added /mmopower command which simply shows your power level (aliases /mmopowerlevel /powerlevel)
  • Quite a few misc bugs were patched relating to random chance, some involving perk permissions


Config

  • Added 'Send_To_Console' settings to chat.yml to toggle sending party or admin chat messages to console
  • Replaced 'Experience_Formula.Modifier' in experience.yml with 'Experience_Formula.Skill_Multiplier' which is easier to understand and less prone to divide by zero bugs
  • child.yml config is gone now, feel free to delete it
  • Added ExploitFix.PreventArmorStandInteraction to experience.yml to prevent players from triggering mcMMO abilities off armor stands


Tweaks

  • Tree Feller now drops 90% less non-wood block rewards (leaves/etc) on average from Knock on Wood.
  • Treasure drop rate from Shake, Fishing, Hylian, and Excavation now benefit from the Luck perk
  • Updated advanced.yml with entries for the new skills


Permission nodes

  • Added 'mcmmo.commands.mmopower' permission node for the new /mmopower command
  • Added 'mcmmo.commands.crossbows' permission node
  • Added 'mcmmo.ability.crossbows.crossbowslimitbreak' permission node
  • Added 'mcmmo.ability.crossbows.trickshot' permission node
  • Added 'mcmmo.ability.crossbows.poweredshot' permission node
  • Added 'mcmmo.commands.tridents' permission node
  • Added 'mcmmo.ability.tridents.tridentslimitbreak' permission node
  • Added 'mcmmo.ability.tridents.impale' permission node
  • Added 'mcmmo.ability.herbalism.verdantbounty' permission node
  • Added 'mcmmo.ability.mining.motherlode' permission node
  • Added 'mcmmo.ability.woodcutting.cleancuts' permission node


Locale
Added locale entries for all the new skills/subskills

Codebase / Misc

  • PAPI's '/papi reload' command will no longer unload mcMMO (thanks gecko10000)
  • Major rewrite for how random chance was handled in the code
  • Many skills with RNG elements now send out a SubSkillEvent (which can be used to modify probability or cancel the results), some skills without RNG still send out this event when activated, this event is cancellable so it can be used to make a skill fail
  • A lot of new unit tests were added to help keep mcMMO stable as part of this update, of course, more could always be added.


NOTES:
One feature of this update is to provide an endgame benefits to some skills that you can grind for a long time, ideally for a long while. I will likely expand upon this idea in future updates.
A few skills have these endgame-oriented subskills, these new subskills provide a small benefit at first that grows and scales up to level 10,000 (or 1,000 for Standard mode which no one uses) and does not have ranks (other than the initial rank to unlock it).
These endgame sub skills unlock at level 1000 for users with default mcMMO settings, or 100 for those using the optional Standard scaling.
You can tweak the benefits of these skills in advanced.yml, the default settings are meant to be a good starting point.

Crossbows and Tridents are WIP skills, I would like feedback on discord about them.
Tridents especially is very early, I have some ideas but I want to hear what you think about it.

More info on the new Triple Drop skills (Mother Lode, Clean Cuts, Verdant Bounty):
Currently these start at about 5% chance and can reach a maximum 50% chance if a player acquired 10,000 skill, you can adjust this in advanced.yml
These skills respect double drop settings from config.yml just like the corresponding Double Drop skills do, if a double drop is disabled for an item, then its disabled for triple drops too.
I added a new Power Level Command, for now this just shows you your current power level. If I ever add features based on power level, this command will likely display output related to those features.

Maces...
Regarding Maces, I will likely add that as a WIP skill when the next Minecraft update drops.

2.2.000 Mar 30, 2024
Endgame Update + Tridents/Crossbows Preview

This update has been a long time coming, I decided to include a preview of Tridents/Crossbows as part of this update, I hope you enjoy.

General

  • Added Crossbows Skill, this skill is an early preview / WIP and feedback on discord is appreciated
  • Added Tridents Skill, this skill is an early preview / WIP and feedback on discord is appreciated
  • Added the "endgame" triple drop subskill 'Mother Lode' to Mining
  • Added the "endgame" triple drop subskill 'Clean Cuts' to Woodcutting
  • Added the "endgame" triple drop subskill 'Verdant Bounty' to Herbalism
  • Added /mmopower command which simply shows your power level (aliases /mmopowerlevel /powerlevel)
  • Quite a few misc bugs were patched relating to random chance, some involving perk permissions


Config

  • Added 'Send_To_Console' settings to chat.yml to toggle sending party or admin chat messages to console
  • Replaced 'Experience_Formula.Modifier' in experience.yml with 'Experience_Formula.Skill_Multiplier' which is easier to understand and less prone to divide by zero bugs
  • child.yml config is gone now, feel free to delete it
  • Added ExploitFix.PreventArmorStandInteraction to experience.yml to prevent players from triggering mcMMO abilities off armor stands


Tweaks

  • Tree Feller now drops 90% less non-wood block rewards (leaves/etc) on average from Knock on Wood.
  • Treasure drop rate from Shake, Fishing, Hylian, and Excavation now benefit from the Luck perk
  • Updated advanced.yml with entries for the new skills


Permission nodes

  • Added 'mcmmo.commands.mmopower' permission node for the new /mmopower command
  • Added 'mcmmo.commands.crossbows' permission node
  • Added 'mcmmo.ability.crossbows.crossbowslimitbreak' permission node
  • Added 'mcmmo.ability.crossbows.trickshot' permission node
  • Added 'mcmmo.ability.crossbows.poweredshot' permission node
  • Added 'mcmmo.commands.tridents' permission node
  • Added 'mcmmo.ability.tridents.tridentslimitbreak' permission node
  • Added 'mcmmo.ability.tridents.impale' permission node
  • Added 'mcmmo.ability.herbalism.verdantbounty' permission node
  • Added 'mcmmo.ability.mining.motherlode' permission node
  • Added 'mcmmo.ability.woodcutting.cleancuts' permission node


Locale
Added locale entries for all the new skills/subskills

Codebase / Misc

  • PAPI's '/papi reload' command will no longer unload mcMMO (thanks gecko10000)
  • Major rewrite for how random chance was handled in the code
  • Many skills with RNG elements now send out a SubSkillEvent (which can be used to modify probability or cancel the results), some skills without RNG still send out this event when activated, this event is cancellable so it can be used to make a skill fail
  • A lot of new unit tests were added to help keep mcMMO stable as part of this update, of course, more could always be added.


NOTES:
One feature of this update is to provide an endgame benefits to some skills that you can grind for a long time, ideally for a long while. I will likely expand upon this idea in future updates.
A few skills have these endgame-oriented subskills, these new subskills provide a small benefit at first that grows and scales up to level 10,000 (or 1,000 for Standard mode which no one uses) and does not have ranks (other than the initial rank to unlock it).
These endgame sub skills unlock at level 1000 for users with default mcMMO settings, or 100 for those using the optional Standard scaling.
You can tweak the benefits of these skills in advanced.yml, the default settings are meant to be a good starting point.

Crossbows and Tridents are WIP skills, I would like feedback on discord about them.
Tridents especially is very early, I have some ideas but I want to hear what you think about it.

More info on the new Triple Drop skills (Mother Lode, Clean Cuts, Verdant Bounty):
Currently these start at about 5%  chance and can reach a maximum 50% chance if a player acquired 10,000 skill, you can adjust this in advanced.yml
These skills respect double drop settings from config.yml just like the corresponding Double Drop skills do, if a double drop is disabled for an item, then its disabled for triple drops too.
I added a new Power Level Command, for now this just shows you your current power level. If I ever add features based on power level, this command will likely display output related to those features.

Maces...
Regarding Maces, I will likely add that as a WIP skill when the next Minecraft update drops.

2.1.231 Mar 10, 2024
Fixed a bug preventing parties without a password from being created
Fixed a bug preventing parties from being made without passwords (Thanks Momshroom)
Updated korean locale (thanks mangchi57)
Added some unit tests for party creation
2.1.230 Feb 24, 2024
Reupload - Fix for party.yml bugs

Attempt #2 to upload

2.1.230 Feb 23, 2024
Fixes for bugs when disabling party system via party.yml
Fixed an error that could happen when mcMMO was saving when parties were disabled by party.yml (thanks IAISI & L4BORG)
Fixed several exceptions when checking PVP damage when parties were disabled by party.yml (thanks IAISI & L4BORG)
2.1.229 Feb 20, 2024
New party.yml config and fix for getHandlerList on rupture event
Added new party.yml config, which lets admins disable the party system entirely without having to use permissions
Fixed error caused by missing API in McMMOEntityDamageByRuptureEvent
(API) Major API changes to PartyManager
(API) PartyManager is no longer a static singleton class, use mcMMO.getPartyManager() to get the PartyManager
(API) Added com.gmail.nossr50.mcMMO.isPartySystemEnabled to check if the party system is enabled
(API) Added com.gmail.nossr50.api.PartyAPI.isPartySystemEnabled as an alternative, to check if the party system is enabled
(API) Added missing com.gmail.nossr50.events.skills.rupture.McMMOEntityDamageByRuptureEvent.getHandlerList

NOTES:
Admins can now enable/disable the whole party system with a setting in the new party.yml config
You'll have to start your server one time to generate the config, then change the setting and reboot your server.
Page 1 2 3 4 5