Skip to content

Commit 54fab67

Browse files
committed
packets :(
1 parent df8b1bd commit 54fab67

14 files changed

Lines changed: 104 additions & 87 deletions

src/client/client.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "config/types.hpp"
44
#include "magic_enum/magic_enum_utility.hpp"
55
#include "memory/patcher.hpp"
6-
#include "memory/sdk/game/network/PacketHandlerDispatcherInstance.hpp"
6+
#include "memory/sdk/network/PacketHandlerDispatcherInstance.hpp"
77

88
namespace selaura {
99
void client::init() {
@@ -44,9 +44,7 @@ namespace selaura {
4444
if (!pkt) return;
4545

4646
Packet* packet = pkt.get();
47-
void* vtable = packet->mHandler;
48-
49-
selaura::patch_vtable_fn<&PacketHandlerDispatcherInstance_callbacks<id>::handle>(vtable, 1);
47+
selaura::patch_vtable_fn<&PacketHandlerDispatcherInstance<id>::handle>(packet->mHandler, 1);
5048
});
5149

5250
auto end = std::chrono::steady_clock::now();

src/client/memory/patcher.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,9 @@ namespace selaura {
144144
hook_map.emplace(fn_hash<fn>(), std::move(hook));
145145
}
146146

147-
template <auto fn>
148-
void patch_vtable_fn(void* vtable, std::size_t index) {
149-
void** obj = *reinterpret_cast<void***>(vtable);
147+
template <auto fn, typename vptr>
148+
void patch_vtable_fn(vptr* vtable, std::size_t index) {
149+
void** obj = *reinterpret_cast<void***>(const_cast<void*>(static_cast<const void*>(vtable)));
150150
patch_fn<fn>(obj[index]);
151151
}
152152

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
#include "../../../network/MinecraftPacketIds.hpp"
3+
#include "../../../network/IPacketHandlerDispatcher.hpp"
4+
#include "../../../deps/raknet/PacketPriority.hpp"
5+
#include "../../../network/Compressibility.hpp"
6+
#include "../../../network/NetworkPeer.hpp"
7+
#include <chrono>
8+
9+
struct Packet {
10+
virtual ~Packet() = default;
11+
PacketPriority mPriority;
12+
NetworkPeer::Reliability mReliability;
13+
uint8_t mClientSubId;
14+
bool mIsHandled;
15+
std::chrono::steady_clock::time_point mReceiveTimepoint;
16+
const IPacketHandlerDispatcher* mHandler;
17+
Compressibility mCompressible;
18+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
enum class PacketPriority : int {
4+
ImmediatePriority = 0,
5+
HighPriority = 1,
6+
MediumPriority = 2,
7+
LowPriority = 3,
8+
NumberOfPriorities = 4,
9+
};

src/client/memory/sdk/game/network/Packet.hpp

Lines changed: 0 additions & 72 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#pragma once
2+
3+
enum class Compressibility : int {
4+
Compressible = 0,
5+
Incompressible = 1,
6+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
#include <memory>
3+
4+
struct Packet;
5+
6+
struct IPacketHandlerDispatcher {
7+
virtual ~IPacketHandlerDispatcher() = default;
8+
virtual void handle(void* networkIdentifier, void* netEventCallback, std::shared_ptr<Packet>&) const = 0;
9+
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#pragma once
2+
3+
enum class MinecraftPacketIds : int {
4+
Text = 9
5+
};

src/client/memory/sdk/game/network/MinecraftPackets.hpp renamed to src/client/memory/sdk/network/MinecraftPackets.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#pragma once
22
#include <memory>
3-
#include "Packet.hpp"
3+
#include "../client/renderer/rendergraph/Packet.hpp"
44

55
struct MinecraftPackets {
66
static inline std::shared_ptr<Packet> createPacket(MinecraftPacketIds id);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#pragma once
2+
3+
namespace NetworkPeer {
4+
enum class Reliability : int {
5+
Reliable = 0,
6+
ReliableOrdered = 1,
7+
Unreliable = 2,
8+
UnreliableSequenced = 3,
9+
};
10+
};

0 commit comments

Comments
 (0)