本帖最后由 ldw0711 于 2020-4-18 18:31 编辑 
RT复制代码
已解决:
复制代码
RT
- Player player = (Player) sender;
 
- ItemStack item = player.getItemInHand();
 
 
- AND THEN?
已解决:
- String name = item.getType().toString();
首先就是
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法
然后拿到ItemStack对象以后可以调用
getItemMeta()获取ItemMeta对象,然后再调用ItemMeta的getDisplayName()方法
这些都在javadoc里面有写,提问前请详细阅读javadoc谢谢
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法
然后拿到ItemStack对象以后可以调用
getItemMeta()获取ItemMeta对象,然后再调用ItemMeta的getDisplayName()方法
这些都在javadoc里面有写,提问前请详细阅读javadoc谢谢
wjwrh 发表于 2020-4-17 20:03
首先就是
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法
谢谢啦
刚尝试着写插件 看javadoc不太清楚看哪里
 本帖最后由 ldw0711 于 2020-4-17 20:42 编辑 
还是不行 返回值为null
与下图情况相同
wjwrh 发表于 2020-4-17 20:03
首先就是
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法
还是不行 返回值为null
与下图情况相同
ldw0711 发表于 2020-4-17 20:39
还是不行 返回值为null
与下图情况相同
那就先用hasDisplayName()检测一下啊
if ((ItemStack != null || ItemStack.getType.equals(Material.AIR)) && ItemStack.hasDisplayName())
ldw0711 发表于 2020-4-17 20:39
还是不行 返回值为null
与下图情况相同
那么他就没有自定义名称
你如果非要输出
要不然直接把material输出出来(可以把下划线替换成空格、大小写转换,来变得好看一点)
要不然,直接读写语言文件吧,可以支持所有mc支持的语言
William_Shi 发表于 2020-4-17 21:06
那么他就没有自定义名称
你如果非要输出
要不然直接把material输出出来(可以把下划线替换成空格、大小写 ...
可能是我表达的有问题吧.... 比如拿在手里的是个苹果 我怎么得到 "APPLE" 这个String
ldw0711 发表于 2020-4-18 17:30
可能是我表达的有问题吧.... 比如拿在手里的是个苹果 我怎么得到 "APPLE" 这个String ...
这不就是Material吗
可以GetMatetial
(水贴)
(水贴)
解决方法:
复制代码
- Player player = (Player) sender;
 
- ItemStack item = player.getItemInHand();//1.12及以下
 
 
- String name = item.getType().toString();