我已经将我的问题缩小到以下内容,我需要将字符串转换为项目标识符。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。请告诉我们,如果它不是你的班级,请告诉我们包裹 –