commit
e5349d95c9
2 changed files with 37 additions and 5 deletions
|
|
@ -4,7 +4,15 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
|
||||||
|
|
||||||
## Upcoming Changes
|
## Upcoming Changes
|
||||||
|
|
||||||
|
* API: Fixed chat line breaks when using chat tags and long strings of text (@ProfessorXZ)
|
||||||
* The setdungeon command correctly uses tshock.world.setdungeon as its permission (@OnsenManju)
|
* The setdungeon command correctly uses tshock.world.setdungeon as its permission (@OnsenManju)
|
||||||
|
* Fixed clients being able to "Catch" and remove NPCs (@ProfessorXZ)
|
||||||
|
* Fixed clients being able to remove other players' portals (@ProfessorXZ)
|
||||||
|
* Fixed possible client crashes caused by invalid item netIDs (@ProfessorXZ)
|
||||||
|
* Fixed players being able to bypass permission checks when placing Tile Entities (@ProfessorXZ)
|
||||||
|
* Fixed players being able to bypass permission checks when placing items in Item Frames (@ProfessorXZ)
|
||||||
|
* Fixed a bug involving Item Frames which allowed players to duplicate items (@ProfessorXZ)
|
||||||
|
* Fixed an issue allowing clients to teleport NPCs to arbitrary locations (@ProfessorXZ)
|
||||||
|
|
||||||
## TShock 4.3.17
|
## TShock 4.3.17
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1255,6 +1255,7 @@ namespace TShockAPI
|
||||||
{ PacketTypes.MassWireOperation, HandleMassWireOperation },
|
{ PacketTypes.MassWireOperation, HandleMassWireOperation },
|
||||||
{ PacketTypes.GemLockToggle, HandleGemLockToggle },
|
{ PacketTypes.GemLockToggle, HandleGemLockToggle },
|
||||||
{ PacketTypes.CatchNPC, HandleCatchNpc },
|
{ PacketTypes.CatchNPC, HandleCatchNpc },
|
||||||
|
{ PacketTypes.NpcTeleportPortal, HandleNpcTeleportPortal },
|
||||||
{ PacketTypes.KillPortal, HandleKillPortal },
|
{ PacketTypes.KillPortal, HandleKillPortal },
|
||||||
{ PacketTypes.PlaceTileEntity, HandlePlaceTileEntity },
|
{ PacketTypes.PlaceTileEntity, HandlePlaceTileEntity },
|
||||||
{ PacketTypes.PlaceItemFrame, HandlePlaceItemFrame },
|
{ PacketTypes.PlaceItemFrame, HandlePlaceItemFrame },
|
||||||
|
|
@ -4089,7 +4090,30 @@ namespace TShockAPI
|
||||||
if (Main.npc[npcID]?.catchItem == 0)
|
if (Main.npc[npcID]?.catchItem == 0)
|
||||||
{
|
{
|
||||||
Main.npc[npcID].active = true;
|
Main.npc[npcID].active = true;
|
||||||
NetMessage.SendData(23, -1, -1, "", npcID);
|
NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, "", npcID);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool HandleNpcTeleportPortal(GetDataHandlerArgs args)
|
||||||
|
{
|
||||||
|
var npcIndex = args.Data.ReadByte();
|
||||||
|
var portalColorIndex = args.Data.ReadInt16();
|
||||||
|
var newPosition = new Vector2(args.Data.ReadSingle(), args.Data.ReadSingle());
|
||||||
|
var velocity = new Vector2(args.Data.ReadSingle(), args.Data.ReadSingle());
|
||||||
|
var projectile = Main.projectile.FirstOrDefault(p => p.position.X == newPosition.X && p.position.Y == newPosition.Y); // Check for projectiles at this location
|
||||||
|
|
||||||
|
if (projectile == null || !projectile.active)
|
||||||
|
{
|
||||||
|
NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, "", npcIndex);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (projectile.type != ProjectileID.PortalGunGate)
|
||||||
|
{
|
||||||
|
NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, "", npcIndex);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4154,25 +4178,25 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (TShock.CheckIgnores(args.Player))
|
if (TShock.CheckIgnores(args.Player))
|
||||||
{
|
{
|
||||||
NetMessage.SendData(86, -1, -1, "", itemFrame.ID, 0, 1);
|
NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TShock.CheckTilePermission(args.Player, x, y))
|
if (TShock.CheckTilePermission(args.Player, x, y))
|
||||||
{
|
{
|
||||||
NetMessage.SendData(86, -1, -1, "", itemFrame.ID, 0, 1);
|
NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TShock.CheckRangePermission(args.Player, x, y))
|
if (TShock.CheckRangePermission(args.Player, x, y))
|
||||||
{
|
{
|
||||||
NetMessage.SendData(86, -1, -1, "", itemFrame.ID, 0, 1);
|
NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemFrame.item?.netID == args.TPlayer.inventory[args.TPlayer.selectedItem]?.netID)
|
if (itemFrame.item?.netID == args.TPlayer.inventory[args.TPlayer.selectedItem]?.netID)
|
||||||
{
|
{
|
||||||
NetMessage.SendData(86, -1, -1, "", itemFrame.ID, 0, 1);
|
NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue