2017-07-27 106 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什麼這種行爲,因爲你在做的。

相關問題