diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0bfac74d..f956c63b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
## TShock 4.4.0 (Pre-release ?)
* Fix bed spawn issues when trying to remove spawn point in SSC (@Olink)
* Fix Snake Flute (@Olink)
+* Fix lava absorbant sponge not capturing lava. `LiquidSetEventArgs` now returns a `LiquidType` instead of a byte type. (@hakusaro)
## TShock 4.4.0 (Pre-release 6)
* Updates to OTAPI 2.0.0.35 (@DeathCradle).
diff --git a/TShockAPI/Bouncer.cs b/TShockAPI/Bouncer.cs
index 2e40c9d0..d0541809 100644
--- a/TShockAPI/Bouncer.cs
+++ b/TShockAPI/Bouncer.cs
@@ -1245,7 +1245,7 @@ namespace TShockAPI
int tileX = args.TileX;
int tileY = args.TileY;
byte amount = args.Amount;
- byte type = args.Type;
+ LiquidType type = args.Type;
if (!TShock.Utils.TilePlacementValid(tileX, tileY) || (args.Player.Dead && TShock.Config.PreventDeadModification))
{
@@ -1281,29 +1281,34 @@ namespace TShockAPI
if (amount != 0)
{
int bucket = -1;
- if (args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type == ItemID.EmptyBucket)
+ int selectedItemType = args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type;
+ if (selectedItemType == ItemID.EmptyBucket)
{
bucket = 0;
}
- else if (args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type == ItemID.WaterBucket)
+ else if (selectedItemType == ItemID.WaterBucket)
{
bucket = 1;
}
- else if (args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type == ItemID.LavaBucket)
+ else if (selectedItemType == ItemID.LavaBucket)
{
bucket = 2;
}
- else if (args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type == ItemID.HoneyBucket)
+ else if (selectedItemType == ItemID.HoneyBucket)
{
bucket = 3;
}
- else if (args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type == ItemID.BottomlessBucket ||
- args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type == ItemID.SuperAbsorbantSponge)
+ else if (selectedItemType == ItemID.BottomlessBucket ||
+ selectedItemType == ItemID.SuperAbsorbantSponge)
{
bucket = 4;
}
+ else if (selectedItemType == ItemID.LavaAbsorbantSponge)
+ {
+ bucket = 5;
+ }
- if (type == 1 && !(bucket == 2 || bucket == 0))
+ if (type == LiquidType.Lava && !(bucket == 2 || bucket == 0 || bucket == 5))
{
TShock.Log.ConsoleDebug("Bouncer / OnLiquidSet rejected bucket check 1 from {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to perform this action.");
@@ -1313,7 +1318,7 @@ namespace TShockAPI
return;
}
- if (type == 1 && TShock.Itembans.ItemIsBanned("Lava Bucket", args.Player))
+ if (type == LiquidType.Lava && TShock.Itembans.ItemIsBanned("Lava Bucket", args.Player))
{
TShock.Log.ConsoleDebug("Bouncer / OnLiquidSet rejected lava bucket from {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to perform this action.");
@@ -1323,7 +1328,7 @@ namespace TShockAPI
return;
}
- if (type == 0 && !(bucket == 1 || bucket == 0 || bucket == 4))
+ if (type == LiquidType.Water && !(bucket == 1 || bucket == 0 || bucket == 4))
{
TShock.Log.ConsoleDebug("Bouncer / OnLiquidSet rejected bucket check 2 from {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to perform this action.");
@@ -1333,7 +1338,7 @@ namespace TShockAPI
return;
}
- if (type == 0 && TShock.Itembans.ItemIsBanned("Water Bucket", args.Player))
+ if (type == LiquidType.Water && TShock.Itembans.ItemIsBanned("Water Bucket", args.Player))
{
TShock.Log.ConsoleDebug("Bouncer / OnLiquidSet rejected bucket check 3 from {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to perform this action.");
@@ -1343,7 +1348,7 @@ namespace TShockAPI
return;
}
- if (type == 2 && !(bucket == 3 || bucket == 0))
+ if (type == LiquidType.Honey && !(bucket == 3 || bucket == 0))
{
TShock.Log.ConsoleDebug("Bouncer / OnLiquidSet rejected bucket check 4 from {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to perform this action.");
@@ -1353,7 +1358,7 @@ namespace TShockAPI
return;
}
- if (type == 2 && TShock.Itembans.ItemIsBanned("Honey Bucket", args.Player))
+ if (type == LiquidType.Honey && TShock.Itembans.ItemIsBanned("Honey Bucket", args.Player))
{
TShock.Log.ConsoleDebug("Bouncer / OnLiquidSet rejected bucket check 5 from {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to perform this action.");
diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index 7a6ece8e..19c6f4b0 100644
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -1129,10 +1129,21 @@ namespace TShockAPI
///
public byte Amount { get; set; }
///
- /// Type of Liquid: 0=water, 1=lave, 2=honey
+ /// Type of Liquid: 0=water, 1=lava, 2=honey
///
- public byte Type { get; set; }
+ public LiquidType Type { get; set; }
}
+
+ ///
+ /// LiquidType - supported liquid types
+ ///
+ public enum LiquidType : byte
+ {
+ Water = 0,
+ Lava = 1,
+ Honey = 2
+ }
+
///
/// LiquidSet - When ever a liquid is set
///
@@ -1149,7 +1160,7 @@ namespace TShockAPI
TileX = tilex,
TileY = tiley,
Amount = amount,
- Type = type,
+ Type = (LiquidType) type,
};
LiquidSet.Invoke(null, args);
return args.Handled;