summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/effects/EffectBlazePowder.java
blob: 949d0d860a2e9349116115d2f3412e7661474026 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package darkknight.jewelrycraft.effects;

import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
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;

public class EffectBlazePowder extends ModifierEffects
{
    public EffectBlazePowder()
    {
        super(new ItemStack(Items.blaze_powder));
    }
    
    @Override
    public void action(ItemStack item, EntityPlayer player, Item jewelry)
    {
        int pos = JewelryNBT.doesModifierExist(item, modifier);
        if (jewelry instanceof ItemNecklace && pos != -1){
            //Positive for necklace
            player.extinguish();
            
            //Negative for necklace
            if (player.isInWater()) player.attackEntityFrom(DamageSource.drown, 1f);
        }
        //Negative for bracelet
        if (jewelry instanceof ItemBracelet && pos != -1 && player.isInWater()){
            player.motionX *= 0.6D;
            player.motionY *= 0.6D;
            player.motionZ *= 0.6D;
            player.motionY -= 0.02D;
            if (player.isCollidedHorizontally) player.motionY = 0.30000001192092896D;
        }
            
        //Negative for earrings
        if (jewelry instanceof ItemEarrings && pos != -1){
            if (player.getAir() >= 300) player.setAir(player.getAir() / 2);
            else player.setAir(player.getAir() - 1);            
        }        
    }
    
    @Override
    public boolean onEntityAttackedCacellable(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount)
    {
        int pos = JewelryNBT.doesModifierExist(item, modifier);
        //Balanced for ring
        if (jewelry instanceof ItemRing && pos != -1 && !player.isInWater()) target.setFire(2);
        return false;
    }
    
    @Override
    public boolean onPlayerAttackedCacellable(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount)
    {
//        int pos = JewelryNBT.doesModifierExist(item, modifier);
//        if (jewelry instanceof ItemEarrings && pos != -1 && rand.nextInt(4) == 0) if (source == DamageSource.lava || source == DamageSource.inFire || source == DamageSource.onFire){
//            //Positive for earrings
//            int stackSize = JewelryNBT.modifier(item).get(pos).stackSize;
//            player.heal((float)(0.05 * stackSize));
//            return true;
//        }
//        //Positive for bracelet
//        if (jewelry instanceof ItemBracelet && pos != -1) if (source == DamageSource.inFire || source == DamageSource.onFire || source == DamageSource.lava && player.worldObj.isMaterialInBB(AxisAlignedBB.getBoundingBox(player.boundingBox.minX, player.boundingBox.minY, player.boundingBox.minZ, player.boundingBox.maxX, player.boundingBox.maxY - 0.7, player.boundingBox.maxZ), Material.lava) && !player.worldObj.isMaterialInBB(AxisAlignedBB.getBoundingBox(player.boundingBox.minX, player.boundingBox.minY + 0.9, player.boundingBox.minZ, player.boundingBox.maxX, player.boundingBox.maxY, player.boundingBox.maxZ), Material.lava)) return true;
        return false;
    }
    
    public void onEntityAttacked(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount)
    {
        
    }
    
    public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount)
    {
        int pos = JewelryNBT.doesModifierExist(item, modifier);
        NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft");
        if (jewelry instanceof ItemEarrings && pos != -1 && rand.nextInt(4) == 0) if (source == DamageSource.lava || source == DamageSource.inFire || source == DamageSource.onFire){
            //Positive for earrings
            int stackSize = JewelryNBT.modifier(item).get(pos).stackSize;
            player.heal((float)(0.05 * stackSize));
            playerInfo.setBoolean("negateDamage", true);
        }
        //Positive for bracelet
        if (jewelry instanceof ItemBracelet && pos != -1) if (source == DamageSource.inFire || source == DamageSource.onFire || source == DamageSource.lava && player.worldObj.isMaterialInBB(AxisAlignedBB.getBoundingBox(player.boundingBox.minX, player.boundingBox.minY, player.boundingBox.minZ, player.boundingBox.maxX, player.boundingBox.maxY - 0.7, player.boundingBox.maxZ), Material.lava) && !player.worldObj.isMaterialInBB(AxisAlignedBB.getBoundingBox(player.boundingBox.minX, player.boundingBox.minY + 0.9, player.boundingBox.minZ, player.boundingBox.maxX, player.boundingBox.maxY, player.boundingBox.maxZ), Material.lava)) playerInfo.setBoolean("negateDamage", true);
    }
}