Compare commits

...

7 commits

Author SHA1 Message Date
Actions User
71e24c13c7 [CI] Updating repo.json for 1.5.1.0
Some checks failed
.NET Build / build (push) Has been cancelled
2025-08-25 08:39:42 +00:00
Ottermandias
c0120f81af 1.5.1.0 2025-08-25 10:37:38 +02:00
Ottermandias
da47c19aeb Woops, increment version. 2025-08-25 10:25:05 +02:00
Actions User
e16800f216 [CI] Updating repo.json for testing_1.5.0.10 2025-08-25 08:16:04 +00:00
Ottermandias
79a4fc5904 Fix wrong logging. 2025-08-25 10:13:48 +02:00
Ottermandias
bf90725dd2 Fix resolvecontext issue. 2025-08-25 10:13:39 +02:00
Ottermandias
a14347f73a Update temporary collection creation. 2025-08-25 10:13:31 +02:00
10 changed files with 53 additions and 16 deletions

@ -1 +1 @@
Subproject commit 297941bc22300f4a8368f4d0177f62943eb69727
Subproject commit af41b1787acef9df7dc83619fe81e63a36443ee5

View file

@ -0,0 +1,7 @@
namespace Penumbra.Api.Api;
public static class IdentityChecker
{
public static bool Check(string identity)
=> true;
}

View file

@ -17,7 +17,7 @@ public class PenumbraApi(
UiApi ui) : IDisposable, IApiService, IPenumbraApi
{
public const int BreakingVersion = 5;
public const int FeatureVersion = 11;
public const int FeatureVersion = 12;
public void Dispose()
{

View file

@ -20,8 +20,16 @@ public class TemporaryApi(
ApiHelpers apiHelpers,
ModManager modManager) : IPenumbraApiTemporary, IApiService
{
public Guid CreateTemporaryCollection(string name)
=> tempCollections.CreateTemporaryCollection(name);
public (PenumbraApiEc, Guid) CreateTemporaryCollection(string identity, string name)
{
if (!IdentityChecker.Check(identity))
return (PenumbraApiEc.InvalidCredentials, Guid.Empty);
var collection = tempCollections.CreateTemporaryCollection(name);
if (collection == Guid.Empty)
return (PenumbraApiEc.UnknownError, collection);
return (PenumbraApiEc.Success, collection);
}
public PenumbraApiEc DeleteTemporaryCollection(Guid collectionId)
=> tempCollections.RemoveTemporaryCollection(collectionId)

View file

@ -38,6 +38,7 @@ public class TemporaryIpcTester(
private string _tempGamePath = "test/game/path.mtrl";
private string _tempFilePath = "test/success.mtrl";
private string _tempManipulation = string.Empty;
private string _identity = string.Empty;
private PenumbraApiEc _lastTempError;
private int _tempActorIndex;
private bool _forceOverwrite;
@ -48,6 +49,7 @@ public class TemporaryIpcTester(
if (!_)
return;
ImGui.InputTextWithHint("##identity", "Identity...", ref _identity, 128);
ImGui.InputTextWithHint("##tempCollection", "Collection Name...", ref _tempCollectionName, 128);
ImGuiUtil.GuidInput("##guid", "Collection GUID...", string.Empty, ref _tempGuid, ref _tempCollectionGuidName);
ImGui.InputInt("##tempActorIndex", ref _tempActorIndex, 0, 0);
@ -73,7 +75,7 @@ public class TemporaryIpcTester(
IpcTester.DrawIntro(CreateTemporaryCollection.Label, "Create Temporary Collection");
if (ImGui.Button("Create##Collection"))
{
LastCreatedCollectionId = new CreateTemporaryCollection(pi).Invoke(_tempCollectionName);
_lastTempError = new CreateTemporaryCollection(pi).Invoke(_identity, _tempCollectionName, out LastCreatedCollectionId);
if (_tempGuid == null)
{
_tempGuid = LastCreatedCollectionId;

View file

@ -440,7 +440,7 @@ internal unsafe partial record ResolveContext(
if (Global.Nodes.TryGetValue((path, (nint)kdbHandle), out var cached))
return cached;
var node = CreateNode(ResourceType.Phyb, 0, kdbHandle, path, false);
var node = CreateNode(ResourceType.Kdb, 0, kdbHandle, path, false);
if (Global.WithUiData)
node.FallbackName = "KineDriver Module";
Global.Nodes.Add((path, (nint)kdbHandle), node);

View file

@ -1,5 +1,5 @@
{
"Author": "Ottermandias, Adam, Wintermute",
"Author": "Ottermandias, Nylfae, Adam, Wintermute",
"Name": "Penumbra",
"Punchline": "Runtime mod loader and manager.",
"Description": "Runtime mod loader and manager.",

View file

@ -99,9 +99,11 @@ public class PcpService : IApiService, IDisposable
{
// First version had collection.json, changed.
var oldFile = Path.Combine(newDirectory.FullName, "collection.json");
Penumbra.Log.Information("[PCPService] Renaming old PCP file from collection.json to character.json.");
if (File.Exists(oldFile))
{
Penumbra.Log.Information("[PCPService] Renaming old PCP file from collection.json to character.json.");
File.Move(oldFile, file, true);
}
else
return;
}

View file

@ -63,10 +63,28 @@ public class PenumbraChangelog : IUiService
Add1_3_6_4(Changelog);
Add1_4_0_0(Changelog);
Add1_5_0_0(Changelog);
}
Add1_5_1_0(Changelog);
}
#region Changelogs
private static void Add1_5_1_0(Changelog log)
=> log.NextVersion("Version 1.5.1.0")
.RegisterHighlight("Added the option to export a characters current data as a .pcp modpack in the On-Screen tab.")
.RegisterEntry("Other plugins can attach to this functionality and package and interpret their own data.", 1)
.RegisterEntry("When a .pcp modpack is installed, it can create and assign collections for the corresponding character it was created for.", 1)
.RegisterEntry("This basically provides an easier way to manually synchronize other players, but does not contain any automation.", 1)
.RegisterEntry("The settings provide some fine control about what happens when a PCP is installed, as well as buttons to cleanup any PCP-created data.", 1)
.RegisterEntry("Added a warning message when the game's integrity is corrupted to the On-Screen tab.")
.RegisterEntry("Added .kdb files to the On-Screen tab and associated functionality (thanks Ny!).")
.RegisterEntry("Updated the creation of temporary collections to require a passed identity.")
.RegisterEntry("Added the option to change the skin material suffix in models using the stockings shader by adding specific attributes (thanks Ny!).")
.RegisterEntry("Added predefined tag utility to the multi-mod selection.")
.RegisterEntry("Fixed an issue with the automatic collection selection on character login when no mods are assigned.")
.RegisterImportant(
"Fixed issue with new deformer data that makes modded deformers not containing this data work implicitly. Updates are still recommended (1.5.0.5).")
.RegisterEntry("Fixed various issues after patch (1.5.0.1 - 1.5.0.4).");
private static void Add1_5_0_0(Changelog log)
=> log.NextVersion("Version 1.5.0.0")
.RegisterImportant("Updated for game version 7.30 and Dalamud API13, which uses a new GUI backend. Some things may not work as expected. Please let me know any issues you encounter.")

View file

@ -1,12 +1,12 @@
[
{
"Author": "Ottermandias, Adam, Wintermute",
"Author": "Ottermandias, Nylfae, Adam, Wintermute",
"Name": "Penumbra",
"Punchline": "Runtime mod loader and manager.",
"Description": "Runtime mod loader and manager.",
"InternalName": "Penumbra",
"AssemblyVersion": "1.5.0.6",
"TestingAssemblyVersion": "1.5.0.9",
"AssemblyVersion": "1.5.1.0",
"TestingAssemblyVersion": "1.5.1.0",
"RepoUrl": "https://github.com/xivdev/Penumbra",
"ApplicableVersion": "any",
"DalamudApiLevel": 13,
@ -18,9 +18,9 @@
"LoadPriority": 69420,
"LoadRequiredState": 2,
"LoadSync": true,
"DownloadLinkInstall": "https://github.com/xivdev/Penumbra/releases/download/1.5.0.6/Penumbra.zip",
"DownloadLinkTesting": "https://github.com/xivdev/Penumbra/releases/download/testing_1.5.0.9/Penumbra.zip",
"DownloadLinkUpdate": "https://github.com/xivdev/Penumbra/releases/download/1.5.0.6/Penumbra.zip",
"DownloadLinkInstall": "https://github.com/xivdev/Penumbra/releases/download/1.5.1.0/Penumbra.zip",
"DownloadLinkTesting": "https://github.com/xivdev/Penumbra/releases/download/1.5.1.0/Penumbra.zip",
"DownloadLinkUpdate": "https://github.com/xivdev/Penumbra/releases/download/1.5.1.0/Penumbra.zip",
"IconUrl": "https://raw.githubusercontent.com/xivdev/Penumbra/master/images/icon.png"
}
]