MosswartMassacreNG/README.md
2025-06-01 13:51:27 +02:00

3.5 KiB
Raw Blame History

<<<<<<< HEAD

MosswartMassacreNG

======= # 🚀 MosswartMassacreNG

A hot-reloadable Decal v2.9.8.3 plugin that builds against .NET Framework 4.8 and UtilityBelt.Service for the views.

🔧 Developing

  • The plugin code is located in the MosswartMassacreNG project. You can ignore the MosswartMassacreNG.Loader project, it contains the hot-reloader and doesn't need to be edited unless you are doing something out of the ordinary.
    • MosswartMassacreNG/PluginCore.cs is the main Plugin class. It contains the plugin startup / shutdown methods.
    • MosswartMassacreNG/ExampleUI.cs includes some demo UI code.
    • MosswartMassacreNG/scripts/installer.nsi is the NSIS script used to generate the installer.
  • Build the new plugin solution in Visual Studio with Ctrl+Shift+B, or by going to Build -> Build Solution.
  • Add both MosswartMassacreNG.dll and MosswartMassacreNG.Loader.dll to decal by opening decal from the tray and selecting Add -> Browse -> <YourProjectPath>/bin/Release/net481/. (Select each dll file individually.)
  • Disable MosswartMassacreNG in decal by unchecking it under the Plugins list.
    • During development you should have MosswartMassacreNG (under Plugins) disabled, and MosswartMassacreNG.Loader enabled (under Network Filters) in decal. This allows for hot-reloading of the plugin without logging out / restarting the client.
    • To hot-reload, just recompile the plugin while ingame. You should see a message in the chat window showing that the plugin has reloaded.

📦 Releasing

  • Right click the Plugin project and choose Properties. Scroll down and update the version number.
  • Build the latest release version.
  • In decal, enable your Plugin under the Plugins section, and disable MosswartMassacreNG.Loader under Network Filters. This allows you to test the plugin with hot-reloading disabled.
  • Ensure the plugin works as expected ingame.
  • Test the installer in bin/Release/.
  • Distribute the installer.

Build Server Requirements

  • Either use the docker image at TODO or use a build server with the following requirements:
    • All build servers:
      • Powershell is in the environment PATH by calling powershell.
    • Non-Windows build servers:
      • NSIS is in the environment PATH by calling makensis.
      • DotNet 6 SDK installed.

💡 Tips

  • If you need to reference more decal dlls, make sure to copy them to deps/ and reference from there to maintain linux build compatibility.
  • When hot-reloading, events like CharacterFilter.LoginComplete have already triggered when the plugin reloads so the plugin will never see them. During plugin startup, you can check the current login state to determine if this is a normal load, or a hot one.
  protected override void Startup() {
      var isHotReload = CoreManager.Current.CharacterFilter.LoginStatus == 3;
  }
  • If hot-reloading is being prevented because <YourPlugin>.Loader is trying to be recompiled and is locked by acclient, you can right click the <YourPlugin>.Loader project in the Visual Studio Solution Explorer and select Unload Project to prevent it from being rebuilt. Note: You must build <YourPlugin>.Loader at least once before unloading the project, if you want to use hot-reloading.

bae77fb (init)