TerraMap / windows

TerraMap Windows is an interactive Terraria v1.4 world map viewer that loads quickly and lets you pan, zoom, find blocks, ores, items in chests, dungeons, NPCs, etc.
https://terramap.github.io/windows.html
GNU General Public License v3.0
83 stars 13 forks source link

Not having default World and Player folder locations causes exceptions #17

Closed Pika256 closed 4 years ago

Pika256 commented 4 years ago

Creating empty Worlds and Players folders seems to be preventing all the exceptions I'm experiencing.

I have the Terraria server running on a separate computer. The server and worlds are not in their default locations (they're sitting in the D: drive).

Just in case it matters: OS: Windows 7 64-bit World created with Terraria v1.4.0.3 Currently running Terraria v1.4.0.4

Launching TerraMap gives this exception about not finding the Worlds folder:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Pika\Documents\My Games\Terraria\Worlds'. at System.IO.Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileSystemEnumerableIterator1.CommonInit() at System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) at System.IO.Directory.GetFiles(String path, String searchPattern) at TerraMap.MainWindow.LoadWorldFiles() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 95 at TerraMap.MainWindow.d51.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 941 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Version: 1.4.6.17651

When the Worlds folder is in place, but the Players folder isn't, these two (nearly identical) exceptions are thrown. Again, creating empty Worlds and Players folders prevent these errors.

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Pika\Documents\My Games\Terraria\Players'. at System.IO.Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileSystemEnumerableIterator1.CommonInit() at System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) at System.IO.DirectoryInfo.InternalGetDirectories(String searchPattern, SearchOption searchOption) at TerraMap.Data.World.GetPlayerMapFiles() in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 1797 at TerraMap.MainWindow.LoadMapFiles() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 205 at TerraMap.MainWindow.d24.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 315 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d23.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 270 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d58.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 1229 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Version: 1.4.6.17651

and

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Pika\Documents\My Games\Terraria\Players'. at System.IO.Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileSystemEnumerableIterator1.CommonInit() at System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) at System.IO.DirectoryInfo.InternalGetDirectories(String searchPattern, SearchOption searchOption) at TerraMap.Data.World.GetPlayerMapFiles() in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 1797 at TerraMap.MainWindow.LoadMapFiles() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 205 at TerraMap.MainWindow.d24.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 315 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d23.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 270 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d56.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 1205 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Version: 1.4.6.17651

TerraMap doesn't crash after these exceptions are thrown, locating the world file manually throws yet another exception. While my guess is that this exception will become moot when the previous two are dealt with, I figured I'd put it here just in case it's helpful.

System.NullReferenceException: Object reference not set to an instance of an object. at TerraMap.Data.World.GetTileColor(Int32 y, Tile tile) in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 1110 at TerraMap.Data.World.ReadTilesVersion2(BinaryReader reader, Boolean[] importance) in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 1040 at TerraMap.Data.World.ReadWorldVersion2(BinaryReader reader) in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 463 at TerraMap.Data.World.Read(String filename) in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 435 at TerraMap.Data.World.<>c__DisplayClass378_0.b0() in C:\Users\Jason\source\terramap\windows\Data\World.cs:line 397 at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d24.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 303 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d22.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 265 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at TerraMap.MainWindow.d83.MoveNext() in C:\Users\Jason\source\terramap\windows\TerraMap\MainWindow.xaml.cs:line 1515 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Version: 1.4.6.17651

PS. Thank you for TerraMap and your continued efforts.

jasoncoon commented 4 years ago

Should be fixed in v1.4.8, thanks! https://terramap.github.io/windows