Setting up a development environment?

Is there a post that outlines the setup of a development environment? Like how to setup auto-complete/intelisense, how to find game properties and such we may need to work with, and a boilerplate for a new plugin with the recommended way of handling language, settings, and data in place...

I've just been using VSCode and piecing together parts from existing plugins to acheive my end-goal... and while this works, it's not a very efficient workflow.

Setting things up would be pretty much the same as with any C# project depending on your IDE, nothing unique about the setup.

  • Install an IDE (Visual Studio or Rider are generally recommended, but VS Code works too)
  • Create a project (usually as a class library)
  • Add references to DLLs (Assembly-CSharp.dll and others under RustDedicated_Data/Managed as needed)
  • Get a .NET decompiler (JustDecompile, dnSpy, dotPeek, etc.)
  • Look in the DLLs as necessary for code you want
Typically I would recommend setting up a local server for testing, and having your plugins stored or symlinked there.

I'm not a C# developer, so while it may not be unique compared to other C# projects, it's entirely unique compared to the sort of development I typically do. That said, the information you provided should get me on the right path...

Any boilerplate/template for plugins that implement best practices in terms of structure, permissions, basic command syntax, language, settings, and data management? Seems like every plugin I look at does things slightly different... hard to tell what is an old method, new method, or bad practice.

You can find examples for the basics in our Docs. Any of the recently approved plugins should give a general idea of modern examples. There isn't really a template with best practices, and like you said it tends to vary based on the developer and their style.