EndMinecraftPlusV2/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/OldVersion/AttackUtils/MultiVersionPacket.java

95 lines
5.1 KiB
Java

package cn.serendipityr.EndMinecraftPlusV2.VersionControl.OldVersion.AttackUtils;
import org.spacehq.mc.protocol.packet.ingame.client.ClientSettingsPacket;
import org.spacehq.mc.protocol.packet.ingame.client.ClientTabCompletePacket;
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerPositionRotationPacket;
import org.spacehq.mc.protocol.packet.ingame.server.entity.player.ServerPlayerPositionRotationPacket;
import org.spacehq.packetlib.Session;
import org.spacehq.packetlib.packet.Packet;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class MultiVersionPacket {
public static void sendTabPacket(Session session, String text) {
try {
Class<?> cls = ClientTabCompletePacket.class;
Constructor<?> constructor = cls.getDeclaredConstructor();
constructor.setAccessible(true);
ClientTabCompletePacket packet = (ClientTabCompletePacket) constructor.newInstance();
Field field = cls.getDeclaredField("text");
field.setAccessible(true);
field.set(packet, text);
session.send(packet);
} catch (Exception ignored) {}
}
public static void sendPosPacket(Session session, double x, double y, double z, float yaw, float pitch) {
try {
Class<?> cls = ClientPlayerPositionRotationPacket.class;
Constructor<?> constructor;
ClientPlayerPositionRotationPacket packet;
try {
constructor = cls.getConstructor(boolean.class, double.class, double.class, double.class, float.class, float.class);
packet = (ClientPlayerPositionRotationPacket) constructor.newInstance(true, x, y, z, yaw, pitch);
} catch (NoSuchMethodException ex) {
constructor = cls.getConstructor(boolean.class, double.class, double.class, double.class, double.class, float.class, float.class);
packet = (ClientPlayerPositionRotationPacket) constructor.newInstance(true, x, y - 1.62, y , z, yaw, pitch);
}
session.send(packet);
} catch (Exception ignored) {}
}
public static void sendClientSettingPacket(Session session, String locale) {
try {
Class<?> cls = ClientSettingsPacket.class;
Constructor<?> constructor;
ClientSettingsPacket packet;
try {
Class<?> parm1Class = Class.forName("org.spacehq.mc.protocol.data.game.setting.ChatVisibility");
Class<?> parm2Class = Class.forName("org.spacehq.mc.protocol.data.game.setting.SkinPart;");
Class<?> parm3Class = Class.forName("org.spacehq.mc.protocol.data.game.entity.player.Hand");
Class<?> skinClass = Class.forName("org.spacehq.mc.protocol.data.game.setting.SkinPart");
Object[] arrSkin = (Object[]) Array.newInstance(skinClass, 1);
Array.set(arrSkin, 0, skinClass.getEnumConstants()[0]);
constructor = cls.getConstructor(String.class, int.class, parm1Class, boolean.class, parm2Class, parm3Class);
packet = (ClientSettingsPacket) constructor.newInstance(locale, 10, parm1Class.getEnumConstants()[0], true, arrSkin, parm3Class.getEnumConstants()[0]);
} catch (NoSuchMethodException ex) {
Class<?> parm1Class = Class.forName("org.spacehq.mc.protocol.packet.ingame.client.ClientSettingsPacket.ChatVisibility");
Class<?> parm2Class = Class.forName("org.spacehq.mc.protocol.packet.ingame.client.ClientSettingsPacket.Difficulty");
constructor = cls.getConstructor(String.class, int.class, parm1Class, boolean.class, parm2Class, boolean.class);
packet = (ClientSettingsPacket) constructor.newInstance(locale, 10, parm1Class.getEnumConstants()[0], true, parm2Class.getEnumConstants()[0], true);
}
session.send(packet);
} catch (Exception ignored) {}
}
public static void sendClientPlayerChangeHeldItemPacket(Session session, int slot) {
try {
Class<?> cls = Class.forName("org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerChangeHeldItemPacket");
Constructor<?> constructor = cls.getConstructor(int.class);
Packet packet = (Packet) constructor.newInstance(slot);
session.send(packet);
} catch (Exception ignored) {}
}
public static void sendClientTeleportConfirmPacket(Session session, int id) {
try {
Class<?> cls = Class.forName("org.spacehq.mc.protocol.packet.ingame.client.world.ClientTeleportConfirmPacket");
Constructor<?> constructor = cls.getConstructor(int.class);
Packet packet = (Packet) constructor.newInstance(id);
session.send(packet);
} catch (Exception ignored) {}
}
public static void sendClientTeleportConfirmPacket(Session session, ServerPlayerPositionRotationPacket packet) {
try {
sendClientTeleportConfirmPacket(session, (int) ServerPlayerPositionRotationPacket.class.getMethod("getTeleportId").invoke(packet));
} catch (Exception ignored) {}
}
}