如题所示,不管是spawn时的包还是后面entityV的包都试过了,都没有办法给实体速度
是我哪里写错了吗?
(补:
啊,忘记说了
paper_1.12.2_1618
ProtocolLib :4.4.0-b421
)
这里是生成带有速度实体的包:
复制代码
这里是尝试后面发送EntityVelocity改变实体速度:
复制代码
结果是两种方法都不能给这个发包生成的实体速度(为什么不动!)
搞不懂,救命
是我哪里写错了吗?
(补:
啊,忘记说了
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();
- }
结果是两种方法都不能给这个发包生成的实体速度(为什么不动!)
搞不懂,救命
本帖最后由 cnYeqi 于 2022-9-20 20:10 编辑
对发包没什么研究,我没找到SPAWN_ENTITY_LIVING 只找到了SPAWN_ENTITY
https://wiki.vg/Protocol#Spawn_Entity
我这里看速度是short类型
用.getShorts().write() 写入试试
对发包没什么研究,我没找到SPAWN_ENTITY_LIVING 只找到了SPAWN_ENTITY
https://wiki.vg/Protocol#Spawn_Entity
我这里看速度是short类型
用.getShorts().write() 写入试试