GithubHelp home page GithubHelp logo

tkmm-team / tkmm Goto Github PK

View Code? Open in Web Editor NEW
44.0 1.0 8.0 58.19 MB

A mod merger and manager for Tears of the kingdom

Home Page: https://tkmm.org

License: MIT License

C# 100.00%
mod-manager modding totk zeldamods

tkmm's Introduction

Tears of the Kingdom Mod Manager

Merge mods like never before!

Releases'   Discord   Stars

TKMM is a mod manager and merger for Tears of the Kingdom developed by TKMM-Team.

Download TKMM


Issues   Issues   Open Pull Requests   Closed Pull Requests

tkmm's People

Contributors

archleaders avatar github-actions[bot] avatar greemdev avatar masterbubbles avatar okmika avatar the5thtear avatar walkquackback avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

tkmm's Issues

IPS Filename Case

Ryujinx requires all .ips filenames to be uppercase and TKMM outputs them in lowercase which will cause them to be ignored. This is not an issue with Atmosphère as far as I am aware, I do not know about Yuzu.

[Bug] Custom BYML arrays are not merged

(forwarding on behalf of Miirkuz)

so basically i've built my mod DAR and wanted to make a compatibility patch to make DAR compatible with Challenge Mode.
one of the things that the patch contain is the chance to make Golden Enemies (from Challeng Mode) drops custom DAR items like chest keys and other stuff.
what i have noticed is that if i put my patch with higher priority than Challenge Mode, everything is merged correctly except my edits on golden enemies droptables, while if i put my patch with lower priority than Challenge Mode, droptables are merged fine but other edits on golden enemies actors are not merged.
Same thing with Mals, since both DAR and Challenge Mode change the text of 'Game Over' with 'You Died' (DAR) and with 'Defeat' (Challenge Mode), when DAR has higher priority than Challenge Mode, i would expect that when i die i see the 'You Died' text from DAR, but i got 'Defeat' from Challenge Mode.
I've put my DAR mals inside the compatibility patch, and put it with lower priority than Challenge Mode, and this fixed my problem, but i don't think that's how it supposed to be.
so to me, looks like that tkmm confuses the priority order on droptables and Mals.
Let me know what you think or if you need extra info or the mods files.
Thank you in advance and this is my e-mail: [email protected]

Melon Speedruns' randomizer fails to install with GDL Error "Deletion of array elements is not supported in DefaultValue"

Melon Speedrun's randomizer completely fails to install in TKMM using any version, this was tested using a compiled version from the latest commit.

[Error] System.NotSupportedException: Deletion of array elements is not supported in DefaultValue: 1055395112 in table Enum
   at TKMM.SarcTool.Core.GameDataListMerger.ReconcileChanges(Byml modified, Byml vanilla, String table) in C:\Users\%username%\Documents\GitHub\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\GameDataList\GameDataListMerger.cs:line 702
   at TKMM.SarcTool.Core.GameDataListMerger.CreateChangelog(BymlMap vanilla, BymlMap modified) in C:\Users\%username%\Documents\GitHub\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\GameDataList\GameDataListMerger.cs:line 645
   at TKMM.SarcTool.Core.GameDataListMerger.Package(Memory`1 vanillaBytes, Memory`1 modifiedBytes) in C:\Users\%username%\Documents\GitHub\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\GameDataList\GameDataListMerger.cs:line 76
   at TKMM.SarcTool.Core.SarcPackager.PackageGameDataList() in C:\Users\%username%\Documents\GitHub\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\SarcPackager.cs:line 318
   at TKMM.SarcTool.Core.SarcPackager.InternalMakePackage() in C:\Users\%username%\Documents\GitHub\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\SarcPackager.cs:line 174
   at TKMM.SarcTool.Core.SarcPackager.Package() in C:\Users\%username%\Documents\GitHub\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\SarcPackager.cs:line 112
   at Tkmm.Core.Components.PackageBuilder.<>c__DisplayClass8_0`1.<CopyContentsInternal>b__2() in C:\Users\%username%\Documents\GitHub\Tkmm\src\Tkmm.Core\Components\PackageBuilder.cs:line 107
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at Tkmm.Core.Components.PackageBuilder.CopyContents[T](T item, String sourceFolder, String outputFolder) in C:\Users\%username%\Documents\GitHub\Tkmm\src\Tkmm.Core\Components\PackageBuilder.cs:line 66

[Bug] Expect dynamic address and value lengths in pchtxt files

I have tried these two mods in a couple ways, No World Limits 1.2.1, and Disable Healing In Combat, both of these mods contents are exclusively patch.txt files as far as I am aware, and when trying to merge any mods, at all, with these mods enabled, throw an ArgumentOutOfRange error every time.

I even tried merging only these two mods, exact same error, once disabling them, no issues with merging at all.

image

[Bug] Options are not merged correctly

When a mod has options selected (tested with all 4 types of option groups), the options will not be merged into the romfs folder in the merged output folder, but stay in a separate options folder within the target merge folder. Attached is a .ZIP containing a TKCL to test this with.
image
ArmorIconToolOptions001.zip

[Linux] Wrong Files/Folders selection due to case sensitivy

When I tried to install a folder mod it failed to install because it couldn't find /home/user/.local/share/Totk/config.json , however the tkmm binary created files at /home/user/.local/share/totk/Config.json.

I was able to work around the issue by creating these symbolic:

ln -s ~/.local/share/totk ~/.local/share/Totk
ln -s ~/.local/share/totk/Config.json ~/.local/share/totk/config.json

There may be more instances of this, but this is what I've run into.

P.S. I've also run into an Arithmetic operation overflow during import of said mod, but one bug report at a time.

[Bug] Options from two mods get mixed when editing both

When two mods with options are open on the home page, editing one will move it to the previously edited mod options.

Recreate

  • Install two mods with options
  • Edit one as normal
  • Edit an option in the second mod
  • Notice the option edited in the second mod is added to the first mod.

Handle merging of mods without a romfs folder

Currently, mods without romfs cause an exception. E.g.:

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\Mika\\AppData\\Local\\Temp\\360347ed-9b6f-44ae-86b6-91e90b84e92f\\romfs\\RSDB'
[27132] Failed to execute script 'rsdb-merge' due to unhandled exception!
[Error] System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Mika\AppData\Local\Temp\360347ed-9b6f-44ae-86b6-91e90b84e92f\romfs'.
   at System.IO.Enumeration.FileSystemEnumerator`1.Init()
   at System.IO.Enumeration.FileSystemEnumerableFactory.UserFiles(String directory, String expression, EnumerationOptions options)
   at System.IO.Directory.InternalEnumeratePaths(String path, String searchPattern, SearchTarget searchTarget, EnumerationOptions options)
   at System.IO.Directory.GetFiles(String path, String searchPattern, EnumerationOptions enumerationOptions)
   at TKMM.SarcTool.Core.SarcAssembler.InternalAssemble() in C:\Users\Mika\Sources\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\SarcAssembler.cs:line 103
   at TKMM.SarcTool.Core.SarcAssembler.Assemble() in C:\Users\Mika\Sources\Tkmm\lib\TKMM-SARC\TKMM.SarcTool.Core\SarcAssembler.cs:line 83
   at Tkmm.Core.Components.PackageBuilder.<>c__DisplayClass8_0`1.<CopyContentsInternal>b__1() in C:\Users\Mika\Sources\Tkmm\src\Tkmm.Core\Components\PackageBuilder.cs:line 85
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)

SarcTool, RSDB, and any other subtool that operates on romfs should not run in cases where the mod doesn't have a romfs folder. We should just do a straight copy over to the target by priority.

Crash when trying to write to a TKCL file if it's locked

System.IO.IOException: The process cannot access the file 'C:\Users\User\Downloads\archive.tkcl' because it is being used by another process.
   at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.Strategies.SyncWindowsFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
   at System.IO.File.Create(String path, Int32 bufferSize)
   at System.IO.File.Create(String path)
   at Tkmm.Core.Components.PackageBuilder.Package(String inputFolder, String outputFile) in C:\Users\User\Sources\Tkmm\src\Tkmm.Core\Components\PackageBuilder.cs:line 133
   at Tkmm.ViewModels.Pages.PackagingPageViewModel.<>c__DisplayClass9_0.<<Create>b__0>d.MoveNext() in C:\Users\User\Sources\Tkmm\src\Tkmm\ViewModels\Pages\PackagingPageViewModel.cs:line 124

Launcher crashes when starting

As soon as i start the launches, it loads a bit but then stops. I dont get a screen and there is nothing that runs in the background. I have installed net runtime(x64).

[Bug] HeadDef is not compressed correctly

The HeadDef (System/HeapSize/Product.Nin_NX_NVN.HeapDef.byml.zs) file is currently being re-compressed with dictionary 1 (zs.dic).

However, this file is loaded before dictionaries, so it must not use any dictionaries in the compression.

okmika/TKMM-SARC#6

[Linux] Tkmm-Launcher crashes on Install

The launcher seems to startup just fine, but upon pushing the install button, it completely crashes.
Commandline Output:

 ripps  ~  Downloads  ./tkmm-launcher 
Unhandled exception. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at Tkmm.Core.Helpers.Operations.GitHubOperations.GetLatestRelease(String org, String repo, String assetName) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Helpers/Operations/GitHubOperations.cs:line 32
   at Tkmm.Core.Components.AppManager.Update(Action`1 setProgress) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/AppManager.cs:line 113
   at Tkmm.Launcher.ViewModels.ShellViewModel.<Primary>b__10_0() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Launcher/ViewModels/ShellViewModel.cs:line 50
   at Tkmm.Launcher.ViewModels.ShellViewModel.Primary() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Launcher/ViewModels/ShellViewModel.cs:line 48
   at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at Avalonia.Threading.SendOrPostCallbackDispatcherOperation.InvokeCore()
   at Avalonia.Threading.DispatcherOperation.Execute()
   at Avalonia.Threading.Dispatcher.ExecuteJob(DispatcherOperation job)
   at Avalonia.Threading.Dispatcher.ExecuteJobsCore(Boolean fromExplicitBackgroundProcessingCallback)
   at Avalonia.Threading.Dispatcher.Signaled()
   at Avalonia.X11.X11PlatformThreading.CheckSignaled()
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken)
   at Avalonia.Threading.DispatcherFrame.Run(IControlledDispatcherImpl impl)
   at Avalonia.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken)
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args)
   at Tkmm.Launcher.Program.Main(String[] args) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Launcher/Program.cs:line 13
Aborted (core dumped)

Thinking that there was slim chance this was a Wayland/X11 thing, since I saw Avalonia.X11.X11PlatformThreading in the output. I tried running it in Gamescope so it would be running in on Xwayland, however it crashed the same way:

ripps  ~  Downloads  139  gamescope.nvidia -- ./tkmm-launcher 
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.
vulkan: physical device 10de:1e84 compute queue doesn't support presenting on our surface, using graphics queue
vulkan: selecting physical device 'NVIDIA GeForce RTX 2070 SUPER': queue family 0 (general queue family 0)
vulkan: physical device supports DRM format modifiers
wlserver: [backend/headless/backend.c:67] Creating headless backend
vulkan: vkGetPhysicalDeviceFormatProperties2 returned zero modifiers for DRM format 0x38344241 (VkResult: 0)
vulkan: vkGetPhysicalDeviceFormatProperties2 returned zero modifiers for DRM format 0x38344258 (VkResult: 0)
vulkan: supported DRM formats for sampling usage:
vulkan:   AR24 (0x34325241)
vulkan:   XR24 (0x34325258)
vulkan:   AB24 (0x34324241)
vulkan:   XB24 (0x34324258)
vulkan:   RG16 (0x36314752)
vulkan:   NV12 (0x3231564E)
vulkan:   AB4H (0x48344241)
vulkan:   XB4H (0x48344258)
vulkan:   AB30 (0x30334241)
vulkan:   XB30 (0x30334258)
vulkan:   AR30 (0x30335241)
vulkan:   XR30 (0x30335258)
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
wlserver: Running compositor on wayland display 'gamescope-0'
wlserver: [backend/headless/backend.c:17] Starting headless backend
wlserver: [xwayland/sockets.c:63] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use
wlserver: [xwayland/server.c:108] Starting Xwayland on :2
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Could not resolve keysym XF86CameraAccessEnable
> Warning:          Could not resolve keysym XF86CameraAccessDisable
> Warning:          Could not resolve keysym XF86CameraAccessToggle
> Warning:          Could not resolve keysym XF86NextElement
> Warning:          Could not resolve keysym XF86PreviousElement
> Warning:          Could not resolve keysym XF86AutopilotEngageToggle
> Warning:          Could not resolve keysym XF86MarkWaypoint
> Warning:          Could not resolve keysym XF86Sos
> Warning:          Could not resolve keysym XF86NavChart
> Warning:          Could not resolve keysym XF86FishingChart
> Warning:          Could not resolve keysym XF86SingleRangeRadar
> Warning:          Could not resolve keysym XF86DualRangeRadar
> Warning:          Could not resolve keysym XF86RadarOverlay
> Warning:          Could not resolve keysym XF86TraditionalSonar
> Warning:          Could not resolve keysym XF86ClearvuSonar
> Warning:          Could not resolve keysym XF86SidevuSonar
> Warning:          Could not resolve keysym XF86NavInfo
Errors from xkbcomp are not fatal to the X server
wlserver: [types/wlr_compositor.c:692] New wlr_surface 0x5613adc6d890 (res 0x5613adc47780)
wlserver: [xwayland/server.c:273] Xserver is ready
pipewire: stream state changed: connecting
pipewire: stream state changed: paused
pipewire: stream available on node ID: 113
vblank: Using timerfd.
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
pipewire: renegotiating stream params (size: 1920x1080)
wlserver: [types/wlr_compositor.c:692] New wlr_surface 0x5613adcd4bf0 (res 0x5613adc6ad90)
xwm: got the same buffer committed twice, ignoring.
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 708, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Could not resolve keysym XF86CameraAccessEnable
> Warning:          Could not resolve keysym XF86CameraAccessDisable
> Warning:          Could not resolve keysym XF86CameraAccessToggle
> Warning:          Could not resolve keysym XF86NextElement
> Warning:          Could not resolve keysym XF86PreviousElement
> Warning:          Could not resolve keysym XF86AutopilotEngageToggle
> Warning:          Could not resolve keysym XF86MarkWaypoint
> Warning:          Could not resolve keysym XF86Sos
> Warning:          Could not resolve keysym XF86NavChart
> Warning:          Could not resolve keysym XF86FishingChart
> Warning:          Could not resolve keysym XF86SingleRangeRadar
> Warning:          Could not resolve keysym XF86DualRangeRadar
> Warning:          Could not resolve keysym XF86RadarOverlay
> Warning:          Could not resolve keysym XF86TraditionalSonar
> Warning:          Could not resolve keysym XF86ClearvuSonar
> Warning:          Could not resolve keysym XF86SidevuSonar
> Warning:          Could not resolve keysym XF86NavInfo
Errors from xkbcomp are not fatal to the X server
Unhandled exception. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at Tkmm.Core.Helpers.Operations.GitHubOperations.GetLatestRelease(String org, String repo, String assetName) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Helpers/Operations/GitHubOperations.cs:line 32
   at Tkmm.Core.Components.AppManager.Update(Action`1 setProgress) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/AppManager.cs:line 113
   at Tkmm.Launcher.ViewModels.ShellViewModel.<Primary>b__10_0() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Launcher/ViewModels/ShellViewModel.cs:line 50
   at Tkmm.Launcher.ViewModels.ShellViewModel.Primary() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Launcher/ViewModels/ShellViewModel.cs:line 48
   at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at Avalonia.Threading.SendOrPostCallbackDispatcherOperation.InvokeCore()
   at Avalonia.Threading.DispatcherOperation.Execute()
   at Avalonia.Threading.Dispatcher.ExecuteJob(DispatcherOperation job)
   at Avalonia.Threading.Dispatcher.ExecuteJobsCore(Boolean fromExplicitBackgroundProcessingCallback)
   at Avalonia.Threading.Dispatcher.Signaled()
   at Avalonia.X11.X11PlatformThreading.CheckSignaled()
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken)
   at Avalonia.Threading.DispatcherFrame.Run(IControlledDispatcherImpl impl)
   at Avalonia.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken)
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args)
   at Tkmm.Launcher.Program.Main(String[] args) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Launcher/Program.cs:line 13
xwm: error 3: BadWindow (invalid Window parameter) request 15 minor 0 serial 1256
gamescope: children shut down!
(EE) failed to read Wayland events: Broken pipe

I can try on a real X11 display server later, but I have feeling that this isn't the problem.

Arguement Out Of Range exception

No matter what i try i get errors, this is the current error i got after trying to install a mod. game version is 1.2.1

[Error] System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at RsdbMerger.Core.Mergers.RsdbUniqueRowMerger.LogRowChanges(BymlArray vanillaRows, Byml row, UInt64 rsdbNameHash, Int32 version) in /home/runner/work/Tkmm/Tkmm/lib/RsdbMerger/src/RsdbMerger.Core/Mergers/RsdbUniqueRowMerger.cs:line 78
at RsdbMerger.Core.Mergers.RsdbUniqueRowMerger.CreateChangelog(ReadOnlySpan1 canonical, ArraySegment1 data, RsdbFile target, Stream output) in /home/runner/work/Tkmm/Tkmm/lib/RsdbMerger/src/RsdbMerger.Core/Mergers/RsdbUniqueRowMerger.cs:line 38
at RsdbMerger.Core.Services.RsdbChangelogService.CreateChangelog(RsdbFile target, ArraySegment1 data) in /home/runner/work/Tkmm/Tkmm/lib/RsdbMerger/src/RsdbMerger.Core/Services/RsdbChangelogService.cs:line 82 at RsdbMerger.Core.Services.RsdbChangelogService.CreateChangelog(RsdbFile target) in /home/runner/work/Tkmm/Tkmm/lib/RsdbMerger/src/RsdbMerger.Core/Services/RsdbChangelogService.cs:line 69 at RsdbMerger.Core.Services.RsdbChangelogService.<CreateChangelogsAsync>b__5_0(RsdbFile target, CancellationToken cancellationToken) in /home/runner/work/Tkmm/Tkmm/lib/RsdbMerger/src/RsdbMerger.Core/Services/RsdbChangelogService.cs:line 54 at System.Threading.Tasks.Parallel.<>c__531.<b__53_0>d.MoveNext()
--- End of stack trace from previous location ---
at RsdbMerger.Core.Services.RsdbChangelogService.CreateChangelogsAsync() in /home/runner/work/Tkmm/Tkmm/lib/RsdbMerger/src/RsdbMerger.Core/Services/RsdbChangelogService.cs:line 53
at Tkmm.Core.Components.PackageBuilder.<>c__DisplayClass8_0`1.<b__1>d.MoveNext() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/PackageBuilder.cs:line 94
--- End of stack trace from previous location ---
at Tkmm.Core.Components.PackageBuilder.CopyContents[T](T item, String sourceFolder, String outputFolder) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/PackageBuilder.cs:line 66

image

[Bug] Vanilla Layouts/Layout Animations included in changelog

Within UI\LayoutArchive\Common.Product.110.Nin_NX_NVN.blarc.zs, the majority of the .bflyt and .bflan are stored. These are the layouts and layout animations. Even if a given one of these files is unmodified, it is read as a modified file. Since there's no library for merging layouts and their animations, they are priority based, so if two mods edit layouts, only the mod with the higher priority will have the modified layout applied, since its vanilla layout files have higher priority than the lower mod's modded layout file. Attached is a zip containing a mod that edits a layout file, specifically Pouch_00.bflyt.
ArmorIconToolOptions001.zip

[Bug] Drag and Drop not working on Linux

OS and Version

Arch Linux with TKMM 1.0.0-beta6, running through XWayland on Hyprland

Describe the Issue

When drag-and-dropping files on the below area, nothing happens. This has been tried with both Nautilus and Dolphin file managers.
image

It's probably something to do with Linux on my end, but I think a different form of input like adding a text input would be a nice addition that would solve this. Another idea is making it so pressing on the area would open a file dialogue on its own, as that seemed to work fine in the setup process.

[Bug] PchTxt Parser Error (Comments not expected in data section)

I keep getting this error when merging and I can't figure out the cause

[Error] System.FormatException: The input string '@k' was not in a correct format.
at System.Number.ThrowFormatException[TChar](ReadOnlySpan1 value) at System.Byte.Parse(ReadOnlySpan1 s, NumberStyles style, IFormatProvider provider)
at IPS.NET.Core.Converters.PchtxtToIPS.ConvertPchtxtToIps(ReadOnlySpan`1 text, Stream output) in /home/runner/work/Tkmm/Tkmm/lib/IPS.NET/IPS.NET.Core/Converters/PchtxtToIPS.cs:line 103
at Tkmm.Core.Components.Mergers.ExefsMerger.Merge(IModItem[] mods, String output) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/Mergers/ExefsMerger.cs:line 91
at Tkmm.Core.Services.MergerService.MergeAsync(IModItem[] mods, String output) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Services/MergerService.cs:line 70
at Tkmm.Core.Services.MergerService.<>c__DisplayClass4_0.<b__2>d.MoveNext() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Services/MergerService.cs:line 57
--- End of stack trace from previous location ---
at Tkmm.Core.Services.MergerService.Merge(Profile profile, String output) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Services/MergerService.cs:line 55
at Tkmm.Core.Services.MergerService.Merge() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Services/MergerService.cs:line 23
at Tkmm.Helpers.MergerOperations.Merge() in /home/runner/work/Tkmm/Tkmm/src/Tkmm/Helpers/MergerOperations.cs:line 15

RSDB Merging Issue

(copied exactly from the discord bug report bc I figured I should probably actually open a github issue lol, only thing is github doesn't support byml files so I can't upload the actual file in the issue)

I'd open an issue on GitHub, but skimming through both RsdbMerger and BymlLibrary, I couldn't quite tell where the issue could be coming from. It seems that when merging PouchActorInfo files for certain mods, the merger will output a file with node type 0xFE for certain IsUsable nodes (supposed to be 0xD0 for bool). This can occur when merging a mod with itself (such as merging Cook Or Die with itself) or when merging different mods together. This issue is present in both the changelog and the output file (sample file attached). While this does not cause the game to crash, it can lead to unintended behavior as the game will default to false for these invalid nodes even if they are intended to be set to true. It also makes editing the merged files impossible as tools will fail to parse the files. I've also attached an image with the locations of the invalid nodes in the sample file for reference. As far as I can tell, this only occurs for IsUsable nodes for some reason.
image

[Bug] Drag/Drop not Working on Windows

This issue is caused when running via the launcher or with elevated permissions.

The drag/drop client fails because TKMM is a higher elevation than file explorer.

The ideal solution is to run the launcher without admin, however, if this is not forced when installing/updating things will break.

User selected options on 'Required' group types get overwritten by the option at the top

For the Required option group types, it always selects only the one at the top, whatever else we toggle gets unselected and it does not save it. It appears to be due to this bit of code here (on lines 18 and 20).

When we remove SelectionMode.AlwaysSelected the problem disappears, but it also gets rid of what handles the need for those group types to always have at least one option selected

cant start TKMM: Unhandled exception. System.TypeInitializationException: The type initializer for 'Tkmm.Core.Components.AppManager' threw an exception.

if i start TKMM i get this error message:

Unhandled exception. System.TypeInitializationException: The type initializer for 'Tkmm.Core.Components.AppManager' threw an exception.

---> System.TypeInitializationException: The type initializer for 'ConfigFactory.Core.ConfigModule1' threw an exception. ---> System.Text.Json.JsonException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0. ---> System.Text.Json.JsonReaderException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: 0 | BytePositionInLine: 0. at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan1 bytes)
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) --- End of inner exception stack trace --- at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex) at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.Serialization.Metadata.JsonTypeInfo1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack) at System.Text.Json.Serialization.Metadata.JsonTypeInfo1.Deserialize(Stream utf8Json)
at ConfigFactory.Core.ConfigModule1.Load(T& module) at ConfigFactory.Core.ConfigModule1.<>c.<.cctor>b__43_0()
at System.Lazy1.ViaFactory(LazyThreadSafetyMode mode) at System.Lazy1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy1.CreateValue() at ConfigFactory.Core.ConfigModule1..cctor()
--- End of inner exception stack trace ---
at ConfigFactory.Core.ConfigModule1.get_Shared() at Tkmm.Core.Components.AppManager..cctor() in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/AppManager.cs:line 29 --- End of inner exception stack trace --- at Tkmm.Core.Components.AppManager.Start(String[] args, Func2 attach) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Core/Components/AppManager.cs:line 41
at Tkmm.Desktop.Program.Main(String[] args) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Desktop/Program.cs:line 23

How can i fix it?

Updating a mod installs it twice in the master mod collection

When updating a mod, it is installed twice in the master mod collection.

Uninstalling the second throws an error (folder not found, because it was uninstalled already); same folder, different listing.

Recreate

  • Install a mod
  • Install the same mod again (as an update)
  • Uninstall both mods (the second will throw an error)

TKMM doesn't run after install

I just installed TKMM, and it doesn't want to run at all. No console or exceptions. Windows 11 64bit. with required .nET downloaded and installed as well.

tkmm dosent work

tkmm dosen't open for some reason it says this:

System.TypeInitializationException: The type initializer for 'ConfigFactory.Core.ConfigModule1' threw an exception. ---> System.Text.Json.JsonException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0. ---> System.Text.Json.JsonReaderException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: 0 | BytePositionInLine: 0. at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan1 bytes)
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) --- End of inner exception stack trace --- at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex) at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.Serialization.Metadata.JsonTypeInfo1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack) at System.Text.Json.Serialization.Metadata.JsonTypeInfo1.Deserialize(Stream utf8Json)
at ConfigFactory.Core.ConfigModule1.Load(T& module) at ConfigFactory.Core.ConfigModule1.<>c.<.cctor>b__43_0()
at System.Lazy1.ViaFactory(LazyThreadSafetyMode mode) at System.Lazy1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy1.CreateValue() at ConfigFactory.Core.ConfigModule1..cctor()
--- End of inner exception stack trace ---
at ConfigFactory.Core.ConfigModule1.get_Shared() at Tkmm.App.OnFrameworkInitializationCompleted() in /home/runner/work/Tkmm/Tkmm/src/Tkmm/App.axaml.cs:line 119 at Avalonia.AppBuilder.SetupUnsafe() at Avalonia.AppBuilder.Setup() at Avalonia.AppBuilder.SetupWithLifetime(IApplicationLifetime lifetime) at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, Action1 lifetimeBuilder)
at Tkmm.Desktop.Program.Main(String[] args) in /home/runner/work/Tkmm/Tkmm/src/Tkmm.Desktop/Program.cs:line 28

TKMM won't open

I have tried removing tkmm from my computer and re-installing it several times, but every time I can only open the program once, and then when I click on the shortcut I get this error

error

Option Mals Priority

((forwarded from echo))
When merging an option that contains a Mals file, the base mod's Mals file will be merged with a higher priority than the option leading to any changes in the option's Mals being ignored.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.