From a01a33192a0749d859da2639c6ded72a0cf896fb Mon Sep 17 00:00:00 2001 From: Scavenger3 Date: Sat, 6 Jul 2013 16:39:20 +1000 Subject: [PATCH 1/2] Tile GetDataHandlers: fix bool fail and add byte style --- TShockAPI/GetDataHandlers.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index b79c0e12..f59a5ffe 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -88,13 +88,18 @@ namespace TShockAPI /// Did the tile get destroyed successfully. /// public bool Fail { get; set; } + + /// + /// Used when a tile is placed to denote a subtype of tile. (e.g. for tile id 21: Chest = 0, Gold Chest = 1) + /// + public byte Style { get; set; } } /// /// TileEdit - called when a tile is placed or destroyed /// public static HandlerList TileEdit; - private static bool OnTileEdit(TSPlayer ply, int x, int y, byte type, byte editType, bool fail) + private static bool OnTileEdit(TSPlayer ply, int x, int y, byte type, byte editType, bool fail, byte style) { if (TileEdit == null) return false; @@ -106,7 +111,8 @@ namespace TShockAPI Y = y, Type = type, EditType = editType, - Fail = fail + Fail = fail, + Style = style }; TileEdit.Invoke(null, args); return args.Handled; @@ -1678,8 +1684,9 @@ namespace TShockAPI var tileX = args.Data.ReadInt32(); var tileY = args.Data.ReadInt32(); var tiletype = args.Data.ReadInt8(); - var fail = args.Data.ReadBoolean(); - if (OnTileEdit(args.Player, tileX, tileY, tiletype, type, fail)) + var fail = tiletype == 1; + var style = args.Data.ReadInt8(); + if (OnTileEdit(args.Player, tileX, tileY, tiletype, type, fail, style)) return true; if (!TShock.Utils.TileValid(tileX, tileY)) return false; From 2bd9b6a6b6d9d93cd05de6010df7002c85ae0628 Mon Sep 17 00:00:00 2001 From: Scavenger3 Date: Sat, 6 Jul 2013 22:18:26 +1000 Subject: [PATCH 2/2] Check for invalid place style --- TShockAPI/ConfigFile.cs | 2 ++ TShockAPI/GetDataHandlers.cs | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/TShockAPI/ConfigFile.cs b/TShockAPI/ConfigFile.cs index 9b5b40c6..ff30e681 100644 --- a/TShockAPI/ConfigFile.cs +++ b/TShockAPI/ConfigFile.cs @@ -251,6 +251,8 @@ namespace TShockAPI [Description("The path of the directory where logs should be written into.")] public string LogPath = "tshock"; + [Description("Prevents players from placing tiles with an invalid style.")] public bool PreventInvalidPlaceStyle = true; + /// /// Reads a configuration file from a given path /// diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index f59a5ffe..b17a9b7e 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1807,6 +1807,15 @@ namespace TShockAPI args.Player.SendTileSquare(tileX, tileY); return true; } + if (type == 1 && TShock.Config.PreventInvalidPlaceStyle && ((tiletype == 4 && style > 8) || + (tiletype == 13 && style > 4) || (tiletype == 15 && style > 1) || (tiletype == 21 && style > 6) || + (tiletype == 82 && style > 5) || (tiletype == 91 && style > 3) || (tiletype == 105 && style > 42) || + (tiletype == 135 && style > 3) || (tiletype == 139 && style > 12) || (tiletype == 144 && style > 2) || + (tiletype == 149 && style > 2))) + { + args.Player.SendTileSquare(tileX, tileY); + return true; + } } if (TShock.CheckIgnores(args.Player))