the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include <iostream>
3#include "PacketListener.h"
4#include "PreloginPacket.h"
5#include "InputOutputStream.h"
6
7
8
9PreLoginPacket::PreLoginPacket()
10{
11 loginKey = L"";
12 m_playerXuids = NULL;
13 m_dwPlayerCount = 0;
14 m_friendsOnlyBits = 0;
15 m_ugcPlayersVersion = 0;
16 ZeroMemory(m_szUniqueSaveName,m_iSaveNameLen);
17 m_serverSettings = 0;
18 m_hostIndex = 0;
19 m_texturePackId = 0;
20 m_netcodeVersion = 0;
21}
22
23PreLoginPacket::PreLoginPacket(wstring userName)
24{
25 this->loginKey = userName;
26 m_playerXuids = NULL;
27 m_dwPlayerCount = 0;
28 m_friendsOnlyBits = 0;
29 m_ugcPlayersVersion = 0;
30 ZeroMemory(m_szUniqueSaveName,m_iSaveNameLen);
31 m_serverSettings = 0;
32 m_hostIndex = 0;
33 m_texturePackId = 0;
34 m_netcodeVersion = 0;
35}
36
37PreLoginPacket::PreLoginPacket(wstring userName, PlayerUID *playerXuids, DWORD playerCount, BYTE friendsOnlyBits, DWORD ugcPlayersVersion,char *pszUniqueSaveName, DWORD serverSettings, BYTE hostIndex, DWORD texturePackId)
38{
39 this->loginKey = userName;
40 m_playerXuids = playerXuids;
41 m_dwPlayerCount = playerCount;
42 m_friendsOnlyBits = friendsOnlyBits;
43 m_ugcPlayersVersion = ugcPlayersVersion;
44 memcpy(m_szUniqueSaveName,pszUniqueSaveName,m_iSaveNameLen);
45 m_serverSettings = serverSettings;
46 m_hostIndex = hostIndex;
47 m_texturePackId = texturePackId;
48 m_netcodeVersion = 0;
49}
50
51PreLoginPacket::~PreLoginPacket()
52{
53 if( m_playerXuids != NULL ) delete [] m_playerXuids;
54}
55
56void PreLoginPacket::read(DataInputStream *dis) //throws IOException
57{
58 m_netcodeVersion = dis->readShort();
59
60 loginKey = readUtf(dis, 32);
61
62 m_friendsOnlyBits = dis->readByte();
63 m_ugcPlayersVersion = dis->readInt();
64 m_dwPlayerCount = dis->readByte();
65 if( m_dwPlayerCount > 0 )
66 {
67 m_playerXuids = new PlayerUID[m_dwPlayerCount];
68 for(DWORD i = 0; i < m_dwPlayerCount; ++i)
69 {
70 m_playerXuids[i] = dis->readPlayerUID();
71 }
72 }
73 for(DWORD i = 0; i < m_iSaveNameLen; ++i)
74 {
75 m_szUniqueSaveName[i]=dis->readByte();
76 }
77 m_serverSettings = dis->readInt();
78 m_hostIndex = dis->readByte();
79
80 INT texturePackId = dis->readInt();
81 m_texturePackId = *(DWORD *)&texturePackId;
82
83 // Set the name of the map so we can check it for players banned lists
84 app.SetUniqueMapName((char *)m_szUniqueSaveName);
85}
86
87void PreLoginPacket::write(DataOutputStream *dos) //throws IOException
88{
89 dos->writeShort(MINECRAFT_NET_VERSION);
90
91 writeUtf(loginKey, dos);
92
93 dos->writeByte(m_friendsOnlyBits);
94 dos->writeInt(m_ugcPlayersVersion);
95 dos->writeByte((byte)m_dwPlayerCount);
96 for(DWORD i = 0; i < m_dwPlayerCount; ++i)
97 {
98 dos->writePlayerUID( m_playerXuids[i] );
99 }
100
101 app.DebugPrintf("*** PreLoginPacket::write - %s\n",m_szUniqueSaveName);
102 for(DWORD i = 0; i < m_iSaveNameLen; ++i)
103 {
104 dos->writeByte(m_szUniqueSaveName[i]);
105 }
106 dos->writeInt(m_serverSettings);
107 dos->writeByte(m_hostIndex);
108 dos->writeInt(m_texturePackId);
109}
110
111void PreLoginPacket::handle(PacketListener *listener)
112{
113 listener->handlePreLogin(shared_from_this());
114}
115
116int PreLoginPacket::getEstimatedSize()
117{
118 return 4 + 4 + (int)loginKey.length() + 4 +14 + 4 + 1 + 4;
119}