xivdev / penumbra Goto Github PK
View Code? Open in Web Editor NEWFINAL FANTASY XIV modding, but actually good this time
FINAL FANTASY XIV modding, but actually good this time
Tail mod that works perfectly fine has missing and translucent textures when using a penumbra character collection.
Importing it into default works perfectly, however using a character collection makes textures go missing.
per https://discord.com/channels/581875019861328007/581875020632948762/807399924982480946 can the name be changed to "pecumbra"?
So I've been using Penumbra for a while now, and I often dual-box my two accounts at once. Since the XIV update, I've been getting this error:
It doesn't seem to actually cause an issue, but I just wanted to point it out. I haven't added any mods or stress tested it, but it seems it's probably a niche issue, since most people probably don't dual-box two instances of the game at once.
for some reason the SCD streaming behaviour differs based on the load func used. readsqpack seems to operate fine regardless, but readfile will break after a seemingly arbitrary amount of time, generally a few loops in, the game will crash when streaming new data in
Are there any plans to force mods to work only with certain races (and/or genders)? For example, this one mod affects the Werewolf Head
item but at the same time it breaks it on every other race. The owner offers two variants, one that works in normal TexTools (and that I am currently using in Penumbra) and one that works in a patched TexTools fork "which adds a Lala specific material".
I'm pretty sure I don't have a mod folder anymore. Attempting to open a bad folder path blows the plugin up.
System.ComponentModel.Win32Exception (2): The system cannot find the file specified.
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at Penumbra.UI.SettingsInterface.TabSettings.DrawOpenModsButton() in C:\Users\Raymond\code\Penumbra\Penumbra\UI\MenuTabs\TabSettings.cs:line 57
at Penumbra.UI.SettingsInterface.TabSettings.Draw() in C:\Users\Raymond\code\Penumbra\Penumbra\UI\MenuTabs\TabSettings.cs:line 158
at Penumbra.UI.SettingsInterface.SettingsMenu.Draw() in C:\Users\Raymond\code\Penumbra\Penumbra\UI\SettingsMenu.cs:line 59
at Penumbra.UI.SettingsInterface.Draw() in C:\Users\Raymond\code\Penumbra\Penumbra\UI\SettingsInterface.cs:line 34
at Dalamud.Interface.UiBuilder.OnDraw() in C:\Users\Raymond\code\Dalamud\Dalamud\Interface\UiBuilder.cs:line 235```
Since TexTools modpack files are basically zipfiles, a number of authors add non-mod-content files like screenshots, which seems to break Penumbra's importer. Would it be possible to disregard such files when importing?
Has there been a decision not to create a custom plugin repository so updates can be applied automatically?
Some examples:
https://github.com/saltycog/DalamudPlugins
https://github.com/LeonBlade/DalamudPlugins
i imported a mod pack and now anytime i load the launcher it crashes only started happening after i imported a big modpack but not sure
Hello,
I found some mods exported from textools have strange behavior with penumbra.
For the first time these mods were imported by penumbra, everything was good. No errors from penumbra and the mod was perfectly displayed in game. But if I close the game and start it again, the mod I last imported would crash penumbra (penumbra fails to load). If I delete the mod in penumbra's folder, then everything works well.
I know penumbra is not fully compatible with TT, but I just think this specific case should hopefully be able to be a compatible case, so I opened this issue, and would be grateful if someone could help look into this. I'm not sure if penumbra has logs but I'm willing to upload if you tell me how to get the logs.
I'm trying to set things up so that all female Au Ra use one scale mod by default, but my character collection for a specific alt uses a different one. My understanding is that this should affect only my character while leaving all other femra untouched. However, what seems to be actually happening is the following:
Body - Always the scale set used in the default collection, even for my own character
Head and tail - All femra with my character's face and/or tail type use the character collection scales, all others use default collection scales
Redrawing doesn't fix this whatsoever. In fact, redrawing has never affected scale mods in any version of Penumbra I've ever used. If I disable both these scale mods and redraw, nothing changes. (This has also been the case for the tattoo mods I've tried for my elezen, but that's less of a priority for me personally.)
Relevant mods in my default collection.
Relevant mods in my character collection. In both collections, enabled mods are shown in descending priority.
Probably not relevant, but including for the sake of completeness - file conflict that only exists for Sin Eater Raen mod involves the body scales.
EasyHook doesn't work due to it's flawed hook ACLs implementation, replace it with Reloaded.Hooks which doesn't suck
I was doing some testing on the collections with metadata manipulating mods and I noticed something odd. For this example I was using the Dragon Within (requires The Body 2.5) as well as the Dragon Within No. 2 Type B Leggings. I did some testing and the results are listed below. Note that in all tests The Body 2.5 (Type 2)
is set to priority 0, Dragon Within (Base and Type 2)
priority 1, and No. 2 Leggings DW Version
priority 2.
Mod Names | Default Collection | Forced Collection |
---|---|---|
The Body 2.5 (Type 2) | ✅ | ❌ |
Dragon Within (Base and Type 2) | ✅ | ❌ |
No. 2 Leggings DW Version | ✅ | ❌ |
In this case where this is are collections for characters (as is the character name is not in the list of collections), everything is working as intended. Only thing of note is the body mod loads in without any body hair
Mod Names | Default Collection | Forced Collection |
---|---|---|
The Body 2.5 (Type 2) | ❌ | ✅ |
Dragon Within (Base and Type 2) | ❌ | ✅ |
No. 2 Leggings DW Version | ❌ | ✅ |
In this case where this is no collections for characters (as is the character name is not in the list of collections) but the mod is instead installed into the forced collection, the following is observed:
The Body 2.5
mod loads without body hairDragon Within
mod itself does not appear under any circumstancesNo. 2 Leggings DW Version
does not load in and the vanilla model is shownMod Names | Default Collection | Forced Collection | Character Collection |
---|---|---|---|
The Body 2.5 (Type 2) | ❌ | ✅ | ❌ |
Dragon Within (Base and Type 2) | ❌ | ❌ | ✅ |
No. 2 Leggings DW Version | ❌ | ❌ | ✅ |
This environment preforms identically to example 2 even when you place The Body 2.5
into the character collection alongside the other mods.
When I installed everything via TexTools in the order listed in the tables above, the mods all seems to work in the exact same fashion as example 1.
In all of these tests, from what I was able to gather it appears the issue is just with the metadata not being applied outside of the default collection. The body hair not being loaded is just unique to the dragon within mod so I'm not too concerned about that. But yeah. Hopefully all this information was help.
Sorry if all this was a lot, I just wanted to test out every possible situation I could think of to narrow the issue down for ya.
So in conclusion, metadata on mods does not work outside of the default collection
With zero mods installed:
Specifically as ResourceLoader.cs 190.
var gameFsPath = Marshal.PtrToStringAnsi( new IntPtr( pFileDesc->ResourceHandle->FileName ) );
While I was in the new Nier Raid The Tower at Paradigm's Breach using the command /penumbra redraw
didn't redraw everyone within the scene. My character was invisible as well as other people within the raid.
The only reason I bring this up is because some people might want to disable some mods while in content and may have forgotten when outside of content.
It seems that when the redraw is done, not everyone gets loaded in, and its somewhat random or who does and doesn't.
I've tried disabling all mods, restarting game, going back into content, and doing a redraw. Same issue occurs.
If i open a window, say inventory, the window is the standard one, until i right click something opening a sub menu. The sub menu have the minimal UI texture and then the inventory window too, untill i close the sub menu and the invetory window turn back to standard texture.
Not entirely sure why this is happening but when this tattoo mod is applied to a character collection, it then will apply to all actors not just the selected character. This was not happening before the API v4 upgrade from what I can tell as I have tested all the way back to version 0.4.4.4
and it is still occurring. I wonder if this was introduced somewhere along the way in the API v4 refactor? It also took several redraw in order for it to properly apply.
Set memory permissions before trying to modify non-write code. Might solve the crash in net5.
https://github.com/xivdev/Penumbra/blob/master/Penumbra/Hooks/SoundShit.cs#L26
Here's some code from my branch to do the dirty deed.
public static MemoryProtection ChangePermission(IntPtr memoryAddress, int length, MemoryProtection newPermissions)
{
var result = VirtualProtect(memoryAddress, (UIntPtr)length, newPermissions, out var oldPermissions);
if (!result)
throw new Exception($"Unable to change permissions at 0x{memoryAddress.ToInt64():X} of length {length} and permission {newPermissions} (result={result})");
var last = Marshal.GetLastWin32Error();
if (last > 0)
throw new Exception($"Unable to change permissions at 0x{memoryAddress.ToInt64():X} of length {length} and permission {newPermissions} (error={last})");
return oldPermissions;
}
public static void ChangePermission(IntPtr memoryAddress, int length, MemoryProtection newPermissions, out MemoryProtection oldPermissions)
=> oldPermissions = ChangePermission(memoryAddress, length, newPermissions);
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
public static extern bool VirtualProtect(
IntPtr lpAddress,
UIntPtr dwSize,
MemoryProtection flNewProtection,
out MemoryProtection lpflOldProtect);
[Flags]
public enum MemoryProtection
{
Execute = 0x10,
ExecuteRead = 0x20,
ExecuteReadWrite = 0x40,
ExecuteWriteCopy = 0x80,
NoAccess = 0x01,
ReadOnly = 0x02,
ReadWrite = 0x04,
WriteCopy = 0x08,
TargetsInvalid = 0x40000000,
TargetsNoUpdate = TargetsInvalid,
Guard = 0x100,
NoCache = 0x200,
WriteCombine = 0x400,
}
When creating a Penumbra mod, there should be some sort of checksum or hash of the modded file contents in order to determine if a file has been changed by an update. For example if we get into more complex mods, such as EXD, we will want to disable those if the game changes them, or retail will crash or exhibit unexpected behavior.
On the Penumbra end, this would simply be ensuring the checksum for the mod matches the contents of the game's file. The mod creation software (Umbra?) will be responsible for creating the checksum.
So textools offers the ability in some cases to be selective about what files from the mod you want to import. Ie. Scale mods
Lets say I want to install a Black/White Scale Mod but only want to import the black scale files and not the vanilla ones; Well with Penumbra you can only import whole mods with no easy ability to remove the files you don't want imported. I was thinking that If textools has the redirect imports to Lumina option checked and its opened via textools then it wouldn't require shutdown of the client, along with inside the Launcher where you 'manage mods' include like a right click ability to delete specific files within a mod listing rather then only being able to delete the mod as a whole?
So I'm not sure how on a technical level this can be fixed but once you enter gpose as of 0.4 any character specific collections are no longer applied. I assume this is just due to the lack of player names inside of gpose. Would it ever be possible for the collection to be retained or is this just a technical limitation that can't be bypassed
Root cause of this request is I want a way to apply a collection to my retainers beyond forced/default and named collections can't do that. In general I think it's very common for people to list their own characters in specific collections and both problems could be solved in one feature.
A new built in collection "My Characters" that always targets the active player character and if possible, also applies to retainers when they are loaded in. Additionally, if possible, "My Characters" collection mods could be implicitly applied at the character select screen over Default/Forced.
Hello, with the latest major update of Dalamud, unable to install penumbra and penumbra is removed every time.
This is a relatively minor issue, but when using character collections on the player character, some minor cutscenes break.
Cutscenes such as waking up from the bed when logging in from an inn breaks: instead of waking up, the character will already be up besides the bed, and nothing will happen for a few seconds, before returning to normal gameplay.
I've seen another instance of this issue happening elsewhere, where the character had an idle animation instead of doing something, but I forgot where, sadly.
I'll try to see if this problem happens consistently or not next time I'll log in.
hello, i'm trying to import my hair mod but it won't load into the menu. It seems to sit at "importing modpack" for a few minutes but nothing happens after it goes back to the "import textools modpacks" button. is there a max size? textools really doesn't like importing it either lol. the specific ttmp i'm using is here
A couple days ago I noticed mods stopped disabling. The UI would update to show the mods disabled but would not actually change what was in the "Effective Changes" tab. I left it alone and came back to it today. I've tried completely deleting Penumbra with exception to the folder containing the mods and reinstalling. After rediscovering the mods folder none of the mods will enable. The UI shows them enabling but again nothing changes under "Effective Changes". Once again I deleted and reinstalled Penumbra, this time attempting to import a single ttmp2 file. Again the UI shows the mod enabled but nothing happens under "Effective Changes".
In the installed mods list, can the sidebar showing the tree of mods be widened for long names? Some mods, like gear changes, have their title but also the body mods they're designed for.
Can mod names be indented under their folder groups for better alignment? For example, in the image below, the mod names under my Minion
folder are left-aligned with the arrow. However, the subfolders are indented further right, which nicely represents the heirarchy.
Would it be possible to sort subfolders above mods? Windows explorer does this by default IIRC, as an example. Folders sort alphabetically but all display above normal files.
While Penumbra 0.4's alphabetical support is great for finding mods, it's difficult to get a sense of the entire mod list's order at a glance. Being able to swap between 0.4's alphabetical and 0.3.5.2's priority sort would be very useful for organization purposes.
I'm creating this issue for a friend. Whenever they launch their game with Penumbra enabled, their game gets stuck on the SE logo and freezes/crashes.
Their dalamud log contains errors like these over and over again:
2021-10-13 06:09:41.923 -06:00 [ERR] [Penumbra] Could not obtain default file for manipulation chara/xls/charadb/extra_top.est: System.IO.IOException: I/O error occurred. at Penumbra.Meta.MetaManager.ApplyMod(MetaManipulation m, Mod mod) in D:\a\Penumbra\Penumbra\Penumbra\Meta\MetaManager.cs:line 159 2021-10-13 06:09:41.923 -06:00 [ERR] [Penumbra] Could not obtain Est file for Equipment Body Unknown: System.OverflowException: Arithmetic operation resulted in an overflow. at Lumina.Data.SqPackStream.ReadFile[T](Int64 offset) at Lumina.Data.SqPack.ReadFile[T](Int64 offset) at Lumina.Data.Category.GetFile[T](ParsedFilePath path) at Lumina.Data.Repository.GetFile[T](Byte cat, ParsedFilePath path) at Dalamud.Data.DataManager.GetFile[T](String path) in C:\goatsoft\companysecrets\dalamud\Data\DataManager.cs:line 121 at Penumbra.Meta.Files.MetaDefaults.CreateNewFile(String path) in D:\a\Penumbra\Penumbra\Penumbra\Meta\Files\MetaDefaults.cs:line 25 at Penumbra.Meta.Files.MetaDefaults.GetDefaultFile[T](GamePath path, String error) in D:\a\Penumbra\Penumbra\Penumbra\Meta\Files\MetaDefaults.cs:line 60
Or any variation of the error, such as:
[Penumbra] Could not obtain Eqdp file for Legs HrothgarMale:
[Penumbra] Could not obtain Eqdp file for Legs VieraFemale:
etc.
Are there any common causes for this?
I should add that this issue started suddenly today, without them adding or removing any additional mods from their game.
2021-06-09 18:55:46.640 -06:00 [INF] [Penumbra] -> C:\Users\noneofurbusns\Downloads\Wind-up Guitar.ttmp2 START
2021-06-09 18:55:46.671 -06:00 [INF] [Penumbra] -> Importing Simple V2 ModPack
2021-06-09 18:55:46.674 -06:00 [ERR] [Penumbra] Failed to import modpack at C:\Users\nonofurbusns\Downloads\Wind-up Guitar.ttmp2
System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\ffxiv\fs_mods\textools-import'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Penumbra.Importer.TexToolsImport.WriteZipEntryToTempFile(Stream s) in D:\a\Penumbra\Penumbra\Penumbra\Importer\TexToolsImport.cs:line 61
at Penumbra.Importer.TexToolsImport.GetMagicSqPackDeleterStream(ZipFile file, String entryName) in D:\a\Penumbra\Penumbra\Penumbra\Importer\TexToolsImport.cs:line 96
at Penumbra.Importer.TexToolsImport.ImportSimpleV2ModPack(ZipFile extractedModPack, SimpleModPack modList) in D:\a\Penumbra\Penumbra\Penumbra\Importer\TexToolsImport.cs:line 213
at Penumbra.Importer.TexToolsImport.VerifyVersionAndImport(FileInfo modPackFile) in D:\a\Penumbra\Penumbra\Penumbra\Importer\TexToolsImport.cs:line 121
at Penumbra.UI.SettingsInterface.TabImport.<b__15_0>d.MoveNext() in D:\a\Penumbra\Penumbra\Penumbra\UI\MenuTabs\TabImport.cs:line 63
Okay, so the problem is that I'm not 100% certain that Penumbra is causing this, but I seem to be getting this since I started using Character Collections on 0.4.x.x, so I guessed that it was caused by Penumbra.
Whenever I'm about to be in a loading screen, it could be when changing zones, loading duties, or even when starting an instanced battle (right after the cutscene), the game will sometimes simply close itself. I don't get any error dialog, and I don't see any errors in the Dalamud logs.
The problem is that this happens completely at random so testing this is complicated, but it will always happen on a loading screen. Sometimes I can play for several hours without issues, and sometimes it'll happen after 15 minutes of gameplay.
If you need more info I might be able to provide, please ask away.
Hello, I've been getting crashes on loading screens or when switching classes. No error pops up, so I check event viewer and get this:
I've tried:
Reinstalling graphics drivers
Delaying Dalamud injection
The thing that worked for me was playing without Penumbra, so I assume it might be related to fileswap mods I made.
So while collections are a step in the right direction, it would be nice to have an easier and faster way to enable and disable certain groups of mods that doesn't involve having to make a ton of collections and painstakingly modify them when you swap around old mods/add new ones, etc. I've attached a quick mockup to make it easier to visualize the feature.
Hopefully something like this could be considered for a future release.
Ideally we need to do the following on install
This single file out of 13 skill replacement files does not import into Penumbra. Creating ticket per ingame UI ("One or more of your modpacks failed to import. Please submit a bug report."). I have Penumbra configured and working correctly with a ton of other mods. Below is the ttmp2 file, zipped.
Hi,
I've upgraded Penumbra to version 0.4.4.5 after Dalamud's major update, and I've been having rather frequent issues of "modded models not appearing" since then.
I think the affected mod is "The Unofficial HrBody 2.5" for hrothgars (with 4K textures if that makes a difference), you can find this mod here.
The issue happens most often in the pop-up when I try some gear on. It also sometimes happens in-game with other players and myself.
The mod structure I have is :
Even if I try to close and re-open the try-on window, the problem re-occurs. When I saw the problem on another player, I tried redrawing the models manually with /penumbra redraw
, but the issue persisted when the character reloaded. If I play around with the mod settings (such as disabling mods/collections and whatnot), it tends to fix the problem until the next loading screen.
I don't remember seeing this issue on Penumbra 0.4.2.7, so there must've been some kind of regression somewhere.
for a few days now Penumbra doesn't load with XL, even updated it still won't work
Just had a conversation in the XIVLauncher Plugin discord, with a user (AGPhoel) having issues importing mods. When they imported the second mod, it would "remove" the first mod.
Discord Convo: https://discord.com/channels/581875019861328007/684745859497590843/840030955812290590
Original Pictures Provided.
https://cdn.discordapp.com/attachments/684745859497590843/840032416130924564/unknown.png
https://cdn.discordapp.com/attachments/684745859497590843/840032728589402132/unknown.png
I asked for a shot of the "Files" tab
https://cdn.discordapp.com/attachments/684745859497590843/840033032936751124/unknown.png
Of note, the eventual folder name for the mod was "(v1"
I checked the original mod files - both actually had "(v1.1)" in front of their modnames.
I tried renaming the mods inside the TTMPL.mpl files (removing the version), and passed it the modified versions back to AGPhoel. They were able to import them fine after this.
https://cdn.discordapp.com/attachments/684745859497590843/840036701114990592/unknown.png
It appears that the parsing of the "Name" field, which is used for creating the folder name, stops instantly if it sees a fullstop. In this case, the mods had versions at the start, which caused them to write to the same folders.
This is a little similar to #23 (as its parsing of the "Name" field not handling things correctly).
But I felt considering this warranted its own issue report.
see title
Currently file collisions are handled implicitly via load order, but there's no notification or tracking - it silently fails.
It shouldn't do that
When importing any modpack with the same name as one already installed, Penumbra makes a new folder with a "(2)"
to the end of the folder name. But this isn't the same folder listed inside of the "collection.json"
This makes it to where the mod in Penumbra's list isn't clickable. You can't delete, modify, disable/enable or do anything with this mod. The only fix for this I've seen is to go into your penumbra data folder and delete the duplicate folder with the "(2)"
in it's name.
Steps to reproduce:
Sometimes installing mods twice can happen by accident, especially when you have quite a few of them.
I'm still trying to figure out what it's for / what it does.
This may have been intentional but mods for G'raha Tia no longer are being applied regardless of if they are being placed into the default or forced collection. I also tried to use a collection for their name but it also did not apply. Maybe we could have a system/npc collection for stuff effecting UI/NPC/Minions/Mounts?
Ran into an issue where mods with meta data would not work. But when those metadata options were checked via TT, they would work perfectly in game using Penumbra.
I would like to propose mod groups as I'd like to have the option to enable and disable mods depending on what body I'd like to use for certain pictures.
It would be useful for those who like to swap mods depending on what character they are using or what kind of body they feel like having.
This will allow to organize better the mods and have a clear idea of what the user is enabling as with many mods, the conflicts or finding certain mods can turn confusing.
Ideally Umbra can do something so that Penumbra knows that there's new files to discover. This would then let you, for example, edit and save a file to a modpack and then Penumbra is aware of the new file and will load it the next time the file is requested in game.
Alternatively, we can just listen for filesystem events for the mod directory and load from there, which would make it tool independent.
When entering new zones, character collections sometimes do not load for the player character. This seems to happen most frequently when loading into housing areas (in this particular case, The Lavender Beds). Putting on or taking off a piece of gear seems to cause the mods to load in correctly afterwards. This also seems to happen upon taking Aethernet teleports to different zones, but it does not happen when using the Aethernet to go between shards in the same zone.
In the debug log, it does appear that Penumbra tries to redraw the character, but it doesn't seem to work.
(side note, this also happened one of the times I came through the Aethernet. I've had this before with older builds of Penumbra though, so it's most likely not related to this issue)
Ideally other plugins can also register their own replacements if Penumbra exists, though this is likely dependant on the Dalamud rewrite where we should have a better think about how this could work, but ideally we can support the following scenarios:
Mods need to have a load order associated with them so that we have recourse for handling collisions - highest order plugin gets priority over a file first
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.