本帖最后由 纯白剑姬 于 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