我已經將我的問題縮小到以下內容,我需要將字符串轉換爲項目標識符。Java:Minecraft:變量類型轉換
例子:
String str = "pickaxe";
Item pick = str;
這將解決以確定截齒鎬。你怎麼能這樣做?
我已經將我的問題縮小到以下內容,我需要將字符串轉換爲項目標識符。Java:Minecraft:變量類型轉換
例子:
String str = "pickaxe";
Item pick = str;
這將解決以確定截齒鎬。你怎麼能這樣做?
我想你想使用的是一個Hash Map
在你的代碼,你可以創建你的對象
Item pickaxe = new Pickaxe();
Hashmap<String, Item> items = new HashMap<String, Item>();
items.add("pickaxe", pickaxe);
後來的後來,你可以用
items.get("pickaxe");
通常我找回您的物品會爲這種字符串到對象的查找推薦一個枚舉,但我也知道,我的世界中有大量的項目將從遊戲更新更改爲下一個。這意味着將這些around 370 items放入一個枚舉是很多工作。
我的建議:將它們存儲在數據庫或其他不是源代碼的東西中。然後將其加載到像HashMap或List這樣的結構中,第一個查找短名稱更容易,就像joey.enfield所建議的一樣。用一個列表,你必須遍歷整個事物來找到一個匹配名稱的項目。
編輯:
public enum Item {
PICKAXE("pickaxe"),
SHOVEL("shovel"),
BOW("bow");
private String m_shortID;
Item(String shortID){
m_shortID = shortID;
)
static Item lookupByShortID(String shortID){
for(Item i:values()){
if(i.m_shortID.equals(shortID)){
return i;
}
}
return null;
}
}
這裏是一個快速和骯髒的I類熟起來。您應該知道,這段代碼很可能會生成一個不包含EVERY項目的hashmap,因爲最有可能的項目對於getItemDisplayName()具有相同的String值,因此Item.itemsList []中的最後一個將是在hashmap中。另請注意,如果您使用不同的MC語言,它將生成不同的列表,因爲getItemDisplayName()獲取本地化的String。
import java.util.HashMap;
import java.util.Map;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class ItemListByString
{
private Map<String, Item> itemMap;
private static ItemListByString instance = new ItemListByString();
private ItemListByString()
{
itemMap = new HashMap<String, Item>();
for (Item item : Item.itemsList)
if (item != null)
itemMap.put(item.getItemDisplayName(new ItemStack(item, 1, 0)), item);
}
public Item getItemByString(String s)
{
return instance.itemMap.get(s);
}
}
您必須更具體地獲得更好的答案。從我的理解你需要一個枚舉? – SrikanthLingala
是你寫的一個類嗎?對於這個問題抱歉,但我不知道這個minecraft-api。請告訴我們,如果它不是你的班級,請告訴我們包裹 –