无谓狗蛋
本帖最后由 无谓狗蛋 于 2022-9-20 18:19 编辑

如题所示,不管是spawn时的包还是后面entityV的包都试过了,都没有办法给实体速度
是我哪里写错了吗?
(补:
啊,忘记说了
paper_1.12.2_1618
ProtocolLib :4.4.0-b421




这里是生成带有速度实体的包:
  1.                     Player p = (Player) commandSender;
  2.                     Location loc = ((Player) commandSender).getLocation();
  3.                     PacketContainer packet = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY_LIVING);
  4.                     packet.getIntegers().write(0,1);
  5.                     packet.getUUIDs().write(0, UUID.randomUUID());
  6.                     packet.getIntegers().write(1,(int) EntityType.ZOMBIE.getTypeId());
  7.                     packet.getDoubles().write(0, loc.getX()+1);
  8.                     packet.getDoubles().write(1, loc.getY());
  9.                     packet.getDoubles().write(2, loc.getZ());

  10.                     //这里应该是速度,如PacketPlayOutSpawnEntityLiving包中对应的第2、3、4个int
  11.                     packet.getIntegers().write(2,10);
  12.                     packet.getIntegers().write(3,10);
  13.                     packet.getIntegers().write(4,10);
  14.                     
  15.                     Zb zb = new Zb(loc);
  16.                     CraftWorld craftWorld = (CraftWorld) loc.getWorld();
  17.                     Entity entity = craftWorld.addEntity(zb, CreatureSpawnEvent.SpawnReason.CUSTOM);
  18.                     WrappedDataWatcher watcher = WrappedDataWatcher.getEntityWatcher(entity).deepClone();
  19.                     entity.remove();
  20.                     packet.getDataWatcherModifier().write(0,watcher);
  21.                     try{
  22.                         p.sendMessage("debug");
  23.                         ProtocolLibrary.getProtocolManager().sendServerPacket(p,packet);
  24.                     } catch (InvocationTargetException ex){
  25.                         ex.printStackTrace();
  26.                     }
复制代码



这里是尝试后面发送EntityVelocity改变实体速度
  1.             Player p = e.getPlayer();
  2.             Location loc = p.getLocation();
  3.             PacketContainer packet2 = new PacketContainer(PacketType.Play.Server.ENTITY_VELOCITY);
  4.             packet2.getModifier().writeDefaults();
  5.             packet2.getIntegers().write(0,1);
  6.             
  7.             //这里应该是int的速度值
  8.             packet2.getIntegers().write(1, (int) (p.getVelocity().getX()+1));
  9.             packet2.getIntegers().write(2, (int) (p.getVelocity().getY()+1));
  10.             packet2.getIntegers().write(3, (int) (p.getVelocity().getZ()+1));
  11.             
  12.             try{
  13.                 p.sendMessage("debug3");
  14.                 ProtocolLibrary.getProtocolManager().sendServerPacket(p,packet2);
  15.             } catch (InvocationTargetException ex){
  16.                 ex.printStackTrace();
  17.             }
复制代码



结果是两种方法都不能给这个发包生成的实体速度(为什么不动!)
搞不懂,救命


小熊你好吖
狗蛋跑路吧。

lxs060901

额,不会回答这个问题是没关系的,但请不要当着人家面说风凉话

2000000
Velocity 是击退 不是速度

下一页 最后一页