2017-07-27 103 views
0

因此,我正在与我的朋友制作Minecraft服务器,并且遇到了一个我似乎无法修复的错误。我正在做一个帽子命令,所以玩家可以把物品和方块放在头上。所以我试图让它在把它放在头上后从他们的手中移除他们的物品。但我得到这个的空气项目new ItemStack()构造函数ItemStack(Material,int)未定义

The constructor ItemStack(Material, int) is undefined 

这里是我的代码:`

import org.bukkit.ItemStack; 
import net.minecraft.server.v1_8_R3.Material; 

//{Class definition and other methods} 

@Override 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    Player user = (Player) sender; 
    if(sender instanceof Player){ 
     ItemStack userItem = new ItemStack(user.getItemInHand()); 
     if(!userItem.equals(Material.AIR)){  
      user.getInventory().setHelmet(userItem); 
      ItemStack a = new ItemStack(Material.AIR, 1); // Error happens here 
      user.getInventory().setItemInHand(a); 
     } else { 
      user.sendMessage(ChatColor.RED+"Put an item in your hand"); 
     } 


    } 
    return true; 
} 

如果你能解决这个问题,将不胜感激。

+1

是否有可能您没有使用最新版本的Bukkit?你使用什么版本? – Armaiti

+0

我使用spigotmc-1.8.8-R0.1作为Bukkit API,这是我的服务器jar文件 – SSync

+2

如果使用正确的ItemStack类型和材质类型,请检查您的导入。您可能从错误的地方导入 – Kerooker

回答

0

你刚刚发现了错误的东西。 相反进口

import net.minecraft.server.v1_8_R3.Material; 

的需要导入

import org.bukkit.Material; 

或者只是一个简单的解决方法:

更换

if(!userItem.equals(Material.AIR)){  
     user.getInventory().setHelmet(userItem); 
     ItemStack a = new ItemStack(Material.AIR, 1); // Error happens here 
     user.getInventory().setItemInHand(a); 
    } else { 
     user.sendMessage(ChatColor.RED+"Put an item in your hand"); 
    } 

if(!userItem.equals(Material.AIR)){  
     user.getInventory().setHelmet(userItem); 
     user.getInventory().setItemInHand(null); 
    } else { 
     user.sendMessage(ChatColor.RED+"Put an item in your hand"); 
    } 

这两种方法都应该解决这个问题。

将项目插槽设置为空与将其设置为空几乎相同。

2

对于您的问题,什么样的意见进行了讨论,解决办法是要仔细检查你的进口,并确认你从Bukkit API进口都ItemStackMaterial

import org.bukkit.Material; 
import org.bukkit.inventory.ItemStack; 

而是从进口net.minecraft.server.vXX什么这种行为,因为你在做的。

相关问题