diff options
| author | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2015-04-26 17:39:03 +0100 |
|---|---|---|
| committer | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2015-04-26 17:39:03 +0100 |
| commit | d13dec851885e075aa67c68dc0a459f3b428db49 (patch) | |
| tree | 28266412ebb4b30ed4ff7671897d96b6af5f819c /src/main/java/darkknight/jewelrycraft/effects | |
| parent | e5d92a544eda969a8b29a626cf111de803706d0e (diff) | |
Jewelrycraft 2 ready for alpha release! Yaaay :D
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/effects')
4 files changed, 217 insertions, 20 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java b/src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java new file mode 100644 index 0000000..531a1c1 --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java @@ -0,0 +1,95 @@ +package darkknight.jewelrycraft.effects; + +import java.util.Iterator; +import java.util.List; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityTNTPrimed; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import darkknight.jewelrycraft.api.ModifierEffects; +import darkknight.jewelrycraft.item.ItemBracelet; +import darkknight.jewelrycraft.item.ItemEarrings; +import darkknight.jewelrycraft.item.ItemNecklace; +import darkknight.jewelrycraft.item.ItemRing; +import darkknight.jewelrycraft.util.JewelryNBT; +import darkknight.jewelrycraft.util.PlayerUtils; +import darkknight.jewelrycraft.util.Variables; + +public class EffectEnderPearl extends ModifierEffects +{ + public EffectEnderPearl() + { + super(new ItemStack(Items.ender_pearl)); + } + + @Override + public void action(ItemStack item, EntityPlayer player, Item jewelry) + { + boolean exists = JewelryNBT.doesModifierExist(item, modifier); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + if (jewelry instanceof ItemEarrings && exists){ + AxisAlignedBB axisalignedbb = player.boundingBox.expand(2.0D, 2.0D, 2.0D); + List list = player.worldObj.getEntitiesWithinAABB(EntityArrow.class, axisalignedbb); + if (!player.worldObj.isRemote && list != null && !list.isEmpty()){ + Iterator iterator = list.iterator(); + while (iterator.hasNext()){ + EntityArrow arrow = (EntityArrow)iterator.next(); + if (arrow.shootingEntity == null || !(arrow.shootingEntity.equals(player))) + // Negative earrings + if (rand.nextInt(30) == 0){ + arrow.worldObj.createExplosion(new EntityTNTPrimed(arrow.worldObj), arrow.posX, arrow.posY, arrow.posZ, 2F, true); + arrow.setDead(); + } + // Positive earrings + else arrow.setPosition(arrow.posX + rand.nextInt(16) - rand.nextInt(16), arrow.posY + rand.nextInt(16), arrow.posZ + rand.nextInt(16) - rand.nextInt(16)); + } + } + } + // Negative Necklace + if (jewelry instanceof ItemNecklace && exists) player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60, -10, true)); + // Negative bracelet + if (jewelry instanceof ItemBracelet && exists && player.isInWater()) player.setPositionAndUpdate(player.posX + rand.nextInt(16) - rand.nextInt(16), player.posY + rand.nextInt(4), player.posZ + rand.nextInt(16) - rand.nextInt(16)); + } + + @Override + public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount) + { + boolean exists = JewelryNBT.doesModifierExist(item, modifier); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + // Positive Necklace + if (jewelry instanceof ItemNecklace && exists && source.getEntity() != null) source.getEntity().attackEntityFrom(source, amount); + // Positive bracelet + if (jewelry instanceof ItemBracelet && exists && !player.worldObj.isRemote){ + int id = player.worldObj.provider.dimensionId; + if (player.getHealth() <= 6F) if (player.getBedLocation(id) != null) player.setPositionAndUpdate(player.getBedLocation(id).posX, player.getBedLocation(id).posY, player.getBedLocation(id).posZ); + else player.setPositionAndUpdate(player.worldObj.getSpawnPoint().posX, player.worldObj.getSpawnPoint().posY, player.worldObj.getSpawnPoint().posZ); + } + } + + public void onEntityAttacked(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount) + { + boolean exists = JewelryNBT.doesModifierExist(item, modifier); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + NBTTagCompound enemyData = target.getEntityData(); + if (jewelry instanceof ItemRing && exists){ + // Negative ring + if (target instanceof EntityEnderman) player.addPotionEffect(new PotionEffect(Potion.weakness.id, 400, 2, true)); + // Positive ring + else target.setPosition(target.posX + rand.nextInt(16) - rand.nextInt(16), target.posY + rand.nextInt(4), target.posZ + rand.nextInt(16) - rand.nextInt(16)); + } + } + + public boolean onEntityAttackedCacellable(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount) + { + return false; + } +} diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java b/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java index 3a68957..c9cdf06 100644 --- a/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java +++ b/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java @@ -65,18 +65,20 @@ public class EffectFeather extends ModifierEffects boolean exists = JewelryNBT.doesModifierExist(item, modifier); NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); NBTTagCompound enemyData = target.getEntityData(); - if (jewelry instanceof ItemRing && exists && enemyData.getInteger("reAttacked") == 0){ - // Negative ring - enemyData.setInteger("reAttacked", enemyData.getInteger("reAttacked") + 1); - target.attackEntityFrom(DamageSource.causePlayerDamage(player), amount / (2F + (JewelryNBT.numberOfModifiers(item)-1)*0.1F)); - // Positive ring - if (rand.nextInt(2) == 0){ - enemyData.setInteger("stunTime", 51 - JewelryNBT.numberOfModifiers(item)); - enemyData.setBoolean("stunned", true); + if (jewelry instanceof ItemRing && exists){ + if (enemyData.getInteger("reAttacked") == 0){ + // Negative ring + enemyData.setInteger("reAttacked", enemyData.getInteger("reAttacked") + 1); + target.attackEntityFrom(DamageSource.causePlayerDamage(player), amount / (2F + (JewelryNBT.numberOfModifiers(item) - 1) * 0.1F)); + // Positive ring + if (rand.nextInt(2) == 0){ + enemyData.setInteger("stunTime", 51 - JewelryNBT.numberOfModifiers(item)); + enemyData.setBoolean("stunned", true); + } + playerInfo.setBoolean("weakDamage", true); } - playerInfo.setBoolean("weakDamage", true); + if (enemyData.getInteger("reAttacked") == 1) enemyData.setInteger("reAttacked", 0); } - if (enemyData.getInteger("reAttacked") == 1) enemyData.setInteger("reAttacked", 0); } @Override @@ -90,8 +92,8 @@ public class EffectFeather extends ModifierEffects playerInfo.setBoolean("negateDamage", true); } // Negative necklace - if (jewelry instanceof ItemNecklace && exists && (source == DamageSource.inFire || source == DamageSource.onFire || source == DamageSource.lava) && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (3F + (JewelryNBT.numberOfModifiers(item) - 1)*0.1F)); + if (jewelry instanceof ItemNecklace && exists && (source == DamageSource.inFire || source == DamageSource.onFire || source == DamageSource.lava) && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (3F + (JewelryNBT.numberOfModifiers(item) - 1) * 0.1F)); // Negative earrings - if (jewelry instanceof ItemEarrings && exists && source.damageType.equals("arrow") && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (2F + (JewelryNBT.numberOfModifiers(item) - 1)*0.1F)); + if (jewelry instanceof ItemEarrings && exists && source.damageType.equals("arrow") && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (2F + (JewelryNBT.numberOfModifiers(item) - 1) * 0.1F)); } } diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java b/src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java new file mode 100644 index 0000000..68c502d --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java @@ -0,0 +1,102 @@ +package darkknight.jewelrycraft.effects; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import darkknight.jewelrycraft.api.ModifierEffects; +import darkknight.jewelrycraft.damage.DamageSourceList; +import darkknight.jewelrycraft.item.ItemBracelet; +import darkknight.jewelrycraft.item.ItemEarrings; +import darkknight.jewelrycraft.item.ItemNecklace; +import darkknight.jewelrycraft.item.ItemRing; +import darkknight.jewelrycraft.util.JewelryNBT; +import darkknight.jewelrycraft.util.PlayerUtils; +import darkknight.jewelrycraft.util.Variables; + +public class EffectObsidian extends ModifierEffects +{ + public EffectObsidian() + { + super(new ItemStack(Blocks.obsidian)); + } + + @Override + public void action(ItemStack item, EntityPlayer player, Item jewelry) + { + boolean exists = JewelryNBT.doesModifierExist(item, modifier); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + if (jewelry instanceof ItemNecklace && exists){ + // Positive necklace + player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60, 2, true)); + // Negative necklace + if (player.isInWater() && !player.capabilities.isCreativeMode){ + double slowAmount = 0.2D + (JewelryNBT.numberOfModifiers(item) - 1) * 0.05D; + player.motionX *= slowAmount; + player.motionY *= slowAmount; + player.motionZ *= slowAmount; + player.motionY = -0.5D; + if (rand.nextInt(50) == 0) player.attackEntityFrom(DamageSourceList.weak, 2F); + } + } + // Negative bracelet + if (jewelry instanceof ItemBracelet && exists && playerInfo.hasKey("falls") && playerInfo.getInteger("falls") >= 300) player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 60, 1, true)); + // Negative ring + if (jewelry instanceof ItemRing && exists && playerInfo.hasKey("strikes") && playerInfo.getInteger("strikes") >= 200){ + player.addPotionEffect(new PotionEffect(Potion.weakness.id, 60, 0, true)); + player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 60, 1, true)); + } + } + + @Override + public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount) + { + boolean exists = JewelryNBT.doesModifierExist(item, modifier); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + if (jewelry instanceof ItemEarrings && exists && (source == DamageSource.anvil || source.damageType.equals("arrow"))){ + if (playerInfo.hasKey("protected")) playerInfo.setInteger("protected", playerInfo.getInteger("protected") + 1); + else playerInfo.setInteger("protected", 1); + // Positive && Negative earrings + if (playerInfo.getInteger("protected") < 200) playerInfo.setBoolean("negateDamage", true); + else player.attackEntityFrom(DamageSourceList.weak, player.getHealth() * 3F); + } + if (jewelry instanceof ItemBracelet && exists && source == DamageSource.fall){ + if (playerInfo.hasKey("falls")) playerInfo.setInteger("falls", playerInfo.getInteger("falls") + 1); + else playerInfo.setInteger("falls", 1); + // Positive bracelet + if (playerInfo.getInteger("falls") < 300) playerInfo.setBoolean("negateDamage", true); + } + } + + public void onPlayerDead(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry) + { + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + playerInfo.setInteger("falls", 0); + playerInfo.setInteger("strikes", 0); + playerInfo.setInteger("protected", 0); + } + + public void onEntityAttacked(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount) + { + boolean exists = JewelryNBT.doesModifierExist(item, modifier); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + NBTTagCompound enemyData = target.getEntityData(); + // Positive ring + if (jewelry instanceof ItemRing && exists && playerInfo.getInteger("strikes") < 200 && !player.worldObj.isRemote){ + if (enemyData.getInteger("reAttacked") == 0){ + if (playerInfo.hasKey("strikes")) playerInfo.setInteger("strikes", playerInfo.getInteger("strikes") + 1); + else playerInfo.setInteger("strikes", 1); + // Negative ring + enemyData.setInteger("reAttacked", enemyData.getInteger("reAttacked") + 1); + target.attackEntityFrom(DamageSource.causePlayerDamage(player), amount * 2F); + playerInfo.setBoolean("weakDamage", true); + } + if (enemyData.getInteger("reAttacked") == 1) enemyData.setInteger("reAttacked", 0); + } + } +} diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java b/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java index b30fa0c..b49d647 100644 --- a/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java +++ b/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java @@ -5,19 +5,17 @@ import darkknight.jewelrycraft.api.ModifierEffects; public class EffectsList { - private static ModifierEffects blazePowder, enderEye, feather; - private static boolean isInitialized = false; + private static ModifierEffects blazePowder, enderEye, feather, enderPearl, obsidian; /** * @param e */ public static void postInit(FMLPostInitializationEvent e) { - if (!isInitialized){ - blazePowder = new EffectBlazePowder(); - enderEye = new EffectEnderEye(); - feather = new EffectFeather(); - isInitialized = true; - } + blazePowder = new EffectBlazePowder(); + enderEye = new EffectEnderEye(); + feather = new EffectFeather(); + enderPearl = new EffectEnderPearl(); + obsidian = new EffectObsidian(); } } |
