本帖最后由 无谓狗蛋 于 2022-9-20 18:19 编辑 
如题所示,不管是spawn时的包还是后面entityV的包都试过了,都没有办法给实体速度
是我哪里写错了吗?
(补:
啊,忘记说了
paper_1.12.2_1618
ProtocolLib :4.4.0-b421
)
这里是生成带有速度实体的包:
复制代码
这里是尝试后面发送EntityVelocity改变实体速度
复制代码
结果是两种方法都不能给这个发包生成的实体速度(为什么不动!)
搞不懂,救命
如题所示,不管是spawn时的包还是后面entityV的包都试过了,都没有办法给实体速度
是我哪里写错了吗?
(补:
啊,忘记说了
paper_1.12.2_1618
ProtocolLib :4.4.0-b421
)
这里是生成带有速度实体的包:
-                     Player p = (Player) commandSender;
 
-                     Location loc = ((Player) commandSender).getLocation();
 
-                     PacketContainer packet = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY_LIVING);
 
-                     packet.getIntegers().write(0,1);
 
-                     packet.getUUIDs().write(0, UUID.randomUUID());
 
-                     packet.getIntegers().write(1,(int) EntityType.ZOMBIE.getTypeId());
 
-                     packet.getDoubles().write(0, loc.getX()+1);
 
-                     packet.getDoubles().write(1, loc.getY());
 
-                     packet.getDoubles().write(2, loc.getZ());
 
 
-                     //这里应该是速度,如PacketPlayOutSpawnEntityLiving包中对应的第2、3、4个int
 
-                     packet.getIntegers().write(2,10);
 
-                     packet.getIntegers().write(3,10);
 
-                     packet.getIntegers().write(4,10);
 
-                     
 
-                     Zb zb = new Zb(loc);
 
-                     CraftWorld craftWorld = (CraftWorld) loc.getWorld();
 
-                     Entity entity = craftWorld.addEntity(zb, CreatureSpawnEvent.SpawnReason.CUSTOM);
 
-                     WrappedDataWatcher watcher = WrappedDataWatcher.getEntityWatcher(entity).deepClone();
 
-                     entity.remove();
 
-                     packet.getDataWatcherModifier().write(0,watcher);
 
-                     try{
 
-                         p.sendMessage("debug");
 
-                         ProtocolLibrary.getProtocolManager().sendServerPacket(p,packet);
 
-                     } catch (InvocationTargetException ex){
 
-                         ex.printStackTrace();
 
- }
这里是尝试后面发送EntityVelocity改变实体速度
-             Player p = e.getPlayer();
 
-             Location loc = p.getLocation();
 
-             PacketContainer packet2 = new PacketContainer(PacketType.Play.Server.ENTITY_VELOCITY);
 
-             packet2.getModifier().writeDefaults();
 
-             packet2.getIntegers().write(0,1);
 
-             
 
-             //这里应该是int的速度值
 
-             packet2.getIntegers().write(1, (int) (p.getVelocity().getX()+1));
 
-             packet2.getIntegers().write(2, (int) (p.getVelocity().getY()+1));
 
-             packet2.getIntegers().write(3, (int) (p.getVelocity().getZ()+1));
 
-             
 
-             try{
 
-                 p.sendMessage("debug3");
 
-                 ProtocolLibrary.getProtocolManager().sendServerPacket(p,packet2);
 
-             } catch (InvocationTargetException ex){
 
-                 ex.printStackTrace();
 
- }
结果是两种方法都不能给这个发包生成的实体速度(为什么不动!)
搞不懂,救命
狗蛋跑路吧。