aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil/xmod/ic2/item/RotorIridium.java
blob: a4037410d5c853c5f40cca18ee79d4965e60e3f2 (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package miscutil.xmod.ic2.item;

import ic2.api.item.IKineticRotor;
import ic2.core.block.kineticgenerator.gui.GuiWaterKineticGenerator;
import ic2.core.block.kineticgenerator.gui.GuiWindKineticGenerator;
import ic2.core.init.InternalName;
import ic2.core.util.StackUtil;

import java.util.List;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;

public class RotorIridium extends RotorBase{

	private final int maxWindStrength;
	private final int minWindStrength;
	private final int radius;
	private final float efficiency;
	private final ResourceLocation renderTexture;
	private final boolean water;	

	public RotorIridium(InternalName internalName, int Radius, int durability, float efficiency, int minWindStrength, int maxWindStrength, ResourceLocation RenderTexture)
	{
		super(internalName, Radius, durability, efficiency, minWindStrength, maxWindStrength, RenderTexture);

		
		
		setMaxStackSize(1);
		setMaxDamage(Integer.MAX_VALUE);

		this.radius = Radius;
		this.efficiency = efficiency;
		this.renderTexture = RenderTexture;
		this.minWindStrength = minWindStrength;
		this.maxWindStrength = maxWindStrength;
		this.water = (internalName != InternalName.itemwoodrotor);
	}

	@Override
	public void addInformation(ItemStack itemStack, EntityPlayer player, List info, boolean b)
	{
		info.add(StatCollector.translateToLocalFormatted("ic2.itemrotor.wind.info", new Object[] { Integer.valueOf(this.minWindStrength), Integer.valueOf(this.maxWindStrength) }));
		IKineticRotor.GearboxType type = null;
		if ((Minecraft.getMinecraft().currentScreen != null) && ((Minecraft.getMinecraft().currentScreen instanceof GuiWaterKineticGenerator))) {
			type = IKineticRotor.GearboxType.WATER;
		} else if ((Minecraft.getMinecraft().currentScreen != null) && ((Minecraft.getMinecraft().currentScreen instanceof GuiWindKineticGenerator))) {
			type = IKineticRotor.GearboxType.WIND;
		}
		if (type != null) {
			//info.add(StatCollector.translateToLocal("ic2.itemrotor.fitsin." + isAcceptedType(itemStack, type)));
		}
	}

	@Override
	public String getTextureFolder()
	  {
	    return "rotors";
	  }
	  
	  @Override
	public int getDiameter(ItemStack stack)
	  {
	    return this.radius;
	  }
	  
	  @Override
	public ResourceLocation getRotorRenderTexture(ItemStack stack)
	  {
	    return this.renderTexture;
	  }
	  
	  @Override
	public float getEfficiency(ItemStack stack)
	  {
	    return this.efficiency;
	  }
	  
	  @Override
	public int getMinWindStrength(ItemStack stack)
	  {
	    return this.minWindStrength;
	  }
	  
	  @Override
	public int getMaxWindStrength(ItemStack stack)
	  {
	    return this.maxWindStrength;
	  }
	  
	  public boolean isAcceptedType(ItemStack stack, IKineticRotor.GearboxType type)
	  {
	    return (type == IKineticRotor.GearboxType.WIND) || (this.water);
	  }
	
	    
	    @Override
	  public void setCustomDamage(ItemStack stack, int damage)
	    {
	      NBTTagCompound nbt = StackUtil.getOrCreateNbtData(stack);
	      nbt.setInteger("advDmg", 0);
	      
	      int maxStackDamage = stack.getMaxDamage();
	      if (maxStackDamage > 2) {
	        //stack.setItemDamage(1 + (int)Util.map(damage, this.maxDmg, maxStackDamage - 2));
	      }
	    }
	    
	    @Override
	  public boolean applyCustomDamage(ItemStack stack, int damage, EntityLivingBase src)
	    {
	      setCustomDamage(stack, getCustomDamage(stack) + damage);
	      return true;
	    }
	}