diff --git a/src/Input.c b/src/Input.c index 9dc8c2290..e184d5bdb 100644 --- a/src/Input.c +++ b/src/Input.c @@ -738,6 +738,10 @@ void InputHandler_PlaceBlock(void) { if (Game_CanPick(old) || !Blocks.CanPlace[block]) return; /* air-ish blocks can only replace over other air-ish blocks */ if (Blocks.Draw[block] == DRAW_GAS && Blocks.Draw[old] != DRAW_GAS) return; + + /* undeletable gas blocks can't be replaced with other blocks */ + if (Blocks.Collide[old] == COLLIDE_GAS && !Blocks.CanDelete[old]) return; + if (!CheckIsFree(block)) return; Game_ChangeBlock(pos.X, pos.Y, pos.Z, block); diff --git a/src/Server.c b/src/Server.c index 0eb95a18f..9188ae9fb 100644 --- a/src/Server.c +++ b/src/Server.c @@ -296,7 +296,6 @@ static void MPConnection_BeginConnect(void) { String_InitArray(title, titleBuffer); /* Default block permissions (in case server supports SetBlockPermissions but doesn't send) */ - Blocks.CanPlace[BLOCK_AIR] = false; Blocks.CanDelete[BLOCK_AIR] = false; Blocks.CanPlace[BLOCK_LAVA] = false; Blocks.CanDelete[BLOCK_LAVA] = false; Blocks.CanPlace[BLOCK_WATER] = false; Blocks.CanDelete[BLOCK_WATER] = false; Blocks.CanPlace[BLOCK_STILL_LAVA] = false; Blocks.CanDelete[BLOCK_STILL_LAVA] = false;