Download Project MMO: Iron's Spellbooks Compat — Minecraft Mods — ModStock

Project MMO: Iron's Spellbooks Compat

Active

Downloads

0

Last update

4 months ago
Client
Magic
Addons

 

This mod requires Project MMO and Iron's Spells and Spellbooks for 1.20.1

About


This compatability mod allows you to add skill requirements to spells using datapacks. If a player doesn't meet the requirements then they can't cast the spell. It allows you to specify requirements on a per spell level basis as well. These requirements can be configured to only apply when casting from scrolls, spellbooks, and/or swords. You can also make it so these requirements prevent players from inscribing the spell into their spellbook entirely.

Additionally there is a config that allows you to award xp to a player when their spell heals another player. This enables healers/priest archetypes to actually be able to level a skill while supporting other players.

 

Guide


The easiest way to start is to load into the world in question and run the command:

/pmmo_irons_compat genSpellData

I know, snake case and camel case in one command, provocative. This will generate a datapack with defaults for every spell that is currently enabled in Iron's Spells and Spellbooks. You can modify this datapack and then delete the JSON files for spells that you did not configure. You can run this command at any time to repopulate the list of spells and it won't affect the JSON files you already have in there.

After running the command and generating the datapack I modified the fireball.json file to look like this:

{
  "requirements": {
    "1": {},
    "2": { "magic":  5}
  },
  "default_requirements": {
    "magic": 10,
    "charisma": 2
  },
  "sources": [
    "scroll",
    "spellbook",
    "sword",
    "inscribe"
  ],
  "replace": true
}

 

The "default_requirements" key will add a requirement to all fireball spell levels. In this case all fireball spell levels will require a magic of level 10 and a charisma of level 2 to cast.

The "requirements" section allows you to set requirements for specific spell levels. In this json the level 1 fireball spell now has no requirement to cast. This will override "default_requirements" for that specific spell level. The level 2 fireball spell has been configured to require level 5 magic to cast. Every other level of fireball would require 10 magic and 2 charisma to cast.

The "sources" section allows you to specify when to apply these requirements and when not to. Right now this would restrict casting fireball spells from scrolls, spellbooks, and swords. It would also not allow you to inscribe the fireball spell into a spellbook unless you meet the requirements. If you would like any spell to be castable from a scroll for example, you could remove "scroll" from the "sources" list and it would no longer be restricted.

The "replace" is there to solve datapack disputes. If there are multiple datapacks with requirements applied to a spell, say fireball, then the datapack with "replace": true will overwrite any that have it set to false. If there are multiple datapacks with "replace": true then it will use whichever was the last loaded datapack.

None of these are required; if you only want to add a requirement to a specific level of a spell then don't include "default_requirements" at all. If you want every spell to have the same requirement, remove "requirements" and only use "default_requirements". If you leave off "sources" then the requirements wouldn't apply to anything. You could just delete the JSON at that point.

 

FAQ


I will not backport this or port it to fabric. I just don't have the time and I will only be playing on 1.20.1+ going forward. You are welcome to do so though!

You can use this mod in any modpacks, but you cannot monetize it in any way or post it to another minecraft site.

 

Huge thanks to Caltinor / Project MMO team for their constant help and access to the project source code. Also thanks to the Iron's Spells and Spellbooks team for allowing me to merge a few PR's to emit events so I didn't have to use any mixins to make this work.

Project members
Silvertide

Silvertide