Shadow_8472’s Minecraft Installation Guidelines (2023)

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am documenting how I set up Minecraft. Let’s get started!

Here is my 2023 list for “installing” Minecraft while minimizing your data bleed to Microsoft. I listed it in the rough order each technique should be implemented, but no one relies on any of the others.

Linux

Switching to Linux or another open source operating system is easily simultaneously the biggest, most impactfull, and least convenient change you can do for your privacy in terms of digital privacy in general. On one of my attempts at reading Minecraft’s terms, I found data collection policies on both Windows and Mac, but nothing on anything else. Furthermore, shortly after I created my Xbox account on a Linux machine, I found a section on their privacy panel claiming they had no data on my stuff (take-that-as-you-will). To keep it short: Linux being open source gives users a mechanism for action when potentially unwanted programs are are identified.

Xbox Account Lockdown

As alluded to above, Microsoft accounts come with a “privacy panel.” My overall experience has me believing it’s engineered to discourage its own use while still satisfying relevant privacy laws so marketing can safely boast about offering this feature to more users than they are required to. They mention a hotline you can call somewhere, but it was never staffed when we called.

To make the most of the situation, log into your microsoft account and turn everything off that you can find. But leave on the two permissions about joining multiplayer and communicating with text (the permission is bundled with voice permissions) for a normal gameplay experience.

GraalVM

Minecraft needs Java to run. GraalVM is a high-performance implementation of Java. I’ve covered manual installation enough to perform it from memory: download, extract, point application at java. Optionally, it can be placed beside other system Java installations. And wherever you place it, be sure to make a note of which CPU architecture worked because I’ve lost track of how many times I’ve had to re-install because I got the wrong one.

PolyMC

Minecraft is complex enough to need various inputs most end-users never see because a launcher manages things like login, version handling, Java, and more. The game itself doesn’t care how these variables are provided, so we are free to swap out the launcher. MultiMC has been my open source launcher of choice, but I spent several hours researching a couple alternatives and their history. PolyMC is a MultiMC fork that adds support for downloading mods. Prism Launcher is a PolyMC fork that split over the lead “ghttps://www.iizcat.com/uploads/2016/10/lcyay-cheshire-gif.gifoing crazy.”

From what I pieced together from various accounts, PolyMC was born out of a dispute over MultiMC’s direction in 2021 regarding third party mod loading. On October 16, 2022, lead developer lenny mclennington had had enough identity politics. The following day, he deleted the standardized Code of Conduct in a commit titled, “reclaim polymc from the leftoids.” Community backlash began immediately and grew worse as it became clear that Lenny wasn’t hacked: over a page of bogus issues on GitHub, around 3500 accounts raiding his Discord over the following week (judging by #joins traffic) with offensive Internet garbage, and LOUDLY denouncing PolyMC as compromised and accusing Lenny of injecting malware. The drama reached Microsoft, who canceled PolyMC logins for a couple days until that got sorted.

Around an hour after Lenny’s controversial commit, work began on what would become Prism Launcher. The ejected developers migrated over there where today they number at around 200 where PolyMC and MultiMC each list around 100 contributors each. Between the three, activity on Prism’s GitHub has been a lot more consistent (almost daily). Bad blood exists among the forks of MultiMC, but this gives end-users the chance to evaluate each project based on its community rules. MultiMC keeps its project simple, PolyMC prefers it not be used to push politics, and Prism Launcher is getting the updates. Pick your poison, or tell me all about why your preferred not on this list is the best.

No Chat Reports

Minecraft moderation was once handled by local communities. On one extreme, anarchy servers rules read, “Anything goes!” and players can grief without any retribution but what their victims muster. On another extreme are intricate codes of conduct dictated by mods-who-don’t-like-YOU: “Farms may only load 30 entities at a time, but no ‘selling’ entities if they stand on two legs. We don’t care if you murderize your rejects, but we absolutely won’t condone slavery – even if you call it an ‘adoption’ or ‘delivery’ fee! Oh, of course you should somehow be compensated for your disproportionally large time investment compared to everyone else’s marketable goods. We just don’t know how, Troublemakers.”

And then Mojang came up with Chat Reporting. Players can now tattle on each other to a centralized authority to get them banned from all multiplayer servers for a time (or indefinitely). The tech literate community revolted, creating tools like the No Chat Reports mod to strip actionable cryptographic authentication data from messages. Vanilla servers have a toggle to enforce this chat reporting though and vanilla clients will complain on login if this toggle is set to false.

own opt-out and Mojang provided a server side toggle to disable enforcing clients’ cooperation with this system. The No Chat Reports mod strips the actionable cryptographic proof your messages were sent by you. The vanilla server requires this proof by default and the vanilla client complains if a server doesn’t enforce it.

No Chat Reports can be installed via Forge or Fabric. Fabric is the better performing mod loader between the two, so I’ll be using that when I play “vanilla” from now on. It was a two click install for on MultiMC for the most recent Fabric version.

Takeaway

I know what I wrote last week about insisting on chat reporting both sides, but after learning how it works, I feel the need to retract that. While I could draw out my Minecraft migration story to detail how I go through these steps on each of my machines and the difficulties I encounter with Graal and PolyMC, I have more important projects I want to work on. I’ll only cover those if I learn something new.

Final Question

What did I miss? I would love to include your suggestions in a future guide.

I look forward hearing your answers in the comments below or on my Socials.

Works Cited

[1] u/RealLemonmaster, u/Chezzik, et all., “Any pros and cons to Prism launcher over MultiMC,” reddit.com, 2023. [Online]. Available: https://www.reddit.com/r/feedthebeast/comments/10ak23a/comment/jmivti8/?utm_source=share&utm_medium=web2x&context=3. [Accessed July 17, 2023]. (Citation refers to multiple comments)

Source Code Bending for Minecraft

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am diving deep into working on a Minecraft server – deeper than I have ever gone before. Let’s get started!

Minecraft: A Game of Memories

My family has maintained a small Minecraft community for a few years now. With DS9 Fireblade’s larger server, Phoenixcraft, going on the lull –the family’s been helping moderate– we’re all waiting for the Minecraft 1.18 update. Our closer group of friends is feeling ready for a new season, but we don’t 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.

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.

Years have passed and I’ve played the plugin a few times. It’s still around, but it’s 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.

The Test Server and Compiling From Source

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’t 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 – specifically the event-concurency branch.

Java is not a favorite language. I’ve 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 –possibly worth a blog post in its own right had I better understood what I was doing– 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.

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 – an armor stand defaulted to the same XP as a mob, passive, hostile, or even boss (configurable).

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’re playing on. Hiro was kind enough to provide me with a work in progress 1.17.1 build for my server and I’ve been reporting bugs as they show up.

Bending on our Apex server

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… and waited for the uncompressed download to progress – Apex has built-in compression in their provided online FTP access client. I wasn’t 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.

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.

Takeaway

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.

Final Question

Have you ever contributed back to a project you enjoy?

Linux 101 with Leo_8472: Part 3: Minecraft

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am helping my father get his Debian install to a livable level. Let’s get started!

Reality Checks and Cancellations

My goal with talking my father through a Linux install is to grow my own abilities as well, but our time together is often limited, leaving little room for research during our work sessions.

Debian Testing sounded like a good idea until we started reading about it. I knew there would be warnings, but the booklet worth of information about special care it required was more than a little intimidating. It’s still something I’d like to try some day, just not when back seat computing.

Likewise, setting up a Windows look-alike desktop environment was beyond the scope of our allotted time. The selection I had located were simply themes build upon actual desktop environments. Again: something I’d like to try when I have a machine to do more advance research on.

A lot of our work this week was spent reading on these canceled side projects. We unfortunately had to reduce our scope, but we now understand our limitations better for it.

MultiMC with GraalVM

Overall, my family’s favorite game is Minecraft. I’m trying to move the family away from the default launcher, so we installed MultiMC, a third party launcher that doesn’t confuse your versions.

One download option for MultiMC is a .deb file labeled as if for Ubuntu. I improved a little on the installation when trying to install it locally with aptitude, apt, and finally dpkg. We had to look up how to address dependencies. While it wasn’t painless, it wasn’t memorable either, but it was one example of why straight Debian may not be the best for someone looking to get into Linux without a guide.

Minecraft uses Java. The current version uses the relatively new Java 16, which isn’t a common find on Debian based systems unless purposefully installed. Graal is my preferred open source version of Java, and they have experimental builds for Java 16. With my recent return to the game, I’ve done the following procedure a few times already.

Graal can be downloaded from their GitHub. They provide builds for both amd64 or aarch64 architectures. We didn’t happen to know which one we needed, so we just choose one with a mental note to be prepared in case it wasn’t recognized, which it wasn’t. While Graal will work from anywhere as long as it’s called, the proper place to install it is in /usr/lib/jvm/. On my other installations, the jvm/ directory already existed and was host to other Java installations, but this time we had to make it ourselves. MultiMC recognized Graal shortly after properly installing it properly.

Takeaway

There’s a special feeling when you can reference your own work for solutions to problems you’ve already solved. The standard Java path is something that took me a while to learn, and I still had to look it up on my own system while writing. A week or two ago, I was happy to dump Graal wherever I could find it –one instance was even running it from my Downloads directory– but it’s best to put utilities on a computer where others can expect to find them.

In the meantime, we are practicing terminal with that… hard to read terminal emulator that came with LXDE. My father tried to change the colors, but his settings didn’t stick on restarting the program.

Final Question

Have you ever self-referenced for answers?

A Minecraft Server Sent Me Source Diving

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am building a private Minecraft server for plugin testing. Let’s get started!

Minecraft Paper Server

Any sufficiently popular computer game will eventually attract someone with the ability and drive to modify it. Others will come along and make tools to lower the barrier of entry so even more people can customize their experiences. Barring legal action from parent companies or a drop in popularity, the cycle continues to the point someone with basic computer literacy can find the resources he needs to join the modding community as I did almost ten years ago after my friend introduced me to Minecraft Bukkit servers. Shortly afterwards, I had myself a Last Airbender inspired Minecraft server.

In the year I was gone from Minecraft, my mother and sister have been helping on the moderation team for DS9Fireblade on PhoenixCraft. DS9 has selected a number of plugins to manage the chaos that often accompanies publicly available servers, but it’s hard to master all the commands when you have to worry about not breaking stuff.

Server Building

Little has changed about the fundimentals of Minecraft server construction. A modded server provides a stable platform imitating the vanilla game while providing plugin or mod makers a space to hook into without interfering with other plugins.

DS9’s server is running Paper, a version of Spiggot from the Bukkit modded server family. Ideally, I would take the time to track down the exact version for 100% compatibility, but I was having trouble finding the download. I made the executive decision to just use the newest version of each piece of software and adjust things if needed.

I loaded the server onto ButtonMash even though it’s still technically on Photo Trunk duty until that project is done, idle as it is. I remembered a series of topics I covered a while ago on how Minecraft doesn’t do well with the default settings and that G1GC (Generation 1 Garbage Collection) makes things go more smoothly in terms of long-term problems. I wasn’t fond of doing all that research again, so I reviewed this sight [1] which I do not look forward to citing, but offers a a list of Java flags to use and what each one does.

Months of idling were not kind to Button’s RAM, as it was about maxed out with Xorg (graphical server), even when I closed everything. I rebooted. It defaulted to its internal Minecraft server drive I have slated for a future Linux install some day. Around ten minutes of digital technical taps to the BIOS and removing a bent thumb drive later, I got it back into Debian.

The server still refused to start. Java was up to date with the repositories at Java 11 but it wanted Java 16. I just so happen to have solved the exact same issue with a Minecraft client earlier week. I downloaded an appropriate version of GraalVM [2]. Since I don’t plan on this server going anywhere, I saved it within the server’s main directory and edited my serverstart command accordingly.

The server was a bit more cooperative after that. I signed the EULA and modified a comment about tacos supposedly being the best food (why is that even in there?). Once I confirmed the server was running I started adding plugins, starting with the modern bending plugin and following it up with tools from PhoenixCraft.

mv Goof

My workflow settled into a pattern of looking up a plugin from the list, going to the download page, copying the actual download link, then using wget to download it onto ButtonMash as I’m working over SSH. I wasn’t impressed when I had to rename each file as it came in, but I figured it wasn’t worth my time to immediately puzzle it out, but I made a Downloads directory to isolate incoming files so they didn’t get lost.

Things were going well until I found one that didn’t want to be downloaded via command line. I waited a few minutes, but it still said it was temporaily unavalible. I was able to download in Firefox though, so I saved it to GoldenOakLibry, my family’s network storage. Soon I was copying its containing directory over into plugins.

Oops.

The containing directory was gigabytes of information at the least. I at least knew my Unsteam games project was in there, but I also found an old backup from my laptop. The connections are all hard wire, but I didn’t feel like waiting an unknown amount of time for the half way point, so I canceled the command with CTRL+C to assess damages.

It had only really started: two visible files at the very least. They appeared to still be in their original spot, but I wanted to be sure. I looked up the mv command’s inner workings, but my search results were filled with helpful information for someone learning normal terminal operations, not an unusual situation like my own.

With few places left to turn, I went source code diving. The hardest part was finding the code, but dpkg -S is the tool for that job. I zeroed in on the mv source and found the exact file [3] on the Debian website, a file written in C. My mission at this point was to answer this basic question: does mv do anything to directory trees its moving between physical disks as it goes or does it copy everything and clean up at the end?

I found what appeared to be a loop structure at line 364 in main(), but it didn’t appear to be trying to traverse any sort of file system structure. Further study led me to line 173, in do_move() where it copies the file in question before flagging the whole thing for deletion on line 224. And with that, I had answered my own question: cleanup is done after everything is safely moved.

Takeaway

This post was entertaining to make. It was supposed to be a boring, but quick and easy job I didn’t need to research much for after a week of stalling for topics. It was also the first time I went looking into the Linux source code, and while it makes poor skimming material, it was insightful. Find In Page was my best friend.

Cleaning up in post makes sense though. Everything in Linux is a file, even directories that contain other files.

Final Question

Have you ever studied the laid out inner workings of anything?

Works Cited

[1] lechowski (I think… Author is unclear), <March 5 OR May 3> 2021. [Online]. Available: https://lechowski.info/gry/minecraft/modded-mc-and-memory-usage-history-crappy-graph [Accessed Sept. 12, 2021]

[2] GraalVM, 2018-2021. [Online]. Available: https://www.graalvm.org/ [Accessed Sept. 12, 2021]

[3] M. Parker, D. MacKenzie, and J. Meyering, “mv.c” 1986-2018. [Source code]. Available: https://sources.debian.org/src/coreutils/8.30-3/src/mv.c/ [Accessed Sept. 12, 2021]

Miscellaneous Bits and Bobs

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I only have a bunch of unfinished projects I’d like to write about, but not are really ready, so I’m picking one or two and expanding on them with a mini-update. Let’s get started!

NFS

In my last photo archive post, I talked about mounting a file share manually. This is fine and all, but my intention this week was to get it connecting automatically on boot. I had a bit of a bump when I tried connecting to a share called “Photo Trunk” or something like that. When mounting, I would properly escape the space in the file path with a backslash, but the file system table didn’t get the memo. Long story short, it needs “040” instead of an escaped space. I don’t know why, but it just does. Shortly thereafter, I ran into a permissions barrier I have yet to resolve.

Update:
In a random search I wasn’t expecting to go anywhere, I managed to find that I needed to replace the space with “\040” and not just “040”. I tested it with sudo mount -va. It’s working now.

Manjaro Shakedown

Arch has a reputation of being unstable, but so up to date that software any newer is yet to compile. Manjaro Linux aims to shift the balance around to be more friendly to people who don’t know a compiler from a package manager. I’m also being a tad dangerous –or so I hear– by running the KDE desktop environment on an NVIDIA card, especially with the proprietary drivers.

I’ve noticed several times while playing modded minecraft that my desktop environment decides, “You know what? We’re just going to crash and start over from the login screen, even if login on boot is disabled. Oh, and we’re going to make it look like it might be a power blink and spook Shadow each time it happens.” –Note: I now have login at boot. I’ve reached out for help across Discord, but nothing conclusive has shown up. I managed to capture a log file right after a crash, but nobody helping me found anything conclusive. The best guess was that because the traceback for some problem in the xorg logs was handled by a library to manage input, these crashes may be related to the random stutter my wireless keyboard is experiencing, though I’m skeptical.

I’ve had this kind of keyboard for years, and I’ve always had stuttering problems, regardless of OS. Nevertheless, whenever we looked, it was the only wireless, ergonomic keyboard on the market that we could find. I’ve even experienced these frustrating stutters while writing here, now, yet I’ve put up with this particular keyboard til I’ve worn the matte finish on many keys until they’re mirror smooth.My N and Numpad_2 keys are totally missing their decals, and several other keys are already unrecognizable.

It’s possible my keyboard is crashing the desktop environment. Every time I’ve had the crash, I’ve been actively playing, and at least two of those times, I was fighting keyboard/mouse lag at the time. I’ve had another small glitch where a small, almost square rectangle of pixels along the bottom of my screen goes black for everything but my cursor. Unplugging my monitor and plugging it back in didn’t help, but the issue was gone after a reboot.

The more I use Manjaro, the more feels familiar. Really, the biggest difference from Debian I know about is the repositories inherited from Arch. The terminal acts a little differently in a way I don’t like, but I know that if I spent the time to bother changing it, I could. On the whole, I’m familiarizing myself with both a distribution and a desktop environment. A far future project may be to assemble my own experience from elements of everything I’ve seen.

Modded Minecraft Update

This one would never get a post to itself, but I’m after filler. Just tonight, I added a couple mods we were talking about, one to make the ender dragon leave an egg each time, and another to prevent endermen from making off with your grass, dirt, TNT, or other blocks they list as portable. The hardcore modding culture hasn’t moved past 1.12.2 yet, and it was 1.13 that introduced datapacks that really opened up lightly modified gameplay to otherwise strictly vanilla servers. The built-in function involving mob griefing is great, but nerfs creepers and ghasts — two otherwise harmless mobs when totally ignored. To ambitious players, endermen’s abilities to move blocks are more annoying than fun.

The Importance of Help

I’ve been chugging along regularly for three years now, and I only remember being late on a post by a single day once. I have proven to at least myself that I can write regularly. Along the way, I’ve found communities to solicit help from. At some point, I’d like to get a little more serious about my presentation because a default WordPress theme and a weekly wall of text wouldn’t insight confidence in me if I were looking at a tech blog. I know I chose this platform because I could get access to the low-level code, but I’ve only glanced at it once or twice. I don’t know any web design, and I can’t get excited about learning it. I’m not even sure I have the comments section working correctly!

Final Question

I decided to include the extra formatting this post on a whim to better separate the discrete partial projects, but I think I might use it in the future. What do you think of it?

Modding Minecraft Mods: Balance, Bugs, and Textures

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I would like to share a couple bits about how I tweaked my family’s private Minecraft modpack. Let’s get started!

If running a curated modpack were bad for finding help, a custom modpack is even worse. It’s the sort of thing you just don’t do when you don’t get –or keep– working unless you have someone who knows what he or she is doing, or has the patience to figure it out; you won’t know everything — nobody will. That is why why I cannot stress enough the importance of knowing where you can ask for help after you’ve made an effort.

It took me a few Discord servers, but I landed on one for modded Minecraft in general. Minecraft Forge, a popular modding platform, refuses to support anything they’ve made but the couple most recent Minecraft versions, 1.15 and 1.16, but the modding scene has of this writing has not yet moved on from Minecraft 1.12.2 for stability concerns in the base game. This Discord server I found is full of people from this scene. Some of them are even developers of popular mods.

My family’s custom modpack is fairly lightweight because we have a lower-power computer or two to consider. As such, once my sister, Tzarina8472, had all the gameplay elements she wanted, new mods were always carefully considered. One of our mods involved using a rare crafting ingredient from woodland mansions, and we wanted a renewable source of them.

I turned to an old favorite: Soul Shards: Respawn by TheNut (there have been several versions, each by another developer). The basic idea is that you go out, collect mob souls with a shard, then use the shard in a cage. My problem was that the default recipe for a shard was way too cheap. Our seed has four witch huts, and if we are just going to spam a few high tier sould shard cages, then why bother? I’ve done that and ended up losing interest in the world, and I don’t want that this time.

Taz and I went through the config files and rebalanced things for using some more expensive, modded metals from what I like to call the Thermal Expansion suite, while keeping to the general design principles that appeared to have gone into the original mod. We ended up using two alloys: enderium and lumium.

Trouble: the way the mod is coded, those two metals are “block states” of the same base block called thermalfoundation:storage_alloy. I spent hours across multiple days trying everything I could think of to properly configure the mod. Suffice it to say anything I tried either didn’t work at all, or accepted any storage_alloy, even the much cheaper steel.

Special shout out to Watersfall, a mod developer on that Discord server I found. He looked at the publicly available source code on GitHub for Soul Shards and found a bug where it doesn’t accept block states in the config file. He even created a fork with a patch and used a pull request to petition that it be merged back into the main branch. He even talked me through how to clone his branch — and how to make sure I had the correct base version.

Compilation was another matter. Since the patch was written for the Minecraft 1.12.2 version of the mod, I needed to compile it with Java 8, or some equivalent. I don’t remember who, but someone talked me through making a shell script to compile the new version using the proper versions.

The other, smaller story I want to tell started when we noticed we didn’t have a way to remove enchantments. Taz had an expensive drill or saw from Thermal Expansion, and needed a way to remove it. One mod called Futurecraft backports select items from newer game versions, but because we need to use an older version of Forge, we would have needed to use an older version of Futurecraft that didn’t have the grindstone, the block we were after.

We tried using a small, one-block mod to add a disenchanting table, but of all the things it let us disenchant, it refused to allow Taz to remove her one enchantment. Enchanting Plus looked like a good option, except for the fact that it also lets you selectively apply enchantments. Let’s just say I feel strongly against that feature, and Taz doesn’t see a problem and leave it at that. There were miscommunications, I balanced the config to make it free to remove enchantments, but prohibitively expensive to add them so as to not devalue our planned villager trading hall.

I also -could – not – stand- the default texture for the enhanced enchanting table Enchanting Plus adds. I find it to be way too busy, even though a close look shows that it’s the same 16×16 resolution as the rest of the game. Going by the crafting recipe, you’re adding an ender pearl and either some gold foiling or gold chains down the sides. I used Taz’s computer to unzip the .jar file for the mod and find its textures. Taz then used an editor to design replacement textures based more on the original artwork. I put the result in a resource pack, and I had to make sure it was the correct format version.

Final Question: I’ve had to prune several details that didn’t fit with the overall narrative. What are some details you’ve really wanted to include, but didn’t quite fit?

Fine Tuning a Hosted Minecraft Server

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am covering the fine-tuning of my family’s Minecraft server. Let’s get started!

Rounding off the cliffhanger from last week, Apex’s tech support pointed me in the direction of making a contact account so I didn’t have to worry about impersonating someone else while getting support.

The next order of business was adjusting what I know to be Cron jobs, but they just call scheduled tasks. We want restarts twice a day, 6 hours off from our sister server. I set that up as two daily events with corresponding 15 minute warnings. The interface is still unfamiliar, but just now, I optimized it to have one event that reschedules itself every 12 hours (with a similarly arranged warning) instead of two warned tasks each going once a day.

I also set up auto saving. Before, while I controlled all the hardware myself, I was saving twice a day. I was even considering on bumping things up to four times per day on the new server, but they have a limit of two backups. Daily will give us the insulation we need while hopefully giving us enough time to address potential situations.

Next came the big one: a custom domain name. I won’t go sharing the actual URL here, because we are not a public server, but I’m glad we now have one to take with us if we decide to move hosts.

Setting up the domain name wasn’t so simple though. Sure registration felt great, but configuration was where it was all at. The last time I messed with this stuff was three years ago… HAPPY BIRTHDAY, BLOG! Anyway, I learned what I could about different kinds of DNS records. For the server, I used an A record to direct IPV4 traffic to the shared IP the server is on, and I used a CNAME record inappropriately to try and direct traffic to the XXXXXXX.apex.co server URL, thinking it would be handled from there. I actually needed an SRV record to specify more stuff about the kind of traffic to the particular port.

Along the way, I talked to three tech support representatives at NameSilo, my DNS host. I have the deepest respect for legit tech support, and I’m sure they all did their best, even if one or both of us didn’t follow the other at times. I’m just glad we managed to get things working.

Final Question: What uncommonly performed tasks have you learned more about on the second repetition?

First Week of Professional Minecraft Server Hosting

Good Morning from my Robotics Lab! This is Shadow_8472, and today, my family’s Minecraft server is off to external hosting. Let’s get started!

Apex Minecraft Hosting: If I had to give them one thing, it would be that it was easy to get things going first try. On the other hand, I’m having trouble with fine-tuning things. This is the story of how my family’s server, Creepers N Cream, is moving to professional hosting.

A streamer friend by the name of DS9Fireblade speaks highly of Apex’s customer support, particularly their live chat service. I’ve only interacted with them over support tickets, and I will say they get back decently quickly.

I know I said the server was graduating a while a while ago, but there is something to be said about keeping things going with the hardware you have, and I had a hard time accepting the transition. It took a soft merger with DS9’s newer, but larger community before I was willing to budge. With more people possibly coming on, the already overworked CPU would be at even more of a loss to keep things going smoothly. When DS9’s server experienced an anomaly during a version upgrade, I moved to push Creepers up to hosting.

I would say anyone with a decent amount of basic Minecraft server hosting experience should be able to migrate a world with Apex. I prefer the sleek aesthetics of MineOS’s web interface to Apex’s panel, but Apex’s panel has more complete functionality.

Another thing I noticed right away was how Apex is using less RAM than MineOS with just G1GC: at baseline, the server is now at just under 2GB while before, it was at 3GB when it wasn’t starting at 4.

Learning a new interface can be overwhelming. My MineOS experience helped a lot, but I came up wtih a list of things I wanted to talk with customer support about. I gave it a night or two, but when I got back into panel, I found the answers to some of my questions, though not all.

At present, I still have a few concerns for tech support. Apex’s account information appears to be directly linked to billing information, and that includes e-mail. So far, I am the one maintaining the back end, but I am not the one financing things. I’d also like to see about getting all those UTC times moved to something I’m a little more familiar with; I couldn’t find that setting anywhere. And then, maybe I can see about addressing the scheduling for bi-daily restarts and backups.

Final Question: When was the last time you have asked someone something, but got a bad answer because of a slightly different working definition of a word?

Minecraft NoVillage Datapack

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’s Minecraft server. Let’s get started!

Minecraft is a constantly changing game. I don’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’t just generating a clean overworld, but the End and Nether were also devoid of structures.

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’t happy.

Plains villages are the only possible structure that can spawn that I don’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.

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’ve recently been working with the find 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 -not command to negate the next option, but I got the feeling I was over the initial learning curve.

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’s instructions, but sudo apt-get install mono-complete 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’m pretty sure came with Debian.

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.

In short: I pulled off something satisfying using mostly skills I already had.

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 minecraft 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’t hard coded into the game, like nether fortresses strongholds, or desert and jungle temples.

Final Question: If I submit this datapack for publication, what should I name it?