mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-27 07:11:04 -04:00
Fix door_green blocks removed when they activate a neighbouring fireworks/rocket/tnt block and the physics level is doors-only.
This commit is contained in:
parent
6f06dff408
commit
16b13ff70a
@ -123,8 +123,7 @@ namespace MCGalaxy.BlockPhysics {
|
|||||||
|
|
||||||
static void AnyDoor(Level lvl, Check C, ushort x, ushort y, ushort z, int timer, bool instaUpdate = false) {
|
static void AnyDoor(Level lvl, Check C, ushort x, ushort y, ushort z, int timer, bool instaUpdate = false) {
|
||||||
if (C.time != 0) {
|
if (C.time != 0) {
|
||||||
CheckDoorRevert(lvl, C, timer);
|
CheckDoorRevert(lvl, C, timer); return;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
PhysDoor(lvl, (ushort)(x + 1), y, z, instaUpdate);
|
PhysDoor(lvl, (ushort)(x + 1), y, z, instaUpdate);
|
||||||
PhysDoor(lvl, (ushort)(x - 1), y, z, instaUpdate);
|
PhysDoor(lvl, (ushort)(x - 1), y, z, instaUpdate);
|
||||||
@ -134,20 +133,21 @@ namespace MCGalaxy.BlockPhysics {
|
|||||||
PhysDoor(lvl, x, (ushort)(y + 1), z, instaUpdate);
|
PhysDoor(lvl, x, (ushort)(y + 1), z, instaUpdate);
|
||||||
|
|
||||||
if (lvl.blocks[C.b] != Block.door_green_air) {
|
if (lvl.blocks[C.b] != Block.door_green_air) {
|
||||||
CheckDoorRevert(lvl, C, timer);
|
CheckDoorRevert(lvl, C, timer); return;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lvl.physics != 5)
|
||||||
|
ActivateNeighbours(lvl, C, x, y, z);
|
||||||
|
CheckDoorRevert(lvl, C, timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ActivateNeighbours(Level lvl, Check C, ushort x, ushort y, ushort z) {
|
||||||
for (int xx = -1; xx <= 1; xx++)
|
for (int xx = -1; xx <= 1; xx++)
|
||||||
for (int yy = -1; yy <= 1; yy++)
|
for (int yy = -1; yy <= 1; yy++)
|
||||||
for (int zz = -1; zz <= 1; zz++)
|
for (int zz = -1; zz <= 1; zz++)
|
||||||
{
|
{
|
||||||
byte b = lvl.GetTile(lvl.IntOffset(C.b, xx, yy, zz));
|
byte b = lvl.GetTile(lvl.IntOffset(C.b, xx, yy, zz));
|
||||||
if (b == Block.rocketstart) {
|
if (b == Block.rocketstart) {
|
||||||
if (lvl.physics == 5) {
|
|
||||||
lvl.Blockchange(x, y, z, Block.air);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int b1 = lvl.IntOffset(C.b, xx * 3, yy * 3, zz * 3);
|
int b1 = lvl.IntOffset(C.b, xx * 3, yy * 3, zz * 3);
|
||||||
int b2 = lvl.IntOffset(C.b, xx * 2, yy * 2, zz * 2);
|
int b2 = lvl.IntOffset(C.b, xx * 2, yy * 2, zz * 2);
|
||||||
bool unblocked = lvl.GetTile(b1) == Block.air && lvl.GetTile(b2) == Block.air &&
|
bool unblocked = lvl.GetTile(b1) == Block.air && lvl.GetTile(b2) == Block.air &&
|
||||||
@ -159,10 +159,6 @@ namespace MCGalaxy.BlockPhysics {
|
|||||||
lvl.AddUpdate(b2, Block.fire);
|
lvl.AddUpdate(b2, Block.fire);
|
||||||
}
|
}
|
||||||
} else if (b == Block.firework) {
|
} else if (b == Block.firework) {
|
||||||
if (lvl.physics == 5) {
|
|
||||||
lvl.Blockchange(x, y, z, Block.air);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int b1 = lvl.IntOffset(C.b, xx, yy + 1, zz);
|
int b1 = lvl.IntOffset(C.b, xx, yy + 1, zz);
|
||||||
int b2 = lvl.IntOffset(C.b, xx, yy + 2, zz);
|
int b2 = lvl.IntOffset(C.b, xx, yy + 2, zz);
|
||||||
bool unblocked = lvl.GetTile(b1) == Block.air && lvl.GetTile(b2) == Block.air &&
|
bool unblocked = lvl.GetTile(b1) == Block.air && lvl.GetTile(b2) == Block.air &&
|
||||||
@ -174,14 +170,9 @@ namespace MCGalaxy.BlockPhysics {
|
|||||||
lvl.AddUpdate(b1, Block.lavastill, false, "dissipate 100");
|
lvl.AddUpdate(b1, Block.lavastill, false, "dissipate 100");
|
||||||
}
|
}
|
||||||
} else if (b == Block.tnt) {
|
} else if (b == Block.tnt) {
|
||||||
if (lvl.physics == 5) {
|
|
||||||
lvl.Blockchange(x, y, z, Block.air);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lvl.MakeExplosion((ushort)(x + xx), (ushort)(y + yy), (ushort)(z + zz), 0);
|
lvl.MakeExplosion((ushort)(x + xx), (ushort)(y + yy), (ushort)(z + zz), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CheckDoorRevert(lvl, C, timer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CheckDoorRevert(Level lvl, Check C, int timer) {
|
static void CheckDoorRevert(Level lvl, Check C, int timer) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user