- 26
- 1
Начал делать аддон для ic2. Решил сделать бур, он вроде работает, но нет. Когда он садится он сразу ломается, и когда его заряжаешь он не забирает энергию из хранилища, хотя сам и заряжается
В чем может быть проблема?
Основа:
@SuppressWarnings("all")
public class ItemToolBigMiningDrill extends ItemElectricTool {
protected double operationCost;
private Set<Object> toolProperties;
public ItemToolBigMiningDrill(String name, int energyTier, double maxCharge, double transferLimit, boolean providesEnergy, double operationCost) {
super(name, energyTier, maxCharge, transferLimit, providesEnergy);
this.operationCost = operationCost;
this.toolProperties = new HashSet(Arrays.asList(new Object[] { Items.iron_pickaxe, Items.diamond_shovel }));
}
@Override
public int getHarvestLevel(ItemStack stack, String toolClass) {
if ((toolClass.equals("pickaxe")) || (toolClass.equals("shovel"))) {
return this.toolMaterial.getHarvestLevel();
}
return super.getHarvestLevel(stack, toolClass);
}
}
ItemElectric Tools:
public class ItemElectricTool extends ItemTool implements IElectricItem {
// Vars
protected String name;
protected double operationCost;
// -------------- IElectricItem vars -------------- //
protected int energyTier;
protected double maxCharge;
protected double transferLimit;
protected boolean providesEnergy;
// -------------- Constructor -------------- //
public ItemElectricTool(String name, int energyTier, double maxCharge, double transferLimit, boolean providesEnergy) {
super(0.0F, ToolMaterial.IRON, new HashSet());
this.name = name;
this.energyTier = energyTier;
this.maxCharge = maxCharge;
this.transferLimit = transferLimit;
this.providesEnergy = providesEnergy;
setUnlocalizedName(this.name);
setMaxDamage(27);
setMaxStackSize(1);
setNoRepair();
}
// -------------- Item methods -------------- //
@Override
public int getItemEnchantability() {
return 0;
}
@Override
public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
return false;
}
@Override
public boolean isRepairable() {
return false;
}
@Override
public boolean getIsRepairable(ItemStack itemStack1, ItemStack itemStack2) {
return false;
}
@Override
public boolean hitEntity(ItemStack itemstack, EntityLivingBase entityliving, EntityLivingBase entityliving1) {
return true;
}
// -------------- Client item methods -------------- //
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tabs, List itemList) {
// Charged Item
ItemStack chargedItem = new ItemStack(this, 1);
ElectricItem.manager.charge(chargedItem, Double.POSITIVE_INFINITY, Integer.MAX_VALUE, true, false);
itemList.add(chargedItem);
// Depleted Item
ItemStack depletedItem = new ItemStack(this, 1, getMaxDamage());
itemList.add(depletedItem);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister iconRegister) {
this.itemIcon = iconRegister.registerIcon(Main.MODID + ":" + this.name);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(ItemStack itemStack, int pass) {
return this.itemIcon;
}
@Override
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack itemStack, int pass) {
return false;
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean var) {
list.add(StatCollector.translateToLocal("tooltip.tool.PowerTier") + " " + this.energyTier);
}
// -------------- IElectricItem implementation -------------- //
@Override
public boolean canProvideEnergy(ItemStack itemStack) {
return this.providesEnergy;
}
@Override
public Item getChargedItem(ItemStack itemStack) {
return this;
}
@Override
public Item getEmptyItem(ItemStack itemStack) {
return this;
}
@Override
public double getMaxCharge(ItemStack itemStack) {
return this.maxCharge;
}
@Override
public int getTier(ItemStack itemStack) {
return this.energyTier;
}
@Override
public double getTransferLimit(ItemStack itemStack) {
return this.transferLimit;
}
}
Сам предмет:
public class ItemToolBigIridiumDrill extends ItemToolBigMiningDrill {
public ItemToolBigIridiumDrill(String name, String texture, int energyTier, double maxCharge, double transferLimit, boolean providesEnergy, double operationCost) {
super(name, energyTier, maxCharge, transferLimit, providesEnergy, operationCost);
this.setCreativeTab(ConfigInfo.tabAFRebornTools);
this.setTextureName(Main.MODID + ":" + texture);
}
@Override
public float getDigSpeed(ItemStack itemStack, Block block, int meta) {
if (!ElectricItem.manager.canUse(itemStack, this.operationCost)) {
return 1.0F;
}
if (canHarvestBlock(block, itemStack)) {
return 15.0F;
}
return 1.0F;
}
@Override
public boolean canHarvestBlock(Block block, ItemStack stack) {
return (Items.diamond_pickaxe.canHarvestBlock(block, stack) ||
Items.diamond_pickaxe.func_150893_a(stack, block) > 1.0F ||
Items.diamond_shovel.canHarvestBlock(block, stack) ||
Items.diamond_shovel.func_150893_a(stack, block) > 1.0F);
}
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityplayer) {
if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
return itemStack;
}
Map<Integer, Integer> enchantmentMap = new HashMap();
if(EnchantmentHelper.getEnchantmentLevel(Enchantment.silkTouch.effectId, itemStack) == 0) {
enchantmentMap.put(Integer.valueOf(Enchantment.silkTouch.effectId), Integer.valueOf(1));
}
else {
enchantmentMap.put(Integer.valueOf(Enchantment.fortune.effectId), Integer.valueOf(3));
}
EnchantmentHelper.setEnchantments(enchantmentMap, itemStack);
return super.onItemRightClick(itemStack, world, entityplayer);
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tabs, List itemList) {
Map<Integer, Integer> enchantmentMap = new HashMap<Integer, Integer>();
enchantmentMap.put(Integer.valueOf(Enchantment.fortune.effectId), Integer.valueOf(3));
// Charged Item
ItemStack chargedItem = new ItemStack(this, 1);
ElectricItem.manager.charge(chargedItem, Double.POSITIVE_INFINITY, Integer.MAX_VALUE, true, false);
EnchantmentHelper.setEnchantments(enchantmentMap, chargedItem);
NBTTagCompound nbtDataCharged = Util.getOrCreateNbtData(chargedItem);
itemList.add(chargedItem);
// Depleted Item
ItemStack depletedItem = new ItemStack(this, 1);
ElectricItem.manager.charge(depletedItem, 0.0D, Integer.MAX_VALUE, true, false);
EnchantmentHelper.setEnchantments(enchantmentMap, depletedItem);
NBTTagCompound nbtDataDepleted = Util.getOrCreateNbtData(chargedItem);
itemList.add(depletedItem);
}
@SideOnly(Side.CLIENT)
public EnumRarity getRarity(ItemStack itemStack) {
return EnumRarity.epic;
}
}
В чем может быть проблема?