diff --git a/src/main/java/anvil/infinity/abilities/AbilityKill.java b/src/main/java/anvil/infinity/abilities/AbilityKill.java new file mode 100644 index 0000000..071804f --- /dev/null +++ b/src/main/java/anvil/infinity/abilities/AbilityKill.java @@ -0,0 +1,57 @@ +package anvil.infinity.abilities; + +import anvil.infinity.conditions.ICondition; +import anvil.infinity.registry.Effects; +import lucraft.mods.lucraftcore.superpowers.abilities.AbilityAction; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.relauncher.Side; + +public class AbilityKill extends AbilityAction { + + ICondition condition; + + public AbilityKill(EntityLivingBase entity) { + super(entity); + condition = new ICondition() { + @Override + public boolean isFulfilled(EntityLivingBase information) { + return true; + } + }; + } + + public AbilityKill(EntityLivingBase entity, ICondition condition) { + super(entity); + this.condition = condition; + } + + @Override + public boolean action() { + if (condition.isFulfilled(entity)) { + if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + World w = FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld(); + RayTraceResult result = Minecraft.getMinecraft().objectMouseOver; + System.out.println(result.typeOfHit); + if (result.typeOfHit == RayTraceResult.Type.ENTITY) { + Entity e = w.getEntityByID(result.entityHit.getEntityId()); + if (e instanceof EntityLivingBase) { + ((EntityLivingBase) e).addPotionEffect(new PotionEffect(Effects.snapEffect, 1)); + return true; + } + } + } + } + return false; + } + + + +} diff --git a/src/main/java/anvil/infinity/items/ItemSoulStone.java b/src/main/java/anvil/infinity/items/ItemSoulStone.java index f0dd13e..6875819 100644 --- a/src/main/java/anvil/infinity/items/ItemSoulStone.java +++ b/src/main/java/anvil/infinity/items/ItemSoulStone.java @@ -1,8 +1,11 @@ package anvil.infinity.items; import anvil.infinity.abilities.AbilityHasSoulStone; +import anvil.infinity.abilities.AbilityKill; import anvil.infinity.abilities.AbilitySnap; +import anvil.infinity.conditions.ICondition; import anvil.infinity.config.ConfigHandler; +import anvil.infinity.helpers.GauntelHelper; import lucraft.mods.lucraftcore.infinity.EnumInfinityStone; import lucraft.mods.lucraftcore.infinity.ModuleInfinity; import lucraft.mods.lucraftcore.infinity.items.ItemInfinityStone; @@ -15,6 +18,13 @@ import net.minecraft.entity.EntityLivingBase; public class ItemSoulStone extends ItemInfinityStone { + ICondition killCond = new ICondition() { + @Override + public boolean isFulfilled(EntityLivingBase information) { + return GauntelHelper.hasPowerStone(information) && GauntelHelper.hasSpaceStone(information) && GauntelHelper.hasRealityStone(information) && GauntelHelper.hasSoulStone(information); + } + }; + public ItemSoulStone(String name) { this.setTranslationKey(name); this.setRegistryName(StringHelper.unlocalizedToResourceName(name)); @@ -40,6 +50,7 @@ public class ItemSoulStone extends ItemInfinityStone { } abilities.put("healing", new AbilityHealing(entity).setDataValue(AbilityHealing.FREQUENCY, 1)); abilities.put("soul", new AbilityHasSoulStone(entity)); + abilities.put("kill", new AbilityKill(entity, killCond)); abilities.put("snap", new AbilitySnap(entity)); return super.addStoneAbilities(entity, abilities, context); } diff --git a/src/main/java/anvil/infinity/registry/Abilities.java b/src/main/java/anvil/infinity/registry/Abilities.java index 7dc9b81..01b9b8a 100644 --- a/src/main/java/anvil/infinity/registry/Abilities.java +++ b/src/main/java/anvil/infinity/registry/Abilities.java @@ -21,6 +21,7 @@ public class Abilities { e.getRegistry().register(new AbilityEntry(AbilityHasSoulStone.class, new ResourceLocation(Infinity.MOD_ID, "soul"))); e.getRegistry().register(new AbilityEntry(AbilityHasTimeStone.class, new ResourceLocation(Infinity.MOD_ID, "time"))); e.getRegistry().register(new AbilityEntry(AbilityHasMindStone.class, new ResourceLocation(Infinity.MOD_ID, "mind"))); + e.getRegistry().register(new AbilityEntry(AbilityKill.class, new ResourceLocation(Infinity.MOD_ID, "kill"))); e.getRegistry().register(new AbilityEntry(AbilityChangeSnap.class, new ResourceLocation(Infinity.MOD_ID, "changesnap"))); e.getRegistry().register(new AbilityEntry(AbilitySaturation.class, new ResourceLocation(Infinity.MOD_ID, "saturation"))); }