Mike's ToolBox - Simplify lots of things because I can

This is a discussion topic for the Ore project, Mike’s ToolBox. View the full project on Ore for downloads and more information.

Mike’s ToolBox

Welcome to my Sponge-Army Knife, A toolbox with a bit of everything for everyone!

Version 1.2.2 for Minecraft 1.12.2

This Toolbox provides most functionality via Static API Classes

(Also sorry for these horrible docs, I like writing code more)

Ingame NBT inspector

Use //nbt to receive a NBT inspector. click a block with this item to browse the blocks or entities NBT data.
To inspect the NBT of an item you’re holding use //nbt -h.

Permission for both is mtb.nbt.inspect


My serialization library that stores class instances into a database table. The class and field have to be annotated with additional information for this to work. There’s no automatic size detection per field.


Util that’ll parse a usage string into command specs

void registerCommand(String command, String permission, CommandExecutor executor)

Register a command via string descriptor. The first word is the command name, followed by a syntax similar to the output of /help:

  • <Argument> Required Argument
  • [Argument] Optional Argument
  • -f Value and --flag Value where value is optional
    Argument is built like Value or Name{Value}
    Value is build like Type or Type:Permission
    Type allows the following:
    bool, double, entity, entityOrSrouce, integer, location, long, player, playerOrSource, plugin, remainingString, string, user, userOrSource, vector, world
    Permission is build as known with characters matching ~^\\w.*$~i

So an example would be: BoxCommand.registerCommand("/teleport [Target{Player:cmd.tp.other}] <Source:PlayerOrSource> -s", "cmd.tp.base", (src, args)->{ /*...*/ });

Of course you can also just create a ComandSpec.Builder with BoxCommand.parseArguments(String argString).


These are a view events the presort some information that might often be processed or events that are stuck in PRs

Event Description
BoxCombatEvent Called when one player damages another player, carries the damage event
BoxJumpEvent Triggered when a player jumps
BoxPlayerItemEvent Monitoring box items in the player inventory
BoxSneakEvent Triggered when the player starts sneaking
BoxSprintEvent Triggered when a player starts sprinting
BoxZoneEvent Event from the zone module, giving information on what zones the player entered/left


These allow to quickly create custom items with CostomEffects, you can glue event listeners to these items and make them react to getting in and out of the player inventory.

To create a BoxItem, create a new BoxItem.Builder();
From here you can add passive effects meaning you can manipulate the player while having the item in their inventory or active effects, that get applied while the player has the item equipped or in hand.
Adding EventManipulators to an item let you create custom tools that react on interaction, by providing dynamic Event subscription.

Keep a static instance of the BoxItem within you plugin and you can create instances with BoxItem::getItem()


A static method collection that allows you to apply CustomEffects to living entities.
These can do things when applied, expiring or cuntinuously. Upon death or disconnect the effect gets automatically removed.

You can also maniplulate the gravity of all enties (low gravity works better).


Interface that has to be implemented for custom effects. They will automatically strip once the entity dies or disconnects.
Effects can act upon applying and detaching as well as tick based (100ms). You can specify a effect duration or make them stay infinitely


Methods to display traces to this player as well as shooting entities from this player


Allows drawing lines into the world using particles. This can be used to highlight blocks, point to entities and more.



Meant for interaction with protection plugins this was supposed to provide a more advanced region system.
There is also an event for when a Player enters or leaves such an area.

Zones can easily be created ingame with the //zone tool: left-click for corner 1, right-click for corner 2, second right-click to create the zone or instead shift-right-click to create a zone of multiple areas

While holding the zone tool all zones get highlighted you you know where every zone is.

Depending on this plugin

This plugin is jitpack-compatible, if you’re using gradle just add this:

repositories {
    maven { url "https://jitpack.io" }
dependencies {
    compile 'com.github.DosMike:MikesToolBox-Sponge-:master-SNAPSHOT'

External Connections

Version Checker
This plugin uses a version checker to notify you about available updates.
This updater is disabled by default and can be enabled in config/dosmike_toolbbox/versionchecker.conf
by setting the value enabled to true.
If enabled it will asynchronously check (once per server start) if the Ore repository has any updates.
This will only print update notes into the server log, no files are being downlaoded!

Need Help?

Join my Discord

A new version has been released for Mike’s ToolBox, it is available for download here.

Fixed a bug where MultiRangeZone::inside(Location) would always return false because Extent was compared to Optional

A new version has been released for Mike’s ToolBox, it is available for download here.

  • Updated compile script used
  • fixed issue when detaching effects from player
  • looked into BoxItem tracking from inventory change events
  • drop item listener seems to be broken atm (context params changed)

A new version has been released for Mike’s ToolBox, it is available for download here.

  • Fixed detaching effect issue
  • Cleared some things on the init side,
  • Got Entity Gravity to work (low gravity works better) with fall damage scaling
  • Box Items are now correctly tracked allowing passive and active effects on box items to work propperly

A new version has been released for Mike’s ToolBox, it is available for download here.

  • Fixed gravity being 2x by default
    Sorry everyone

A new version has been released for Mike’s ToolBox, it is available for download here.

  • Converted the project to gradle
  • This project should now be jitpack compatible
  • Added a Version Checker