TheBrokenRail
e431ddb057
All checks were successful
SorceryCraft/pipeline/head This commit looks good
API is now stable Fix /spell suggestions
149 lines
4.2 KiB
Markdown
149 lines
4.2 KiB
Markdown
# 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
|
|
<table>
|
|
<tr>
|
|
<td></td>
|
|
<td>Lapis Lazuli</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Lapis Lazuli</td>
|
|
<td>Paper</td>
|
|
<td>Lapis Lazuli</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>Lapis Lazuli</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
|
|
#### Casting Table
|
|
<table>
|
|
<tr>
|
|
<td>Lapis Lazuli</td>
|
|
<td>Cobblestone</td>
|
|
<td>Lapis Lazuli</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Cobblestone</td>
|
|
<td>Diamond</td>
|
|
<td>Cobblestone</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Lapis Lazuli</td>
|
|
<td>Cobblestone</td>
|
|
<td>Lapis Lazuli</td>
|
|
</tr>
|
|
</table>
|
|
|
|
## 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 <player>```
|
|
This command clears all known spells from the given player.
|
|
|
|
#### ```/spell list <player>```
|
|
This lists all the spells the given player knows.
|
|
|
|
#### ```/spell learn <player> <spell-id> <level>```
|
|
This teaches the specified spell to the specified player.
|
|
|
|
#### ```/spell add <player> <spell-id> <level>```
|
|
This adds the specified spell to the item in the player's main hand.
|
|
|
|
#### ```/spell remove <player> <spell-id>```
|
|
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": "1.1.x"
|
|
}
|
|
}
|
|
```
|
|
3. Create a class extending ```com.thebrokenrail.sorcerycraft.spell.api.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 {
|
|
public static final Identifier EXAMPLE_SPELL = SpellRegistry.register(new Identifier("modid", "example_spell"), ExampleSpell.class);
|
|
}
|
|
```
|
|
5. Add Spell Translation
|
|
```json
|
|
{
|
|
"spell.modid.example_spell": "Example"
|
|
}
|
|
```
|
|
|
|
#### Useful Methods
|
|
- ```Spell.getLevel()```
|
|
- ```Spell.getID()``` |