fosspill / ffxiv_modding_tool Goto Github PK
View Code? Open in Web Editor NEWFFXIV Modding Tool is the Cross-platform Commandline interface alternative for TexTools
Home Page: https://ffmt.pwd.cat/
License: GNU General Public License v3.0
FFXIV Modding Tool is the Cross-platform Commandline interface alternative for TexTools
Home Page: https://ffmt.pwd.cat/
License: GNU General Public License v3.0
Should we include a game launcher launcher?
With this we could potentially launch the game and automagically disable mods when patch is detected, hence requiring no input from the user.
I also like the name game launcher launcher.
Issue will be kept open to track potential platform specific obstacles.
So far I believe this is completely cross-platform, including our dependencies.
https://github.com/fosspill/FFXIV_TexTools_CLI/blob/development/FFXIV_TexTools_CLI/Program.cs#L1015
What? :D
"Have you tried turning it off and on again?"
Everything is all good when except disable, you can't disable and backup without resetting but all other commands work as expected
Originally posted by @hybridindie in #78 (comment)
CodeFactor found an issue: Complex Method
It's currently on:
FFXIV_Modding_Tool\Program.cs:1093-1177
Commit 14fb5ab
Describe the bug
If you string together multiple commands the gamedata can corrupt.
I presume that this is due to disk activity not being done before starting more activity? This is purely a blind guess.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Running the string of commands should end up with a proper working game.
Desktop (please complete the following information):
Suggestions
ffttcli_lock
file with a unix timestamp in the future before starting imports(starttime + 30min fi) and then updating it to be a few seconds after ended operation (endtime + 2min). The second command would then have to wait for this time to be reachedProper interchangeability with other tools, such as textools, should be strongly considered
Describe the solution you'd like
Describe the solution you'd like
A way to modify already created modpacks (and preview them, including what files they include)
Suggestion:
Show the modpack as a file structure where files can be replaced/added/deleted. When done with the editing FFMT will recreate the modpack.
Additional context
Textools does not have this functionality, so this would be another function that would be unique.
Describe the bug
The application sometimes complains about a mysterious mod applied by another application - even if that isn't the case.
To Reproduce
Unsure about steps to reproduce.
Presumably cancelling out at the wrong point in the import process?
Expected behavior
Importing a mod with FFMT should always conclude with FFMT recognizing it.
Desktop (please complete the following information):
Additional context
Might also be an issue with the reading of the mod information.
Just did and the initial run works but it's not able to find the necessary file to actually run.
The first error I get is the following
System.IO.DirectoryNotFoundException: Could not find a part of the path "/Applications/FINAL FANTASY XIV ONLINE/game/XivMods.json".
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x00164] in <0523ad94f2e04325802cd231c518c8d9>:0
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options) [0x00000] in <0523ad94f2e04325802cd231c518c8d9>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions)
at System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding, System.Int32 bufferSize) [0x00055] in <0523ad94f2e04325802cd231c518c8d9>:0
at System.IO.StreamWriter..ctor (System.String path) [0x00008] in <0523ad94f2e04325802cd231c518c8d9>:0
at (wrapper remoting-invoke-with-check) System.IO.StreamWriter..ctor(string)
at System.IO.File.WriteAllText (System.String path, System.String contents) [0x00026] in <0523ad94f2e04325802cd231c518c8d9>:0
at xivModdingFramework.Mods.Modding.CreateModlist () [0x00067] in <e7087d1cba03440a94b4ddd624a8bfd5>:0
at xivModdingFramework.SqPack.FileTypes.Dat..ctor (System.IO.DirectoryInfo gameDirectory) [0x00019] in <e7087d1cba03440a94b4ddd624a8bfd5>:0
at xivModdingFramework.Helpers.ProblemChecker..ctor (System.IO.DirectoryInfo gameDirectory) [0x0001e] in <e7087d1cba03440a94b4ddd624a8bfd5>:0
at FFXIV_Modding_Tool.Commandline.Arguments.PreviouslyModifiedGame () [0x00029] in <1efd7f5278184069a7bb4e8f4d373139>:0
at FFXIV_Modding_Tool.Commandline.Arguments.ArgumentHandler (System.String[] args) [0x0080b] in <1efd7f5278184069a7bb4e8f4d373139>:0
at FFXIV_Modding_Tool.MainClass.Main (System.String[] args) [0x00036] in <1efd7f5278184069a7bb4e8f4d373139>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.DirectoryNotFoundException: Could not find a part of the path "/Applications/FINAL FANTASY XIV ONLINE/game/XivMods.json".
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x00164] in <0523ad94f2e04325802cd231c518c8d9>:0
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options) [0x00000] in <0523ad94f2e04325802cd231c518c8d9>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions)
at System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding, System.Int32 bufferSize) [0x00055] in <0523ad94f2e04325802cd231c518c8d9>:0
at System.IO.StreamWriter..ctor (System.String path) [0x00008] in <0523ad94f2e04325802cd231c518c8d9>:0
at (wrapper remoting-invoke-with-check) System.IO.StreamWriter..ctor(string)
at System.IO.File.WriteAllText (System.String path, System.String contents) [0x00026] in <0523ad94f2e04325802cd231c518c8d9>:0
at xivModdingFramework.Mods.Modding.CreateModlist () [0x00067] in <e7087d1cba03440a94b4ddd624a8bfd5>:0
at xivModdingFramework.SqPack.FileTypes.Dat..ctor (System.IO.DirectoryInfo gameDirectory) [0x00019] in <e7087d1cba03440a94b4ddd624a8bfd5>:0
at xivModdingFramework.Helpers.ProblemChecker..ctor (System.IO.DirectoryInfo gameDirectory) [0x0001e] in <e7087d1cba03440a94b4ddd624a8bfd5>:0
at FFXIV_Modding_Tool.Commandline.Arguments.PreviouslyModifiedGame () [0x00029] in <1efd7f5278184069a7bb4e8f4d373139>:0
at FFXIV_Modding_Tool.Commandline.Arguments.ArgumentHandler (System.String[] args) [0x0080b] in <1efd7f5278184069a7bb4e8f4d373139>:0
at FFXIV_Modding_Tool.MainClass.Main (System.String[] args) [0x00036] in <1efd7f5278184069a7bb4e8f4d373139>:0
You may want to up the Docs to say the GameDirectory config value or -g option needs to look within the .app file. The full path is similar to:
/Applications/FINAL FANTASY XIV ONLINE.app/Contents/SharedSupport/finalfantasyxiv/support/published_Final_Fantasy/drive_c/Program Files (x86)/SquareEnix/FINAL FANTASY XIV - A Realm Reborn
Originally posted by @hybridindie in #78 (comment)
At the moment we release straight up binaries.
It would likely be better to release a binary with the name ffmt within .zip/.tar files
We should consider properly releasing 0.1 binary, built as a release (not debug) with optimizations (because why not).
This likely means we should tag our current master commits with the release version. (Dunno how that's done)
Progress for import feature should be kept here.
Support for modpack creation
CodeFactor found multiple issues last seen at 14fb5ab:
FFXIV_Modding_Tool\Program.cs:1098-1182
CodeFactor found an issue: Complex Code
It's currently on:
FFXIV_Modding_Tool\Program.cs
Commit 14fb5ab
xivmoddingframework seems to have issues with old modpack files with multiple lines of json, specifically on linux?
Might be due to issues with dependencies, .net versions, mono/dotnet implementation on linux or specific project settings.
Currently directories have to be defined manually each time it's ran. Should be configurable.
Now that we'll support wizard imports we'll also need ways of seeing what kind of modpack this is.
Is your feature request related to a problem? Please describe.
It's currently unclear what importing modpacks that rely on the wizard will do. My guess is that all parts is imported, which I imagine can cause unexpected issues.
Describe the solution you'd like
Proper wizard support (through some kind of ncurses thing, maybe? Or config files?)
Workaround
Now we release both the bundled and unbundled versions of this tool, but it would be nice to have it released on various distros (at least have the packages available for one-click installs).
aur would be easy, but I do wonder if a .deb version would be nice too.
Describe the bug
Right now the user is responsible for making index backups. These are essential and should be STRONGLY recommended if no backups are found, or a new version of the game is detected.
Desktop (please complete the following information):
To ensure that we properly respect Liinko's likely copyrighted name I'm proposing renaming the project,
The following will need to be changed:
The following will have to be discussed:
Reponame is easy, but I believe the redirect from the old url is removed after a while, or when the name is taken.
Website url is easy too, but I don't know if this will affect any small chance we have of popping up on search engines.
We need to quickly land a way we want to do commandline options so we don't have to rewrite that part once we add more functionality.
Would it be smart to consider a dry-run option?
Could potentitally be handy with the problem checker, or even large modpack imports.
We need to backup important files.
For now we can leave users with a warning to back up game files before execution.
The problemchecker output today is an overwhelming stream of useless information. It's like going to the doctor and receiving a 500 page report on every single bone in your body where the one broken one is mentioned on page 324 section 3 paragraph 5.
This really needs to be made cleaner. I'd gladly work on this, but I'd need some pointers about where to start (do I create a global array or a function in the problemchecker class that stores the issues and resolutions?)
Feature branch for better problem checker output is made.
I suggest something akin to this:
Checking for XXX problems..
44%...
Checkin for YYY problems ...
69%...
Checking for mod problems...
10%
The following problems were found and resolved:
oaisfoiahf oiahfioahfioh
GsdgS
DgSDGsdgsdg
ERROR: The following problems could not be resolved:
Broken toe. Please visit doctor.
Consider splitting ffmt from the framework. This will reduce our maintenance burden.
Describe the bug
version flag shows gameversion. should show tool version or both.
We should consider using the current wizard import logic for regular modpack imports when using the --custom flag instead of/as alternative to the config files that are in use currently.
Describe the solution you'd like
Allow picking what modifications to import when importing a modpack through the same selection method as the wizard import.
Describe the bug
The website needs to be updated with usage examples of the newly added import wizard support.
Describe the bug
(N)o, import everything
nData extraction successfull.
Also: successfull also isn't spelt like that :)
The program reports missing files and will not import mods due to it thinking that application is running (It is not and confirmed such)
When importing
mono FFXIV_Modding_Tool.exe mpi -t mod_file.ttmp
Checking backups before proceeding...
ERROR: One or more index files could not be found in /Users/johnd/.config/FFXIV_Modding_Tool/backups. Creating new ones or downloading them from the TexTools discord is recommended
Continue anyway? y/N
y
ERROR: Unable to import while the game is running.
Running a problem check
mono FFXIV_Modding_Tool.exe pc
Initializing problem check
Checking index dat values...
25%ERROR: There was an issue checking index dat counts
One or more errors occurred. (Could not find a part of the path "/Applications/FINAL FANTASY XIV ONLINE.app/Contents/SharedSupport/finalfantasyxiv/support/published_Final_Fantasy/drive_c/Program Files (x86)/SquareEnix/FINAL FANTASY XIV - A Realm Reborn/game/sqpack/ffxiv/0a0000.win32.index".)
Checking index backups...
100%
Checking dat file...
100%
Checking modlist...
WARNING: No entries found in the modlist, skipping
Checking LoD settings...
100%
The following problems were found and resolved:
LoD turned off, as some mods have issues with it turned on
ERROR: The following problems could not be resolved:
Index backups for 010000 not found
Index backups for 040000 not found
Index backups for 060000 not found
Game directory is missing 060000.win32.dat1
Should I make this another ticket or follow here due to being both Mac related?
Originally posted by @hybridindie in #78 (comment)
Low priority
This is required to be implement asap, as patching can at the moment be problematic.
I suggest something among the lines of
$ ./executable disablemod *
Disabling hair-000
Disabling hair-001
...
$ ./executable enablemod hair-000
Enabling mod hair-000
Temporary workaround for missing functionality:
Run reset before patch.
Describe the bug
When executing the runtime the following error occurs
Unhandled Exception:
System.TypeLoadException: Could not load type of field 'Salaros.Configuration.ConfigParser:YesNoBoolConverters' (4) due to: Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
at FFXIV_Modding_Tool.MainClass.Main (System.String[] args) [0x00030] in <1efd7f5278184069a7bb4e8f4d373139>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type of field 'Salaros.Configuration.ConfigParser:YesNoBoolConverters' (4) due to: Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
at FFXIV_Modding_Tool.MainClass.Main (System.String[] args) [0x00030] in <1efd7f5278184069a7bb4e8f4d373139>:0
This is a clean install as I am unable to get through the first part of the focus recommend first run
To Reproduce
Steps to reproduce the behavior:
Expected behavior
To print help and create config file.
Desktop (please complete the following information):
Additional context
Had to download via wget as Safari adds a bad encoding and additional file extension
CodeFactor found multiple issues last seen at 23f0589:
FFXIV_TexTools_CLI\Program.cs:132
FFXIV_TexTools_CLI\Program.cs:462
FFXIV_TexTools_CLI\Program.cs:547
We should detect if a game has been previously modded by textools and there are no clean backup files.
Throw big warning. Recommend resetting in Textools before continuing.
CodeFactor found an issue: .NET Assembly is not optimized
It's currently on:
references\xivModdingFramework.dll
Likely built with debug. Should be rebuilt with release settings.
Is your feature request related to a problem? Please describe.
Figuring out what folders to set in the configuration can be a hassle
Describe the solution you'd like
A clear and straightforward setup guide within the application itself that guides the user through picking the correct folders.
Problem
After a patch when one needs to update their index backups, the tool notifies you that your backups are out of date, but only prompts to ignore this fact.
Solution
It would be nice for the prompt to be if you want to backup your indexes right then and there.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.