Address feedback from @hakusaro about style & documentation
This commit is contained in:
parent
658c714ac5
commit
817dfe26fc
3 changed files with 40 additions and 18 deletions
|
|
@ -25,7 +25,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
|
||||||
* The buff commands now support `-1` as a time option to set buffs that last 415 days (the maximum buff time the game supports). (@moisterrific)
|
* The buff commands now support `-1` as a time option to set buffs that last 415 days (the maximum buff time the game supports). (@moisterrific)
|
||||||
* TShock defaults to saving backups every 10 minutes, and defaults to keeping backups for 4 hours. (@hakusaro)
|
* TShock defaults to saving backups every 10 minutes, and defaults to keeping backups for 4 hours. (@hakusaro)
|
||||||
* Updated SSC bypass messaging. Now, when you connect, you're told if you're bypassing SSC. Console logging has been improved to warn when players are not being saved due to the bypass SSC permission. To turn this warning off, change `WarnPlayersAboutBypassPermission` to `false` in the `sscconfig.json` file. (@hakusaro)
|
* Updated SSC bypass messaging. Now, when you connect, you're told if you're bypassing SSC. Console logging has been improved to warn when players are not being saved due to the bypass SSC permission. To turn this warning off, change `WarnPlayersAboutBypassPermission` to `false` in the `sscconfig.json` file. (@hakusaro)
|
||||||
* Fix oversight & exploit allowing crafted SendTileRectangle packets to perform large-scale world griefing (@bartico6)
|
* Fix oversight & exploit allowing specially crafted SendTileRectangle packets to perform large-scale world griefing (@bartico6)
|
||||||
|
|
||||||
## TShock 4.5.2
|
## TShock 4.5.2
|
||||||
* Added preliminary support for Terraria 1.4.2.2. (@hakusaro)
|
* Added preliminary support for Terraria 1.4.2.2. (@hakusaro)
|
||||||
|
|
|
||||||
|
|
@ -323,10 +323,13 @@ namespace TShockAPI.Handlers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tile">The tile to update</param>
|
/// <param name="tile">The tile to update</param>
|
||||||
/// <param name="newTile">The NetTile containing the change</param>
|
/// <param name="newTile">The NetTile containing the change</param>
|
||||||
/// <param name="data">The type of data to merge into world state</param>
|
/// <param name="updateType">The type of data to merge into world state</param>
|
||||||
public static void UpdateServerTileState(ITile tile, NetTile newTile, TileDataType data)
|
public static void UpdateServerTileState(ITile tile, NetTile newTile, TileDataType updateType)
|
||||||
{
|
{
|
||||||
if ((data & TileDataType.Tile) != 0)
|
//This logic (updateType & TDT.Tile) != 0 is the way Terraria does it (see: Tile.cs/Clear(TileDataType))
|
||||||
|
//& is not a typo - we're performing a binary AND test to see if a given flag is set.
|
||||||
|
|
||||||
|
if ((updateType & TileDataType.Tile) != 0)
|
||||||
{
|
{
|
||||||
tile.active(newTile.Active);
|
tile.active(newTile.Active);
|
||||||
tile.type = newTile.Type;
|
tile.type = newTile.Type;
|
||||||
|
|
@ -338,39 +341,40 @@ namespace TShockAPI.Handlers
|
||||||
}
|
}
|
||||||
else if (tile.type != newTile.Type || !tile.active())
|
else if (tile.type != newTile.Type || !tile.active())
|
||||||
{
|
{
|
||||||
|
//This is vanilla logic - if the tile changed types (or wasn't active) the frame values might not be valid - so we reset them to -1.
|
||||||
tile.frameX = -1;
|
tile.frameX = -1;
|
||||||
tile.frameY = -1;
|
tile.frameY = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((data & TileDataType.Wall) != 0)
|
if ((updateType & TileDataType.Wall) != 0)
|
||||||
{
|
{
|
||||||
tile.wall = newTile.Wall;
|
tile.wall = newTile.Wall;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((data & TileDataType.TilePaint) != 0)
|
if ((updateType & TileDataType.TilePaint) != 0)
|
||||||
{
|
{
|
||||||
tile.color(newTile.TileColor);
|
tile.color(newTile.TileColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((data & TileDataType.WallPaint) != 0)
|
if ((updateType & TileDataType.WallPaint) != 0)
|
||||||
{
|
{
|
||||||
tile.wallColor(newTile.WallColor);
|
tile.wallColor(newTile.WallColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((data & TileDataType.Liquid) != 0)
|
if ((updateType & TileDataType.Liquid) != 0)
|
||||||
{
|
{
|
||||||
tile.liquid = newTile.Liquid;
|
tile.liquid = newTile.Liquid;
|
||||||
tile.liquidType(newTile.LiquidType);
|
tile.liquidType(newTile.LiquidType);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((data & TileDataType.Slope) != 0)
|
if ((updateType & TileDataType.Slope) != 0)
|
||||||
{
|
{
|
||||||
tile.halfBrick(newTile.IsHalf);
|
tile.halfBrick(newTile.IsHalf);
|
||||||
tile.slope((byte)((newTile.Slope ? 1 : 0) + (newTile.Slope2 ? 2 : 0) + (newTile.Slope3 ? 4 : 0)));
|
tile.slope(newTile.Slope);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((data & TileDataType.Wiring) != 0)
|
if ((updateType & TileDataType.Wiring) != 0)
|
||||||
{
|
{
|
||||||
tile.wire(newTile.Wire);
|
tile.wire(newTile.Wire);
|
||||||
tile.wire2(newTile.Wire2);
|
tile.wire2(newTile.Wire2);
|
||||||
|
|
@ -378,7 +382,7 @@ namespace TShockAPI.Handlers
|
||||||
tile.wire4(newTile.Wire4);
|
tile.wire4(newTile.Wire4);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((data & TileDataType.Actuator) != 0)
|
if ((updateType & TileDataType.Actuator) != 0)
|
||||||
{
|
{
|
||||||
tile.actuator(newTile.IsActuator);
|
tile.actuator(newTile.IsActuator);
|
||||||
tile.inActive(newTile.Inactive);
|
tile.inActive(newTile.Inactive);
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,29 @@ namespace TShockAPI.Net
|
||||||
public bool IsActuator { get; set; }
|
public bool IsActuator { get; set; }
|
||||||
public byte TileColor { get; set; }
|
public byte TileColor { get; set; }
|
||||||
public byte WallColor { get; set; }
|
public byte WallColor { get; set; }
|
||||||
public bool Slope { get; set; }
|
public bool Slope1 { get; set; }
|
||||||
public bool Slope2 { get; set; }
|
public bool Slope2 { get; set; }
|
||||||
public bool Slope3 { get; set; }
|
public bool Slope3 { get; set; }
|
||||||
|
|
||||||
|
public byte Slope
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
byte sl = 0;
|
||||||
|
|
||||||
|
if (Slope1)
|
||||||
|
sl += 1;
|
||||||
|
|
||||||
|
if (Slope2)
|
||||||
|
sl += 2;
|
||||||
|
|
||||||
|
if (Slope3)
|
||||||
|
sl += 4;
|
||||||
|
|
||||||
|
return sl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool HasColor
|
public bool HasColor
|
||||||
{
|
{
|
||||||
get { return TileColor > 0; }
|
get { return TileColor > 0; }
|
||||||
|
|
@ -87,8 +106,9 @@ namespace TShockAPI.Net
|
||||||
TileColor = 0;
|
TileColor = 0;
|
||||||
WallColor = 0;
|
WallColor = 0;
|
||||||
Lighted = false;
|
Lighted = false;
|
||||||
Slope = false;
|
Slope1 = false;
|
||||||
Slope2 = false;
|
Slope2 = false;
|
||||||
|
Slope3 = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NetTile(Stream stream)
|
public NetTile(Stream stream)
|
||||||
|
|
@ -120,9 +140,7 @@ namespace TShockAPI.Net
|
||||||
bits[6] = true;
|
bits[6] = true;
|
||||||
|
|
||||||
if (Inactive)
|
if (Inactive)
|
||||||
{
|
|
||||||
bits[7] = true;
|
bits[7] = true;
|
||||||
}
|
|
||||||
|
|
||||||
stream.WriteInt8((byte) bits);
|
stream.WriteInt8((byte) bits);
|
||||||
|
|
||||||
|
|
@ -140,7 +158,7 @@ namespace TShockAPI.Net
|
||||||
if (HasWallColor)
|
if (HasWallColor)
|
||||||
bits[3] = true;
|
bits[3] = true;
|
||||||
|
|
||||||
if (Slope)
|
if (Slope1)
|
||||||
bits[4] = true;
|
bits[4] = true;
|
||||||
|
|
||||||
if (Slope2)
|
if (Slope2)
|
||||||
|
|
@ -191,7 +209,7 @@ namespace TShockAPI.Net
|
||||||
|
|
||||||
Wire2 = flags2[0];
|
Wire2 = flags2[0];
|
||||||
Wire3 = flags2[1];
|
Wire3 = flags2[1];
|
||||||
Slope = flags2[4];
|
Slope1 = flags2[4];
|
||||||
Slope2 = flags2[5];
|
Slope2 = flags2[5];
|
||||||
Slope3 = flags2[6];
|
Slope3 = flags2[6];
|
||||||
Wire4 = flags2[7];
|
Wire4 = flags2[7];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue