Playing with secondary effects provided by the offhand.
This commit is contained in:
parent
000ef44068
commit
ed42650c2e
|
@ -0,0 +1,12 @@
|
||||||
|
package WayofTime.bloodmagic.api.iface;
|
||||||
|
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||||
|
|
||||||
|
public interface ISentientSwordEffectProvider
|
||||||
|
{
|
||||||
|
public boolean applyOnHitEffect(EnumDemonWillType type, ItemStack swordStack, ItemStack providerStack, EntityLivingBase attacker, EntityLivingBase target);
|
||||||
|
|
||||||
|
public boolean providesEffectForWill(EnumDemonWillType type);
|
||||||
|
}
|
|
@ -1,17 +1,22 @@
|
||||||
package WayofTime.bloodmagic.item.sigil;
|
package WayofTime.bloodmagic.item.sigil;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.init.MobEffects;
|
||||||
import net.minecraft.init.SoundEvents;
|
import net.minecraft.init.SoundEvents;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.SoundCategory;
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
|
import WayofTime.bloodmagic.api.iface.ISentientSwordEffectProvider;
|
||||||
|
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
|
||||||
public class ItemSigilAir extends ItemSigilBase
|
public class ItemSigilAir extends ItemSigilBase implements ISentientSwordEffectProvider
|
||||||
{
|
{
|
||||||
public ItemSigilAir()
|
public ItemSigilAir()
|
||||||
{
|
{
|
||||||
|
@ -48,4 +53,17 @@ public class ItemSigilAir extends ItemSigilBase
|
||||||
|
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean applyOnHitEffect(EnumDemonWillType type, ItemStack swordStack, ItemStack providerStack, EntityLivingBase attacker, EntityLivingBase target)
|
||||||
|
{
|
||||||
|
target.addPotionEffect(new PotionEffect(MobEffects.levitation, 200, 0));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean providesEffectForWill(EnumDemonWillType type)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,10 @@
|
||||||
package WayofTime.bloodmagic.item.soul;
|
package WayofTime.bloodmagic.item.soul;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import java.util.ArrayList;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import java.util.Arrays;
|
||||||
import WayofTime.bloodmagic.api.iface.IActivatable;
|
import java.util.List;
|
||||||
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
|
||||||
import WayofTime.bloodmagic.api.soul.IDemonWill;
|
|
||||||
import WayofTime.bloodmagic.api.soul.IDemonWillWeapon;
|
|
||||||
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
|
||||||
import WayofTime.bloodmagic.client.IMeshProvider;
|
|
||||||
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
|
||||||
import WayofTime.bloodmagic.registry.ModItems;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
|
||||||
|
|
||||||
import com.google.common.collect.HashMultimap;
|
import javax.annotation.Nullable;
|
||||||
import com.google.common.collect.Multimap;
|
|
||||||
|
|
||||||
import net.minecraft.client.renderer.ItemMeshDefinition;
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
@ -34,11 +24,22 @@ import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IActivatable;
|
||||||
|
import WayofTime.bloodmagic.api.iface.ISentientSwordEffectProvider;
|
||||||
|
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||||
|
import WayofTime.bloodmagic.api.soul.IDemonWill;
|
||||||
|
import WayofTime.bloodmagic.api.soul.IDemonWillWeapon;
|
||||||
|
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
|
import WayofTime.bloodmagic.registry.ModItems;
|
||||||
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import com.google.common.collect.HashMultimap;
|
||||||
import java.util.ArrayList;
|
import com.google.common.collect.Multimap;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IActivatable, IMeshProvider
|
public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IActivatable, IMeshProvider
|
||||||
{
|
{
|
||||||
|
@ -57,6 +58,31 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IA
|
||||||
setCreativeTab(BloodMagic.tabBloodMagic);
|
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker)
|
||||||
|
{
|
||||||
|
if (super.hitEntity(stack, target, attacker))
|
||||||
|
{
|
||||||
|
if (attacker instanceof EntityPlayer)
|
||||||
|
{
|
||||||
|
EntityPlayer attackerPlayer = (EntityPlayer) attacker;
|
||||||
|
ItemStack offStack = attackerPlayer.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND);
|
||||||
|
if (offStack != null && offStack.getItem() instanceof ISentientSwordEffectProvider)
|
||||||
|
{
|
||||||
|
ISentientSwordEffectProvider provider = (ISentientSwordEffectProvider) offStack.getItem();
|
||||||
|
if (provider.providesEffectForWill(EnumDemonWillType.DEFAULT))
|
||||||
|
{
|
||||||
|
provider.applyOnHitEffect(EnumDemonWillType.DEFAULT, stack, offStack, attacker, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public EnumDemonWillType getCurrentType(ItemStack stack)
|
public EnumDemonWillType getCurrentType(ItemStack stack)
|
||||||
{
|
{
|
||||||
return EnumDemonWillType.DEFAULT;
|
return EnumDemonWillType.DEFAULT;
|
||||||
|
|
Loading…
Reference in a new issue