本帖最后由 纯白剑姬 于 2018-8-23 21:11 编辑
本想写一个类似于标记的功能(如:shift+左键能使视线上的生物发光)
问题在于我只想让自己或者朋友看见这个放光轮廓的效果
所以想到用protocolLib发包 让客户端显示指定的生物附上发光药水效果
请问这能实现吗?如果可以我应该调用NMS的哪个类呢?
实在是找不到对应类了,请各位大腿能指点一下,谢谢!
----------------------------------------------------------------------------------------
以上问题已解决 新的问题又出现啦!
当reload后 再尝试发包就会出现报错!
报错如下:
本想写一个类似于标记的功能(如:shift+左键能使视线上的生物发光)
问题在于我只想让自己或者朋友看见这个放光轮廓的效果
所以想到用protocolLib发包 让客户端显示指定的生物附上发光药水效果
请问这能实现吗?如果可以我应该调用NMS的哪个类呢?
实在是找不到对应类了,请各位大腿能指点一下,谢谢!
----------------------------------------------------------------------------------------
以上问题已解决 新的问题又出现啦!
当reload后 再尝试发包就会出现报错!
报错如下:
呜哇 一个人都没有回复诶....
本帖最后由 耗子 于 2018-8-19 20:36 编辑
楼主都用ProtocolLib了,就没有必要调用啥NMS类了。。。
我们需要发送一个实体药水效果包(Entity Effect),其数据结构在这里。
ProtocolLib相关教程在这里。若需要详细代码请回复我。
如果我的答案有帮助的话,请给我最高的评分。
楼主都用ProtocolLib了,就没有必要调用啥NMS类了。。。
我们需要发送一个实体药水效果包(Entity Effect),其数据结构在这里。
ProtocolLib相关教程在这里。若需要详细代码请回复我。
如果我的答案有帮助的话,请给我最高的评分。
耗子 发表于 2018-8-19 20:35
楼主都用ProtocolLib了,就没有必要调用啥NMS类了。。。
我们需要发送一个实体药水效果包(Entity Effect) ...
你好大腿,再打扰一下
我在运行的时候报错了 想问一下哪里写错了吗?
代码如下
- @EventHandler(ignoreCancelled=true)
- public void onPlayerClickEntity(PlayerInteractEntityEvent e){
-
- e.getPlayer().sendMessage("发光!");
- if(isEV){
- setEntityEffect(e.getPlayer(),e.getRightClicked());
- }
- }
-
- public void setEntityEffect(Player p , Entity en){
- PacketContainer packet = new PacketContainer(PacketType.Play.Server.ENTITY_EFFECT);
-
- packet.getIntegers().write(0, en.getEntityId());//Entity ID VarInt
- packet.getBytes().write(0, (byte)24); //Effect ID Byte
- packet.getBytes().write(1, (byte)0); //Amplifier Byte
- packet.getIntegers().write(1, 100); //Duration VarInt
- packet.getBytes().write(2,(byte)0x02); //Flags Byte
-
- try{
- pm.sendServerPacket(p, packet,false);
- } catch (InvocationTargetException ex) {
- ex.printStackTrace();
- }
- }
纯白剑姬 发表于 2018-8-20 00:00
你好大腿,再打扰一下
我在运行的时候报错了 想问一下哪里写错了吗?
代码如下
https://www.spigotmc.org/resources/protocollib.1997/
PacketWrapper
WrapperPlayServerEntityEffect.java
看下里面的实现内容就知道如何设置了
不需要用这个库,看他里面是如何write的就行了←_←
你没报错根本不知道错在哪里
810587921 发表于 2018-8-20 01:37
https://www.spigotmc.org/resources/protocollib.1997/
PacketWrapper
我看到了entity effect的实现和参数 都write进去了。
报错就是看到了我这个setEntityEffect用protocol发包报错了
明天我把报错贴上来吧 谢谢大腿的回复!
810587921 发表于 2018-8-20 01:37
https://www.spigotmc.org/resources/protocollib.1997/
PacketWrapper
大腿你好 我把你发的实现内容一个一个write进去了
结果是发包完全没反应....到底是为什么呢....
还有我发现报错是在reload之后才会出现,reload前就是没反应的(插件正常 发包没任何显示了...)
代码如下
- public void setEntityEffect(Player p , Entity en){
- PacketContainer packet = new PacketContainer(PacketType.Play.Server.ENTITY_EFFECT);
-
- packet.getIntegers().write(0, (int)en.getEntityId()); //Entity ID VarInt
- packet.getBytes().write(0, (byte)(24&255)); //Effect ID Byte
- packet.getBytes().write(1, (byte)(0&255)); //Amplifier Byte
- packet.getIntegers().write(1, (int)100); //Duration VarInt
- packet.getBytes().write(2,(byte)1); //Flags Byte
-
- try{
- pm.sendServerPacket(p, packet,false);
- } catch (InvocationTargetException ex) {
- ex.printStackTrace();
- }
- }
报错如下:
- [16:42:45] [Server thread/ERROR]: Could not pass event PlayerInteractEntityEvent to EagleVision v1.0
- org.bukkit.event.EventException
- at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1537) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PacketPlayInUseEntity.a(SourceFile:69) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PacketPlayInUseEntity.a(SourceFile:13) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
- at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
- at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
- Caused by: java.lang.ExceptionInInitializerError
- at com.comphenix.protocol.injector.netty.InjectionFactory.fromPlayer(InjectionFactory.java:93) ~[?:?]
- at com.comphenix.protocol.injector.netty.ProtocolInjector$4.injectPlayer(ProtocolInjector.java:373) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.initializePlayers(PacketFilterManager.java:946) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.incrementPhases(PacketFilterManager.java:462) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:759) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:745) ~[?:?]
- at com.Dolo.EagleVision.Main.setEntityEffect(Main.java:99) ~[?:?]
- at com.Dolo.EagleVision.Main.onPlayerClickEntity(Main.java:79) ~[?:?]
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
- at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
- at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
- at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- ... 15 more
- Caused by: java.lang.IllegalArgumentException: 'PROTOCOL-0' is already in use
- at io.netty.util.UniqueName.<init>(UniqueName.java:53) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at io.netty.util.AttributeKey.<init>(AttributeKey.java:47) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at io.netty.util.AttributeKey.valueOf(AttributeKey.java:39) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at com.comphenix.protocol.injector.netty.ChannelInjector.<clinit>(ChannelInjector.java:88) ~[?:?]
- at com.comphenix.protocol.injector.netty.InjectionFactory.fromPlayer(InjectionFactory.java:93) ~[?:?]
- at com.comphenix.protocol.injector.netty.ProtocolInjector$4.injectPlayer(ProtocolInjector.java:373) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.initializePlayers(PacketFilterManager.java:946) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.incrementPhases(PacketFilterManager.java:462) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:759) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:745) ~[?:?]
- at com.Dolo.EagleVision.Main.setEntityEffect(Main.java:99) ~[?:?]
- at com.Dolo.EagleVision.Main.onPlayerClickEntity(Main.java:79) ~[?:?]
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
- at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
- at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
- at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- ... 15 more
- [16:42:45] [Server thread/ERROR]: Could not pass event PlayerInteractEntityEvent to EagleVision v1.0
- org.bukkit.event.EventException
- at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1537) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PacketPlayInUseEntity.a(SourceFile:69) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PacketPlayInUseEntity.a(SourceFile:13) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
- at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
- at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
- Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.comphenix.protocol.injector.netty.ChannelInjector
- at com.comphenix.protocol.injector.netty.InjectionFactory.fromPlayer(InjectionFactory.java:93) ~[?:?]
- at com.comphenix.protocol.injector.netty.ProtocolInjector$4.sendServerPacket(ProtocolInjector.java:403) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:786) ~[?:?]
- at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:745) ~[?:?]
- at com.Dolo.EagleVision.Main.setEntityEffect(Main.java:99) ~[?:?]
- at com.Dolo.EagleVision.Main.onPlayerClickEntity(Main.java:79) ~[?:?]
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
- at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
- at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
- at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2-R0.1-SNAPSHOT.jar:git-Spigot-3fb9445-2b6c9f4]
- ... 15 more
纯白剑姬 发表于 2018-8-20 16:45
大腿你好 我把你发的实现内容一个一个write进去了
结果是发包完全没反应....到底是为什么呢....
还有我发 ...
Caused by: java.lang.ExceptionInInitializerError
可以参考一下这一篇 https://blog.csdn.net/fykhlp/article/details/6236316