195 lines
11 KiB
Java
195 lines
11 KiB
Java
package keystrokesmod.module.impl.other;
|
|
|
|
import keystrokesmod.event.NoEventPacketEvent;
|
|
import keystrokesmod.event.ReceivePacketEvent;
|
|
import keystrokesmod.event.SendPacketEvent;
|
|
import keystrokesmod.module.Module;
|
|
import keystrokesmod.module.setting.impl.ButtonSetting;
|
|
import keystrokesmod.utility.Utils;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.event.HoverEvent;
|
|
import net.minecraft.network.Packet;
|
|
import net.minecraft.network.play.client.*;
|
|
import net.minecraft.util.*;
|
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
|
|
|
public class ViewPackets extends Module {
|
|
private ButtonSetting includeCancelled;
|
|
private ButtonSetting singlePlayer;
|
|
private ButtonSetting sent;
|
|
private ButtonSetting ignoreC00;
|
|
private ButtonSetting ignoreC03;
|
|
private ButtonSetting compactC03;
|
|
private ButtonSetting ignoreC0F;
|
|
private ButtonSetting received;
|
|
private Packet packet;
|
|
public static long tick;
|
|
|
|
public ViewPackets() {
|
|
super("View Packets", category.other);
|
|
this.registerSetting(includeCancelled = new ButtonSetting("Include cancelled", true));
|
|
this.registerSetting(singlePlayer = new ButtonSetting("Singleplayer", false));
|
|
this.registerSetting(sent = new ButtonSetting("Sent", false));
|
|
this.registerSetting(ignoreC00 = new ButtonSetting("Ignore C00", false));
|
|
this.registerSetting(ignoreC03 = new ButtonSetting("Ignore C03", false));
|
|
this.registerSetting(compactC03 = new ButtonSetting("Compact C03", false));
|
|
this.registerSetting(ignoreC0F = new ButtonSetting("Ignore C0F", false));
|
|
this.registerSetting(received = new ButtonSetting("Received", false));
|
|
}
|
|
|
|
public void onDisable() {
|
|
packet = null;
|
|
tick = 0;
|
|
}
|
|
|
|
private static String formatBoolean(final boolean b) {
|
|
return b ? "&atrue" : "&cfalse";
|
|
}
|
|
|
|
private void sendMessage(final Packet packet, final boolean b) {
|
|
if (!Utils.nullCheck()) {
|
|
return;
|
|
}
|
|
final String s = b ? ("&a" + packet.getClass().getSimpleName()) : applyInfo(packet);
|
|
final String string = ((compactC03.isToggled() && packet instanceof C03PacketPlayer) ? "&6" : "&d") + packet.getClass().getSimpleName();
|
|
final ChatComponentText chatComponentText = new ChatComponentText(Utils.formatColor("&7[&dR&7]&r &7" + (b ? "Received" : "Sent") + " packet (t:&b" + tick + "&7): "));
|
|
final ChatStyle chatStyle = new ChatStyle();
|
|
chatStyle.setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(Utils.formatColor(s))));
|
|
((IChatComponent)chatComponentText).appendSibling(new ChatComponentText(Utils.formatColor(string)).setChatStyle(chatStyle));
|
|
mc.thePlayer.addChatMessage(chatComponentText);
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onSendPacket(SendPacketEvent e) {
|
|
if (!sent.isToggled()) {
|
|
return;
|
|
}
|
|
if (singlePlayer.isToggled() && mc.isSingleplayer() && e.getPacket().getClass().getSimpleName().charAt(0) == 'S') {
|
|
return;
|
|
}
|
|
if (e.isCanceled() && !includeCancelled.isToggled()) {
|
|
return;
|
|
}
|
|
if (ignoreC00.isToggled() && e.getPacket() instanceof C00PacketKeepAlive) {
|
|
return;
|
|
}
|
|
if (ignoreC0F.isToggled() && e.getPacket() instanceof C0FPacketConfirmTransaction) {
|
|
return;
|
|
}
|
|
if (e.getPacket() instanceof C03PacketPlayer && (ignoreC03.isToggled() || (compactC03.isToggled() && (packet == null || packet instanceof C03PacketPlayer)))) {
|
|
return;
|
|
}
|
|
sendMessage(packet = e.getPacket(), false);
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onSendPacketNoEvent(NoEventPacketEvent e) {
|
|
if (!sent.isToggled()) {
|
|
return;
|
|
}
|
|
if (singlePlayer.isToggled() && mc.isSingleplayer() && e.getPacket().getClass().getSimpleName().charAt(0) == 'S') {
|
|
return;
|
|
}
|
|
if (e.isCanceled() && !includeCancelled.isToggled()) {
|
|
return;
|
|
}
|
|
if (ignoreC00.isToggled() && e.getPacket() instanceof C00PacketKeepAlive) {
|
|
return;
|
|
}
|
|
if (ignoreC0F.isToggled() && e.getPacket() instanceof C0FPacketConfirmTransaction) {
|
|
return;
|
|
}
|
|
if (e.getPacket() instanceof C03PacketPlayer && (ignoreC03.isToggled() || (compactC03.isToggled() && (packet == null || packet instanceof C03PacketPlayer)))) {
|
|
return;
|
|
}
|
|
sendMessage(packet = e.getPacket(), false);
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onReceivePacket(ReceivePacketEvent e) {
|
|
if (!received.isToggled()) {
|
|
return;
|
|
}
|
|
if (singlePlayer.isToggled() && mc.isSingleplayer() && e.getPacket().getClass().getSimpleName().charAt(0) == 'C') {
|
|
return;
|
|
}
|
|
sendMessage(e.getPacket(), true);
|
|
}
|
|
|
|
private String applyInfo(final Packet packet) {
|
|
String s = "&a" + packet.getClass().getSimpleName();
|
|
if (packet instanceof C07PacketPlayerDigging) {
|
|
final C07PacketPlayerDigging c07PacketPlayerDigging = (C07PacketPlayerDigging)packet;
|
|
final String string = s + "\n&7Status: &b" + c07PacketPlayerDigging.getStatus().name() + "\n&7Facing: &b" + c07PacketPlayerDigging.getFacing().name();
|
|
final BlockPos getPosition = c07PacketPlayerDigging.getPosition();
|
|
s = string + "\n&7Position: &b" + getPosition.getX() + "&7, &b" + getPosition.getY() + "&7, &b" + getPosition.getZ();
|
|
}
|
|
else if (packet instanceof C09PacketHeldItemChange) {
|
|
s = s + "\n&7Swap to slot: &b" + ((C09PacketHeldItemChange)packet).getSlotId();
|
|
}
|
|
else if (packet instanceof C0BPacketEntityAction) {
|
|
s = s + "\n&7Action: &b" + ((C0BPacketEntityAction)packet).getAction().name() + "\n&7Aux data: &b" + ((C0BPacketEntityAction)packet).getAuxData();
|
|
}
|
|
else if (packet instanceof C08PacketPlayerBlockPlacement) {
|
|
final C08PacketPlayerBlockPlacement c08PacketPlayerBlockPlacement = (C08PacketPlayerBlockPlacement)packet;
|
|
final String string2 = s + "\n&7Item: &b" + ((c08PacketPlayerBlockPlacement.getStack() == null) ? "null" : c08PacketPlayerBlockPlacement.getStack().getItem().getRegistryName().replace("minecraft:", "")) + "\n&7Direction: &b" + c08PacketPlayerBlockPlacement.getPlacedBlockDirection();
|
|
final BlockPos getPosition = c08PacketPlayerBlockPlacement.getPosition();
|
|
s = string2 + "\n&7Position: &b" + getPosition.getX() + "&7, &b" + getPosition.getY() + "&7, &b" + getPosition.getZ() + "\n&7Offset: &b" + round((double)c08PacketPlayerBlockPlacement.getPlacedBlockOffsetX()) + "&7, &b" + round((double)c08PacketPlayerBlockPlacement.getPlacedBlockOffsetY()) + "&7, &b" + round(c08PacketPlayerBlockPlacement.getPlacedBlockOffsetZ());
|
|
}
|
|
else if (packet instanceof C02PacketUseEntity) {
|
|
final C02PacketUseEntity c02PacketUseEntity = (C02PacketUseEntity)packet;
|
|
final String string3 = s + "\n&7Action: &b" + c02PacketUseEntity.getAction().name();
|
|
final Entity getEntityFromWorld = c02PacketUseEntity.getEntityFromWorld(mc.theWorld);
|
|
final String string4 = string3 + "\n&7Target: &b" + ((getEntityFromWorld == null) ? "null" : getEntityFromWorld.getName());
|
|
final Vec3 getHitVec = c02PacketUseEntity.getHitVec();
|
|
if (getHitVec == null) {
|
|
s = string4 + "\n&7Hit vec: &bnull";
|
|
}
|
|
else {
|
|
s = string4 + "\n&7Hit vec: &b" + round(getHitVec.xCoord) + "&7, &b" + round(getHitVec.yCoord) + "&7, &b" + round(getHitVec.zCoord);
|
|
}
|
|
}
|
|
else if (packet instanceof C01PacketChatMessage) {
|
|
s = s + "\n&7Length: &b" + ((C01PacketChatMessage)packet).getMessage().length();
|
|
}
|
|
else if (packet instanceof C17PacketCustomPayload) {
|
|
s = s + "\n&7Channel: &b" + ((C17PacketCustomPayload)packet).getChannelName();
|
|
}
|
|
else if (packet instanceof C15PacketClientSettings) {
|
|
s = s + "\n&7Language: &b" + ((C15PacketClientSettings)packet).getLang() + "\n&7Chat visibility: &b" + ((C15PacketClientSettings)packet).getChatVisibility().name();
|
|
}
|
|
else if (packet instanceof C00PacketKeepAlive) {
|
|
s = s + "\n&7Key: &b" + ((C00PacketKeepAlive)packet).getKey();
|
|
}
|
|
else if (packet instanceof C16PacketClientStatus) {
|
|
s = s + "\n&7Status: &b" + ((C16PacketClientStatus)packet).getStatus().name();
|
|
}
|
|
else if (packet instanceof C10PacketCreativeInventoryAction) {
|
|
s = s + "\n&7Slot: &b" + ((C10PacketCreativeInventoryAction)packet).getSlotId() + "\n&7Item: &b" + ((((C10PacketCreativeInventoryAction)packet).getStack() == null) ? "null" : ((C10PacketCreativeInventoryAction)packet).getStack().getItem().getRegistryName().replace("minecraft:", ""));
|
|
}
|
|
else if (packet instanceof C0EPacketClickWindow) {
|
|
final C0EPacketClickWindow c0EPacketClickWindow = (C0EPacketClickWindow)packet;
|
|
s = s + "\n&7Window: &b" + c0EPacketClickWindow.getWindowId() + "\n&7Slot: &b" + c0EPacketClickWindow.getSlotId() + "\n&7Button: &b" + c0EPacketClickWindow.getUsedButton() + "\n&7Action: &b" + c0EPacketClickWindow.getActionNumber() + "\n&7Mode: &b" + c0EPacketClickWindow.getMode() + "\n&7Item: &b" + ((c0EPacketClickWindow.getClickedItem() == null) ? "null" : c0EPacketClickWindow.getClickedItem().getItem().getRegistryName().replace("minecraft:", ""));
|
|
}
|
|
else if (packet instanceof C0FPacketConfirmTransaction) {
|
|
s = s + "\n&7Window: &b" + ((C0FPacketConfirmTransaction)packet).getWindowId() + "\n&7Uid: &b" + ((C0FPacketConfirmTransaction)packet).getUid();
|
|
}
|
|
else if (packet instanceof C03PacketPlayer) {
|
|
final C03PacketPlayer c03PacketPlayer = (C03PacketPlayer)packet;
|
|
s = s + "\n&7Position: &b" + round(c03PacketPlayer.getPositionX()) + "&7, &b" + round(c03PacketPlayer.getPositionY()) + "&7, &b" + round(c03PacketPlayer.getPositionZ()) + "\n&7Rotations: &b" + round((double)c03PacketPlayer.getYaw()) + "&7, &b" + round((double)c03PacketPlayer.getPitch()) + "\n&7Ground: " + formatBoolean(c03PacketPlayer.isOnGround()) + "\n&7Moving: " + formatBoolean(c03PacketPlayer.isMoving()) + "\n&7Rotating: " + formatBoolean(c03PacketPlayer.getRotating());
|
|
}
|
|
return s + "\n&7Client tick: &e" + tick;
|
|
}
|
|
|
|
private static double round(final double n) {
|
|
return Utils.round(n, 3);
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void onTick(TickEvent.ClientTickEvent e) {
|
|
if (e.phase == TickEvent.Phase.START) {
|
|
++tick;
|
|
}
|
|
}
|
|
} |