github TEdit/Terraria-Map-Editor 5.2.0-alpha1
TEdit 5.2.0-alpha1

pre-release5 hours ago

Important

Supports Terraria 1.4.5.5 (world file version 318)

🐛 Bug Fixes

  • Fix Calamity2 tile loading: support new dense .twld format #1075

  • Add ParseTileDataDense/ParseWallDataDense for new tileData/wallData format

  • Add BuildTileDataDense/BuildWallDataDense for round-trip save

  • Fix 1-based saveType indexing (0=vanilla, 1+=mod tile map index)

  • Add bounds checking for stream desync resilience

  • Fix legacy format to read initial skip bytes before first record

  • Add 4 Calamity2 real-world tests (parse, quadrants, round-trip)

  • Add RawTileData/RawWallData properties to TwldData

  • Fix mod tile/wall rendering: accurate colors, layer depth, Safe prefix #1075

  • Sample tile/wall colors from first texture frame instead of full-sheet average

  • Add SampleFirstFrameColor() to TmodTextureExtractor for rawimg textures

  • Fix tile fallback colored square rendering at LayerTileTextures depth

  • Add Safe* prefix wall matching (mirrors existing Unsafe* fix)

  • Log unmatched wall names at debug level for diagnostics

  • Fix pre-existing unit test failures

  • Add SaveTypeToTileMapIndex/SaveTypeToWallMapIndex lookup population in TwldFileTests

  • Fix ModTileEntry_FromTag expected SaveType (index+1 when no "value" key)

  • Fix WallProperty.Id serialization: add JsonIgnoreCondition.Never to prevent
    WhenWritingDefault from skipping Id=0 (which deserializes to default -1)

  • Add textureWrap data for tile 185 (Small Decos) in tiles.json

📦 Other Changes

  • TModLoader .twld support: NBT parser, tile/wall overlay, round-trip save #1075

  • Add BigEndianReader/Writer for tModLoader's big-endian NBT format (TEdit.Common/IO)

  • Add TagCompound and TagIO: GZip-compressed NBT serializer compatible with tModLoader

  • Add TModLoader/ module: TwldFile, TwldData, ModTileEntry, ModWallEntry, ModTileData, ModWallData

  • Parse .twld sidecar: header, tile/wall maps, binary tile/wall data, chest items, NPCs, tile entities

  • Overlay mod tiles/walls onto World.Tiles using virtual IDs beyond vanilla range

  • Register dynamic TileProperty/WallProperty with stable hash-based placeholder colors

  • Strip mod data before vanilla .wld save, re-apply after (transparent round-trip)

  • Preserve unmodified .twld sections (modData, bestiary, killCounts, etc.) for lossless save

  • 25 new tests: TagCompound round-trip, BigEndian encoding, binary tile parsing, entry serialization

  • ModScraper: extract tile/wall colors from .tmod archives #1075

  • Add TEdit.ModScraper console app to scan .tmod files for tile/wall textures

  • Support both PNG and tModLoader .rawimg texture formats

  • Sample weighted average colors from non-transparent pixels

  • Output modColors.json mapping mod:tile → hex color

  • Search Steam Workshop and tModLoader Mods directories by default

  • Add modColors.json loading to TwldFile for better mod tile rendering

  • Fall back to hash-based colors when no scraped color available

  • Cache mod colors after first load for performance

  • Add 8 regression tests: vanilla world guards, modColors.json parsing

  • All 21 TwldFile tests pass, 0 regressions

  • World Explorer: add Vanilla/tModLoader toggle button #1075

  • Add toggle button in search bar to switch between Vanilla and tModLoader worlds

  • Filter world list by IsTModLoader flag from world header

  • Scan tModLoader worlds folder (My Games/Terraria/tModLoader/Worlds)

  • Show world count for each mode in the toggle button

  • Auto-select tModLoader mode when no vanilla worlds exist

  • Add localization keys: world_explorer_tab_vanilla, world_explorer_tab_tmodloader

  • Load mod tile/wall textures from .tmod archives at world load #1075

  • Add TmodTextureExtractor to read .tmod archives and extract tile/wall textures (PNG + rawimg)

  • Add name-to-virtual-ID mapping in TwldFile for bridging texture paths to tile/wall IDs

  • Wire LoadModTextures into WorldViewModel load pipeline after RegisterModSprites

  • Add Texture2D loading helpers for PNG bytes and raw RGBA with color key transparency

  • Process texture queue in render loop for deferred mod texture creation

  • Fix rawimg decoder to handle version=1 header prefix (3 int32s not 2)

  • Find .tmod files via cascading search: tModLoader Mods folder, Steam workshop

  • Add 19 unit tests for rawimg decoding, name mapping, and real .tmod integration

  • Add tmodloader-support.md tracking remaining mod support work

  • Item editing

  • Mod chest item editing: copy/paste, UI display, item textures #1075

  • Copy/paste now carries mod fields (ModName, ModItemName, prefix, NBT data)

  • NetId setter clears mod identity so vanilla item selection works cleanly

  • Chest editor shows italic mod item name when IsModItem is true

  • Extract item textures from .tmod archives, display 24x24 previews

  • FastChestItem template uses MultiBinding for mod+vanilla preview lookup

  • Add ModItemPreviewCache (string-keyed) and ItemPreviewMultiConverter

  • Fix pre-existing: UndoManager TileImportance bounds check for mod tiles

  • Fix pre-existing: ClipboardView binding path (Buffer.Name)

  • Mod item support for tile entity editors #1075

  • Add mod fields (ModName, ModItemName, etc.) to TileEntityItem and TileEntity

  • TileEntity.ToItem()/FromItem() helpers for single-item entities

  • TileEntityItem carries mod identity through Copy, ToItem, and implicit operators

  • Item.ToTileEntityItem() and implicit operator preserve mod fields

  • ApplyModTileEntityItems: overlay .twld NBT mod data onto tile entities at load

  • RebuildModTileEntityItems: serialize mod data back to NBT at save

  • Fix sync save path missing RebuildModChestItems call

  • Copy/paste now works for all single-item entity types with mod identity

  • XAML bindings for IsModItem/ModItemDisplayName on all tile entity editors

  • Updated tmodloader-support.md with tile entity architecture notes

  • Convert console.wld to LFS pointer

👥 Contributors

Don't miss a new Terraria-Map-Editor release

NewReleases is sending notifications on new releases.