{"id":913,"date":"2021-10-18T12:00:00","date_gmt":"2021-10-18T19:00:00","guid":{"rendered":"https:\/\/letsbuildroboticswithshadow8472.com\/?p=913"},"modified":"2021-10-18T00:48:42","modified_gmt":"2021-10-18T07:48:42","slug":"source-code-bending-for-minecraft","status":"publish","type":"post","link":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2021\/10\/18\/source-code-bending-for-minecraft\/","title":{"rendered":"Source Code Bending for Minecraft"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am diving deep into working on a Minecraft server \u2013 deeper than I have ever gone before. Let\u2019s get started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Minecraft: A Game of Memories<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">My family has maintained a small Minecraft community for a few years now. With DS9 Fireblade\u2019s larger server, Phoenixcraft, going on the lull \u2013the family\u2019s been helping moderate\u2013 we\u2019re all waiting for the Minecraft 1.18 update. Our closer group of friends is feeling ready for a new season, but we don\u2019t want to start a whole new one just yet. That leaves us with revamping the current season of Creepers N Cream, our family-run server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A friend at university got me into Avatar the Last Airbender, a show set in a world where some people have super abilities to manipulate [or bend] one of the classical elements: water, earth, fire, air. I brought it home. I was into its unofficial tie-in plugin for Minecraft even before my whole family had accounts. I credit the bending plugin with getting me into running servers as far back as Minecraft 1.6. On one of my previous servers, there existed an official RPG side-plugin that added world events that strengthen or nerf your bending.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Years have passed and I\u2019ve played the plugin a few times. It\u2019s still around, but it\u2019s called Project Korra now (PK). Time has not been as friendly to the Bending RPG side-plugin, though. The latest full release is a couple months shy of seven years ago.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Test Server and Compiling From Source<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I started a server for testing all the plugins we expect to be using. It was taken over for a family survival world, and I made a second testing world for just bending and bending RPG. The old plugin loaded, to a little surprise from chat on the ProjectKorra Discord when I reached out and told them it made its announcements, but didn\u2019t affect actual gameplay. Someone directed me to the ProjectKorraRPG GitHub, where I could find a more recent, less out of date version of the plugin \u2013 specifically the event-concurency branch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Java is not a favorite language. I\u2019ve tried getting into it no fewer than three times, but the barrier to entry kept getting in my way. Long story short, their development-support channel was quite helpful and I even got in contact with the most recent developer on the PK Discord, Simplicitee. It was a long, involved process \u2013possibly worth a blog post in its own right had I better understood what I was doing\u2013 but with help, I managed to provide get the needed .jar files, update a few version numbers, and set up a symbolic link (from memory even) where the compiler expected. Eventually, I got myself a compiled version of Bending RPG and running on the server. Simplicitee even noticed my efforts and started working on it again, starting with updating the GitHub for the first time in two years. I have yet to compile this version yet though, but not for lack of trying.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My sister, Taz, and I test played it, and while the actual RPG mechanics took a little getting used to, they were playable, even if they lack balance \u2013 an armor stand defaulted to the same XP as a mob, passive, hostile, or even boss (configurable).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While that all was going on, our whole inspiration for playing the bending plugin again was a video showcasing an earthbending move that looked like a revamped seismic sense for earthbending. It made the move look awesome when no one in the family has really gotten earth as an element yet. We quickly learned it was actually an ability pack called TerraSense by Hiro or Hiro3 (Discord and PK forums, respectfully), and the latest publication was only relevant to plugin versions pertaining to Minecraft 1.17 and not 1.17.1, the version we\u2019re playing on. Hiro was kind enough to provide me with a work in progress 1.17.1 build for my server and I\u2019ve been reporting bugs as they show up.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bending on our Apex server<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Our target world was a 1.17 vanilla world running on Apex. I stipulated that I wold not be doing anything with the server until I had a copy of it running locally. Apex support directed me to one of their videos, and I followed it\u2026 and waited for the uncompressed download to progress \u2013 Apex has built-in compression in their provided online FTP access client. I wasn\u2019t able to get it on a server, but I did load it up in single player. A viable copy is safely stored on GoldenOakLibry, our network storage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In theory, switching server jars is as simple as operating a drop-down menu and uploading any plugins. In practice though, our server file space is cluttered. There were some plugins from the last time we were on a Bukkit server or something because they jumped to life when Paper Spigot for 1.17.1 crashed trying to load them and one was incompatible. When we switch to 1.18, I fully intend to compress the whole thing, download it, and wipe everything. I expect there are world files for at least a couple servers in there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Takeaway<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Programming is about more than coding. For this project, I was able to give back to the community by identifying bugs and sharing my findings. As I was writing, I received the news that several of my reported bugs were now patched. One edge case bug involving switching to spectator mode while flying even sparked a conversation where that led to solving a number of seemingly disjoint bugs and it was addressed before I had the chance to follow up with a better description.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Question<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Have you ever contributed back to a project you enjoy?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am diving deep into working on a Minecraft server \u2013 deeper than I have ever gone before. Let\u2019s get started! Minecraft: A Game of Memories My family has maintained a small Minecraft community for a few years now. With DS9 Fireblade\u2019s larger server, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2021\/10\/18\/source-code-bending-for-minecraft\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Source Code Bending for Minecraft&#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":[10],"tags":[],"class_list":["post-913","post","type-post","status-publish","format-standard","hentry","category-minecraft"],"_links":{"self":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/913","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=913"}],"version-history":[{"count":1,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/913\/revisions"}],"predecessor-version":[{"id":914,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/913\/revisions\/914"}],"wp:attachment":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/media?parent=913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/categories?post=913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/tags?post=913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}