2017-04-21 41 views
0

我试图让项目在右键单击时被损坏。唯一的问题是......好的,错误是这个问题的标题......而且快速修复是删除@Override注释,但它不会实际执行任何操作......以下是我的代码:类型ItemVoidPickaxe的onItemRightClick方法必须覆盖或实现一个超类型方法

package com.AFranklin78000.VoidMod.items; 

import javax.xml.ws.Action; 

import com.AFranklin78000.VoidMod.Refrence; 
import com.AFranklin78000.VoidMod.VoidMod; 

import net.minecraft.entity.player.EntityPlayer; 
import net.minecraft.entity.player.EntityPlayerMP; 
import net.minecraft.item.Item; 
import net.minecraft.item.ItemPickaxe; 
import net.minecraft.item.ItemStack; 
import net.minecraft.server.MinecraftServer; 
import net.minecraft.util.ActionResult; 
import net.minecraft.util.EnumHand; 
import net.minecraft.util.ResourceLocation; 
import net.minecraft.world.World; 
import net.minecraftforge.fml.common.FMLCommonHandler; 
import net.minecraftforge.fml.common.Mod.EventHandler; 

public class ItemVoidPickaxe extends ItemPickaxe { 

public ItemVoidPickaxe(ToolMaterial material, String unlocalizedName) { 
    super(material); 
    this.setUnlocalizedName(unlocalizedName); 
    this.setRegistryName(new ResourceLocation(Refrence.MODID, unlocalizedName)); 
    this.setCreativeTab(VoidMod.tabVoidMod); 
} 


@Override 
public public ItemStack onItemRightClick(ItemStack itemstack, World worldIn, EntityPlayer playerIn, EnumHand handIn) { 

    if (true) { 
     if (playerIn instanceof EntityPlayerMP) { 
      MinecraftServer minecraftserver = FMLCommonHandler.instance().getMinecraftServerInstance(); 
      if (minecraftserver != null) 
       minecraftserver.getCommandManager().executeCommand((EntityPlayerMP) playerIn, "gamerule sendCommandFeedback false"); 
       minecraftserver.getCommandManager().executeCommand((EntityPlayerMP) playerIn, "particle portal ~ ~1 ~ 0 0 0 2.5 5000"); 
       minecraftserver.getCommandManager().executeCommand((EntityPlayerMP) playerIn, "fill ~5 ~5 ~5 ~-5 ~ ~-5 air 0 destroy"); 
     } 
    } 
    return onItemRightClick(itemstack, worldIn, playerIn, handIn); 
} 


} 

这是Java代码。这是一个Gradle ...事情...

所以,如果你可以帮助,那将是惊人的!

记住,我不是在编码尚未很好...

回答

0

好吧,事实证明,我需要使用:playerIn.getHeldItemMainhand().damageItem(1, playerIn);

相反的:itemstack.damageItem(1, playerIn);

0

好了,我没有什么做摇篮,但在阅读您的错误信息,不应该你的方法是这样的?

@Override 
public ItemVoidPickaxe onItemRightClick(ItemStack itemstack, World worldIn, EntityPlayer playerIn, EnumHand handIn) { 
    super(...); 
    // the rest of the code 
} 

这似乎在某种程度上,你是混合起来的方法......

+0

我不知道那!谢谢! – AFranklin78000

+0

等等......你把什么放在'super(“Here”)里面;' – AFranklin78000

+0

正如我告诉过你的,我对Gradle没有任何经验。我只知道如何在Java中编写代码并解释错误消息。我建议你看看ItemVoidPickaxe和ItemPickaxe类。某处你会找到构造函数。那么应该清楚你可以放什么。也许只要调用“super();”就足够了。试试吧。 – DiabolicWords

相关问题