本帖最后由 憨憨冰棍 于 2020-9-4 12:58 编辑
比如说获取到小麦的生长进度,熔炉中的物品等
像banitem 插件这种 获取到 Burntiem 的值 或者列出全部的 NBT路径(如果麻烦的话 这个我可以自己研究 )
主要是 不知道怎么才能 实现 NBTTagCompound nbt = new NBTTagCompound();
bukkit.craftbukkit.v1_7_R4
比如说获取到小麦的生长进度,熔炉中的物品等
像banitem 插件这种 获取到 Burntiem 的值 或者列出全部的 NBT路径(如果麻烦的话 这个我可以自己研究 )
主要是 不知道怎么才能 实现 NBTTagCompound nbt = new NBTTagCompound();
bukkit.craftbukkit.v1_7_R4
nbtedit
如果是最新版本,请对着物品使用F3+i
获取NMS的物品然后获取
结城希亚 发表于 2020-9-4 14:09
https://www.mcbbs.net/thread-984759-1-1.html
参考这里的代码
NBTAPI在启动时有报错 1.7.10 应该不可用
结城希亚 发表于 2020-9-4 14:22
https://github.com/tr7zw/Item-NBT-API/issues/90
我的英文不好 里面的意思是 报错不影响使用嘛
结城希亚 发表于 2020-9-4 14:48
我英文也不好
可以正常用
- Caused by: de.tr7zw.nbtapi.NbtApiException: Method not loaded! 'NMS_WORLD_GET_TILEENTITY_1_7_10'
- at de.tr7zw.nbtapi.utils.nmsmappings.ReflectionMethod.run(ReflectionMethod.java:154) ~[?:?]
- at de.tr7zw.nbtapi.NBTReflectionUtil.getTileEntityNBTTagCompound(NBTReflectionUtil.java:224) ~[?:?]
- at de.tr7zw.nbtapi.NBTTileEntity.getCompound(NBTTileEntity.java:36) ~[?:?]
- at de.tr7zw.nbtapi.NBTReflectionUtil.getData(NBTReflectionUtil.java:568) ~[?:?]
- at de.tr7zw.nbtapi.NBTCompound.getShort(NBTCompound.java:244) ~[?:?]
- at com.FBinggun.NBTS.Ls.hujiao(Ls.java:25) ~[?:?]
- at sun.reflect.GeneratedMethodAccessor504.invoke(Unknown Source) ~[?:?]
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
- at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
- at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.1
- 0-R0.1-SNAPSHOT]
- ... 16 more
NBTTileEntity nbt = new NBTTileEntity(e.getClickedBlock().getState());
System.out.println(nbt.getShort("growth"));
蟹蟹大佬,我正巧需要
方块没有NBT信息!!!
方块只有方块状态!!!
欲保存NBT请使用方块实体!!
方块只有方块状态!!!
欲保存NBT请使用方块实体!!
本帖最后由 憨憨冰棍 于 2020-9-5 10:16 编辑
有没有什么调用的方法 详细操作的方法 我想获取到 农业 农作物架中的种子信息
洞穴夜莺 发表于 2020-9-5 09:54
方块没有NBT信息!!!
方块只有方块状态!!!
欲保存NBT请使用方块实体!! ...
有没有什么调用的方法 详细操作的方法 我想获取到 农业 农作物架中的种子信息
本帖最后由 William_Shi 于 2020-9-5 10:31 编辑
TileEntity操作复杂,属于NMS内容,Bukkit根本没有TileEntity,只有介于BlockState块状态,和TileEntity之间的不伦不类的TileState。通过TileState获取TileEntity,还不如直接走CraftWorld,当然不同版本通过CraftWorld获取TileEntity的方法不太一样。(1.12.2的BukkitAPI并没有TileState接口,但是其在高版本的实现类,仍然存在,且意义相同。所以本质上是可以使用TileState的实现类的,但是1.12.2显然采用CraftWorld方便些,而高版本应该是用TileState方便)
憨憨冰棍 发表于 2020-9-5 10:12
有没有什么调用的方法 详细操作的方法 我想获取到 农业 农作物架中的种子信息 ...
TileEntity操作复杂,属于NMS内容,Bukkit根本没有TileEntity,只有介于BlockState块状态,和TileEntity之间的不伦不类的TileState。通过TileState获取TileEntity,还不如直接走CraftWorld,当然不同版本通过CraftWorld获取TileEntity的方法不太一样。(1.12.2的BukkitAPI并没有TileState接口,但是其在高版本的实现类,仍然存在,且意义相同。所以本质上是可以使用TileState的实现类的,但是1.12.2显然采用CraftWorld方便些,而高版本应该是用TileState方便)
憨憨冰棍 发表于 2020-9-5 10:12
有没有什么调用的方法 详细操作的方法 我想获取到 农业 农作物架中的种子信息 ...
如果是用Mod的话建议去看看Mod留出的API
然后用NMS获取TileEntity(方块实体)对象进行操作
洞穴夜莺 发表于 2020-9-5 10:34
如果是用Mod的话建议去看看Mod留出的API
然后用NMS获取TileEntity(方块实体)对象进行操作 ...
Bukkit 能调用mod嘛?好像不行吧
憨憨冰棍 发表于 2020-9-5 10:36
Bukkit 能调用mod嘛?好像不行吧
已知一些服务端是允许插件调用Mod的
因为Mod和NMS内容共用同一个ClassLoader(而插件是独立的PluginClassLoader)
所以理论上如果服务器核心没有编写额外的权限检查来禁止插件加载Mod类,那么插件访问Mod和访问NMS的能力是一样的