Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

⚠️Don't click Fork!

This is a GitHub Template repo. If you want to use this for a plugin, just use this template to make a new repo!

image

SamplePlugin

Use This Template badge

Simple example plugin for Dalamud.

This is not designed to be the simplest possible example, but it is also not designed to cover everything you might want to do. For more detailed questions, come ask in the Discord.

Main Points

  • Simple functional plugin
    • Slash command
    • Main UI
    • Settings UI
    • Image loading
    • Plugin json
  • Simple, slightly-improved plugin configuration handling
  • Project organization
    • Copies all necessary plugin files to the output directory
      • Does not copy dependencies that are provided by dalamud
      • Output directory can be zipped directly and have exactly what is required
    • Hides data files from visual studio to reduce clutter
      • Also allows having data files in different paths than VS would usually allow if done in the IDE directly

The intention is less that any of this is used directly in other projects, and more to show how similar things can be done.

How To Use

Getting Started

To begin, clone this template repository to your own GitHub account. This will automatically bring in everything you need to get a jumpstart on development. You do not need to fork this repository unless you intend to contribute modifications to it.

Be sure to also check out the Dalamud Developer Docs for helpful information about building your own plugin. The Developer Docs includes helpful information about all sorts of things, including how to submit your newly-created plugin to the official repository. Assuming you use this template repository, the provided project build configuration and license are already chosen to make everything a breeze.

Prerequisites

SamplePlugin assumes all the following prerequisites are met:

  • XIVLauncher, FINAL FANTASY XIV, and Dalamud have all been installed and the game has been run with Dalamud at least once.
  • XIVLauncher is installed to its default directories and configurations.
    • If a custom path is required for Dalamud's dev directory, it must be set with the DALAMUD_HOME environment variable.
  • A .NET Core 8 SDK has been installed and configured, or is otherwise available. (In most cases, the IDE will take care of this.)

Building

  1. Open up SamplePlugin.sln in your C# editor of choice (likely Visual Studio 2022 or JetBrains Rider).
  2. Build the solution. By default, this will build a Debug build, but you can switch to Release in your IDE.
  3. The resulting plugin can be found at SamplePlugin/bin/x64/Debug/SamplePlugin.dll (or Release if appropriate.)

Activating in-game

  1. Launch the game and use /xlsettings in chat or xlsettings in the Dalamud Console to open up the Dalamud settings.
    • In here, go to Experimental, and add the full path to the SamplePlugin.dll to the list of Dev Plugin Locations.
  2. Next, use /xlplugins (chat) or xlplugins (console) to open up the Plugin Installer.
    • In here, go to Dev Tools > Installed Dev Plugins, and the SamplePlugin should be visible. Enable it.
  3. You should now be able to use /pmycommand (chat) or pmycommand (console)!

Note that you only need to add it to the Dev Plugin Locations once (Step 1); it is preserved afterwards. You can disable, enable, or load your plugin on startup through the Plugin Installer.

Reconfiguring for your own uses

Basically, just replace all references to SamplePlugin in all of the files and filenames with your desired name, then start building the plugin of your dreams. You'll figure it out 😁

Dalamud will load the JSON file (by default, SamplePlugin/SamplePlugin.json) next to your DLL and use it for metadata, including the description for your plugin in the Plugin Installer. Make sure to update this with information relevant to your plugin!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from goatcorp/SamplePlugin