From 48d394f8d07c067bd8488d794a99df43fe22268b Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 31 Mar 2020 18:43:38 +1100 Subject: [PATCH] Make entities/fog/sky/clouds/borders/sides render when map failed to loaded, fix this to also work in multiplayer --- src/Entity.c | 4 ++-- src/EnvRenderer.c | 10 +++++----- src/Program.c | 4 ++-- src/Protocol.c | 9 ++++++--- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/Entity.c b/src/Entity.c index 1608bc77a..b366a6186 100644 --- a/src/Entity.c +++ b/src/Entity.c @@ -819,7 +819,7 @@ static void LocalPlayer_Tick(struct Entity* e, double delta) { cc_bool wasOnGround; Vec3 headingVelocity; - if (!World.Blocks) return; + if (!World.Loaded) return; e->StepSize = hacks->FullBlockStep && hacks->Enabled && hacks->CanSpeed ? 1.0f : 0.5f; p->OldVelocity = e->Velocity; wasOnGround = e->OnGround; @@ -938,7 +938,7 @@ static void LocalPlayer_DoRespawn(void) { float height, spawnY; int y; - if (!World.Blocks) return; + if (!World.Loaded) return; IVec3_Floor(&pos, &spawn); /* Spawn player at highest solid position to match vanilla Minecraft classic */ diff --git a/src/EnvRenderer.c b/src/EnvRenderer.c index c1162315d..bf710a332 100644 --- a/src/EnvRenderer.c +++ b/src/EnvRenderer.c @@ -112,7 +112,7 @@ static void UpdateFogNormal(float fogDensity, PackedCol fogCol) { void EnvRenderer_UpdateFog(void) { float fogDensity; PackedCol fogCol; - if (!World.Blocks) return; + if (!World.Loaded) return; CalcFog(&fogDensity, &fogCol); Gfx_ClearCol(fogCol); @@ -186,7 +186,7 @@ static void UpdateClouds(void) { int x1, z1, x2, z2; Gfx_DeleteVb(&clouds_vb); - if (!World.Blocks || Gfx.LostContext) return; + if (!World.Loaded || Gfx.LostContext) return; if (EnvRenderer_Minimal) return; extent = Utils_AdjViewDist(Game_ViewDistance); @@ -257,7 +257,7 @@ static void UpdateSky(void) { int x1, z1, x2, z2; Gfx_DeleteVb(&sky_vb); - if (!World.Blocks || Gfx.LostContext) return; + if (!World.Loaded || Gfx.LostContext) return; if (EnvRenderer_Minimal) return; extent = Utils_AdjViewDist(Game_ViewDistance); @@ -672,7 +672,7 @@ static void UpdateMapSides(void) { VertexP3fT2fC4b* data; Gfx_DeleteVb(&sides_vb); - if (!World.Blocks || Gfx.LostContext) return; + if (!World.Loaded || Gfx.LostContext) return; block = Env.SidesBlock; if (Blocks.Draw[block] == DRAW_GAS) return; @@ -722,7 +722,7 @@ static void UpdateMapEdges(void) { VertexP3fT2fC4b* data; Gfx_DeleteVb(&edges_vb); - if (!World.Blocks || Gfx.LostContext) return; + if (!World.Loaded || Gfx.LostContext) return; block = Env.EdgeBlock; if (Blocks.Draw[block] == DRAW_GAS) return; diff --git a/src/Program.c b/src/Program.c index 5cf25b9c5..ee48a7a6e 100644 --- a/src/Program.c +++ b/src/Program.c @@ -107,8 +107,8 @@ static int Program_Run(int argc, char** argv) { int argsCount = Platform_GetCommandLineArgs(argc, argv, args); #ifdef _MSC_VER /* NOTE: Make sure to comment this out before pushing a commit */ - //String rawArgs = String_FromConst("UnknownShadow200 fffff 127.0.0.1 25565"); - String rawArgs = String_FromConst("UnknownShadow200"); + String rawArgs = String_FromConst("UnknownShadow200 fffff 127.0.0.1 25565"); + //String rawArgs = String_FromConst("UnknownShadow200"); argsCount = String_UNSAFE_Split(&rawArgs, ' ', args, 4); #endif diff --git a/src/Protocol.c b/src/Protocol.c index 3be254877..d1b452deb 100644 --- a/src/Protocol.c +++ b/src/Protocol.c @@ -515,7 +515,6 @@ static void Classic_LevelFinalise(cc_uint8* data) { map_begunLoading = false; WoM_CheckSendWomID(); - if (map.allocFailed) return; #ifdef EXTENDED_BLOCKS if (map2.allocFailed) { FreeMapStates(); return; } #endif @@ -528,7 +527,11 @@ static void Classic_LevelFinalise(cc_uint8* data) { Chat_AddRaw("&cFailed to load map, try joining a different map"); Chat_AddRaw(" &cBlocks array size does not match volume of map"); FreeMapStates(); - return; + } + + /* TODO: TEMP HACK */ + if (!map.blocks) { + width = 0; height = 0; length = 0; } World_SetNewMap(map.blocks, width, height, length); @@ -1434,7 +1437,7 @@ static void CPE_Tick(void) { *------------------------------------------------------Custom blocks------------------------------------------------------* *#########################################################################################################################*/ static void BlockDefs_OnBlockUpdated(BlockID block, cc_bool didBlockLight) { - if (!World.Blocks) return; + if (!World.Loaded) return; /* Need to refresh lighting when a block's light blocking state changes */ if (Blocks.BlocksLight[block] != didBlockLight) Lighting_Refresh(); }