# SorceryCraft Cast Spells in Minecraft! This mod supports the Minecraft 1.16 snapshots. ## What are Spells? Spells are found throughout the world in chests. When you pick up a Spell you will learn it, one you learn a Spell you can apply it to a blank or existing Spell in the Casting Table. You can cast Spells by right-clicking. There is also a 30% chance the spell will rebound and hit you instead, unless the "Steadfast" Spell is applied. ## What's a Casting Table? You can apply Spells to blank or existing Spells in the Casting Table. Doing so will require a certain amount of levels, and sometimes may require an item. ## Crafting #### Blank Spell
Lapis Lazuli
Lapis Lazuli Paper Lapis Lazuli
Lapis Lazuli
#### Casting Table
Lapis Lazuli Cobblestone Lapis Lazuli
Cobblestone Diamond Cobblestone
Lapis Lazuli Cobblestone Lapis Lazuli
## Spells | Spell | Max Level | Description | | --- | --- | --- | | Flame | 2 | Sets target on fire. | | Damage | 2 | Damages target. | | Heal | 2 | Heals target. | | Dissolve | 1 | Removes target's status effects. | | Levitate | 2 | Gives target the Levitation effect. | | Steadfast | 1 | Prevents Spell from rebounding. | | Teleport | 2 | Teleports target to random location. | | Inward | 1 | Causes the Spell to target the player. If the Spell fails instead of rebounding, it will just do nothing. | | Cooling | 1 | Extinguish the target if they are on fire. | ## ```/spell``` Command This command requires OP permissions. #### ```/spell clear ``` This command clears all known spells from the given player. #### ```/spell list ``` This lists all the spells the given player knows. #### ```/spell learn ``` This teaches the specified spell to the specified player. #### ```/spell add ``` This adds the specified spell to the item in the player's main hand. #### ```/spell remove ``` This removes the specified spell from the item in the player's main hand. ## API 1. Add Dependency to Gradle ```gradle repositories { maven { url 'https://jitpack.io' } } dependencies { modImplementation 'com.thebrokenrail:sorcerycraft:VERSION' } ``` 2. Add Dependency to ```fabric.mod.json``` ```json { "depends": { "sorcerycraft": "VERSION" } } ``` 3. Create a class extending ```com.thebrokenrail.sorcerycraft.spell.registry.Spell``` ```java public class ExampleSpell extends Spell { public ExampleSpell(Identifier id, int level) { super(id, level); } @Override public void execute(Entity target, Entity source, Entity attacker) { // Called when ExampleSpell hits an entity } @Override public void execute(World world, BlockHitResult hitResult) { // Called when ExampleSpell hits a block } @Override public int getXPCost() { // Return the amount of levels required to make ExampleSpell in a Casting Table } @Override public ItemStack getItemCost() { // Return the item(s) required to make ExampleSpell in a Casting Table // Return ItemStack.EMPTY if an item is not required } @Override public int getMaxLevel() { // Return ExampleSpell's maximum level } } ``` 4. Register the Spell in your ModInitializer ```java public class ExampleMod implements ModInitializer { @Override public void onInitialize() { SpellRegistry.registerSpell(new Identifier("modid", "example_spell"), ExampleSpell.class); } } ``` 5. Add Spell Translation ```json { "spell.modid.example_spell": "Example" } ``` #### Useful Methods - ```Spell.getLevel()``` - ```Spell.getID()```