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

latest release: 5.1.0-beta7
pre-release10 hours ago

Important

Supports Terraria 1.4.5.5 (world file version 318)
Initial preview support for tModLoader 1.4.4.9

Caution

HIGHLY EXPERIMENTAL! NOT FOR REGULAR USE!!!
THIS HAS HIGH LIKELYHOOD OF BREAKING YOUR FILES!!!

Features

  • Modded Worlds Explorer
    image
  • Initial Save/load for modded worlds
  • NBT Editor
    image
  • Mod Tile rendering *only tested with calamity mod
    image
    image
image

🐛 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
  • Convert .wld test files to LFS pointers
  • Files were committed as raw binaries before LFS was configured
  • Re-stage through LFS clean filter to store as proper pointers
  • 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

👥 Contributors

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

NewReleases is sending notifications on new releases.