Skip to main content

TinyEssentials

29 essentials commands, homes, TPA, chat format, tablist, calendar, fast travel and wiki.

Privatev0.0.2Utilities
RequiresTypeWriter0.9.0-beta-177 (BTC build)PacketEventsMySQLGUITranslateoptional

Built for the BornToCraft network. This extension is documented for reference and is not distributed.

Overview​

TinyEssentials is the "essentials" layer of a BTC server, inspired by EssentialsX and built on TypeWriter. It brings 29 player and staff commands (homes, teleport requests, messages, fly, vanish, heal...), a chat formatter, join items, a death penalty ("scavenger"), a tablist, scoreboard and bossbar manager, a custom day length with a calendar, a fast travel menu and an in-game wiki.

Everything is configured in the web panel. Each command is its own entry, so you choose its name and its permission and you only add the commands you want. Messages are shared in one Tiny Essentials configuration entry, and the larger features (homes, chat, tab, calendar) each have their own entry.

Menus (homes, calendar, fast travel, wiki) are rendered with the GUI extension and the layout you draw on a page.

Features​

  • 29 command entries — fly, god, feed, heal, vanish, speed, gamemode, repair, back, TPA, messages, homes and more, each with a configurable name and permission.
  • Homes — per-player homes with permission-based limits, cooldowns, a paginated menu with an editor (rename, icon, delete) and saved storage.
  • Teleport requests — /tpa and /tpahere with timeout, toggle, and a /back history.
  • Private messages — /msg, /reply, and /msgtoggle with colour codes neutralised.
  • Chat format — MiniMessage formats chosen by permission and priority, shared across servers through Redis when MySQL runs in shared mode.
  • Tablist, scoreboard, bossbar — header/footer, name formatting, sorting, layout of 80 slots, conditions and animations.
  • Join items — items given on join or respawn with click commands and protection flags.
  • Scavenger — percent loss of items and experience on death, protected items and placeholder-based penalties.
  • Custom time and calendar — day length, calendar with months, weekdays and events, calendar menu, facts, an audience filter and placeholders.
  • Fast travel and wiki — region-based travel menu with lock criteria, and an in-game guide made of sections and articles.

Installation​

  1. Install PacketEvents, required by the tablist features.
  2. Install the MySQL extension, which TinyEssentials declares as a dependency (Redis is used for cross-server chat and tab roster), and the GUI extension for the menus.
  3. Optionally install Translate to translate network chat for players on other servers.
  4. Put the TinyEssentials JAR in plugins/Typewriter/extensions/ and restart the server.
  5. Give the command permissions (see the Permissions table) with your permissions plugin. Group-based tab features read permissions named group.<name>.

Getting started​

  1. In the TypeWriter web panel, open a static page and add one Tiny Essentials entry. Without it, every command answers that TinyEssentials is not configured. Adjust defaultTeleportCooldown, tpaTimeoutSeconds, backBufferSize and the messages.
  2. Add the command entries you want, for example /fly, /tpa and /back. Keep or change commandName and permission.
  3. For homes, add an Artifact Home and a Home Manager that references it in artifact, then add /home and the other home commands.
  4. For a chat format, add a Chat Format with groups such as owner (permission group.owner, priority 10, format <gold>[Owner] <player><white>: <message>) and a fallbackFormat.
  5. Publish, grant the permissions and test with a player.
Messages use legacy colour codes

Messages in Tiny Essentials and Home Manager use & colour codes and {player}-style tokens. Chat formats, the tablist and the menus use MiniMessage.

How it works​

Each feature entry is read when it is needed. Use a single entry of each kind (one Tiny Essentials, one Home Manager, one Chat Format, one Join Item, one Scavenger): the extension takes the first one it finds.

Configuration​

Besides entries, TinyEssentials relies on these runtime rules.

  • Teleport cooldown — /back and /tpa wait defaultTeleportCooldown seconds, or the largest cooldownSeconds among the cooldownRules whose permission the player has. Unless allowMovement is on, moving cancels the teleport. Teleports to an Ender pearl or a chorus fruit landing are not kept in the /back history.
  • Vanish and toggles — vanish, /msgtoggle and /tpatoggle states are stored on the player, so they survive restarts and reconnects.
  • Network features — chat and the tab roster use Redis when the MySQL extension runs with a shared scope; otherwise they stay local.
  • Obsolete fields in Tiny Essentials — the ...Command name fields (msgCommand, flyCommand...) and basePermission are not applied: command names and permissions live on the command entries. Those name fields only appear in usage messages. The tab fields bossbarToggleCommand and scoreboardToggleCommand are also not registered as commands.

TinyEssentials contributes button types for pages built with the GUI extension.

MenuEntryButton types
HomesHome Manager (menus configured in the entry itself)None: layout is set in homesMenu and homeEditorMenu.
CalendarCalendar Menucalendar_button:DAY, WEEKDAY, EVENT, CALENDAR_SUMMARY, MONTH_NAV
Fast travelFast Travel Menutravel_button:REGION_TAB, DESTINATION, REGION_SUMMARY
WikiWiki Menuwiki_button:SECTION_TAB, ARTICLE, PAGE_NAV

The calendar, fast travel and wiki menus use the same approach: a shared open_gui chassis (baseMenuId), a pool of layouts, and views. Indexed buttons such as DAY or DESTINATION are filled in order from the data (the grid is a display ceiling, extra slots stay empty).

The homes menu is paginated with previous, next and close buttons, a filler item, an item for empty home slots, and an editor opened by clicking a home: teleport, rename in chat (type cancel to abort), set the icon from the held item, reset the icon and delete.

Commands​

All commands are brigadier commands registered by entries, so clients get completion. No command has an alias. Without the right permission the command is hidden. Player-targeting commands accept a player selector; acting on someone else needs the matching .others permission, checked when the command runs.

Self and staff commands

CommandDescriptionPermission
/fly [player]Toggles flight.tinyessentials.fly (others: tinyessentials.fly.others)
/god [player]Toggles invulnerability.tinyessentials.god (others: .god.others)
/feed [player]Restores hunger and saturation.tinyessentials.feed (others: .feed.others)
/heal [player]Restores health, hunger, air and clears fire and freezing.tinyessentials.heal (others: .heal.others)
/vanish [player]Toggles invisibility to other players; kept after reconnect.tinyessentials.vanish (others: .vanish.others)
/gamemode <survival|creative|adventure|spectator> [player]Changes the game mode.tinyessentials.gamemode (others: .gamemode.others)
/speed <value> [walk|fly|sneak] [player] and /speed reset [walk|fly|sneak]Sets speed from -20 to 20. Only works in creative mode. Without a type, flying players get fly speed, others walk speed. Changing another player's speed needs .speed.others.tinyessentials.speed (others: .speed.others)
/suicideKills you.tinyessentials.suicide
/repairRepairs the held tool, weapon or armor (not blocks, not unbreakable items).tinyessentials.repair
/invsee <player>Opens another player's inventory. Editing it needs tinyessentials.inventory.edit.tinyessentials.inventory (target: .inventory.others)
/pocketmenu <type> [--consume]Opens a vanilla menu: workbench, enchanting, anvil, smithing, grindstone, cartography, stonecutter, loom or brewing. --consume makes the enchanting table consume levels.tinyessentials.pocketmenu

Teleport commands

CommandDescriptionPermission
/backReturns to your previous location, with cooldown.tinyessentials.back
/tpa <player>Asks to teleport to a player.tinyessentials.tpa
/tpahere <player>Asks a player to teleport to you.tinyessentials.tpahere
/tpaccept [player]Accepts the latest request, or the one from the named player.tinyessentials.tpaccept
/tpadeny [player]Denies the latest request, or the one from the named player.tinyessentials.tpadeny
/tpatoggleStops or resumes receiving requests.tinyessentials.tpatoggle
/tppos <x> <y> [z]Teleports to coordinates.tinyessentials.tppos
/tpallTeleports every online player to you.tinyessentials.tpall
/getposShows your position, rotation and world.tinyessentials.getpos

Messages

CommandDescriptionPermission
/msg <player> <message>Sends a private message.tinyessentials.msg
/reply <message>Replies to the last conversation.tinyessentials.reply
/msgtoggleStops or resumes receiving private messages.tinyessentials.msgtoggle

Homes — they also require the Home Manager's basePermission if you set one.

CommandDescriptionPermission
/home [name]Teleports to a home; without a name, the home called home.tinyessentials.homes.teleport
/home list (or ls)Opens the homes menu.tinyessentials.homes.list
/home set|add|create|save [name]Saves a home at your position.tinyessentials.homes.set
/home delete|del|remove|rm [name]Deletes a home.tinyessentials.homes.delete
/sethome [name]Saves a home.tinyessentials.homes.set
/delhome [name]Deletes a home.tinyessentials.homes.delete
/homesOpens the homes menu.tinyessentials.homes.list

Calendar

CommandDescriptionPermission
/calendarOpens the calendar on the current month. /calendar month <prev|next|current> <player> is used by menu buttons.tinyessentials.calendar (leave empty for none)
/timefactPrints the lines of the linked Time Fact entry.tinyessentials.timefact (leave empty for none)

The permission field of each command entry is the permission in the tables above by default. Change the command name with commandName.

Permissions​

PermissionGrants
tinyessentials.<command>Use of the command, as listed above (defaults of the permission field).
tinyessentials.fly.others, god.others, feed.others, heal.others, vanish.others, gamemode.others, speed.othersApply the command to another player.
tinyessentials.inventory.othersOpen another player's inventory with /invsee.
tinyessentials.inventory.editMove items in the inspected inventory.
tinyessentials.homes.bypass (bypassPermission)Ignore home limits and teleport cooldowns.
tab.staffCounted by <tab_staffonline>.
group.<name>Selects the tab group and sorting by group.
Fields such as generalPermission, permission, cooldownRules, permissionLimitsPermissions you choose in the entries.

Placeholders​

TinyEssentials registers two MiniPlaceholders expansions, usable as MiniMessage tags.

PlaceholderReturns
<tab_online>Players online.
<tab_staffonline>Online players with tab.staff.
<tab_worldonline>Players in the viewer's world.
<tab_memory_used> / <tab_memory_max>Used and maximum memory in MB.
<tab_tps>Server TPS (1 minute) with two decimals.
<tab_date> / <tab_time>Real machine date (dd.MM.yyyy) and time (HH:mm:ss).
<tab_animation:name>Current frame of a Tab Configuration animation.
<calendar_date>Date of the calendar, for example 3 Spring, an 12.
<calendar_time> / <calendar_time_12h>In-game time on 24 or 12-hour clock.
<calendar_day>, <calendar_month>, <calendar_month_index>, <calendar_year>, <calendar_weekday>Parts of the calendar date.
<calendar_day_of_year>, <calendar_total_day>Day number in the year and since the start.
<calendar_event>Title of today's first event, empty if none.
<calendar_next_event>, <calendar_next_event_days>Next event title and days until it.

Every calendar placeholder accepts the id of a Minecraft Time entry as argument, for example <calendar_date:my_calendar_id>; without it the first calendar is used. They return an empty text when no Minecraft Time entry exists.

Text fields of the Home Manager use {home}, {limit}, {cooldown}, {count}, {world} and similar tokens given in each field help; TPA and message texts use {player}, {time}, {sender}, {receiver} and {message}.

Entries​

50 entries, generated from the extension source.

Actions3
Facts3
Audiences1
Commands29
Placeholders1
Artifacts2
Manifests11

Troubleshooting​

TinyEssentials n'est pas configure : ajoutez une entree 'tiny_essentials' a une page. A command ran without a published Tiny Essentials entry. Add one to a static page and publish.

A command does not exist or is hidden. Each command is an entry: add the matching tinyessentials_..._command entry, publish, and give the player its permission. A command name changed in commandName replaces the old one.

Les maisons ne sont pas configurees. There is no Home Manager entry. For storage errors (stockage des homes est indisponible), check that the Home Manager's artifact points to an Artifact Home.

Players cannot chat at all. generalPermission of the Chat Format entry is set and the player lacks it: the chat message is cancelled. Leave it empty or grant the permission.

/back says there is no previous location. Only teleports done by commands and plugins are recorded. Ender pearls and chorus fruits are ignored, and the history keeps the last backBufferSize places.

/speed says it is only available in creative mode. The command is deliberately restricted to creative mode so it does not clash with RPG stats.

The tablist features do nothing. PacketEvents must be installed. tablistFormattingEnabled, layoutEnabled, bossbarEnabled and scoreboardEnabled are separate switches, and the last three are off by default.

The calendar placeholders are empty. No Minecraft Time entry is published, or the argument does not match an existing entry id. A calendar menu or command also needs its minecraft_time link.

  • MySQL — Redis for network chat and the tab roster.
  • GUI — renders the homes, calendar, fast travel and wiki menus.
  • Translate — translates network chat for players on other servers.
  • UiCore — the wiki articles can reference UiCore images.