From 3075708c967ff37ceffa147d0c07572fce817db4 Mon Sep 17 00:00:00 2001 From: DogooFalchion Date: Thu, 29 Dec 2016 21:51:58 -0500 Subject: [PATCH] Fix for trap doors. Also add in protection in the tile conversion logic to not needless trigger sendtilesquare. Remove existing trapdoor bypass. --- TShockAPI/GetDataHandlers.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 0a11d898..2c9d77b3 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1719,15 +1719,7 @@ namespace TShockAPI var tileX = args.Data.ReadInt16(); var tileY = args.Data.ReadInt16(); - bool isTrapdoor = false; - - if (Main.tile[tileX, tileY].type == TileID.TrapdoorClosed - || Main.tile[tileX, tileY].type == TileID.TrapdoorOpen) - { - isTrapdoor = true; - } - - if (args.Player.HasPermission(Permissions.allowclientsideworldedit) && !isTrapdoor) + if (args.Player.HasPermission(Permissions.allowclientsideworldedit)) return false; if (OnSendTileSquare(size, tileX, tileY)) @@ -1826,7 +1818,7 @@ namespace TShockAPI changed = true; } - if (tile.active() && newtile.Active) + if (tile.active() && newtile.Active && tile.type != newtile.Type) { // Grass <-> Grass if ((TileID.Sets.Conversion.Grass[tile.type] && TileID.Sets.Conversion.Grass[newtile.Type]) || @@ -1859,6 +1851,17 @@ namespace TShockAPI Main.tile[realx, realy].wall = newtile.Wall; changed = true; } + + if ((tile.type == TileID.TrapdoorClosed && (newtile.Type == TileID.TrapdoorOpen || !newtile.Active)) || + (tile.type == TileID.TrapdoorOpen && (newtile.Type == TileID.TrapdoorClosed || !newtile.Active)) || + (!tile.active() && newtile.Active && (newtile.Type == TileID.TrapdoorOpen||newtile.Type == TileID.TrapdoorClosed))) + { + Main.tile[realx, realy].type = newtile.Type; + Main.tile[realx, realy].frameX = newtile.FrameX; + Main.tile[realx, realy].frameY = newtile.FrameY; + Main.tile[realx, realy].active(newtile.Active); + changed = true; + } } }