Merge remote-tracking branch 'sgk/pr2833' into general-devel
This commit is contained in:
commit
69f39d3e5e
2 changed files with 89 additions and 112 deletions
|
|
@ -1716,132 +1716,108 @@ namespace TShockAPI
|
|||
|
||||
// Liquid anti-cheat
|
||||
// Arguably the banned buckets bit should be in the item bans system
|
||||
if (amount != 0)
|
||||
if (amount != 0 && !wasThereABombNearby)
|
||||
{
|
||||
int bucket = -1;
|
||||
int selectedItemType = args.Player.TPlayer.inventory[args.Player.TPlayer.selectedItem].type;
|
||||
if (selectedItemType == ItemID.EmptyBucket)
|
||||
{
|
||||
bucket = 0;
|
||||
}
|
||||
else if (selectedItemType == ItemID.WaterBucket)
|
||||
{
|
||||
bucket = 1;
|
||||
}
|
||||
else if (selectedItemType == ItemID.LavaBucket)
|
||||
{
|
||||
bucket = 2;
|
||||
}
|
||||
else if (selectedItemType == ItemID.HoneyBucket)
|
||||
{
|
||||
bucket = 3;
|
||||
}
|
||||
else if (selectedItemType == ItemID.BottomlessBucket ||
|
||||
selectedItemType == ItemID.SuperAbsorbantSponge)
|
||||
{
|
||||
bucket = 4;
|
||||
}
|
||||
else if (selectedItemType == ItemID.LavaAbsorbantSponge)
|
||||
{
|
||||
bucket = 5;
|
||||
}
|
||||
else if (selectedItemType == ItemID.BottomlessLavaBucket)
|
||||
{
|
||||
bucket = 6;
|
||||
}
|
||||
else if (selectedItemType == ItemID.BottomlessHoneyBucket
|
||||
|| selectedItemType == ItemID.HoneyAbsorbantSponge)
|
||||
{
|
||||
bucket = 7;
|
||||
}
|
||||
else if (selectedItemType == ItemID.BottomlessShimmerBucket)
|
||||
{
|
||||
bucket = 8;
|
||||
}
|
||||
else if (selectedItemType == ItemID.UltraAbsorbantSponge)
|
||||
{
|
||||
bucket = 9;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Lava && !(bucket == 2 || bucket == 0 || bucket == 5 || bucket == 6 || bucket == 9))
|
||||
void Reject(string reason)
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 1 from {0}", args.Player.Name));
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected liquid type {0} from {1} holding {2}", type, args.Player.Name, selectedItemType));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Spreading lava without holding a lava bucket"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.Disable(reason, DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
if (TShock.ItemBans.DataModel.ItemIsBanned(EnglishLanguage.GetItemNameById(selectedItemType), args.Player))
|
||||
{
|
||||
Reject(GetString("Using banned {0} to manipulate liquid", Lang.GetItemNameValue(selectedItemType)));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Lava && TShock.ItemBans.DataModel.ItemIsBanned("Lava Bucket", args.Player))
|
||||
switch (type)
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected lava bucket from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Using banned lava bucket without permissions"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
case LiquidType.Water:
|
||||
if (TShock.ItemBans.DataModel.ItemIsBanned(EnglishLanguage.GetItemNameById(ItemID.WaterBucket), args.Player))
|
||||
{
|
||||
Reject(GetString("Using banned water bucket without permissions"));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case LiquidType.Lava:
|
||||
if (TShock.ItemBans.DataModel.ItemIsBanned(EnglishLanguage.GetItemNameById(ItemID.LavaBucket), args.Player))
|
||||
{
|
||||
Reject(GetString("Using banned lava bucket without permissions"));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case LiquidType.Honey:
|
||||
if (TShock.ItemBans.DataModel.ItemIsBanned(EnglishLanguage.GetItemNameById(ItemID.HoneyBucket), args.Player))
|
||||
{
|
||||
Reject(GetString("Using banned honey bucket without permissions"));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case LiquidType.Shimmer:
|
||||
if (TShock.ItemBans.DataModel.ItemIsBanned(EnglishLanguage.GetItemNameById(ItemID.BottomlessShimmerBucket), args.Player))
|
||||
{
|
||||
Reject(GetString("Using banned shimmering water bucket without permissions"));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Reject(GetString("Manipulating unknown liquid type"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Water && !(bucket == 1 || bucket == 0 || bucket == 4 || bucket == 9))
|
||||
switch (selectedItemType)
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 2 from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Spreading water without holding a water bucket"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Water && TShock.ItemBans.DataModel.ItemIsBanned("Water Bucket", args.Player))
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 3 from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Using banned water bucket without permissions"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Honey && !(bucket == 3 || bucket == 0 || bucket == 7 || bucket == 9))
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 4 from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Spreading honey without holding a honey bucket"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Honey && TShock.ItemBans.DataModel.ItemIsBanned("Honey Bucket", args.Player))
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 5 from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Using banned honey bucket without permissions"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Shimmer && !(bucket == 8 || bucket == 9))
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 6 from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Spreading shimmer without holding a shimmer bucket"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wasThereABombNearby && type == LiquidType.Shimmer &&
|
||||
TShock.ItemBans.DataModel.ItemIsBanned("Bottomless Shimmer Bucket", args.Player))
|
||||
{
|
||||
TShock.Log.ConsoleDebug(GetString("Bouncer / OnLiquidSet rejected bucket check 7 from {0}", args.Player.Name));
|
||||
args.Player.SendErrorMessage(GetString("You do not have permission to perform this action."));
|
||||
args.Player.Disable(GetString("Using banned bottomless shimmer bucket without permissions"), DisableFlags.WriteToLogAndConsole);
|
||||
args.Player.SendTileSquareCentered(tileX, tileY, 1);
|
||||
args.Handled = true;
|
||||
return;
|
||||
case ItemID.WaterBucket:
|
||||
case ItemID.BottomlessBucket:
|
||||
if (type != LiquidType.Water)
|
||||
{
|
||||
Reject(GetString("Using {0} on non-water", Lang.GetItemNameValue(selectedItemType)));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ItemID.HoneyBucket:
|
||||
case ItemID.HoneyAbsorbantSponge:
|
||||
case ItemID.BottomlessHoneyBucket:
|
||||
if (type != LiquidType.Honey)
|
||||
{
|
||||
Reject(GetString("Using {0} on non-honey", Lang.GetItemNameValue(selectedItemType)));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ItemID.LavaAbsorbantSponge:
|
||||
case ItemID.BottomlessLavaBucket:
|
||||
case ItemID.LavaBucket:
|
||||
if (type != LiquidType.Lava)
|
||||
{
|
||||
Reject(GetString("Using {0} on non-lava", Lang.GetItemNameValue(selectedItemType)));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ItemID.BottomlessShimmerBucket:
|
||||
if (type != LiquidType.Shimmer)
|
||||
{
|
||||
Reject(GetString("Using {0} on non-shimmer", Lang.GetItemNameValue(selectedItemType)));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ItemID.SuperAbsorbantSponge:
|
||||
if (type != LiquidType.Water && type != LiquidType.Shimmer)
|
||||
{
|
||||
Reject(GetString("Using {0} on non-water or shimmer", Lang.GetItemNameValue(selectedItemType)));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ItemID.EmptyBucket:
|
||||
case ItemID.UltraAbsorbantSponge:
|
||||
break;
|
||||
default:
|
||||
Reject(GetString("Using {0} to manipulate unknown liquid {1}", Lang.GetItemNameValue(selectedItemType), type));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ Use past tense when adding new entries; sign your name off when you add or chang
|
|||
* This will make it so Bouncer rejections regarding `PlayerAddBuff` will now always include the sender index, buff type, receiver index, and time in ticks, allowing much faster triage of buff whitelist issues.
|
||||
* Allowed Digging Molecart and bomb fish to break tiles and place tracks (@sgkoishi)
|
||||
* Add built-in package management capabilities for plugins
|
||||
* Fixed Super Sponge unable to absorb shimmer. (@sgkoishi, #2833)
|
||||
|
||||
## TShock 5.1.3
|
||||
* Added support for Terraria 1.4.4.9 via OTAPI 3.1.20. (@SignatureBeef)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue