diff --git a/TShockAPI/Handlers/SendTileRectHandler.cs b/TShockAPI/Handlers/SendTileRectHandler.cs index c68895ae..7fcbf2c8 100644 --- a/TShockAPI/Handlers/SendTileRectHandler.cs +++ b/TShockAPI/Handlers/SendTileRectHandler.cs @@ -350,9 +350,13 @@ namespace TShockAPI.Handlers )) { UpdateServerTileState(tile, newTile, TileDataType.Tile); + if (WorldGen.InWorld(realX, realY + 1) && TileID.Sets.IsVine[Main.tile[realX, realY + 1].type]) // vanilla does in theory break the vines on its own, but we can't trust that + { + WorldGen.KillTile(realX, realY + 1); + } } - // Conversion: only sends a 1x1 rect + // Conversion: only sends a 1x1 rect; has to happen AFTER grass mowing as it would otherwise also let mowing through, but without fixing vines if (rectWidth == 1 && rectLength == 1) { ProcessConversionSpreads(tile, newTile); diff --git a/docs/changelog.md b/docs/changelog.md index 703f35a2..653bd529 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -58,6 +58,7 @@ Use past tense when adding new entries; sign your name off when you add or chang * Introduce `AddPlayerBuffWhitelist` (replacing `WhitelistBuffMaxTime`), which allows us to specify the maximum amount of ticks a buff can be applied for, and if it can be applied without the target being in PvP. * When rejecting from `OnPlayerBuff`, instead of sending a `PlayerAddBuff` packet with the rejected buff (essentially a no-op, as the sender implicitly applies the buff to the target, and causes desync as the buff was rejected), send a `PlayerBuff` to re-sync the target's buffs, without the buff we just rejected. * Added new tile provider. Use `-constileation` or `-c` to use it. Constileation is an alternative tile provider to Tiled and HeapTile. (@SignatureBeef) +* Fixed an exploit with grass mowing not removing hanging vines. (@punchready) ## TShock 4.5.18 * Fixed `TSPlayer.GiveItem` not working if the player is in lava. (@PotatoCider)