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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
package gtPlusPlus.xmod.gregtech.api.interfaces.internal;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraftforge.event.world.BlockEvent;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.items.MetaGeneratedTool;
import gtPlusPlus.xmod.gregtech.api.items.GTMetaTool;
/**
* The Stats for GT Tools. Not including any Material Modifiers.
* <p/>
* And this is supposed to not have any ItemStack Parameters as these are generic Stats.
*/
public interface IToolStats extends gregtech.api.interfaces.IToolStats {
/**
* Called when aPlayer crafts this Tool
*/
@Override
void onToolCrafted(ItemStack aStack, EntityPlayer aPlayer);
/**
* Called when this gets added to a Tool Item
*/
void onStatsAddedToTool(GTMetaTool gregtech_MetaTool, int aID);
/**
* @return Damage the Tool receives when breaking a Block. 100 is one Damage Point (or 100 EU).
*/
@Override
int getToolDamagePerBlockBreak();
/**
* @return Damage the Tool receives when converting the drops of a Block. 100 is one Damage Point (or 100 EU).
*/
@Override
int getToolDamagePerDropConversion();
/**
* @return Damage the Tool receives when being used as Container Item. 100 is one use, however it is usually 8 times
* more than normal.
*/
@Override
int getToolDamagePerContainerCraft();
/**
* @return Damage the Tool receives when being used as Weapon, 200 is the normal Value, 100 for actual Weapons.
*/
@Override
int getToolDamagePerEntityAttack();
/**
* @return Basic Quality of the Tool, 0 is normal. If increased, it will increase the general quality of all Tools
* of this Type. Decreasing is also possible.
*/
@Override
int getBaseQuality();
/**
* @return The Damage Bonus for this Type of Tool against Mobs. 1.0F is normal punch.
*/
@Override
float getBaseDamage();
/**
* @return This gets the Hurt Resistance time for Entities getting hit. (always does 1 as minimum)
*/
@Override
int getHurtResistanceTime(int aOriginalHurtResistance, Entity aEntity);
/**
* @return This is a multiplier for the Tool Speed. 1.0F = no special Speed.
*/
@Override
float getSpeedMultiplier();
/**
* @return This is a multiplier for the Tool Speed. 1.0F = no special Durability.
*/
@Override
float getMaxDurabilityMultiplier();
@Override
DamageSource getDamageSource(EntityLivingBase aPlayer, Entity aEntity);
@Override
String getMiningSound();
@Override
String getCraftingSound();
@Override
String getEntityHitSound();
@Override
String getBreakingSound();
@Override
Enchantment[] getEnchantments(ItemStack aStack);
@Override
int[] getEnchantmentLevels(ItemStack aStack);
/**
* @return If this Tool can be used for blocking Damage like a Sword.
*/
@Override
boolean canBlock();
/**
* @return If this Tool can be used as an RC Crowbar.
*/
@Override
boolean isCrowbar();
/**
* @return If this Tool can be used as an BC Wrench.
*/
@Override
boolean isWrench();
/**
* @return If this Tool can be used as Weapon i.e. if that is the main purpose.
*/
@Override
boolean isWeapon();
/**
* @return If this Tool is a Ranged Weapon. Return false at isWeapon unless you have a Blade attached to your
* Bow/Gun or something
*/
@Override
boolean isRangedWeapon();
/**
* @return If this Tool can be used as Weapon i.e. if that is the main purpose.
*/
@Override
boolean isMiningTool();
/**
* aBlock.getHarvestTool(aMetaData) can return the following Values for example. "axe", "pickaxe", "sword",
* "shovel", "hoe", "grafter", "saw", "wrench", "crowbar", "file", "hammer", "plow", "plunger", "scoop",
* "screwdriver", "sense", "scythe", "softhammer", "cutter", "plasmatorch"
*
* @return If this is a minable Block. Tool Quality checks (like Diamond Tier or something) are separate from this
* check.
*/
@Override
boolean isMinableBlock(Block aBlock, byte aMetaData);
/**
* This lets you modify the Drop List, when this type of Tool has been used.
*
* @return the Amount of modified Items.
*/
@Override
int convertBlockDrops(List<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX, int aY,
int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent);
/**
* @return Returns a broken Version of the Item.
*/
@Override
ItemStack getBrokenItem(ItemStack aStack);
/**
* @return the Damage actually done to the Mob.
*/
@Override
float getNormalDamageAgainstEntity(float aOriginalDamage, Entity aEntity, ItemStack aStack, EntityPlayer aPlayer);
/**
* @return the Damage actually done to the Mob.
*/
@Override
float getMagicDamageAgainstEntity(float aOriginalDamage, Entity aEntity, ItemStack aStack, EntityPlayer aPlayer);
@Override
IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack);
@Override
short[] getRGBa(boolean aIsToolHead, ItemStack aStack);
/**
* Called when this gets added to a Tool Item
*/
@Override
void onStatsAddedToTool(MetaGeneratedTool aItem, int aID);
}
|