- Баллы
- 173
- Имя в Minecraft
- fromgate
Изменить скорость можно пакетом Packet202Abilities.
Java://Где-то в классе// String PackageName = "net.minecraft.server.1_6_R4"; Class Packet202Abilities = Class.forName(PackageName.concat(".Packet202Abilities")); Class PlayerAbilities = Class.forName(PackageName.concat(".PlayerAbilities")); Method player_minecraft = Class.forName("org.bukkit.craftbukkit.1_6_R4.entity.CraftPlayer")).getMethod("getHandle", new Class[]{}); //Где-то в классе// Object constructPacket202(Player p, float walk, float fly) { Object packet = Packet202Abilities.getConstructor(new Class[]{PlayerAbilities}).newInstance(playerAbilities(p)); fieldSet(packet, "e", (float) fly);//def 0.5 fieldSet(packet, "f", (float) walk);//def 0.1 return packet; } void fieldSet(Object o, String name, Object value) { Field field = o.getClass().getDeclaredField(name); field.setAccessible(true); field.set(o, value); } void sendPacket(Player p, Object packet) { Object playerConnection = player_minecraft.getReturnType().getField("playerConnection").get(player_minecraft.invoke(p)); Method sendPacket = playerConnection.getClass().getDeclaredMethod("sendPacket", new Class[]{Packet}); sendPacket.setAccessible(true); sendPacket.invoke(playerConnection, packet); } //Где-то в классе// @EventHandler void onPlayerJoin(PlayerJoinEvent e) { sendPacket(e.getPlayer(), constructPacket202(e.getPlayer(), 0.01F, 0.05F)); }
Этот же пакет игроку шлётся при setWalkSpeed. Т.е. как я понимаю, результат будет такой же.

Рывок, а потом снова обычная.