{"id":3561,"date":"2015-04-30T11:02:00","date_gmt":"2015-04-30T11:02:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2015\/04\/30\/playing-with-vs-extensibility\/"},"modified":"2022-05-18T07:34:01","modified_gmt":"2022-05-18T14:34:01","slug":"playing-with-vs-extensibility","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/playing-with-vs-extensibility\/","title":{"rendered":"Playing with VS Extensibility"},"content":{"rendered":"<p>[Updated]<\/p>\n<p>In a presentation to developers in the \/\/build keynote on Thursday, April 30, we demonstrated a Minecraft mod as an example of Visual Studio&rsquo;s extensibility and ecosystem. With a gift for understatement, that demo caused a little bit of confusion.<\/p>\n<p>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&rsquo;s ability to draw on its ecosystem of extensions to do something interesting &ndash; 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.<\/p>\n<p>Mods in Minecraft remain officially unsupported, and we apologize for creating confusion.<\/p>\n<p>Visual Studio has a huge ecosystem of extensions that add serious capabilities like <a href=\"https:\/\/social.msdn.microsoft.com\/Search\/en-US\/vstudio?query=refactoring&amp;Refinement=195&amp;ac=4\">refactoring<\/a> or support for <a href=\"https:\/\/www.visualstudio.com\/en-us\/features\/python-vs.aspx\">Python<\/a> or <a href=\"https:\/\/www.visualstudio.com\/features\/node-js-vs\">Node<\/a>. We also have some more <a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/ee506ef5-9e01-4e64-af23-19291d0c853e\">fun extensions<\/a>. Sam Harwell, one of the Visual Studio MVPs has a more serious <a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/bc561769-36ff-4a40-9504-e266e8706f93\">extension for Java<\/a>. 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&rsquo;ll explore Sam&rsquo;s extension for Java when you point it at Minecraft.<\/p>\n<h2>Behind the scenes<\/h2>\n<p>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<\/p>\n<p>Relative to the existing ecosystem, this isn&rsquo;t much work. This extension relies on several open-source projects to accomplish the current experience:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.minecraftforge.net\/wiki\"><strong>MinecraftForge<\/strong><\/a> is the engine behind the modding development experience.<\/li>\n<li>Sam Harwell&#8217;s <a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/bc561769-36ff-4a40-9504-e266e8706f93\"><strong>Java Language Support<\/strong><\/a> 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&#8217;ve worked closely with Sam to make sure that we refine the end-to-end Minecraft development experience and simplify its acquisition. Thanks Sam!<\/li>\n<li><a href=\"http:\/\/www.eclipse.org\/jdt\/\"><strong>Eclipse JDT<\/strong><\/a> is bundled together with this project as an <a href=\"https:\/\/wiki.eclipse.org\/FAQ_What_is_an_Eclipse_application%3F\">Eclipse application<\/a> and is used to provide all IntelliSense and browsing information inside the VS editor.<\/li>\n<li><a href=\"https:\/\/github.com\/aidancbrady\/Mekanism\"><strong>Aidan Brady&#8217;s Mekanism<\/strong><\/a> is bundled as a Minecraft mod sample inside MMDP&#8217;s New Project Dialog.<\/li>\n<\/ul>\n<p>The Visual Studio addin for Minecraft can be <a href=\"http:\/\/www.microsoft.com\/click\/services\/Redirect2.ashx?CR_CC=200627593\">downloaded from the Visual Studio gallery<\/a>. It supports both VS 2013 Update 4 and VS 2015 RC. If you&#8217;re interested in jumping into its source code and learn more about how it was built, <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkId=544788\">head over to GitHub<\/a>.<\/p>\n<table style=\"width: 689px\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"144\"><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2015\/04\/7357.mems_thumb_3F7CA93D.jpg\"><img decoding=\"async\" style=\"border-width: 0px\" title=\"Marian Luparu\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2015\/04\/7357.mems_thumb_3F7CA93D.jpg\" alt=\"Marian Luparu\" width=\"133\" height=\"182\" border=\"0\" \/><\/a><\/td>\n<td valign=\"top\" width=\"543\"><strong>Marian Luparu<\/strong>, Senior Program Manager, Visual C++<strong> <\/strong><\/p>\n<p>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&rsquo;s been also playing Minecraft a lot.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>[Updated] In a presentation to developers in the \/\/build keynote on Thursday, April 30, we demonstrated a Minecraft mod as an example of Visual Studio&rsquo;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 [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":255385,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4980,561,155],"tags":[237,5,376,185,172,12],"class_list":["post-3561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-open-source","category-visual-studio","tag-net","tag-csharp","tag-java","tag-node-js","tag-python","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>[Updated] In a presentation to developers in the \/\/build keynote on Thursday, April 30, we demonstrated a Minecraft mod as an example of Visual Studio&rsquo;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 [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/3561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=3561"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/3561\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/255385"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=3561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=3561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=3561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}