Debunking Common McMyAdmin Myths

October 6, 2012 at 6:38 PMPhonicUK

I'd like to take a few moments just to talk about some common comments I see regarding McMyAdmin on my travels, ranging from the outdated, to the misinformed.

It is only really made for Windows

While the first versions of McMyAdmin (2 years ago when Minecraft was still in Alpha) were originally built for Windows, it is no longer at all true that McMyAdmin treats Linux as second class.

Once it became apparent that McMyAdmin was going to be a hit, I started focusing on Linux support. First this was just getting McMyAdmin to run in Mono, then dealing with some of the Linux-specific issues that came with this. And while this worked very well there were a number of issues:

  • Server administrators were not happy installing the large Mono framework to use a single application (and with the source weighing in at over 500MB uncompressed, I don't blame them either)
  • Many distributions had outdated versions of Mono in their repositories, resulting in bugs, performance issues and other headaches
  • Compiling a 'modern' version of mono was a long and complicated process
  • McMyAdmin still 'looked' like a Windows application (having a .exe file extension), adding to the feel that Linux was an afterthought
  • It was difficult to track down and debug issues with such a large variety of libraries and configurations

So with these issues in mind and since McMyAdmin was being rewritten for McMyAdmin 2 - a native Linux version was developed for 64 bit systems on Linux systems using Linux development tools. It doesn't require the Mono runtime to be installed and is just a single binary that only depends on the standard Linux libraries.

There's no point using McMyAdmin if you know how to use the command line

McMyAdmin makes it possible to automate a great deal of tasks that would be very difficult to achieve using the command line alone, at the very least you'd end up writing some persistent scripts and at that point you're more or less reinventing the wheel.

A few examples of things that would be non-trivial without McMyAdmin or similar:

  • Being able to restart the server at the same time each day, but only do so if there aren't currently any players online.
  • Changing the type of whitelisting currently applied to the server on a schedule.
  • Restarting the server based on its RAM usage.
  • Safely taking a backup (requires sending save-off before copying and save-on afterwards, and waiting until the save-off had completed before actually performing the backup)

In addition to the above, McMyAdmin also makes it much faster to perform day-to-day administration tasks.

So I present a selection of tasks that would be slower to perform on the command line:

  • Updating the server (a single button click safely stops the server and fetches the latest version)
  • Swapping from one permissions plugin to another (McMyAdmin writes out its permission data in whatever format you'd like)
  • Setting up a regular scheduled event (which ordinarily would require editing your crontab, McMyAdmin just takes care of the schedule for you)
It doesn't matter if you're an experienced user or a novice, McMyAdmin has features that will benefit you. And if you don't want to use a particular feature, it's not forced upon you.

It stops you from being able to do things on the command line if you prefer to do it that way

Not at all true, when the Minecraft server is running - what you see on the command line is the same as you would without McMyAdmin. You see the output of the Minecraft server, and anything you enter is sent to the Minecraft server same as normal. McMyAdmin even has some of its own commands to make life easier, for example /restart to quickly restart the server, or /setconfig [key] [value] which allows you to change settings of either McMyAdmin or the Minecraft server.

It isn't extensible / you can't add your own features to it

Since McMyAdmin 2.1, it has been possible to write your own extensions for McMyAdmin. They allow you to add your own tabs to McMyAdmin's main web interface to extend its functionality. Some people use them to integrate DynMap into their panel, and many hosting companies use it to integrate their support page or other functionality into the panel to deliver a seamless experience for their users.

In addition McMyAdmin has a powerful JSON based API which makes it easy to integrate McMyAdmin with your own software, or leverage its functionality in new ways. Anything that can be done from the panel can be done from the API (since the panel uses that same API!) - Have a peek at the API reference.

McMyAdmin also has a branding mechanism which allows hosts to alter its appearance so that it matches their corporate image.

It has to be updated every time a new version of Minecraft is released

It is very rare that a new release of Minecraft requires McMyAdmin to be updated to keep its current functionality. Generally speaking an update is only required in order to take advantage of any new functionality/settings added to the Minecraft server since the previous release.

The only major exception to this has been when Minecraft 1.3 came out as the format of some messages was changed. Much of McMyAdmin still worked if it wasn't updated and only the chat was affected.

It's heavy on resources

A typical running McMyAdmin instance with 50 online players consumes roughly 45-55MB of RAM (With no activity it can consume as little as 15MB) and too little CPU usage to measure. Compared to the hundreds of megabytes a Minecraft server of that size would need, it's a drop in the ocean.

The Windows version is shown for ease of grabbing a quick screenshot with everything in (The numbers are very similar with the Linux version), showing several running McMyAdmin instances and their CPU/Memory usage after 12 days of uptime (the amount of time my main test server had been online when I took this)

It has an outdated, ugly user interface

What?

Just one of the themes that McMyAdmin 2 ships with.

 

If you have any other myths or things you've heard that you'd like me to comment on, feel free just to leave them as comments and I'll update this post.

Posted in: Linux | McMyAdmin

Tags:

Mono - Checking if your application is bundled with mkbundle or similar.

April 4, 2012 at 10:40 PMPhonicUK

'mkbundle' is a utility that ships with Mono that allows you to embed the Mono runtime into your application so you are left with just a single executable file that doesn't require Mono to be installed on the target system. You can either embed just certain parts of Mono or the entire thing.

There are cases where you may want to know at runtime whether you are running as part of a bundle or not, thankfully this is extremely simple:

IsBundled = (typeof(int).Assembly.Location == "mscorlib.dll");

When the application is not bundled, the assembly location for the standard objects will be something like /usr/lib/mono/2.0/mscorlib.dll - but when it is bundled then it's just mscorlib.dll since that file is embedded in the current executable.

Posted in: C# Development | Linux | Mono Development

Tags: , , , ,