mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
Merge branch 'main' into main
This commit is contained in:
commit
e8f71ba2ff
|
|
@ -832,9 +832,10 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
|
||||||
|
|
||||||
#ifdef _WINDOWS64
|
#ifdef _WINDOWS64
|
||||||
{
|
{
|
||||||
IQNetPlayer* matchedQNetPlayer = NULL;
|
IQNetPlayer* matchedQNetPlayer = nullptr;
|
||||||
PlayerUID pktXuid = player->getXuid();
|
PlayerUID pktXuid = player->getXuid();
|
||||||
const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e;
|
const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e;
|
||||||
|
// Legacy compatibility path for peers still using embedded smallId XUIDs.
|
||||||
if (pktXuid >= WIN64_XUID_BASE && pktXuid < WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS)
|
if (pktXuid >= WIN64_XUID_BASE && pktXuid < WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS)
|
||||||
{
|
{
|
||||||
BYTE smallId = (BYTE)(pktXuid - WIN64_XUID_BASE);
|
BYTE smallId = (BYTE)(pktXuid - WIN64_XUID_BASE);
|
||||||
|
|
@ -847,25 +848,26 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Current Win64 path: identify QNet player by name and attach packet XUID.
|
// Current Win64 path: identify QNet player by name and attach packet XUID.
|
||||||
if (matchedQNetPlayer == NULL)
|
if (matchedQNetPlayer == nullptr)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
|
for (int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
|
||||||
{
|
{
|
||||||
BYTE smallId = static_cast<BYTE>(i);
|
BYTE smallId = static_cast<BYTE>(i);
|
||||||
INetworkPlayer* np = g_NetworkManager.GetPlayerBySmallId(smallId);
|
INetworkPlayer* np = g_NetworkManager.GetPlayerBySmallId(smallId);
|
||||||
if (np == NULL)
|
if (np == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
NetworkPlayerXbox* npx = (NetworkPlayerXbox*)np;
|
NetworkPlayerXbox* npx = (NetworkPlayerXbox*)np;
|
||||||
IQNetPlayer* qp = npx->GetQNetPlayer();
|
IQNetPlayer* qp = npx->GetQNetPlayer();
|
||||||
if (qp != NULL && _wcsicmp(qp->m_gamertag, packet->name.c_str()) == 0)
|
if (qp != nullptr && _wcsicmp(qp->m_gamertag, packet->name.c_str()) == 0)
|
||||||
{
|
{
|
||||||
wcsncpy_s(qp->m_gamertag, 32, packet->name.c_str(), _TRUNCATE);
|
matchedQNetPlayer = qp;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matchedQNetPlayer != NULL)
|
if (matchedQNetPlayer != nullptr)
|
||||||
{
|
{
|
||||||
// Store packet-authoritative XUID on this network slot so later lookups by XUID
|
// Store packet-authoritative XUID on this network slot so later lookups by XUID
|
||||||
// (e.g. remove player, display mapping) work for both legacy and uid.dat clients.
|
// (e.g. remove player, display mapping) work for both legacy and uid.dat clients.
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include "..\..\Xbox\Network\NetworkPlayerXbox.h"
|
#include "..\..\Xbox\Network\NetworkPlayerXbox.h"
|
||||||
#ifdef _WINDOWS64
|
#ifdef _WINDOWS64
|
||||||
#include "..\..\Windows64\Network\WinsockNetLayer.h"
|
#include "..\..\Windows64\Network\WinsockNetLayer.h"
|
||||||
|
#include "..\..\Windows64\Windows64_Xuid.h"
|
||||||
#include "..\..\Minecraft.h"
|
#include "..\..\Minecraft.h"
|
||||||
#include "..\..\User.h"
|
#include "..\..\User.h"
|
||||||
#include "..\..\MinecraftServer.h"
|
#include "..\..\MinecraftServer.h"
|
||||||
|
|
@ -236,6 +237,7 @@ void CPlatformNetworkManagerStub::DoWork()
|
||||||
qnetPlayer->m_smallId = 0;
|
qnetPlayer->m_smallId = 0;
|
||||||
qnetPlayer->m_isRemote = false;
|
qnetPlayer->m_isRemote = false;
|
||||||
qnetPlayer->m_isHostPlayer = false;
|
qnetPlayer->m_isHostPlayer = false;
|
||||||
|
qnetPlayer->m_resolvedXuid = INVALID_XUID;
|
||||||
qnetPlayer->m_gamertag[0] = 0;
|
qnetPlayer->m_gamertag[0] = 0;
|
||||||
qnetPlayer->SetCustomDataValue(0);
|
qnetPlayer->SetCustomDataValue(0);
|
||||||
if (IQNet::s_playerCount > 1)
|
if (IQNet::s_playerCount > 1)
|
||||||
|
|
@ -408,7 +410,9 @@ void CPlatformNetworkManagerStub::HostGame(int localUsersMask, bool bOnlineGame,
|
||||||
#ifdef _WINDOWS64
|
#ifdef _WINDOWS64
|
||||||
IQNet::m_player[0].m_smallId = 0;
|
IQNet::m_player[0].m_smallId = 0;
|
||||||
IQNet::m_player[0].m_isRemote = false;
|
IQNet::m_player[0].m_isRemote = false;
|
||||||
|
// world host is pinned to legacy host XUID to keep old player data compatibility.
|
||||||
IQNet::m_player[0].m_isHostPlayer = true;
|
IQNet::m_player[0].m_isHostPlayer = true;
|
||||||
|
IQNet::m_player[0].m_resolvedXuid = Win64Xuid::GetLegacyEmbeddedHostXuid();
|
||||||
IQNet::s_playerCount = 1;
|
IQNet::s_playerCount = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -465,6 +469,8 @@ int CPlatformNetworkManagerStub::JoinGame(FriendSessionInfo* searchResult, int l
|
||||||
IQNet::m_player[0].m_smallId = 0;
|
IQNet::m_player[0].m_smallId = 0;
|
||||||
IQNet::m_player[0].m_isRemote = true;
|
IQNet::m_player[0].m_isRemote = true;
|
||||||
IQNet::m_player[0].m_isHostPlayer = true;
|
IQNet::m_player[0].m_isHostPlayer = true;
|
||||||
|
// Remote host still maps to legacy host XUID in mixed old/new sessions.
|
||||||
|
IQNet::m_player[0].m_resolvedXuid = Win64Xuid::GetLegacyEmbeddedHostXuid();
|
||||||
wcsncpy_s(IQNet::m_player[0].m_gamertag, 32, searchResult->data.hostName, _TRUNCATE);
|
wcsncpy_s(IQNet::m_player[0].m_gamertag, 32, searchResult->data.hostName, _TRUNCATE);
|
||||||
|
|
||||||
WinsockNetLayer::StopDiscovery();
|
WinsockNetLayer::StopDiscovery();
|
||||||
|
|
@ -480,6 +486,8 @@ int CPlatformNetworkManagerStub::JoinGame(FriendSessionInfo* searchResult, int l
|
||||||
IQNet::m_player[localSmallId].m_smallId = localSmallId;
|
IQNet::m_player[localSmallId].m_smallId = localSmallId;
|
||||||
IQNet::m_player[localSmallId].m_isRemote = false;
|
IQNet::m_player[localSmallId].m_isRemote = false;
|
||||||
IQNet::m_player[localSmallId].m_isHostPlayer = false;
|
IQNet::m_player[localSmallId].m_isHostPlayer = false;
|
||||||
|
// Local non-host identity is the persistent uid.dat XUID.
|
||||||
|
IQNet::m_player[localSmallId].m_resolvedXuid = Win64Xuid::ResolvePersistentXuid();
|
||||||
|
|
||||||
Minecraft* pMinecraft = Minecraft::GetInstance();
|
Minecraft* pMinecraft = Minecraft::GetInstance();
|
||||||
wcscpy_s(IQNet::m_player[localSmallId].m_gamertag, 32, pMinecraft->user->name.c_str());
|
wcscpy_s(IQNet::m_player[localSmallId].m_gamertag, 32, pMinecraft->user->name.c_str());
|
||||||
|
|
@ -853,7 +861,7 @@ void CPlatformNetworkManagerStub::SearchForGames()
|
||||||
std::fclose(file);
|
std::fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_searchResultsCount[0] = (int)friendsSessions[0].size();
|
m_searchResultsCount[0] = static_cast<int>(friendsSessions[0].size());
|
||||||
|
|
||||||
if (m_SessionsUpdatedCallback != nullptr)
|
if (m_SessionsUpdatedCallback != nullptr)
|
||||||
m_SessionsUpdatedCallback(m_pSearchParam);
|
m_SessionsUpdatedCallback(m_pSearchParam);
|
||||||
|
|
|
||||||
|
|
@ -747,7 +747,7 @@ void Minecraft::run()
|
||||||
|
|
||||||
while (System::currentTimeMillis() >= lastTime + 1000)
|
while (System::currentTimeMillis() >= lastTime + 1000)
|
||||||
{
|
{
|
||||||
fpsString = std::to_wstring(frames) + L" fps, " + std::to_wstring(Chunk::updates) + L" chunk updates)";
|
fpsString = std::to_wstring(frames) + L" fps (" + std::to_wstring(Chunk::updates) + L" chunk updates)";
|
||||||
Chunk::updates = 0;
|
Chunk::updates = 0;
|
||||||
lastTime += 1000;
|
lastTime += 1000;
|
||||||
frames = 0;
|
frames = 0;
|
||||||
|
|
@ -2084,7 +2084,7 @@ void Minecraft::run_middle()
|
||||||
while (System::nanoTime() >= lastTime + 1000000000)
|
while (System::nanoTime() >= lastTime + 1000000000)
|
||||||
{
|
{
|
||||||
MemSect(31);
|
MemSect(31);
|
||||||
fpsString = std::to_wstring(frames) + L" fps," + std::to_wstring(Chunk::updates) + L" chunk updates";
|
fpsString = std::to_wstring(frames) + L" fps (" + std::to_wstring(Chunk::updates) + L" chunk updates)";
|
||||||
MemSect(0);
|
MemSect(0);
|
||||||
Chunk::updates = 0;
|
Chunk::updates = 0;
|
||||||
lastTime += 1000000000;
|
lastTime += 1000000000;
|
||||||
|
|
|
||||||
|
|
@ -68,15 +68,15 @@
|
||||||
//4J Added
|
//4J Added
|
||||||
MinecraftServer *MinecraftServer::server = nullptr;
|
MinecraftServer *MinecraftServer::server = nullptr;
|
||||||
bool MinecraftServer::setTimeAtEndOfTick = false;
|
bool MinecraftServer::setTimeAtEndOfTick = false;
|
||||||
__int64 MinecraftServer::setTime = 0;
|
int64_t MinecraftServer::setTime = 0;
|
||||||
bool MinecraftServer::setTimeOfDayAtEndOfTick = false;
|
bool MinecraftServer::setTimeOfDayAtEndOfTick = false;
|
||||||
__int64 MinecraftServer::setTimeOfDay = 0;
|
int64_t MinecraftServer::setTimeOfDay = 0;
|
||||||
bool MinecraftServer::m_bPrimaryPlayerSignedOut=false;
|
bool MinecraftServer::m_bPrimaryPlayerSignedOut=false;
|
||||||
bool MinecraftServer::s_bServerHalted=false;
|
bool MinecraftServer::s_bServerHalted=false;
|
||||||
bool MinecraftServer::s_bSaveOnExitAnswered=false;
|
bool MinecraftServer::s_bSaveOnExitAnswered=false;
|
||||||
#ifdef _ACK_CHUNK_SEND_THROTTLING
|
#ifdef _ACK_CHUNK_SEND_THROTTLING
|
||||||
bool MinecraftServer::s_hasSentEnoughPackets = false;
|
bool MinecraftServer::s_hasSentEnoughPackets = false;
|
||||||
__int64 MinecraftServer::s_tickStartTime = 0;
|
int64_t MinecraftServer::s_tickStartTime = 0;
|
||||||
vector<INetworkPlayer *> MinecraftServer::s_sentTo;
|
vector<INetworkPlayer *> MinecraftServer::s_sentTo;
|
||||||
#else
|
#else
|
||||||
int MinecraftServer::s_slowQueuePlayerIndex = 0;
|
int MinecraftServer::s_slowQueuePlayerIndex = 0;
|
||||||
|
|
@ -586,7 +586,7 @@ MinecraftServer::~MinecraftServer()
|
||||||
DeleteCriticalSection(&m_consoleInputCS);
|
DeleteCriticalSection(&m_consoleInputCS);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DWORD initSettings, bool findSeed)
|
bool MinecraftServer::initServer(int64_t seed, NetworkGameInitData *initData, DWORD initSettings, bool findSeed)
|
||||||
{
|
{
|
||||||
// 4J - removed
|
// 4J - removed
|
||||||
#if 0
|
#if 0
|
||||||
|
|
@ -703,7 +703,7 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DW
|
||||||
// TODO: Stop loading, add error message.
|
// TODO: Stop loading, add error message.
|
||||||
}
|
}
|
||||||
|
|
||||||
__int64 levelNanoTime = System::nanoTime();
|
int64_t levelNanoTime = System::nanoTime();
|
||||||
|
|
||||||
wstring levelName = (initData && !initData->levelName.empty()) ? initData->levelName : GetDedicatedServerString(settings, L"level-name", L"world");
|
wstring levelName = (initData && !initData->levelName.empty()) ? initData->levelName : GetDedicatedServerString(settings, L"level-name", L"world");
|
||||||
wstring levelTypeString;
|
wstring levelTypeString;
|
||||||
|
|
@ -747,10 +747,10 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData *initData, DW
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
wstring levelSeedString = settings->getString(L"level-seed", L"");
|
wstring levelSeedString = settings->getString(L"level-seed", L"");
|
||||||
__int64 levelSeed = (new Random())->nextLong();
|
int64_t levelSeed = (new Random())->nextLong();
|
||||||
if (levelSeedString.length() > 0)
|
if (levelSeedString.length() > 0)
|
||||||
{
|
{
|
||||||
long newSeed = _fromString<__int64>(levelSeedString);
|
long newSeed = _fromString<int64_t>(levelSeedString);
|
||||||
if (newSeed != 0) {
|
if (newSeed != 0) {
|
||||||
levelSeed = newSeed;
|
levelSeed = newSeed;
|
||||||
}
|
}
|
||||||
|
|
@ -877,7 +877,7 @@ void MinecraftServer::postProcessTerminate(ProgressRenderer *mcprogress)
|
||||||
DeleteCriticalSection(&m_postProcessCS);
|
DeleteCriticalSection(&m_postProcessCS);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring& name, __int64 levelSeed, LevelType *pLevelType, NetworkGameInitData *initData)
|
bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring& name, int64_t levelSeed, LevelType *pLevelType, NetworkGameInitData *initData)
|
||||||
{
|
{
|
||||||
// 4J - TODO - do with new save stuff
|
// 4J - TODO - do with new save stuff
|
||||||
// if (storageSource->requiresConversion(name))
|
// if (storageSource->requiresConversion(name))
|
||||||
|
|
@ -1027,7 +1027,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
|
||||||
m_postUpdateThread->SetPriority(THREAD_PRIORITY_ABOVE_NORMAL);
|
m_postUpdateThread->SetPriority(THREAD_PRIORITY_ABOVE_NORMAL);
|
||||||
m_postUpdateThread->Run();
|
m_postUpdateThread->Run();
|
||||||
|
|
||||||
__int64 startTime = System::currentTimeMillis();
|
int64_t startTime = System::currentTimeMillis();
|
||||||
|
|
||||||
// 4J Stu - Added this to temporarily make starting games on vita faster
|
// 4J Stu - Added this to temporarily make starting games on vita faster
|
||||||
#ifdef __PSVITA__
|
#ifdef __PSVITA__
|
||||||
|
|
@ -1057,7 +1057,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
|
||||||
csf->closeHandle(fe);
|
csf->closeHandle(fe);
|
||||||
}
|
}
|
||||||
|
|
||||||
__int64 lastTime = System::currentTimeMillis();
|
int64_t lastTime = System::currentTimeMillis();
|
||||||
#ifdef _LARGE_WORLDS
|
#ifdef _LARGE_WORLDS
|
||||||
if(app.GetGameNewWorldSize() > levels[0]->getLevelData()->getXZSizeOld())
|
if(app.GetGameNewWorldSize() > levels[0]->getLevelData()->getXZSizeOld())
|
||||||
{
|
{
|
||||||
|
|
@ -1085,7 +1085,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
__int64 lastStorageTickTime = System::currentTimeMillis();
|
int64_t lastStorageTickTime = System::currentTimeMillis();
|
||||||
|
|
||||||
// Test code to enable full creation of levels at start up
|
// Test code to enable full creation of levels at start up
|
||||||
int halfsidelen = ( i == 0 ) ? 27 : 9;
|
int halfsidelen = ( i == 0 ) ? 27 : 9;
|
||||||
|
|
@ -1108,7 +1108,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
__int64 lastStorageTickTime = System::currentTimeMillis();
|
int64_t lastStorageTickTime = System::currentTimeMillis();
|
||||||
Pos *spawnPos = level->getSharedSpawnPos();
|
Pos *spawnPos = level->getSharedSpawnPos();
|
||||||
|
|
||||||
int twoRPlusOne = r*2 + 1;
|
int twoRPlusOne = r*2 + 1;
|
||||||
|
|
@ -1125,7 +1125,7 @@ bool MinecraftServer::loadLevel(LevelStorageSource *storageSource, const wstring
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// printf(">>>%d %d %d\n",i,x,z);
|
// printf(">>>%d %d %d\n",i,x,z);
|
||||||
// __int64 now = System::currentTimeMillis();
|
// int64_t now = System::currentTimeMillis();
|
||||||
// if (now < lastTime) lastTime = now;
|
// if (now < lastTime) lastTime = now;
|
||||||
// if (now > lastTime + 1000)
|
// if (now > lastTime + 1000)
|
||||||
{
|
{
|
||||||
|
|
@ -1700,7 +1700,7 @@ bool MinecraftServer::getForceGameType()
|
||||||
return forceGameType;
|
return forceGameType;
|
||||||
}
|
}
|
||||||
|
|
||||||
__int64 MinecraftServer::getCurrentTimeMillis()
|
int64_t MinecraftServer::getCurrentTimeMillis()
|
||||||
{
|
{
|
||||||
return System::currentTimeMillis();
|
return System::currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
@ -1716,7 +1716,7 @@ void MinecraftServer::setPlayerIdleTimeout(int playerIdleTimeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int c0a, c0b, c1a, c1b, c1c, c2a, c2b;
|
extern int c0a, c0b, c1a, c1b, c1c, c2a, c2b;
|
||||||
void MinecraftServer::run(__int64 seed, void *lpParameter)
|
void MinecraftServer::run(int64_t seed, void *lpParameter)
|
||||||
{
|
{
|
||||||
NetworkGameInitData *initData = nullptr;
|
NetworkGameInitData *initData = nullptr;
|
||||||
DWORD initSettings = 0;
|
DWORD initSettings = 0;
|
||||||
|
|
@ -1749,18 +1749,18 @@ void MinecraftServer::run(__int64 seed, void *lpParameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__int64 lastTime = getCurrentTimeMillis();
|
int64_t lastTime = getCurrentTimeMillis();
|
||||||
__int64 unprocessedTime = 0;
|
int64_t unprocessedTime = 0;
|
||||||
while (running && !s_bServerHalted)
|
while (running && !s_bServerHalted)
|
||||||
{
|
{
|
||||||
__int64 now = getCurrentTimeMillis();
|
int64_t now = getCurrentTimeMillis();
|
||||||
|
|
||||||
// 4J Stu - When we pause the server, we don't want to count that as time passed
|
// 4J Stu - When we pause the server, we don't want to count that as time passed
|
||||||
// 4J Stu - TU-1 hotifx - Remove this line. We want to make sure that we tick connections at the proper rate when paused
|
// 4J Stu - TU-1 hotifx - Remove this line. We want to make sure that we tick connections at the proper rate when paused
|
||||||
//Fix for #13191 - The host of a game can get a message informing them that the connection to the server has been lost
|
//Fix for #13191 - The host of a game can get a message informing them that the connection to the server has been lost
|
||||||
//if(m_isServerPaused) lastTime = now;
|
//if(m_isServerPaused) lastTime = now;
|
||||||
|
|
||||||
__int64 passedTime = now - lastTime;
|
int64_t passedTime = now - lastTime;
|
||||||
if (passedTime > MS_PER_TICK * 40)
|
if (passedTime > MS_PER_TICK * 40)
|
||||||
{
|
{
|
||||||
// logger.warning("Can't keep up! Did the system time change, or is the server overloaded?");
|
// logger.warning("Can't keep up! Did the system time change, or is the server overloaded?");
|
||||||
|
|
@ -1786,19 +1786,19 @@ void MinecraftServer::run(__int64 seed, void *lpParameter)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// int tickcount = 0;
|
// int tickcount = 0;
|
||||||
// __int64 beforeall = System::currentTimeMillis();
|
// int64_t beforeall = System::currentTimeMillis();
|
||||||
while (unprocessedTime > MS_PER_TICK)
|
while (unprocessedTime > MS_PER_TICK)
|
||||||
{
|
{
|
||||||
unprocessedTime -= MS_PER_TICK;
|
unprocessedTime -= MS_PER_TICK;
|
||||||
chunkPacketManagement_PreTick();
|
chunkPacketManagement_PreTick();
|
||||||
// __int64 before = System::currentTimeMillis();
|
// int64_t before = System::currentTimeMillis();
|
||||||
tick();
|
tick();
|
||||||
// __int64 after = System::currentTimeMillis();
|
// int64_t after = System::currentTimeMillis();
|
||||||
// PIXReportCounter(L"Server time",(float)(after-before));
|
// PIXReportCounter(L"Server time",(float)(after-before));
|
||||||
|
|
||||||
chunkPacketManagement_PostTick();
|
chunkPacketManagement_PostTick();
|
||||||
}
|
}
|
||||||
// __int64 afterall = System::currentTimeMillis();
|
// int64_t afterall = System::currentTimeMillis();
|
||||||
// PIXReportCounter(L"Server time all",(float)(afterall-beforeall));
|
// PIXReportCounter(L"Server time all",(float)(afterall-beforeall));
|
||||||
// PIXReportCounter(L"Server ticks",(float)tickcount);
|
// PIXReportCounter(L"Server ticks",(float)tickcount);
|
||||||
}
|
}
|
||||||
|
|
@ -2140,15 +2140,15 @@ void MinecraftServer::tick()
|
||||||
players->broadcastAll(std::make_shared<SetTimePacket>(level->getGameTime(), level->getDayTime(), level->getGameRules()->getBoolean(GameRules::RULE_DAYLIGHT)), level->dimension->id);
|
players->broadcastAll(std::make_shared<SetTimePacket>(level->getGameTime(), level->getDayTime(), level->getGameRules()->getBoolean(GameRules::RULE_DAYLIGHT)), level->dimension->id);
|
||||||
}
|
}
|
||||||
// #ifndef __PS3__
|
// #ifndef __PS3__
|
||||||
static __int64 stc = 0;
|
static int64_t stc = 0;
|
||||||
__int64 st0 = System::currentTimeMillis();
|
int64_t st0 = System::currentTimeMillis();
|
||||||
PIXBeginNamedEvent(0,"Level tick %d",i);
|
PIXBeginNamedEvent(0,"Level tick %d",i);
|
||||||
((Level *)level)->tick();
|
static_cast<Level *>(level)->tick();
|
||||||
int64_t st1 = System::currentTimeMillis();
|
int64_t st1 = System::currentTimeMillis();
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
PIXBeginNamedEvent(0,"Update lights %d",i);
|
PIXBeginNamedEvent(0,"Update lights %d",i);
|
||||||
|
|
||||||
__int64 st2 = System::currentTimeMillis();
|
int64_t st2 = System::currentTimeMillis();
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
PIXBeginNamedEvent(0,"Entity tick %d",i);
|
PIXBeginNamedEvent(0,"Entity tick %d",i);
|
||||||
// 4J added to stop ticking entities in levels when players are not in those levels.
|
// 4J added to stop ticking entities in levels when players are not in those levels.
|
||||||
|
|
@ -2176,7 +2176,7 @@ void MinecraftServer::tick()
|
||||||
level->getTracker()->tick();
|
level->getTracker()->tick();
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
|
|
||||||
__int64 st3 = System::currentTimeMillis();
|
int64_t st3 = System::currentTimeMillis();
|
||||||
// printf(">>>>>>>>>>>>>>>>>>>>>> Tick %d %d %d : %d\n", st1 - st0, st2 - st1, st3 - st2, st0 - stc );
|
// printf(">>>>>>>>>>>>>>>>>>>>>> Tick %d %d %d : %d\n", st1 - st0, st2 - st1, st3 - st2, st0 - stc );
|
||||||
stc = st0;
|
stc = st0;
|
||||||
// #endif// __PS3__
|
// #endif// __PS3__
|
||||||
|
|
@ -2231,7 +2231,7 @@ void MinecraftServer::handleConsoleInputs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MinecraftServer::main(__int64 seed, void *lpParameter)
|
void MinecraftServer::main(int64_t seed, void *lpParameter)
|
||||||
{
|
{
|
||||||
#if __PS3__
|
#if __PS3__
|
||||||
ShutdownManager::HasStarted(ShutdownManager::eServerThread );
|
ShutdownManager::HasStarted(ShutdownManager::eServerThread );
|
||||||
|
|
@ -2311,7 +2311,7 @@ bool MinecraftServer::chunkPacketManagement_CanSendTo(INetworkPlayer *player)
|
||||||
|
|
||||||
void MinecraftServer::chunkPacketManagement_DidSendTo(INetworkPlayer *player)
|
void MinecraftServer::chunkPacketManagement_DidSendTo(INetworkPlayer *player)
|
||||||
{
|
{
|
||||||
__int64 currentTime = System::currentTimeMillis();
|
int64_t currentTime = System::currentTimeMillis();
|
||||||
|
|
||||||
if( ( currentTime - s_tickStartTime ) >= MAX_TICK_TIME_FOR_PACKET_SENDS )
|
if( ( currentTime - s_tickStartTime ) >= MAX_TICK_TIME_FOR_PACKET_SENDS )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -31,14 +31,14 @@ class CommandDispatcher;
|
||||||
typedef struct _LoadSaveDataThreadParam
|
typedef struct _LoadSaveDataThreadParam
|
||||||
{
|
{
|
||||||
LPVOID data;
|
LPVOID data;
|
||||||
__int64 fileSize;
|
int64_t fileSize;
|
||||||
const wstring saveName;
|
const wstring saveName;
|
||||||
_LoadSaveDataThreadParam(LPVOID data, __int64 filesize, const wstring &saveName) : data( data ), fileSize( filesize ), saveName( saveName ) {}
|
_LoadSaveDataThreadParam(LPVOID data, int64_t filesize, const wstring &saveName) : data( data ), fileSize( filesize ), saveName( saveName ) {}
|
||||||
} LoadSaveDataThreadParam;
|
} LoadSaveDataThreadParam;
|
||||||
|
|
||||||
typedef struct _NetworkGameInitData
|
typedef struct _NetworkGameInitData
|
||||||
{
|
{
|
||||||
__int64 seed;
|
int64_t seed;
|
||||||
LoadSaveDataThreadParam *saveData;
|
LoadSaveDataThreadParam *saveData;
|
||||||
DWORD settings;
|
DWORD settings;
|
||||||
LevelGenerationOptions *levelGen;
|
LevelGenerationOptions *levelGen;
|
||||||
|
|
@ -137,9 +137,9 @@ public:
|
||||||
~MinecraftServer();
|
~MinecraftServer();
|
||||||
private:
|
private:
|
||||||
// 4J Added - LoadSaveDataThreadParam
|
// 4J Added - LoadSaveDataThreadParam
|
||||||
bool initServer(__int64 seed, NetworkGameInitData *initData, DWORD initSettings, bool findSeed);
|
bool initServer(int64_t seed, NetworkGameInitData *initData, DWORD initSettings, bool findSeed);
|
||||||
void postProcessTerminate(ProgressRenderer *mcprogress);
|
void postProcessTerminate(ProgressRenderer *mcprogress);
|
||||||
bool loadLevel(LevelStorageSource *storageSource, const wstring& name, __int64 levelSeed, LevelType *pLevelType, NetworkGameInitData *initData);
|
bool loadLevel(LevelStorageSource *storageSource, const wstring& name, int64_t levelSeed, LevelType *pLevelType, NetworkGameInitData *initData);
|
||||||
void setProgress(const wstring& status, int progress);
|
void setProgress(const wstring& status, int progress);
|
||||||
void endProgress();
|
void endProgress();
|
||||||
void saveGameRules();
|
void saveGameRules();
|
||||||
|
|
@ -176,13 +176,13 @@ public:
|
||||||
bool isUnderSpawnProtection(Level *level, int x, int y, int z, shared_ptr<Player> player);
|
bool isUnderSpawnProtection(Level *level, int x, int y, int z, shared_ptr<Player> player);
|
||||||
void setForceGameType(bool forceGameType);
|
void setForceGameType(bool forceGameType);
|
||||||
bool getForceGameType();
|
bool getForceGameType();
|
||||||
static __int64 getCurrentTimeMillis();
|
static int64_t getCurrentTimeMillis();
|
||||||
int getPlayerIdleTimeout();
|
int getPlayerIdleTimeout();
|
||||||
void setPlayerIdleTimeout(int playerIdleTimeout);
|
void setPlayerIdleTimeout(int playerIdleTimeout);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void halt();
|
void halt();
|
||||||
void run(__int64 seed, void *lpParameter);
|
void run(int64_t seed, void *lpParameter);
|
||||||
|
|
||||||
void broadcastStartSavingPacket();
|
void broadcastStartSavingPacket();
|
||||||
void broadcastStopSavingPacket();
|
void broadcastStopSavingPacket();
|
||||||
|
|
@ -193,7 +193,7 @@ public:
|
||||||
void handleConsoleInput(const wstring& msg, ConsoleInputSource *source);
|
void handleConsoleInput(const wstring& msg, ConsoleInputSource *source);
|
||||||
void handleConsoleInputs();
|
void handleConsoleInputs();
|
||||||
// void addTickable(Tickable tickable); // 4J removed
|
// void addTickable(Tickable tickable); // 4J removed
|
||||||
static void main(__int64 seed, void *lpParameter);
|
static void main(int64_t seed, void *lpParameter);
|
||||||
static void HaltServer(bool bPrimaryPlayerSignedOut=false);
|
static void HaltServer(bool bPrimaryPlayerSignedOut=false);
|
||||||
|
|
||||||
File *getFile(const wstring& name);
|
File *getFile(const wstring& name);
|
||||||
|
|
@ -213,9 +213,9 @@ private:
|
||||||
static MinecraftServer *server;
|
static MinecraftServer *server;
|
||||||
|
|
||||||
static bool setTimeOfDayAtEndOfTick;
|
static bool setTimeOfDayAtEndOfTick;
|
||||||
static __int64 setTimeOfDay;
|
static int64_t setTimeOfDay;
|
||||||
static bool setTimeAtEndOfTick;
|
static bool setTimeAtEndOfTick;
|
||||||
static __int64 setTime;
|
static int64_t setTime;
|
||||||
|
|
||||||
static bool m_bPrimaryPlayerSignedOut; // 4J-PB added to tell the stopserver not to save the game - another player may have signed in in their place, so ProfileManager.IsSignedIn isn't enough
|
static bool m_bPrimaryPlayerSignedOut; // 4J-PB added to tell the stopserver not to save the game - another player may have signed in in their place, so ProfileManager.IsSignedIn isn't enough
|
||||||
static bool s_bServerHalted; // 4J Stu Added so that we can halt the server even before it's been created properly
|
static bool s_bServerHalted; // 4J Stu Added so that we can halt the server even before it's been created properly
|
||||||
|
|
@ -237,8 +237,7 @@ private:
|
||||||
public:
|
public:
|
||||||
void addPostProcessRequest(ChunkSource *chunkSource, int x, int z);
|
void addPostProcessRequest(ChunkSource *chunkSource, int x, int z);
|
||||||
|
|
||||||
public:
|
static PlayerList *getPlayerList() { if( server != nullptr) return server->players; else return nullptr; }
|
||||||
static PlayerList *getPlayerList() { if( server != NULL ) return server->players; else return NULL; }
|
|
||||||
static void SetTimeOfDay(int64_t time) { setTimeOfDayAtEndOfTick = true; setTimeOfDay = time; }
|
static void SetTimeOfDay(int64_t time) { setTimeOfDayAtEndOfTick = true; setTimeOfDay = time; }
|
||||||
static void SetTime(int64_t time) { setTimeAtEndOfTick = true; setTime = time; }
|
static void SetTime(int64_t time) { setTimeAtEndOfTick = true; setTime = time; }
|
||||||
|
|
||||||
|
|
@ -250,7 +249,7 @@ private:
|
||||||
// 4J Added - A static that stores the QNet index of the player that is next allowed to send a packet in the slow queue
|
// 4J Added - A static that stores the QNet index of the player that is next allowed to send a packet in the slow queue
|
||||||
#ifdef _ACK_CHUNK_SEND_THROTTLING
|
#ifdef _ACK_CHUNK_SEND_THROTTLING
|
||||||
static bool s_hasSentEnoughPackets;
|
static bool s_hasSentEnoughPackets;
|
||||||
static __int64 s_tickStartTime;
|
static int64_t s_tickStartTime;
|
||||||
static vector<INetworkPlayer *> s_sentTo;
|
static vector<INetworkPlayer *> s_sentTo;
|
||||||
static const int MAX_TICK_TIME_FOR_PACKET_SENDS = 35;
|
static const int MAX_TICK_TIME_FOR_PACKET_SENDS = 35;
|
||||||
#else
|
#else
|
||||||
|
|
@ -272,7 +271,7 @@ public:
|
||||||
#ifndef _ACK_CHUNK_SEND_THROTTLING
|
#ifndef _ACK_CHUNK_SEND_THROTTLING
|
||||||
static void cycleSlowQueueIndex();
|
static void cycleSlowQueueIndex();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void chunkPacketManagement_PreTick();
|
void chunkPacketManagement_PreTick();
|
||||||
void chunkPacketManagement_PostTick();
|
void chunkPacketManagement_PostTick();
|
||||||
|
|
||||||
|
|
@ -280,5 +279,5 @@ public:
|
||||||
void Suspend();
|
void Suspend();
|
||||||
bool IsSuspending();
|
bool IsSuspending();
|
||||||
|
|
||||||
// 4J Stu - A load of functions were all added in 1.0.1 in the ServerInterface, but I don't think we need any of them
|
// 4J Stu - A load of functions were all added in 1.0.1 in the ServerInterface, but I don't think we need any of them
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -589,7 +589,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
case WM_CHAR:
|
case WM_CHAR:
|
||||||
// Buffer typed characters so UIScene_Keyboard can dispatch them to the Iggy Flash player
|
// Buffer typed characters so UIScene_Keyboard can dispatch them to the Iggy Flash player
|
||||||
if (wParam >= 0x20 || wParam == 0x08 || wParam == 0x0D) // printable chars + backspace + enter
|
if (wParam >= 0x20 || wParam == 0x08 || wParam == 0x0D) // printable chars + backspace + enter
|
||||||
g_KBMInput.OnChar((wchar_t)wParam);
|
g_KBMInput.OnChar(static_cast<wchar_t>(wParam));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
|
|
@ -620,12 +620,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
else if (vk == VK_MENU)
|
else if (vk == VK_MENU)
|
||||||
vk = (lParam & (1 << 24)) ? VK_RMENU : VK_LMENU;
|
vk = (lParam & (1 << 24)) ? VK_RMENU : VK_LMENU;
|
||||||
g_KBMInput.OnKeyDown(vk);
|
g_KBMInput.OnKeyDown(vk);
|
||||||
break;
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||||
}
|
}
|
||||||
case WM_KEYUP:
|
case WM_KEYUP:
|
||||||
case WM_SYSKEYUP:
|
case WM_SYSKEYUP:
|
||||||
{
|
{
|
||||||
int vk = (int)wParam;
|
int vk = static_cast<int>(wParam);
|
||||||
if (vk == VK_SHIFT)
|
if (vk == VK_SHIFT)
|
||||||
vk = (MapVirtualKey((lParam >> 16) & 0xFF, MAPVK_VSC_TO_VK_EX) == VK_RSHIFT) ? VK_RSHIFT : VK_LSHIFT;
|
vk = (MapVirtualKey((lParam >> 16) & 0xFF, MAPVK_VSC_TO_VK_EX) == VK_RSHIFT) ? VK_RSHIFT : VK_LSHIFT;
|
||||||
else if (vk == VK_CONTROL)
|
else if (vk == VK_CONTROL)
|
||||||
|
|
@ -1673,6 +1673,12 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||||
const Win64LaunchOptions launchOptions = ParseLaunchOptions();
|
const Win64LaunchOptions launchOptions = ParseLaunchOptions();
|
||||||
ApplyScreenMode(launchOptions.screenMode);
|
ApplyScreenMode(launchOptions.screenMode);
|
||||||
|
|
||||||
|
// Ensure uid.dat exists from startup in client mode (before any multiplayer/login path).
|
||||||
|
if (!launchOptions.serverMode)
|
||||||
|
{
|
||||||
|
Win64Xuid::ResolvePersistentXuid();
|
||||||
|
}
|
||||||
|
|
||||||
// If no username, let's fall back
|
// If no username, let's fall back
|
||||||
if (g_Win64Username[0] == 0)
|
if (g_Win64Username[0] == 0)
|
||||||
{
|
{
|
||||||
|
|
@ -2135,6 +2141,14 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Open chat
|
||||||
|
if (g_KBMInput.IsKeyPressed('T') && app.GetGameStarted() && !ui.GetMenuDisplayed(0) && pMinecraft->screen == NULL)
|
||||||
|
{
|
||||||
|
g_KBMInput.ClearCharBuffer();
|
||||||
|
pMinecraft->setScreen(new ChatScreen());
|
||||||
|
SetFocus(g_hWnd);
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// has the game defined profile data been changed (by a profile load)
|
// has the game defined profile data been changed (by a profile load)
|
||||||
if(app.uiGameDefinedDataChangedBitmask!=0)
|
if(app.uiGameDefinedDataChangedBitmask!=0)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue