Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
A Minecraft plugin that enhances player interactions with an AI chatbot using OpenAI's API.
World awareness and personality. Nothing changes until you switch it on: every new feature is off by default. config-version is now 4; the five new sections (server-context, mood, relationships, boredom, supervision) are added to your config.yml automatically with comments (backup config.yml.bak-v3). Database schema v2 adds one table (aifriend_relationships); the migration runs the next time the database is opened, which only happens while long-term memory or relationships are enabled. Existing notes are untouched.
- New: server context (
server-context.*): every request carries a short picture of the server as untrusted data lines: how many players are online and, for the players who just wrote, their world, biome, the hostile mobs around them ("2 zombie, 1 creeper") and the time and weather that player sees: read per player, so other worlds (Multiverse) and per-player time or weather (Residence,/ptime,/pweather) are respected, and worlds without a day cycle (Nether, End) give none; the general time and weather are sent only when every player sees the same. No coordinates, inventories or anything about players who did not write. Collected on the right threads (one entity task per player, Folia safe) everyrefresh-seconds, every detail has its own switch - New: mood (
mood.*): a mood from -100 to 100 that advancements, boss kills and first joins raise and deaths (more when several players die within five minutes) and repeated big explosions (looks like griefing) lower; it fades back to calm with a half-life. It is a hint in the system prompt, shows in/aifriend statusand in%aifriend_mood%, and works without theeventsreactions - New: relationships (
relationships.*): the bot counts the answered exchanges a player took part in and treats strangers, acquaintances, regulars and friends differently; players can pick a nickname with/aifriend nickname <text>(letters, digits, space and_ - . ', up to 24 characters, checked against the reply filter,clearremoves it). Stored in the database fromstorage(UUID, last name, counter, first and last time, nickname);/aifriend forget,forget <player>,forget-alland muting the bot delete it. Without a database it stays in memory - New: boredom (
boredom.*): when nobody has written forquiet-minutes, the bot may start a conversation (topic, quiz question, challenge, joke or fact,ideas). Only while at leastmin-players(default 1) are online, never on an empty server (the quiet time starts when the first player arrives), never when asleep, rate limited or waiting after an error, with acooldown-minutesthat doubles (up to 8 times) while nobody reacts and amax-per-day - New: chat supervision (
supervision.*): a friendly private note to a player who writes in caps lock, spams (the same line three times or six lines in ten seconds) or uses a word frombad-words(accents, look-alike characters and stretched letters are ignored). Nothing else happens: no kick, mute or ban, nobody else sees it, nothing is stored (only hashes of the last lines, for ten seconds, in memory); players withaifriend.bypass-supervisionand players who muted the bot are skipped - New:
/aifriend nickname [text|clear]; permissionsaifriend.nickname(everyone) andaifriend.bypass-supervision(op);/aifriend statusshows the awareness features; the startup banner lists them - New: PlaceholderAPI
%aifriend_relationship%(stranger, acquaintance, regular, friend) and%aifriend_nickname%;%aifriend_mood%is the real mood (thrilled, cheerful, calm, uneasy, upset) whenmood.enabled - New: English and Czech messages for all of the above
- Change: the database is opened when long-term memory or relationships are enabled;
/aifriend forgetworks with either - Change: the prompt builder takes the extra data lines (
{"context":...},{"player_context":...},{"relationship":...}) in the same escaped-JSON data block as chat lines; the mood and the conversation starter are in the trusted system part (computed by the plugin, never from player text) - Not included: several bots at once (planned, see ROADMAP.md)
Platforms
Paper
26.3