{"id":705,"date":"2020-07-20T12:00:00","date_gmt":"2020-07-20T19:00:00","guid":{"rendered":"http:\/\/letsbuildroboticswithshadow8472.com\/?p=705"},"modified":"2020-07-20T02:26:54","modified_gmt":"2020-07-20T09:26:54","slug":"minecraft-novillage-datapack","status":"publish","type":"post","link":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2020\/07\/20\/minecraft-novillage-datapack\/","title":{"rendered":"Minecraft NoVillage Datapack"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Good Morning from my Robotics Lab! This is Shadow_8472, and today, I was going to cover work on my cluster, but I needed an easier week, so I worked on sysadmin stuff for my family&#8217;s Minecraft server. Let&#8217;s get started!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Minecraft is a constantly changing game. I don&#8217;t always like change. My ideal creative world is a clean superflat world with a normal Nether and End, but while working on a resetting End city with a friend, we found my creative server wasn&#8217;t just generating a clean overworld, but the End and Nether were also devoid of structures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Structure generation in Minecraft is controlled by a single flag in the initial config file. Historically, it only affected the overworld, but more recently, as I found recently, it now has power over other dimensions as well. I wasn&#8217;t happy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plains villages are the only possible structure that can spawn that I don&#8217;t want. My plan was simple: create an empty structure file, and replace the contents of all unwanted structure files with it while preserving the names.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I started with a working datapack that fires off a series of fireworks in the shape of an American flag. I unpacked the server jar file and cringed at possibly having to do 50 or so of these structure file swaps. Fortunately, I&#8217;ve recently been working with the <strong>find<\/strong> command in Linux, so I had an idea of the sort of things it could do, and such a massively parallel operation is second nature to it. I had to look up a little syntax to target all files but matches, the <strong>-not<\/strong> command to negate the next option, but I got the feeling I was over the initial learning curve.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, this project was almost self-assembling. The biggest hitch was when NBTExplore was required to edit level.dat when structures failed to generate, even after telling them to do so in the config options. I had to install mono, a compatibility layer for .NET framework applications. I had previously had issues with getting it to work while following the programmer&#8217;s instructions, but <strong>sudo apt-get install mono-complete<\/strong> was suggested on an old forum post from around 2011-2013, followed by a dead link. I also had to look up how to extract a .exe file from the given .msi folder using a version of 7zip that I&#8217;m pretty sure came with Debian.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It felt like a small miracle when NBTExplore showed up properly. I have no clue if I can zoom in, but I was able to get in there and do what I needed to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In short: I pulled off something satisfying using mostly skills I already had.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of note: Structure packs use something called a domain or something that can be turned on or off. In order to override default anything, you must place your assets in a domain called <strong>minecraft<\/strong> and in an appropriately titled sub-directory. It does not matter what your datapack itself is called. Voiding structures will only work with structures that aren&#8217;t hard coded into the game, like nether fortresses strongholds, or desert and jungle temples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Final Question: If I submit this datapack for publication, what should I name it?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good Morning from my Robotics Lab! This is Shadow_8472, and today, I was going to cover work on my cluster, but I needed an easier week, so I worked on sysadmin stuff for my family&#8217;s Minecraft server. Let&#8217;s get started! Minecraft is a constantly changing game. I don&#8217;t always like change. My ideal creative world &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2020\/07\/20\/minecraft-novillage-datapack\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Minecraft NoVillage Datapack&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[2,10],"tags":[],"class_list":["post-705","post","type-post","status-publish","format-standard","hentry","category-linux","category-minecraft"],"_links":{"self":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/comments?post=705"}],"version-history":[{"count":1,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/705\/revisions"}],"predecessor-version":[{"id":706,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/705\/revisions\/706"}],"wp:attachment":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/media?parent=705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/categories?post=705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/tags?post=705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}