Menu

BASeCamp SurvivalChests Bukkit Plugin

March 28, 2013 - Programming

BASeCamp Survivalchests is a plugin that originally started as a simple method to randomize the contents of chests on a Minecraft server map. It soon ballooned with extra features into far more. I hope to make this post something of an “official” documentation, aside from the readme, particularly in regards to upcoming features. This is both so I can get feedback on these new features as well as describe them in a relatively verbose manner, something which I’ve come to discover is sort of frowned upon on BukkitDev; speaking of which, the plugin page on BukkitDev can be found here.

The plugin’s primary purpose is randomization features, primarily, of course, for chests. However it has some added facilities that can make things more interesting.

  • out-of-game loot configuration
    While there are a few components in-game that affect what a chest will contain, such as blocks that will keep a chest static and those that will set it to “super-populate”, most of the configuration of just what random items can exist is done from the game configuration. The weighting of the items determine how frequently they appear, and the weighting of enchantments is done as well for those items that include enchantment information, which makes for a relatively flexible configuration.
  • Random enchantments
    While I have seen a few other Chest/loot Randomization plugins, When I started mine I don’t recall finding any that also allowed for the aforementioned random enchantments. These are also configured in loot file, and very rarely you can even find equipment with ridiculously powerful enchantments, such as sharpness IX or Protection IX. These are rare enough that they aren’t as likely to unbalance the game too heavily, in my experience.
  • Chest repopulation
    One of the newest features is Chest repopulation. This is not currently in the version available as of this writing on devbukkit, but the jar available on github has this feature. It allows for a configuration timeout delay after a chest is closed. When that time expires, if the player that last closed it is farther away than another setting (the minimum block distance) it will repopulate the chest with items. This feature also allows a player to see who last viewed the contents of a chest for chests that are pending repopulation. Fundamentally it’s similar, in concept, to the way item respawns work in other games, but with an added feature to try to prevent too much camping of a single chest for good loot.
  • Potion randomization

    While this is currently somewhat hard-coded, the plugin also adds randomized potions. Previously, only their main effect was changed; you could tell what they were fundamentally by looking at them. More recently, I had those effects randomized. Don’t skip over that Green potion, because while it’s main effect might be poison, it might only be 2 seconds while offering a minute of Regen IV or Jump II, or some other powerful, useful effect.

  • Randomized Names

    While not really a main feature, this is still a hilarious one. The plugin generates random names and lore for some items; names like “Irish Slicing bodkin” for a sword or “Strong Ethiopian Fearful sweater” are not uncommon. It also chooses random text effects for some parts of the name. This is all designed to make the otherwise hectic task of trying to find good equipment even more difficult.

  • It repopulates any container

    While fundamentally, this could be a bad feature depending on the map design, the plugin currently repopulates Chests, Dispensers, furnaces, brewing stands, and Dispensers. When the bukkit API supports it, I will likely also have it populate hoppers and Droppers, too.

Other upcoming features aim to make the plugin easier to use in a continuous environment- that is, where the plugin and game is continuously running and players can join and quit as they please. I’m still working on the gameplay as well as technical aspects for how that will work.

Have something to say about this post? Comment!