Saturday, March 24, 2012

Timesink part 9: Requiem for a plugin

Whenever there is an update to Minecraft, the good folks at the Bukkit Project need to update the Craftbukkit server. This, in turn, means that some plugins might need to be updated.

Most plugins are made by the Craftbukkit community of users, which means that for any given plugin the developer's interest in maintaining might drop to the point that it is abandoned.

Such seems to be the fate of the brilliant plugin ItemCommands. I honestly don't know why every server didn't use this. Let me try and explain just why this was such a great plugin.

I know there are a few people reading this that haven't actually played Minecraft, so for those dear reader, in Minecraft the player ispresented with a screen which has a crosshair in the center. When the player is within a certain distance of a block, the block's edges are hilighted in black. This means the player is close enough to interact with the block by clicking on it. The clicks can either be a normal mouse click or a cntrl+click (I don't know the Window's left/right mouse click convention).

The vast majority of plugins for Craftbukkit allow the player to execute commands by first typing "t" which opens up a chat window. The player then has to enter some character that tells the server that the player wants to execute a command and not send a chat message. The character is "/". So, for example, if the player wants to teleport to the in-game spawn point, they type:
 t<return> /spawn

Example Minecraft interface. Note the crosshairs (center screen) on the block outlined in black lines. The ability to execute commands via the chat interface is visible. In this case the command /spawn would teleport the player to the in-game spawn point. For those interested in the city-related stuff, note the presence of Mayan-inspired buildings in the distance.

This is fine, but it breaks the arm-flailing convention of Minecraft and makes immersion into the game hard. Enter ItemCommand.

ItemCommand allowed server admins to link items in a player's inventory, or what they did with items in their hands, with commands. For example, on the server I was running prior to the crash if one was holding a compass and they cntrl+clicked on a location, it would execute a command that would make the compass point to that location. It would link the action of the player holding the compass to the command "/compass here" enabled by the CompassEx plugin. If the player just clicked the mouse while holding the compass, it would make the compass point to the spawn location (executing the command "/compass reset").

It was brilliant! Players could teleport to their home or spawn using chunks of lapis lazuli (depending on whether it was a click or a cntrl+click), change where the compass pointed, etc. Even very young kids could get into it and there was far more suspension of disbelief.

Unfortunately, with the recent updates to CraftBukkit, the plugin no longer works and it looks like the author is no longer active. The code is on github, but frankly, I'm rubbish with Java. There's a project out there that allows one to write plugins in python, but it's not very well documented.

So, consider this a plea: if there's anyone out there that loved ItemCommands or thinks the idea of letting players execute commands without having to type is cool, AND they can update the Java project, please oh please update it and let me know.

4 comments:

  1. The Essentials plugin has a "/powertool" command that lets you assign a command to a tool. This sounds like it mimics the ItemCommands mod.

    ReplyDelete
    Replies
    1. I didn't know about /powertool. I will check it out this evening. Your comment made me do a search and I just found this:

      http://dev.bukkit.org/server-mods/powertool/

      Which looks to differentiate between left and right clicks.

      Delete
  2. This comment has been removed by the author.

    ReplyDelete
  3. I'm considering writing a plugin to generate multiple randomish biome codes for terrain-control. Before I do, is that something you've already done?

    ReplyDelete