Playing with VS Extensibility


In a presentation to developers in the //build keynote on Thursday, April 30, we demonstrated a Minecraft mod as an example of Visual Studio’s extensibility and ecosystem. With a gift for understatement, that demo caused a little bit of confusion.

We should clarify our intent: this was not an announcement about Minecraft, or an official endorsement of modding, or the release of a Minecraft-specific modding tool or API. We just wanted to show Visual Studio’s ability to draw on its ecosystem of extensions to do something interesting – in this case, we used a Java plugin from Sam Harwell, some code one of our engineers wrote, some code from the open source Eclipse project, and a few other things. In our demo, we used all that to mod a popular Java game.

Mods in Minecraft remain officially unsupported, and we apologize for creating confusion.

Visual Studio has a huge ecosystem of extensions that add serious capabilities like refactoring or support for Python or Node. We also have some more fun extensions. Sam Harwell, one of the Visual Studio MVPs has a more serious extension for Java. At BUILD, we showed a lighter side: how to use that extension with one a few of us worked on to create a Minecraft mod. In the spirit of doing something a little fun (rather than serious), in this blog post, we’ll explore Sam’s extension for Java when you point it at Minecraft.

Behind the scenes

To create this experience, we built on top of a lot of the existing ecosystems, and extended Visual Studio with MinecraftForge project templates, a NuGet package that is installed by each template that orchestrates the provisioning build and a VS editor extension (MEF-based) for Java IntelliSense and Browsing support

Relative to the existing ecosystem, this isn’t much work. This extension relies on several open-source projects to accomplish the current experience:

  • MinecraftForge is the engine behind the modding development experience.
  • Sam Harwell’s Java Language Support VS extension is the project providing the Java project system, build system, basic editor facilities and the rich Java debugger capabilities in Visual Studio. We’ve worked closely with Sam to make sure that we refine the end-to-end Minecraft development experience and simplify its acquisition. Thanks Sam!
  • Eclipse JDT is bundled together with this project as an Eclipse application and is used to provide all IntelliSense and browsing information inside the VS editor.
  • Aidan Brady’s Mekanism is bundled as a Minecraft mod sample inside MMDP’s New Project Dialog.

The Visual Studio addin for Minecraft can be downloaded from the Visual Studio gallery. It supports both VS 2013 Update 4 and VS 2015 RC. If you’re interested in jumping into its source code and learn more about how it was built, head over to GitHub.

Marian Luparu Marian Luparu, Senior Program Manager, Visual C++

Marian has been a member of the Visual Studio team for the past 9 years. He is working on making Visual C++ more productive for writing, building, and diagnosing code. Before that, he worked on defining and implementing the C++ programming model for Windows Runtime. Lately, he’s been also playing Minecraft a lot.