
This mod requires Project MMO.
1.21.1 Release + 1.20.1 2.0.0 release. The 1.20.1 release has breaking changes and removes the class system entirely. It will be added back in a new mod that I will post here in the next couple days.
About
This mod adds skill books to the game for all default Project MMO skills that can be used to award players with a variable amount of experience or levels.
It also allows you to create custom items to award any amount of levels or experience to any skill, or even set a skill to a specific level. It also allows you to add a list of skills, allowing the user to select one of the options to gain the levels or experience when they use the item.
When you create a custom item you specify the type [skillbook, insignia] one of 4 colors [depends on type], and one of 5 tiers [plain, iron, gold, emerald, diamond]. Here is an example of the 5 tiers of a black skill book and a red insignia:
Creating Custom Items
The DataComponent used is SkillGrantData and it has 8 attributes: name, skills, application_type, application_value, experience_cost, texture_type, rank, and color.
- name: the translatable string code. Changes the name of the item but need to add to the lang file. Leave blank for default.
- skills: A list of skills. If 1 skill then it will immediately grant the bonus. If multiple skills (max of 4) it will let you choose.
- application_type: How the value should be applied to the skill. Allowed values: [level, xp, set]
- application_value: The number of levels or experience to grant. Any valid integer.
- experience_cost: The amount of minecraft levels of experience it costs to use this item. Put 0 for no cost.
- texture_type: If the texture should be a skill book or an insignia. Allowed values: [skillbook, insignia]
- rank: What color of trim the book should have. Allowed values: [plain, iron, gold, emerald, diamond]
- color: What color the item should be. Skillbook values: [blue, green, black, purple]. Insignia values: [white, red, teal, purple]. For plain insignias only there are also these additional colors: [orange, light_purple, green, blue, light_blue, yellow, pink, black]
If you wanted to give a player a custom skill book that increased their good_looks levels by 10, you could use the in game /give command like this:
1.21.1 Command:
/give @p pmmo_skill_books:skill_grant[pmmo_skill_books:skill_grant_data={name:test.skill_grant.good_looks, skills:[good_looks], application_type:level, application_value:10, experience_cost:10, texture_type:skillbook, rank:gold, color:green}]
1.20.1 Command:
/give @p pmmo_skill_books:skill_grant{pmmo_skill_books:{skills:["good_looks"],color:"green",application_type:"level",application_value:10,experience_cost:10,name:"test.skill_grant.good_looks",rank:"gold",texture_type:"skillbook"}} 1
This would create a green skill book with gold trim called test.skill_grant.good_looks that gives the player 10 levels of the good_looks skill. Make sure to add test.skill_grant.good_looks to the translation lang file or it will literally have that as the name. You'll probably want to give pmmo.good_looks a skill name as well while you're there.
That was too easy, lets make a diamond insignia that gives the player 10,000 experience to either magic, fishing, woodcutting, or mining.
1.21.1 Command:
/give @p pmmo_skill_books:skill_grant[pmmo_skill_books:skill_grant_data={name:test.item,skills:[magic, fishing, woodcutting, mining], application_type:xp, application_value:10000, experience_cost:0, texture_type:insignia, rank:diamond, color:purple}]
1.20.1 Command:
/give @p pmmo_skill_books:skill_grant{pmmo_skill_books:{skills:["magic","fishing","woodcutting","mining"],color:"purple",application_type:"xp",application_value:10000,experience_cost:0,name:"test.item",rank:"diamond",texture_type:"insignia"}} 1
I also added this to the lang file:
"test.item
": "Diamond Insignia of Legends"
Here is the resulting item:
When I use the item it opens this screen:
I clicked Fishing and confirm to gain 10,000 Fishing XP. Neat! You can use any system of creating or adding items to the game to add your own custom items, like loot tables, custom recipes, or achievement rewards in datapacks or register items with mods like KubeJS.
You can also do things like create a book that sets a skill to a specific level, like level 1 Omniscience. Then make some powerful effects in PMMO for that skill and make the book a rare chase item.
Future Upgrades:
- Add basic loot table options to introduce these into the game in a simple way for players who don't want to customize them.
- Add new book colors / trims.
DISCLAIMER: None of these skill books drop in the game by default, nor are they craftable. Modpack makers or server operators can give these out as rewards to their players, either through server stores or for events. They can also add them to loot tables to give something for players to look for or trade with other players, or create recipes for them.
Old 1.20.1 Only Features - Moved to new mod
Class System This will be a separate more fully featured mod in 1.21.1, Project MMO: Classes.
This mod also adds a basic class system to Project MMO. It adds all of the 5e DND classes (and some subclasses as well as custom subclasses) as skills and adds a third type of skill book that sets their levels to 1, 2, 3, or 4. By default you can only have 2 classes at a time, and all subclasses require that you have the main class in order to take it. You can also only have 1 subclass for any given primary class. Using each level of class book requires 5 more exp levels than the last, starting at 20. Again, these are not droppable or craftable in the game and are only there for you to build around by creating custom perks for these classes and subclasses and adding them to loot tables as you see fit.
I am actively adding new subclasses to this as I develop my modpack. If you would like me to add some custom skills or classes / subclasses for you please let me know and I'll throw it in.
Since you can only have 2 primary classes, and 1 subclass per those primary classes, you need a way to remove them if you want to try something else. Use the command:
/pmmo_skill_books forget <class or subclass>
To forget a class or subclass. If you forget a class it will also delete any subclass you have for that class.
Ideas
Perks
If you want to use this mods class system here are some of the things I am doing to give you ideas. I used PMMO's existing perk system along with Apothic Attributes added attributes to create interesting class bonuses:
- Each level in Fighter gives a decent amount of health and some bonus damage reduction and armor.
- The Wizard class gives a lot of mana and mana regen for Ars Nouveau or Iron's Spells and Spell Books.
- Rogues gain invisibility when you crouch as well as speed so you can sneak faster. The assassin subclass gives more crit chance and crit damage.
- The Warlocks subclass Reaper gives access to a powerful scythe from another mod and gives % Lifesteal.
- The Paladin subclass Valkyrie can fly like they have an elytra.
- The Monk class gains a regeneration effect when standing still for 30 seconds and takes significantly less fall damage.
Item Restrictions
Adding class restrictions to some powerful items in the game, like the Ranger subclass Tracker and the Scannable mod item or a teleporting staff for warlocks, can give each class interesting identities. These are just some ideas of what you can do using Project MMO's existing system of requirements with datapacks and perks with the perks TOML.
Tips
Using CraftTweaker perks also opens a lot of interesting doors here, i.e. a Level 2 Fighter gets 30 seconds of regeneration once every 10 minutes when they have less than 2 hearts. Using min_level and max_level within these perks allows you to control exactly what each level brings.
Command Books - Removed in 1.21.1
There are also some custom books that run commands on the player. Currently these are just skill books that unlock limitations in Parcool, like wall running. These will not work for you unless you have parcool in your modpack and turned on parcools limitations and then disabled that limitation for the player. I did this through an achievement a player gets when they join the server that runs a mcfunction. When the use the book it will enable that skill if it is disabled.