Project MMO: Skill Books

Adds skill books that add xp or levels to all the basic Project MMO skills. It also allows you to create custom skill books that grant up to 4 options.

2,65k

Project MMO: Skill Books

<p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://media.forgecdn.net/attachments/description/908049/description_1dd1e85a-ba46-43ad-8c2d-29df140c0784.png"></p>
<hr>
<p><span style="font-size: 14px;">This mod requires <a href="https://www.curseforge.com/minecraft/mc-mods/project-mmo" target="_blank" rel="nofollow noopener">Project MMO</a>.</span></p>
<h6><em><span style="font-size: 14px;">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.</span></em></h6>
<h2><span style="font-size: 14px;">About</span></h2>
<p><span style="font-size: 14px;">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.</span></p>
<p><span style="font-size: 14px;">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.</span></p>
<p><span style="font-size: 14px;"> When you create a custom item you specify the type [<span style="color: #b96ad9;">skillbook</span>, <span style="color: #e03e2d;">insignia</span>] one of 4 colors [depends on type], and one of 5 tiers [<span style="color: #fff;">plain</span>, <span style="color: #95a5a6;">iron</span>, <span style="color: #f1c40f;">gold</span>, <span style="color: #2dc26b;">emerald</span>, <span style="color: #c2e0f4;">diamond</span>]. Here is an example of the 5 tiers of a black skill book and a red insignia:</span></p>
<p><span style="font-size: 14px;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://media.forgecdn.net/attachments/description/908049/description_b612c0ee-8581-4805-85e1-f0d84aaa0398.png" alt="" width="720" height="280"></span></p>
<hr>
<h2><span style="font-size: 14px;">Creating Custom Items</span></h2>
<h2><span style="font-size: 14px;">The DataComponent used is SkillGrantData and it has 8 attributes: name, skills, application_type, application_value, experience_cost, texture_type, rank, and color.</span></h2>
<ul>
<li><span style="font-size: 14px;"><strong>name:</strong> the translatable string code. Changes the name of the item but need to add to the lang file. Leave blank for default.</span></li>
<li><span style="font-size: 14px;"><strong>skills</strong>: 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.</span></li>
<li><strong><span style="font-size: 14px;">application_type</span></strong><span style="font-size: 14px;">: How the value should be applied to the skill. Allowed values: [level, xp, set]</span></li>
<li><strong><span style="font-size: 14px;">application_value</span></strong><span style="font-size: 14px;">: The number of levels or experience to grant. Any valid integer.</span></li>
<li><span style="font-size: 14px;"><strong>experience_cost</strong>: The amount of minecraft levels of experience it costs to use this item. Put 0 for no cost.</span></li>
<li><span style="font-size: 14px;"><strong>texture_type</strong>: If the texture should be a skill book or an insignia. Allowed values: [<span style="color: #b96ad9;">skillbook</span>, <span style="color: #e03e2d;">insignia</span>]</span></li>
<li><strong><span style="font-size: 14px;">rank</span></strong><span style="font-size: 14px;">: What color of trim the book should have.  Allowed values: [<span style="color: #fff;">plain</span>, <span style="color: #95a5a6;">iron</span>, <span style="color: #f1c40f;">gold</span>, <span style="color: #2dc26b;">emerald</span>, <span style="color: #c2e0f4;">diamond</span>]</span></li>
<li><span style="font-size: 14px;"><strong>color</strong>: What color the item should be. Skillbook values: [<span style="color: #236fa1;">blue</span>, <span style="color: #169179;">green</span>, black, <span style="color: #843fa1;">purple</span>]. Insignia values: [<span style="color: #fff;">white</span>, <span style="color: #ba372a;">red</span>, <span style="color: #bfedd2;">teal</span>, <span style="color: #843fa1;">purple</span>]. For plain insignias only there are also these additional colors: [<span style="color: #e67e23;">orange</span>, <span style="color: #b96ad9;">light_purple</span>, <span style="color: #169179;">green</span>, <span style="color: #236fa1;">blue</span>, <span style="color: #c2e0f4;">light_blue</span>, <span style="color: #fbeeb8;">yellow</span>, <span style="color: #e835c4;">pink</span>, black]</span></li>
</ul>
<p><span style="font-size: 14px;">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:</span></p>
<p><span style="font-size: 14px;">1.21.1 Command:</span></p>
<pre><code>/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}]</code></pre>
<p><span style="font-size: 14px;">1.20.1 Command:</span></p>
<pre><code>/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</code></pre>
<p><span style="font-size: 14px;">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. </span></p>
<p><span style="font-size: 14px;">That was too easy, lets make a diamond insignia that gives the player 10,000 experience to either magic, fishing, woodcutting, or mining.</span></p>
<p><span style="font-size: 14px;">1.21.1 Command:</span></p>
<pre><code>/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}]</code></pre>
<p><span style="font-size: 14px;">1.20.1 Command:</span></p>
<pre><code>/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</code></pre>
<p><span style="font-size: 14px;">I also added this to the lang file:</span></p>
<div>
<pre>"<code>test.item</code>": "Diamond Insignia of Legends"</pre>
</div>
<p><span style="font-size: 14px;">Here is the resulting item:</span></p>
<p><span style="font-size: 14px;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://media.forgecdn.net/attachments/description/908049/description_523783dd-8d17-44d5-8f48-5f1a1974a18e.png" alt="" width="799" height="104"></span></p>
<p><span style="font-size: 14px;">When I use the item it opens this screen:</span></p>
<p><span style="font-size: 14px;"><img src="https://media.forgecdn.net/attachments/description/908049/description_c0abdfa0-583f-4ae5-9ae4-c2793233a6bf.png" alt="" width="799" height="749"></span></p>
<p><span style="font-size: 14px;">I clicked Fishing and confirm to gain 10,000 Fishing XP. Neat! </span><span style="font-size: 14px;">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.</span></p>
<p><span style="font-size: 14px;">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.</span></p>
<hr>
<p><span style="font-size: 14px;">Future Upgrades: </span></p>
<ul>
<li><span style="font-size: 14px;">Add basic loot table options to introduce these into the game in a simple way for players who don't want to customize them.</span></li>
<li><span style="font-size: 14px;">Add new book colors / trims.</span></li>
</ul>
<p><span style="font-size: 14px;">DISCLAIMER: <strong>None of these skill books drop in the game by default, nor are they craftable</strong>. </span><span style="font-size: 14px;">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.</span></p>
<hr>
<h3><strong><span style="font-size: 14px;">Old 1.20.1 Only Features - Moved to new mod</span></strong></h3>
<div class="spoiler">
<p><span style="font-size: 14px;">Class System  This will be a separate more fully featured mod in 1.21.1, <strong>Project MMO: Classes.</strong></span></p>
<p><span style="font-size: 14px;">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.</span></p>
<p><span style="font-size: 14px;">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.</span></p>
<p><span style="font-size: 14px;">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:</span></p>
<pre>/pmmo_skill_books forget <class or subclass></pre>
<p><span style="font-size: 14px;">To forget a class or subclass. If you forget a class it will also delete any subclass you have for that class.</span></p>
<hr>
<h4><span style="font-size: 14px;">Ideas</span></h4>
<h5><span style="font-size: 14px;">Perks</span></h5>
<p><span style="font-size: 14px;">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 <a href="https://www.curseforge.com/minecraft/mc-mods/apothic-attributes" rel="nofollow">Apothic Attributes</a> added attributes to create interesting class bonuses:</span></p>
<ul>
<li><span style="font-size: 14px;">Each level in Fighter gives a decent amount of health and some bonus damage reduction and armor.</span></li>
<li><span style="font-size: 14px;">The Wizard class gives a lot of mana and mana regen for Ars Nouveau or Iron's Spells and Spell Books. </span></li>
<li><span style="font-size: 14px;">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.</span></li>
<li><span style="font-size: 14px;">The Warlocks subclass Reaper gives access to a powerful scythe from another mod and gives % Lifesteal.</span></li>
<li><span style="font-size: 14px;">The Paladin subclass Valkyrie can fly like they have an elytra.</span></li>
<li><span style="font-size: 14px;">The Monk class gains a regeneration effect when standing still for 30 seconds and takes significantly less fall damage.</span></li>
</ul>
<h5><span style="font-size: 14px;">Item Restrictions</span></h5>
<p><span style="font-size: 14px;">Adding class restrictions to some powerful items in the game, like the Ranger subclass Tracker and the <a style="font-family: arial, helvetica, sans-serif; font-size: 14px; background-color: #ffffff;" href="https://www.curseforge.com/minecraft/mc-mods/scannable" rel="nofollow">Scannable</a> 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.</span></p>
<h4><span style="font-size: 14px;">Tips</span></h4>
<p><span style="font-size: 14px;">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.</span></p>
<h4><span style="font-size: 14px;">Command Books - <strong>Removed in 1.21.1</strong></span></h4>
<p><span style="font-size: 14px;">There are also some custom books that run commands on the player. Currently these are just skill books that unlock limitations in <a href="https://www.curseforge.com/minecraft/mc-mods/parcool" rel="nofollow">Parcool</a>, 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.</span></p>
</div>
<p> </p>

ADS