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) * Initial support for MonoMod hooks on Raspberry Pi (arm64). (@kevzhao2)
## Upcoming changes ## 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 ## 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) * 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) switch (type)
{ {
case 0: // Teleportation Potion 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)) if (!args.Player.HasPermission(Permissions.tppotion))
{ {
Fail("Teleportation Potions"); Fail("Teleportation Potions");
@ -3820,6 +3827,13 @@ namespace TShockAPI
} }
break; break;
case 1: // Magic Conch 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)) if (!args.Player.HasPermission(Permissions.magicconch))
{ {
Fail("the Magic Conch"); Fail("the Magic Conch");
@ -3827,6 +3841,13 @@ namespace TShockAPI
} }
break; break;
case 2: // Demon Conch 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)) if (!args.Player.HasPermission(Permissions.demonconch))
{ {
Fail("the Demon Conch"); Fail("the Demon Conch");

View file

@ -1379,7 +1379,9 @@ namespace TShockAPI
public virtual void GiveItem(int type, int stack, int prefix = 0) 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); 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> /// <summary>