mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
Merge pull request #8 from sylvessa/fix/random-fixes
Fix flight, entity ids, chunk loading speeds, and autosave ui for dedi removal
This commit is contained in:
commit
3a91e830f9
|
|
@ -657,7 +657,7 @@ bool MinecraftServer::initServer(int64_t seed, NetworkGameInitData *initData, DW
|
||||||
setFlightAllowed(GetDedicatedServerBool(settings, L"allow-flight", true));
|
setFlightAllowed(GetDedicatedServerBool(settings, L"allow-flight", true));
|
||||||
|
|
||||||
// 4J Stu - Enabling flight to stop it kicking us when we use it
|
// 4J Stu - Enabling flight to stop it kicking us when we use it
|
||||||
#ifdef _DEBUG_MENUS_ENABLED
|
#if (defined _DEBUG_MENUS_ENABLED && defined _DEBUG)
|
||||||
setFlightAllowed(true);
|
setFlightAllowed(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -1848,8 +1848,9 @@ void MinecraftServer::run(int64_t seed, void *lpParameter)
|
||||||
switch(eAction)
|
switch(eAction)
|
||||||
{
|
{
|
||||||
case eXuiServerAction_AutoSaveGame:
|
case eXuiServerAction_AutoSaveGame:
|
||||||
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
#if defined(_XBOX_ONE) || defined(__ORBIS__) || defined(MINECRAFT_SERVER_BUILD)
|
||||||
{
|
{
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXBeginNamedEvent(0, "Autosave");
|
PIXBeginNamedEvent(0, "Autosave");
|
||||||
|
|
||||||
// Get the frequency of the timer
|
// Get the frequency of the timer
|
||||||
|
|
@ -1860,6 +1861,7 @@ void MinecraftServer::run(int64_t seed, void *lpParameter)
|
||||||
|
|
||||||
// Save the start time
|
// Save the start time
|
||||||
QueryPerformanceCounter(&qwTime);
|
QueryPerformanceCounter(&qwTime);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (players != nullptr)
|
if (players != nullptr)
|
||||||
{
|
{
|
||||||
|
|
@ -1873,26 +1875,39 @@ void MinecraftServer::run(int64_t seed, void *lpParameter)
|
||||||
// with the data from the nethers leveldata.
|
// with the data from the nethers leveldata.
|
||||||
// Fix for #7418 - Functional: Gameplay: Saving after sleeping in a bed will place player at nighttime when restarting.
|
// Fix for #7418 - Functional: Gameplay: Saving after sleeping in a bed will place player at nighttime when restarting.
|
||||||
ServerLevel *level = levels[levels.length - 1 - j];
|
ServerLevel *level = levels[levels.length - 1 - j];
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXBeginNamedEvent(0, "Saving level %d", levels.length - 1 - j);
|
PIXBeginNamedEvent(0, "Saving level %d", levels.length - 1 - j);
|
||||||
|
#endif
|
||||||
level->save(false, nullptr, true);
|
level->save(false, nullptr, true);
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (!s_bServerHalted)
|
if (!s_bServerHalted)
|
||||||
{
|
{
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXBeginNamedEvent(0, "Saving game rules");
|
PIXBeginNamedEvent(0, "Saving game rules");
|
||||||
|
#endif
|
||||||
saveGameRules();
|
saveGameRules();
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
|
|
||||||
PIXBeginNamedEvent(0, "Save to disc");
|
PIXBeginNamedEvent(0, "Save to disc");
|
||||||
|
#endif
|
||||||
levels[0]->saveToDisc(Minecraft::GetInstance()->progressRenderer, true);
|
levels[0]->saveToDisc(Minecraft::GetInstance()->progressRenderer, true);
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(_XBOX_ONE) || defined(__ORBIS__)
|
||||||
PIXEndNamedEvent();
|
PIXEndNamedEvent();
|
||||||
|
|
||||||
QueryPerformanceCounter(&qwNewTime);
|
QueryPerformanceCounter(&qwNewTime);
|
||||||
qwDeltaTime.QuadPart = qwNewTime.QuadPart - qwTime.QuadPart;
|
qwDeltaTime.QuadPart = qwNewTime.QuadPart - qwTime.QuadPart;
|
||||||
fElapsedTime = fSecsPerTick * ((FLOAT)(qwDeltaTime.QuadPart));
|
fElapsedTime = fSecsPerTick * ((FLOAT)(qwDeltaTime.QuadPart));
|
||||||
app.DebugPrintf("Autosave: Elapsed time %f\n", fElapsedTime);
|
app.DebugPrintf("Autosave: Elapsed time %f\n", fElapsedTime);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -2375,6 +2390,9 @@ bool MinecraftServer::chunkPacketManagement_CanSendTo(INetworkPlayer *player)
|
||||||
{
|
{
|
||||||
if( player == nullptr ) return false;
|
if( player == nullptr ) return false;
|
||||||
|
|
||||||
|
#ifdef MINECRAFT_SERVER_BUILD
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
int time = GetTickCount();
|
int time = GetTickCount();
|
||||||
DWORD currentPlayerCount = g_NetworkManager.GetPlayerCount();
|
DWORD currentPlayerCount = g_NetworkManager.GetPlayerCount();
|
||||||
if( currentPlayerCount == 0 ) return false;
|
if( currentPlayerCount == 0 ) return false;
|
||||||
|
|
@ -2386,6 +2404,7 @@ bool MinecraftServer::chunkPacketManagement_CanSendTo(INetworkPlayer *player)
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void MinecraftServer::chunkPacketManagement_DidSendTo(INetworkPlayer *player)
|
void MinecraftServer::chunkPacketManagement_DidSendTo(INetworkPlayer *player)
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,8 @@ void ServerPlayer::flagEntitiesToBeRemoved(unsigned int *flags, bool *removedFou
|
||||||
if( ( *removedFound ) == false )
|
if( ( *removedFound ) == false )
|
||||||
{
|
{
|
||||||
*removedFound = true;
|
*removedFound = true;
|
||||||
memset(flags, 0, 2048/32);
|
// before this left 192 bytes uninitialized!!!!!
|
||||||
|
memset(flags, 0, (2048 / 32) * sizeof(unsigned int));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int index : entitiesToRemove)
|
for(int index : entitiesToRemove)
|
||||||
|
|
@ -376,6 +377,9 @@ void ServerPlayer::doChunkSendingTick(bool dontDelayChunks)
|
||||||
// connection->done);
|
// connection->done);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
#ifdef MINECRAFT_SERVER_BUILD
|
||||||
|
if (dontDelayChunks || (canSendToPlayer && !connection->done))
|
||||||
|
#else
|
||||||
if( dontDelayChunks ||
|
if( dontDelayChunks ||
|
||||||
(canSendToPlayer &&
|
(canSendToPlayer &&
|
||||||
#ifdef _XBOX_ONE
|
#ifdef _XBOX_ONE
|
||||||
|
|
@ -390,6 +394,7 @@ void ServerPlayer::doChunkSendingTick(bool dontDelayChunks)
|
||||||
#endif
|
#endif
|
||||||
//(tickCount - lastBrupSendTickCount) > (connection->getNetworkPlayer()->GetCurrentRtt()>>4) &&
|
//(tickCount - lastBrupSendTickCount) > (connection->getNetworkPlayer()->GetCurrentRtt()>>4) &&
|
||||||
!connection->done) )
|
!connection->done) )
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
lastBrupSendTickCount = tickCount;
|
lastBrupSendTickCount = tickCount;
|
||||||
okToSend = true;
|
okToSend = true;
|
||||||
|
|
|
||||||
|
|
@ -96,9 +96,20 @@ int Entity::getSmallId()
|
||||||
puiUsedFlags++;
|
puiUsedFlags++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MINECRAFT_SERVER_BUILD
|
||||||
|
// in mc server dedi, a server with 8+ playerrs can cause this to go wack
|
||||||
|
int fallbackId = Entity::entityCounter++;
|
||||||
|
|
||||||
|
if (entityCounter == 0x7ffffff)
|
||||||
|
{
|
||||||
|
entityCounter = 2048;
|
||||||
|
}
|
||||||
|
return fallbackId;
|
||||||
|
#else
|
||||||
app.DebugPrintf("Out of small entity Ids... possible leak?\n");
|
app.DebugPrintf("Out of small entity Ids... possible leak?\n");
|
||||||
__debugbreak();
|
__debugbreak();
|
||||||
return -1;
|
return -1;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Entity::countFlagsForPIX()
|
void Entity::countFlagsForPIX()
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,12 @@ using namespace std;
|
||||||
|
|
||||||
// 4J Stu - This value should be big enough that we don't get any crashes causes by memory overwrites,
|
// 4J Stu - This value should be big enough that we don't get any crashes causes by memory overwrites,
|
||||||
// however it does seem way too large for what is actually needed. Needs further investigation
|
// however it does seem way too large for what is actually needed. Needs further investigation
|
||||||
|
#ifdef MINECRAFT_SERVER_BUILD
|
||||||
|
// fixes a crash when 8+ players are present
|
||||||
|
#define LEVEL_CHUNKS_TO_UPDATE_MAX (32*32*8)
|
||||||
|
#else
|
||||||
#define LEVEL_CHUNKS_TO_UPDATE_MAX (19*19*8)
|
#define LEVEL_CHUNKS_TO_UPDATE_MAX (19*19*8)
|
||||||
|
#endif
|
||||||
|
|
||||||
class Vec3;
|
class Vec3;
|
||||||
class ChunkSource;
|
class ChunkSource;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue