From f1bd59b881041ab121da734de134fa5f83b2be0c Mon Sep 17 00:00:00 2001 From: yfdyzjt Date: Mon, 24 Aug 2026 09:56:43 +0800 Subject: [PATCH 1/2] Add Terraria v1.4.5.8 support --- docs/TerrariaVersionTileData.json | 13 ++++++++++++- .../DataModel/SaveVersionManagerTests.cs | 2 +- src/TEdit.Terraria.Tests/WorldConfigurationTests.cs | 6 +++--- src/TEdit.Terraria.Tests/WorldFileV2HeaderTests.cs | 8 ++++---- src/TEdit.Terraria/Data/items.json | 6 +++--- src/TEdit.Terraria/Data/tiles.json | 1 - src/TEdit.Terraria/Data/versions.json | 13 ++++++++++++- .../Terraria/TerrariaFormatValidatorTests.cs | 4 ++-- 8 files changed, 37 insertions(+), 16 deletions(-) diff --git a/docs/TerrariaVersionTileData.json b/docs/TerrariaVersionTileData.json index c93137ae..2eebdbdf 100644 --- a/docs/TerrariaVersionTileData.json +++ b/docs/TerrariaVersionTileData.json @@ -86,7 +86,8 @@ "1.4.5.4": 317, "1.4.5.5": 318, "1.4.5.6": 319, - "1.4.5.7": 325 + "1.4.5.7": 325, + "1.4.5.8": 326 }, "saveVersions": [ { @@ -938,6 +939,16 @@ "maxNpcId": 696, "maxMoonId": 9, "framedTileIds": [ 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 26, 27, 28, 29, 31, 33, 34, 35, 36, 42, 49, 50, 55, 61, 71, 72, 73, 74, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 113, 114, 125, 126, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 149, 165, 171, 172, 173, 174, 178, 184, 185, 186, 187, 201, 207, 209, 210, 212, 215, 216, 217, 218, 219, 220, 227, 228, 231, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 254, 269, 270, 271, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 314, 316, 317, 318, 319, 320, 323, 324, 334, 335, 337, 338, 339, 349, 354, 355, 356, 358, 359, 360, 361, 362, 363, 364, 372, 373, 374, 375, 376, 377, 378, 380, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 405, 406, 410, 411, 412, 413, 414, 419, 420, 423, 424, 425, 427, 428, 429, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 452, 453, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 480, 484, 485, 486, 487, 488, 489, 490, 491, 493, 494, 497, 499, 505, 506, 509, 510, 511, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 529, 530, 531, 532, 533, 538, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 558, 559, 560, 564, 565, 567, 568, 569, 570, 571, 572, 573, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 619, 620, 621, 622, 623, 624, 629, 630, 631, 632, 634, 637, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 656, 657, 658, 660, 663, 664, 665, 693, 694, 695, 696, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 713, 714, 715, 716, 720, 721, 723, 724, 725, 726, 733, 751, 752, 753 ] + }, + { + "saveVersion": 326, + "gameVersion": "1.4.5.8", + "maxTileId": 753, + "maxWallId": 366, + "maxItemId": 6195, + "maxNpcId": 696, + "maxMoonId": 9, + "framedTileIds": [ 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 26, 27, 28, 29, 31, 33, 34, 35, 36, 42, 49, 50, 55, 61, 71, 72, 73, 74, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 113, 114, 125, 126, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 149, 165, 171, 172, 173, 174, 178, 184, 185, 186, 187, 201, 207, 209, 210, 212, 215, 216, 217, 218, 219, 220, 227, 228, 231, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 254, 269, 270, 271, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 314, 316, 317, 318, 319, 320, 323, 324, 334, 335, 337, 338, 339, 349, 354, 355, 356, 358, 359, 360, 361, 362, 363, 364, 372, 373, 374, 375, 376, 377, 378, 380, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 405, 406, 410, 411, 412, 413, 414, 419, 420, 423, 424, 425, 427, 428, 429, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 452, 453, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 480, 484, 485, 486, 487, 488, 489, 490, 491, 493, 494, 497, 499, 505, 506, 509, 510, 511, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 529, 530, 531, 532, 533, 538, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 558, 559, 560, 564, 565, 567, 568, 569, 570, 571, 572, 573, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 619, 620, 621, 622, 623, 624, 629, 630, 631, 632, 634, 637, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 656, 657, 658, 660, 663, 664, 665, 693, 694, 695, 696, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 713, 714, 715, 716, 720, 721, 723, 724, 725, 726, 733, 751, 752, 753 ] } ] } diff --git a/src/TEdit.Terraria.Tests/DataModel/SaveVersionManagerTests.cs b/src/TEdit.Terraria.Tests/DataModel/SaveVersionManagerTests.cs index 66f8ab26..7bf4ee63 100644 --- a/src/TEdit.Terraria.Tests/DataModel/SaveVersionManagerTests.cs +++ b/src/TEdit.Terraria.Tests/DataModel/SaveVersionManagerTests.cs @@ -140,7 +140,7 @@ public void Terraria1458_UsesTheUnchanged1457Configuration() var mgr = SaveVersionManager.Load(stream); mgr.GameVersionToSaveVersion["1.4.5.8"].ShouldBe(326u); - mgr.GetDataForGameVersion("1.4.5.8").SaveVersion.ShouldBe(325); + mgr.GetDataForGameVersion("1.4.5.8").SaveVersion.ShouldBe(326); mgr.GetGameVersionForSaveVersion(326).ShouldBe("1.4.5.8"); } } diff --git a/src/TEdit.Terraria.Tests/WorldConfigurationTests.cs b/src/TEdit.Terraria.Tests/WorldConfigurationTests.cs index 688266cb..b3a04b46 100644 --- a/src/TEdit.Terraria.Tests/WorldConfigurationTests.cs +++ b/src/TEdit.Terraria.Tests/WorldConfigurationTests.cs @@ -26,7 +26,7 @@ public void DeserializeVector2Short() } [Fact] - public void Terraria1458_UsesVersion325ConfigurationPayload() + public void Terraria1458_UsesVersion326ConfigurationPayload() { WorldConfiguration.Reset(); @@ -36,9 +36,9 @@ public void Terraria1458_UsesVersion325ConfigurationPayload() WorldConfiguration.CompatibleVersion.ShouldBe(326u); WorldConfiguration.ApplyForWorldVersion(326, out uint configVersion).ShouldBeTrue(); - configVersion.ShouldBe(325u); + configVersion.ShouldBe(326u); WorldConfiguration.ActiveWorldVersion.ShouldBe(326u); - WorldConfiguration.ActiveConfigVersion.ShouldBe(325u); + WorldConfiguration.ActiveConfigVersion.ShouldBe(326u); } finally { diff --git a/src/TEdit.Terraria.Tests/WorldFileV2HeaderTests.cs b/src/TEdit.Terraria.Tests/WorldFileV2HeaderTests.cs index c90db8d0..e73b297e 100644 --- a/src/TEdit.Terraria.Tests/WorldFileV2HeaderTests.cs +++ b/src/TEdit.Terraria.Tests/WorldFileV2HeaderTests.cs @@ -6,11 +6,11 @@ namespace TEdit.Terraria.Tests; public class WorldFileV2HeaderTests { [Fact] - public void Version325_LightningSeedFlags_RoundTrip() + public void Version326_LightningSeedFlags_RoundTrip() { var source = new World { - Version = 325, + Version = 326, Title = "Header test", Seed = "seed", MoreLightningSeed = true, @@ -21,10 +21,10 @@ public void Version325_LightningSeedFlags_RoundTrip() using var stream = new MemoryStream(); using (var writer = new BinaryWriter(stream, System.Text.Encoding.UTF8, leaveOpen: true)) { - World.SaveHeaderFlags(source, writer, 325); + World.SaveHeaderFlags(source, writer, 326); } - var target = new World { Version = 325 }; + var target = new World { Version = 326 }; stream.Position = 0; using var reader = new BinaryReader(stream, System.Text.Encoding.UTF8, leaveOpen: true); World.LoadHeaderFlags(reader, target, (int)stream.Length); diff --git a/src/TEdit.Terraria/Data/items.json b/src/TEdit.Terraria/Data/items.json index 17d3080e..ec169e17 100644 --- a/src/TEdit.Terraria/Data/items.json +++ b/src/TEdit.Terraria/Data/items.json @@ -52963,7 +52963,7 @@ "scale": 1, "maxStackSize": 9999, "rarity": "Lime", - "name": "Scout's Sling", + "name": "Scout\u0027s Sling", "key": "ScoutSling", "isAccessory": true }, @@ -52972,7 +52972,7 @@ "scale": 1, "maxStackSize": 9999, "rarity": "Yellow", - "name": "Templar's Sling", + "name": "Templar\u0027s Sling", "key": "TemplarSling", "isAccessory": true }, @@ -52981,7 +52981,7 @@ "scale": 1, "maxStackSize": 9999, "rarity": "LightPurple", - "name": "Royal Guard's Harness", + "name": "Royal Guard\u0027s Harness", "key": "RoyalGuardHarness", "isAccessory": true, "shieldSlot": 11 diff --git a/src/TEdit.Terraria/Data/tiles.json b/src/TEdit.Terraria/Data/tiles.json index d4138d56..d30c1260 100644 --- a/src/TEdit.Terraria/Data/tiles.json +++ b/src/TEdit.Terraria/Data/tiles.json @@ -8117,7 +8117,6 @@ "textureGrid": [16, 16], "frameGap": [2, 2], "frameSize": [[1, 1], [2, 1]], - "textureWrap": { "axis": "U", "offsetIncrement": 18, "conditionalV": 18, "wrapThreshold": 1908 }, "frames": [ { "name": "Small Decos", "variety": "Small Stone A", "uv": [0, 0] }, { "name": "Small Decos", "variety": "Small Stone B", "uv": [18, 0] }, diff --git a/src/TEdit.Terraria/Data/versions.json b/src/TEdit.Terraria/Data/versions.json index 2413b733..fd2cf760 100644 --- a/src/TEdit.Terraria/Data/versions.json +++ b/src/TEdit.Terraria/Data/versions.json @@ -947,6 +947,17 @@ "maxBannerTypes": 293, "maxMoonId": 9, "framedTileIds": [3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 26, 27, 28, 29, 31, 33, 34, 35, 36, 42, 49, 50, 55, 61, 71, 72, 73, 74, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 113, 114, 125, 126, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 149, 165, 171, 172, 173, 174, 178, 184, 185, 186, 187, 201, 207, 209, 210, 212, 215, 216, 217, 218, 219, 220, 227, 228, 231, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 254, 269, 270, 271, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 314, 316, 317, 318, 319, 320, 323, 324, 334, 335, 337, 338, 339, 349, 354, 355, 356, 358, 359, 360, 361, 362, 363, 364, 372, 373, 374, 375, 376, 377, 378, 380, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 405, 406, 410, 411, 412, 413, 414, 419, 420, 423, 424, 425, 427, 428, 429, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 452, 453, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 480, 484, 485, 486, 487, 488, 489, 490, 491, 493, 494, 497, 499, 505, 506, 509, 510, 511, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 529, 530, 531, 532, 533, 538, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 558, 559, 560, 564, 565, 567, 568, 569, 570, 571, 572, 573, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 619, 620, 621, 622, 623, 624, 629, 630, 631, 632, 634, 637, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 656, 657, 658, 660, 663, 664, 665, 693, 694, 695, 696, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 713, 714, 715, 716, 720, 721, 723, 724, 725, 726, 733, 751, 752, 753] + }, + { + "saveVersion": 326, + "gameVersion": "1.4.5.8", + "maxTileId": 753, + "maxWallId": 366, + "maxItemId": 6195, + "maxNpcId": 696, + "maxBannerTypes": 293, + "maxMoonId": 9, + "framedTileIds": [3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 26, 27, 28, 29, 31, 33, 34, 35, 36, 42, 49, 50, 55, 61, 71, 72, 73, 74, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 113, 114, 125, 126, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 149, 165, 171, 172, 173, 174, 178, 184, 185, 186, 187, 201, 207, 209, 210, 212, 215, 216, 217, 218, 219, 220, 227, 228, 231, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 254, 269, 270, 271, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 314, 316, 317, 318, 319, 320, 323, 324, 334, 335, 337, 338, 339, 349, 354, 355, 356, 358, 359, 360, 361, 362, 363, 364, 372, 373, 374, 375, 376, 377, 378, 380, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 405, 406, 410, 411, 412, 413, 414, 419, 420, 423, 424, 425, 427, 428, 429, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 452, 453, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 480, 484, 485, 486, 487, 488, 489, 490, 491, 493, 494, 497, 499, 505, 506, 509, 510, 511, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 529, 530, 531, 532, 533, 538, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 558, 559, 560, 564, 565, 567, 568, 569, 570, 571, 572, 573, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 619, 620, 621, 622, 623, 624, 629, 630, 631, 632, 634, 637, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 656, 657, 658, 660, 663, 664, 665, 693, 694, 695, 696, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 713, 714, 715, 716, 720, 721, 723, 724, 725, 726, 733, 751, 752, 753] } ] -} +} \ No newline at end of file diff --git a/src/TEdit.Tests/Terraria/TerrariaFormatValidatorTests.cs b/src/TEdit.Tests/Terraria/TerrariaFormatValidatorTests.cs index ca957e63..d44bec11 100644 --- a/src/TEdit.Tests/Terraria/TerrariaFormatValidatorTests.cs +++ b/src/TEdit.Tests/Terraria/TerrariaFormatValidatorTests.cs @@ -35,8 +35,8 @@ public TerrariaFormatValidatorTests(ITestOutputHelper output) try { int version = r.ReadInt32(); - if (version == 0 || version > 325) - return (false, $"Version {version} out of range (0 < v <= 325)"); + if (version == 0 || version > 326) + return (false, $"Version {version} out of range (0 < v <= 326)"); ms.Position = 0; From 36ce5480689b92f4baa5bf4c65c71303a6bc6538 Mon Sep 17 00:00:00 2001 From: yfdyzjt Date: Wed, 26 Aug 2026 10:43:07 +0800 Subject: [PATCH 2/2] Revert unnecessary items.json changes --- src/TEdit.Terraria/Data/items.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/TEdit.Terraria/Data/items.json b/src/TEdit.Terraria/Data/items.json index ec169e17..17d3080e 100644 --- a/src/TEdit.Terraria/Data/items.json +++ b/src/TEdit.Terraria/Data/items.json @@ -52963,7 +52963,7 @@ "scale": 1, "maxStackSize": 9999, "rarity": "Lime", - "name": "Scout\u0027s Sling", + "name": "Scout's Sling", "key": "ScoutSling", "isAccessory": true }, @@ -52972,7 +52972,7 @@ "scale": 1, "maxStackSize": 9999, "rarity": "Yellow", - "name": "Templar\u0027s Sling", + "name": "Templar's Sling", "key": "TemplarSling", "isAccessory": true }, @@ -52981,7 +52981,7 @@ "scale": 1, "maxStackSize": 9999, "rarity": "LightPurple", - "name": "Royal Guard\u0027s Harness", + "name": "Royal Guard's Harness", "key": "RoyalGuardHarness", "isAccessory": true, "shieldSlot": 11