77 lines
2.1 KiB
Java
77 lines
2.1 KiB
Java
package electroblob.wizardry.spell;
|
|
|
|
import electroblob.wizardry.constants.Element;
|
|
import electroblob.wizardry.constants.SpellType;
|
|
import electroblob.wizardry.constants.Tier;
|
|
import electroblob.wizardry.registry.WizardrySounds;
|
|
import electroblob.wizardry.util.SpellModifiers;
|
|
import electroblob.wizardry.util.WizardryUtilities;
|
|
import net.minecraft.block.IGrowable;
|
|
import net.minecraft.block.state.IBlockState;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.EnumAction;
|
|
import net.minecraft.item.ItemDye;
|
|
import net.minecraft.util.EnumHand;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.world.World;
|
|
|
|
public class GrowthAura extends Spell {
|
|
|
|
public GrowthAura(){
|
|
super(Tier.APPRENTICE, 20, Element.EARTH, "growth_aura", SpellType.UTILITY, 50, EnumAction.NONE, false);
|
|
}
|
|
|
|
@Override
|
|
public boolean doesSpellRequirePacket(){
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean cast(World world, EntityPlayer caster, EnumHand hand, int ticksInUse, SpellModifiers modifiers){
|
|
|
|
boolean flag = false;
|
|
|
|
for(int i = -2; i < 1; i++){
|
|
|
|
for(int j = -1; j < 2; j++){
|
|
|
|
int x = (int)caster.posX + i;
|
|
int y = WizardryUtilities.getNearestFloorLevelC(world,
|
|
new BlockPos(caster.posX + i, caster.posY, caster.posZ + j), 2) - 1;
|
|
int z = (int)caster.posZ + j;
|
|
|
|
BlockPos pos = new BlockPos(x, y, z);
|
|
|
|
if(y > -1 && caster.getDistance(x, y, z) <= 2){
|
|
|
|
IBlockState state = world.getBlockState(pos);
|
|
|
|
if(state.getBlock() instanceof IGrowable){
|
|
|
|
IGrowable igrowable = (IGrowable)state.getBlock();
|
|
|
|
if(igrowable.canGrow(world, pos, state, world.isRemote)){
|
|
|
|
if(!world.isRemote){
|
|
if(igrowable.canUseBonemeal(world, world.rand, pos, state)){
|
|
igrowable.grow(world, world.rand, pos, state);
|
|
}
|
|
}else{
|
|
// Yes, it's meant to be 0, and it automatically changes it to 15.
|
|
ItemDye.spawnBonemealParticles(world, pos, 0);
|
|
}
|
|
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(flag) WizardryUtilities.playSoundAtPlayer(caster, WizardrySounds.SPELL_HEAL, 0.7F,
|
|
world.rand.nextFloat() * 0.4F + 1.0F);
|
|
return flag;
|
|
}
|
|
|
|
}
|