Skip to content

BukkitOfUtils (BOU) ​

BukkitOfUtils (BOU) is both a Bukkit plugin and a development framework/library. It simplifies Bukkit plugin development and provides a shared foundation for plugins that depend on it — keeping them lighter and faster to download.

Download: Modrinth · Support: Streamline Hub Discord

Supported Platforms ​

Bukkit Platforms: Bukkit, Spigot, Paper, Purpur, Folia, Mohist, and forks (ImmanitySpigot, FlamePaper, AxolotlSpigot, Airplane, Tuinity, etc.)

Minecraft Versions: 1.7 through 1.21+

Java: 11 or newer

Commands ​

Notation: <required> = mandatory, [optional] = optional

CommandAliasesPermissionDescription
/entity-count [world]entityc, counte, countentitiesbou.command.entity-countCount loaded entities server-wide or in a world
/boumessage <player> <message>boumsgbou.command.boumessageSend a color-coded message to a player
/boutitle <player> <title>\n<subtitle> [-fadeIn=...] [-stay=...] [-fadeOut=...]boutbou.command.boutitleSend a title/subtitle to a player
/boudebug <action> [args]boudbou.command.boudebugDebug utilities (item NBT, item store, tasks, teleport helpers, etc.)
/runfirestring <help|(type) args...>rfs, firestring, fstringbou.command.runfirestringRun a Fire String
/bouhelp [plugin]bouhbou.command.bouhelpShow help for BOU or another Helpful BOU plugin (GUI for players)
/item-factory <plugin> <key> [count]itemfactory, itfbou.command.item-factoryGive yourself an item registered in the Item Factory (count 1–2304)
/bouplugins <list|enable|disable|info|reload|unload|load|menu> [plugin]boupbou.pluginsManage plugins (list, lifecycle, info, GUI menus)
/bouversionbouv—Show BOU version, server version flags, and Modrinth update status
/onemenuconfigurable (default menu)bou.onemenuOpen the YAML OneMenu GUI (disabled by default)

/bouplugins (/boup) ​

Manage plugins at runtime, with extra detail for plugins that extend BetterPlugin:

SubcommandDescription
listList registered BetterPlugins with version and uptime
info <plugin>Show BetterPlugin details (authors, uptime, databases, Modrinth status)
enable <plugin> / disable <plugin>Enable or disable a loaded plugin
reload <plugin>Reload a plugin
unload <plugin>Unload a plugin
load <jar>Load a plugin JAR from the server plugins folder (.jar suffix optional)
menu [plugin]Open the BOU plugins GUI, or a specific BetterPlugin's info menu (players only)

The plugin info menu shows version, authors, databases, uptime, Modrinth update status (with download link when outdated), and — if the plugin registered one — a custom plugin menu.

/boudebug ​

Common actions:

ActionDescription
item-nbt / item-nbt-strictPrint NBT of the item in hand
store-item / get-itemStore or retrieve an item in memory
make-item / make-item-strictCreate an item from an NBT/string definition
list-bou-plugins / dumpList loaded BOU plugins, or print info for each
tasks <list|cancel <id>|pause <id>|resume <id>|menu>Manage BOU tasks; menu opens the task manager GUI
up / downTeleport to the nearest open space above / below you
topTeleport to the top-most open space above you
center / center3dCenter yourself horizontally / on all three axes of your block (keeps facing)
uuid / worldsMisc debug helpers
drakapiExercise the Drak API client

Permissions ​

PermissionDescription
bou.command.entity-countUse /entity-count
bou.command.boumessageUse /boumessage
bou.command.boutitleUse /boutitle
bou.command.boudebugUse /boudebug
bou.command.runfirestringUse /runfirestring
bou.command.bouhelpUse /bouhelp
bou.command.item-factoryUse /item-factory
bou.pluginsUse /bouplugins (/boup)
bou.onemenuUse /onemenu (when enabled)

Configuration ​

File: plugins/BukkitOfUtils/base-config.yml

Key options (defaults shown conceptually):

PathDefaultDescription
console.name / console.uuidConsole / %Identity used for console-as-sender operations
logging.*.enabled / logging.*.prefixvariesToggle and style info/warn/debug/severe logs
timers.ticking-frequency50Async tick interval in millis (50 ≈ 20 ticks/sec)
timers.entity-collection.frequency10Entity collection interval in async ticks (used on Folia)
version-checker.enabledtrueCheck Modrinth for updates on enable
version-checker.modrinth-project6owv5fWsModrinth project id/slug for BOU
one-menu.enabledfalseEnable the /onemenu command and YAML GUI system
one-menu.command-aliasmenuOptional alias for /onemenu (blank = no alias)

Edits to base-config.yml are picked up automatically (checked at most every 5 seconds). The one-menu options are read once at startup, so changing them needs a restart.

OneMenu ​

OneMenu is an optional YAML-driven GUI. Enable it in base-config.yml:

yaml
one-menu:
  enabled: true
  command-alias: menu

GUI files live in plugins/BukkitOfUtils/guis/. On first enable, BOU writes a default onemenu.yml.

YAML format ​

yaml
title: "&6&lOne Menu"
rows: 3  # 1–6

items:
  "11":
    material: COMPASS
    name: "&bServer Info"
    lore:
      - "&7A sample button."
    left-click:
      - "message:&aWelcome!"
      - "player-command:bouhelp"
    right-click:
      - "close"

Slot keys are inventory indices (0–size-1); rows is clamped to 1–6. click is used as left-click when left-click is not set. Only players can open OneMenu.

Click actions ​

ActionDescription
message:<text>Send a message to the clicking player
player-command:<cmd>Run a command as the player (%player% is replaced; a leading / is stripped)
console-command:<cmd>Run a command as console (%player% is replaced; a leading / is stripped)
closeClose the inventory
open-gui:<file.yml>Open another GUI from plugins/BukkitOfUtils/guis/
firestring:<string>Fire a Fire String (%player% is replaced)

Runtime Libraries ​

BOU keeps its jar small by not bundling large libraries (HikariCP, SQLite/MySQL drivers, Gson, Caffeine, HTTP clients). Modern Spigot/Paper downloads them from Maven Central via plugin.yml. On older servers, BOU downloads them itself into plugins/BukkitOfUtils/libraries/, so the server needs access to Maven Central on first start.

Every downloaded jar is checked against a pinned SHA-256 hash. A jar that does not match is never loaded; if one in the libraries folder fails the check, it is deleted and downloaded again.

Databases (MySQL) ​

For plugins that use BOU's database layer with MySQL:

  • allowPublicKeyRetrieval is enabled automatically only when the host is localhost / loopback. If a remote MySQL server requires it, enable SSL on the server, or append ?allowPublicKeyRetrieval=true to the database name if the network is trusted.
  • The MySQL driver's default SSL mode applies. If the TLS handshake fails because the server only supports old TLS versions, upgrade the server or append ?sslMode=DISABLED to the database name if the network is trusted.

Fire Strings ​

Fire Strings are text commands you can send to BOU to execute actions. They are used throughout BOU-based plugins for running commands, sending messages, and broadcasting.

Fire StringDescription
(console) save-allRuns /save-all as the console
(player) Drakified spawnRuns /spawn as the player Drakified
(consolechat) save-allRuns /save-all as the console (chat variant)
(playerchat) Drakified Hello everyone!Sends Hello everyone! as a chat message from Drakified
(message) Drakified &cHello, &lWorld!Sends a private message to Drakified
(title) Drakified &cHello\n&lWorld!Shows a title (&cHello) and subtitle (&lWorld!) to Drakified
(broadcast) &cHello, &lWorld!Broadcasts a message to all online players
(broadcasttitle) &cHello\n&lWorld!Shows a title and subtitle to all online players

Placeholders ​

BOU integrates with PlaceholderAPI.

PlaceholderDescription
%bou_expansions_loaded%Number of BOU-dependent plugins loaded
%bou_expansions_papi_loaded%Number of BOU BetterExpansion PAPI expansions loaded
%bou_colored_<text>%Colorizes <text>, supports hex colors (e.g., #ff0000 for red)

For Developers ​

See the Developer Guide for how to use BOU as a framework in your plugins.