<commit_before>package com.elmakers.mine.bukkit.api.spell;

import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;

import com.elmakers.mine.bukkit.api.magic.Mage;
import com.elmakers.mine.bukkit.api.magic.MageController;

/**
 * Represents a Spell that may be cast by a Mage.
 * 
 * Each Spell is based on a SpellTemplate, which are defined
 * by the spells configuration files.
 * 
 * Every spell uses a specific Class that must extend from
 * com.elmakers.mine.bukkit.plugins.magic.spell.Spell. Implementing the Spell interface
 * is required, but not sufficient, for a custom Spell.
 * 
 * This means that custom spells require building against MagicPlugin, which also provides
 * a variety of helpful base classes to start from, such as com.elmakers.mine.bukkit.plugins.magic.spell.TargetingSpell
 * and com.elmakers.mine.bukkit.plugins.magic.spell.BrushSpell.
 */
public interface Spell extends SpellTemplate {
	public boolean cast();
	public boolean cast(String[] parameters);
	public boolean cast(String[] parameters, Location defaultLocation);
	public long getCastCount();
	public Player getPlayer();
	public CommandSender getCommandSender();
	public Location getLocation();
	public Location getTargetLocation();
	public Entity getTargetEntity();
	public Vector getDirection();
	
	public void activate();
	public void deactivate();
	public boolean cancel();
	
	public void setMage(Mage mage);
	public Mage getMage();
	
	public void load(ConfigurationSection node);
	public void save(ConfigurationSection node);
	
	public void tick();
	
	public void initialize(MageController controller);
}
<commit_msg>Add Spell.hasBrushOverride method<commit_after>package com.elmakers.mine.bukkit.api.spell;

import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;

import com.elmakers.mine.bukkit.api.magic.Mage;
import com.elmakers.mine.bukkit.api.magic.MageController;

/**
 * Represents a Spell that may be cast by a Mage.
 * 
 * Each Spell is based on a SpellTemplate, which are defined
 * by the spells configuration files.
 * 
 * Every spell uses a specific Class that must extend from
 * com.elmakers.mine.bukkit.plugins.magic.spell.Spell. Implementing the Spell interface
 * is required, but not sufficient, for a custom Spell.
 * 
 * This means that custom spells require building against MagicPlugin, which also provides
 * a variety of helpful base classes to start from, such as com.elmakers.mine.bukkit.plugins.magic.spell.TargetingSpell
 * and com.elmakers.mine.bukkit.plugins.magic.spell.BrushSpell.
 */
public interface Spell extends SpellTemplate {
	public boolean cast();
	public boolean cast(String[] parameters);
	public boolean cast(String[] parameters, Location defaultLocation);
	public long getCastCount();
	public Player getPlayer();
	public CommandSender getCommandSender();
	public Location getLocation();
	public Location getTargetLocation();
	public Entity getTargetEntity();
	public Vector getDirection();
	
	public void activate();
	public void deactivate();
	public boolean cancel();
	
	public void setMage(Mage mage);
	public Mage getMage();
	
	public void load(ConfigurationSection node);
	public void save(ConfigurationSection node);
	
	public void tick();
	
	public void initialize(MageController controller);
	public boolean hasBrushOverride();
}

{'fraction_non_alphanumeric': 0.08869179600886919, 'fraction_numerical': 0.0, 'mean_word_length': 5.158703071672355, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5525182', 'n_tokens_mistral': 1044, 'n_tokens_neox': 987, 'n_words': 331}