Merge remote-tracking branch 'origin/general-devel' into otapi3

This commit is contained in:
Lucas Nicodemus 2022-04-01 01:14:01 -07:00
commit 49a2dce59e
3 changed files with 26 additions and 1 deletions

View file

@ -18,6 +18,8 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
* Initial support for MonoMod hooks on Raspberry Pi (arm64). (@kevzhao2)
## Upcoming changes
* Fixed `TSPlayer.GiveItem` not working if the player is in lava. (@gohjoseph)
* Only allow using Teleportation Potions, Magic Conch, and Demon Conch whilst holding them. (@drunderscore)
## TShock 4.5.17
* Fixed duplicate characters (twins) after repeatedly logging in as the same character due to connection not being immediately closed during `NetHooks_NameCollision`. (@gohjoseph)

View file

@ -3813,6 +3813,13 @@ namespace TShockAPI
switch (type)
{
case 0: // Teleportation Potion
if (args.Player.ItemInHand.type != ItemID.TeleportationPotion &&
args.Player.SelectedItem.type != ItemID.TeleportationPotion)
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleportationPotion rejected not holding the correct item {0} {1}", args.Player.Name, type);
return true;
}
if (!args.Player.HasPermission(Permissions.tppotion))
{
Fail("Teleportation Potions");
@ -3820,6 +3827,13 @@ namespace TShockAPI
}
break;
case 1: // Magic Conch
if (args.Player.ItemInHand.type != ItemID.MagicConch &&
args.Player.SelectedItem.type != ItemID.MagicConch)
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleportationPotion rejected not holding the correct item {0} {1}", args.Player.Name, type);
return true;
}
if (!args.Player.HasPermission(Permissions.magicconch))
{
Fail("the Magic Conch");
@ -3827,6 +3841,13 @@ namespace TShockAPI
}
break;
case 2: // Demon Conch
if (args.Player.ItemInHand.type != ItemID.DemonConch &&
args.Player.SelectedItem.type != ItemID.DemonConch)
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleportationPotion rejected not holding the correct item {0} {1}", args.Player.Name, type);
return true;
}
if (!args.Player.HasPermission(Permissions.demonconch))
{
Fail("the Demon Conch");

View file

@ -1379,7 +1379,9 @@ namespace TShockAPI
public virtual void GiveItem(int type, int stack, int prefix = 0)
{
int itemIndex = Item.NewItem(new EntitySource_DebugCommand(), (int)X, (int)Y, TPlayer.width, TPlayer.height, type, stack, true, prefix, true);
SendData(PacketTypes.ItemDrop, "", itemIndex);
Main.item[itemIndex].playerIndexTheItemIsReservedFor = this.Index;
SendData(PacketTypes.ItemDrop, "", itemIndex, 1);
SendData(PacketTypes.ItemOwner, null, itemIndex);
}
/// <summary>