ldw0711
本帖最后由 ldw0711 于 2020-4-18 18:31 编辑

RT
  1. Player player = (Player) sender;
  2. ItemStack item = player.getItemInHand();

  3. AND THEN?
复制代码

已解决:
  1. String name = item.getType().toString();
复制代码



嘉晚饭,赢
首先就是
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法

然后拿到ItemStack对象以后可以调用
getItemMeta()获取ItemMeta对象,然后再调用ItemMeta的getDisplayName()方法

这些都在javadoc里面有写,提问前请详细阅读javadoc谢谢

ldw0711
wjwrh 发表于 2020-4-17 20:03
首先就是
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法

谢谢啦
刚尝试着写插件 看javadoc不太清楚看哪里

ldw0711
本帖最后由 ldw0711 于 2020-4-17 20:42 编辑
wjwrh 发表于 2020-4-17 20:03
首先就是
这个方法已经是Deprecated了,请使用PlayerInventory接口的getItemInMainHand方法


还是不行 返回值为null

与下图情况相同

嘉晚饭,赢
ldw0711 发表于 2020-4-17 20:39
还是不行 返回值为null

与下图情况相同

那就先用hasDisplayName()检测一下啊

java30433
if ((ItemStack != null || ItemStack.getType.equals(Material.AIR)) && ItemStack.hasDisplayName())

William_Shi
ldw0711 发表于 2020-4-17 20:39
还是不行 返回值为null

与下图情况相同

那么他就没有自定义名称
你如果非要输出
要不然直接把material输出出来(可以把下划线替换成空格、大小写转换,来变得好看一点)
要不然,直接读写语言文件吧,可以支持所有mc支持的语言

ldw0711
William_Shi 发表于 2020-4-17 21:06
那么他就没有自定义名称
你如果非要输出
要不然直接把material输出出来(可以把下划线替换成空格、大小写 ...

可能是我表达的有问题吧.... 比如拿在手里的是个苹果 我怎么得到 "APPLE" 这个String

William_Shi
ldw0711 发表于 2020-4-18 17:30
可能是我表达的有问题吧.... 比如拿在手里的是个苹果 我怎么得到 "APPLE" 这个String ...

这不就是Material吗

ChapterII
可以GetMatetial
(水贴)

ldw0711
解决方法:
  1. Player player = (Player) sender;
  2. ItemStack item = player.getItemInHand();//1.12及以下

  3. String name = item.getType().toString();
复制代码