Commit graph

890 commits

Author SHA1 Message Date
goaaats
ac14d61a86 Add some more logging to boot plugin loads 2025-05-07 22:40:05 +02:00
goaaats
85b77226e9 Clarify wording in settings and error notifications 2025-05-02 02:22:06 +02:00
goaaats
ddf0a97c83 Add plugin error notifications, per-plugin event invocation wrappers 2025-05-01 20:47:03 +02:00
goaaats
69d8968dca IoC: Allow private scoped objects to resolve singleton services 2025-05-01 14:47:02 +02:00
goat
f5d93fb08e
Add MinimumDalamudVersion to manifest, validate at install, update and load (#2248) 2025-04-28 21:09:40 +02:00
goaaats
a925e37ceb Actually respect remember state flag 2025-04-26 12:47:44 +02:00
goaaats
731d7e0f6e Un-whether-or-not the codebase 2025-04-25 22:49:05 +02:00
goaaats
f4102db488 Add "startup behavior" to profiles
Choose between remember, always enable, always disable
2025-04-25 22:49:05 +02:00
goaaats
e29171cc99 Fix race condition in plugin load
When opening the installer while boot plugins are still loaded, it may have been possible for plugins to be added to the installed plugins list twice, causing various statekeeping issues
2025-04-24 21:59:36 +02:00
goaaats
b810154125 Add MinimumDalamudVersion to manifest, validate at install, update and load 2025-04-15 21:29:18 +02:00
Haselnussbomber
499952b3d2
SeStringEvaluator: Fix HeadAll not capitalizing correctly (#2240)
* Fix obsoletes

* Fix HeadAll not capitalizing correctly

* Fix incorrect denoun cases in SeString Creator

* Implement Utf8String.ToUpper in C#

* Handle characters with accents too

* Add remarks to ToUpper functions
2025-04-09 22:13:11 +02:00
goaaats
34ca8b8f99 Fix updates failing due to flipped WorkingPluginId check 2025-04-01 19:58:19 +02:00
goaaats
34679d085b Extract plugin to temp directory before copying to final location, some minor cleanup 2025-04-01 18:55:27 +02:00
goaaats
f94f03e114 Merge branch 'api12' 2025-03-26 20:44:48 +01:00
Blair
19ba6a961f
Switch INotificationManager and ITitleScreenMenu to use ISharedImmediateTexture (#1879)
* Switch INotificationManager and ITitleScreenMenu to use ISharedImmediateTexture #1879

* Remove SetIconTexture
Remove some remarks that no longer apply

* Cleanup StyleCop warnings
2025-03-26 20:36:18 +01:00
Haselnussbomber
fdbfdbb2cd
Add SeStringEvaluator service (#2188)
* Add SeStringEvaluator service

* Move DrawCopyableText into WidgetUtil

* Use Icon2RemapTable in SeStringRenderer

* Beautify some code

* Make sure to use the correct language

* Add SeString Creator widget

* Fix getting local parameters

* Update expressionNames

* misc changes

* Use InvariantCulture in TryResolveSheet

* Add SeStringEvaluatorAgingStep

* Fix item id comparisons

* Add SheetRedirectResolverAgingStep

* Add NounProcessorAgingStep

* Update SeString.CreateItemLink

This also adds the internal ItemUtil class.

* Fix name of SeStringCreator widget

* Add Global Parameters tab to SeStringCreatorWidget

* Load widgets on demand

* Update SeStringCreatorWidget

* Resizable SeStringCreatorWidget panels

* Update GamepadStateAgingStep

* Experimental status was removed in #2144

* Update SheetRedirectResolver, rewrite Noun params

* Fixes for 4 am code

* Remove incorrect column offset

I have no idea how that happened.

* Draw names of linked things

---------

Co-authored-by: Soreepeong <3614868+Soreepeong@users.noreply.github.com>
Co-authored-by: KazWolfe <KazWolfe@users.noreply.github.com>
2025-03-24 09:00:27 -07:00
Vanillaaaa
9815cf1d88
perf: show whether plugin toggle is enable or disable (#2189) 2025-03-23 21:38:47 -07:00
Kaz Wolfe
8939cac80f
fix: actually add values 2025-03-23 18:45:15 -07:00
Kaz Wolfe
aaa3e33a8b
chore: PluginLoadReason is flags 2025-03-23 18:37:44 -07:00
Jackson
0ada421460
Expose more of LocalPlugin to ExposedPlugin (#2177) 2025-02-15 19:58:04 +00:00
KazWolfe
a656fefb2b
feat: Allow /xldev to disable Safe Mode (#2166)
- Adds new menu item to /xldev to disable Safe Mode, allowing users to load plugins again.
  - Safe mode cannot be re-enabled once disabled.
- Add new ModuleLog.Create<T> for eventual ILogger magic
- Make safe mode writable
- Remove redundant check in CheckPolicy
2025-01-09 22:01:46 +01:00
goat
e0eca2ac70 don't auto-enable imgui asserts for now, until we have better tracing 2025-01-02 17:29:49 +01:00
goat
2e2feb144f fix some warnings 2024-12-26 14:11:14 +01:00
goat
776a838dbe remove legacy MonoMod patches for codebase and assembly location 2024-12-25 23:48:07 +01:00
goat
b79c646b9b only turn ImGui asserts on if we are actually loading a devplugin 2024-12-25 23:48:07 +01:00
goat
a1ae33bfee don't set plugin to fail state if we threw InvalidPluginOperationException
These are supposed to indicate to the user that they called a function at the wrong point in time. We don't want to actually mutate the state in that case.
2024-12-23 21:03:31 +01:00
goat
8276c19c6f add plugin enable/disable/toggle commands 2024-12-23 21:00:02 +01:00
goat
8572ed8b1e ProfileCommandHandler -> PluginManagementCommandHandler 2024-12-23 17:05:35 +01:00
Infi
2e6cb6ef00
- Add chat notification back to AutoUpdate (#2146)
- ImRaii UI elements in AutoUpdate tab
- Fix scoping in IconButton
2024-12-19 22:19:50 +01:00
srkizer
db4b6cea2c
Avoid re-creating title version string every frame (#2117)
* Avoid re-creating title version string every frame

* Marked title version string that it has been changed by Dalamud by
  appending a newline payload with a string expression embedded within,
  which the game will ignore (effectively `<br(!Dalamud!)>`.)
* Added `PluginManager.LoadedPluginCount` which will count the number of
  loaded plugin without making a copy of the plugin list.
* Made TitleScreenMenuWindow.OnVersionStringDraw` update the title
  version text addon only if number of loaded plugin changes or the text
  is missing the custom suffix from the first point.

* Use OriginalTextPointer to determine if SetText(ROS) has been called
2024-11-25 17:09:43 -08:00
Infi
3a3d6b6e6a
Implement Print methods that work with Lumina SeString/ReadOnlySeString (#2106)
* Implement Print methods that work with Lumina SeString/ReadOnlySeString

* null terminate before passing to Utf8String

* Rename XivChatEntryReadOnly to XivChatEntryRaw

* Fix error from wrong conversion method

* Follow Rider suggestion

* Switch from AppendMacroString to BeginMacro for optimization

* More optimization suggested by kizer

* More kizer suggested optimizations

* Fix small mistake

* Use XivChatEntry and read/write to Byte fields accordingly
2024-11-19 02:05:28 +00:00
Julian
57cc2f36f9
feat: Encourage developers to use DLLs for devPlugins (#1958)
* Add file dialog to add a dev plugin
* Require dev plugins to be paths to the DLL
* Only allow .dlls in the dev plugin setting entry
* Update dev plugin location hint
* update wording

---------

Co-authored-by: KazWolfe <KazWolfe@users.noreply.github.com>
2024-11-12 08:27:23 -08:00
Haselnussbomber
c0f05614c6
[api11] Some code cleanup and signature replacements (#2066)
* Remove unused code from ChatHandlers

* Replace sigs in DalamudAtkTweaks

* Resolve LocalContentId by using PlayerState.ContentId

* Resolve BuddyList address via UIState.Buddy

* Resolve ObjectTable address via GameObjectManager

* Resolve FateTable address via FateManager

* Resolve GroupManager address via GroupManager

* Resolve JobGauges address via JobGaugeManager.CurrentGauge

* Simplify ItemHover/Out event

* Resolve ToggleUiHide address via RaptureAtkModule.SetUiVisibility

* Resolve PopulateItemLinkObject via InventoryItem.Copy

* Add byte[].AsPointer extension

* Resolve addresses used by ToastGui via UIModule functions

* Use Length from Span as ObjectTableLength

* Replace OpenMapWithMapLink with CS call

* Resolve FrameworkAddressResolver with CS vtable

* Drop unnecessary ToArray in HandlePrintMessage

* Clean up event calls in HandlePrintMessageDetour

* Simplify LocalContentId further

This pointer can't be null, because it's part of the .data section.

* Compare SeStrings in FlyTextGui with SequenceEqual

* Use CS types in FlyTextGuis internal code

* Simplify reading SeStrings internally

* Remove AsPointer again

* Resolve Number/StringArray by type in NamePlateGui

* Fix crashes in HandlePrintMessageDetour

* Resolve InteractableLinkClicked with LogViewer.HandleLinkClick
2024-11-12 08:20:29 -08:00
Kaz Wolfe
720b1676e5
Merge branch 'master' into api11
# Conflicts:
#	Dalamud/Game/ClientState/Fates/Fate.cs
#	Dalamud/Game/Gui/NamePlate/NamePlateUpdateContext.cs
#	Dalamud/Interface/Internal/DalamudInterface.cs
#	Dalamud/Interface/Windowing/Window.cs
#	Dalamud/Utility/StringExtensions.cs
#	lib/FFXIVClientStructs
2024-11-11 08:38:20 -08:00
Haselnussbomber
c7facaf072
Rewrite parts of ClientState (#2065)
- Completely relies on hooks now, instead of the Framework.Update loop
- Support for Logout codes
2024-11-11 08:28:40 -08:00
Haselnussbomber
fea5b3b563
Safely call events in DalamudPluginInterface (#2063) 2024-11-05 21:15:09 +01:00
Haselnussbomber
2a9ee760c6
Add IGameInventory.GetInventoryItems (#2008) 2024-11-04 16:28:06 +01:00
srkizer
74ab9191d3
Add ITextureProvider.ConvertToKernelTexture (#2003)
* Add ITextureProvider.ConvertToKernelTexture

Lets you obtain an instance of Kernel::Texture from IDalamudTextureWrap.

* Docs wip
2024-11-04 16:06:42 +01:00
nebel
9a0bc50e23
Use hooks instead of lifecycle for NamePlateGui (#2060) 2024-11-04 14:21:07 +00:00
Aireil
f3bd83fbe9
repos: warn on missing testing API (#2056)
* repos: warn on missing testing API

* repos: reword missing testing API warning
2024-11-04 15:20:54 +01:00
goat
8956bd54a9 fix some warnings 2024-11-04 15:01:09 +01:00
Asriel Camora
0b9af0e3f4
Update to Lumina 5 (new Excel parsing) (#2022)
* Refactor and upgrade to new excel design

* Obsolete ExcelResolver<T> and use only RowRef<T>

* Better benchmarking for Lumina

* Add custom game-supported RSV provider

* Refactor and move Lazy<T> and nullable/cached row objects to RowRefs

* Convert IRSVProvider to delegate, resolve strings by default

* Split IExcelRow into IExcelSubrow

* Extra lumina documentation

* Minor RSV CS fixes

* Fix UIGlowPayload warning

* Fix rebase

* Update to Lumina 5
2024-10-20 19:59:03 -07:00
Kaz Wolfe
8d535af4ad
remove excess declarations from IPC 2024-09-29 10:47:26 -07:00
Kaz Wolfe
621fd17e1d
Expose Serilog API to plugins 2024-09-29 10:46:12 -07:00
KazWolfe
437e443931
fix: Re-muck the API surface to not break existing plugins (#2046) 2024-09-25 19:56:35 +00:00
KazWolfe
73ec12145d
feat: Add new IPC methods, and docs (#2042)
- New methods `HasAction`, `HasFunction`, and `SubscriptionCount` to allow making better decisions about IPC logic.
- Some better documentation for the call gates.
2024-09-25 18:54:50 +02:00
SlashNephy
98f58b3f89
Respect Dalamud chat type setting in changelogs message (#2041) 2024-09-15 18:20:42 +00:00
Soreepeong
6db7acca20 Do not throw already unloaded exception on exit 2024-08-18 08:18:30 +09:00
Soreepeong
0a8f9b73fb Make ServiceScope IAsyncDisposable
ServiceScope.Dispose was not waiting for scoped services to complete
disposing. This had an effect of letting a new plugin instance register
a DtrBar entry before previous plugin instance's entry got unregistered.

This change also cleans up unloading procedure in LocalPlugin.
2024-08-18 07:58:45 +09:00
srkizer
cddad72066
Add error handlings for UldWidget (#2011)
* Add error handlings for UldWidget

* fixes
2024-08-13 08:45:00 -07:00