Saltar al contenido principal

Bugreport Manifest

Configure bug report behaviour

Manifest entry centralizing every configuration knob for the bug report system. The command is registered through the engine's [CustomCommandEntry] pipeline, so it follows engine reloads without any reflection.

Campos

CampoTipoPredeterminadoDescripción
commandNameString—Command name to open this bug report system (e.g., 'report', 'bugreport', 'ticket')
serverNameString—Name displayed when referencing this server in reports
sequenceStorageRef<BugReportSequenceArtifactEntry>—Artifact storing the reports and the incremental sequence for bug IDs
selectMenuTitleStringSelect CategoryTitle displayed on the category selection dialog
selectMenuBodyStringChoose a category for your report:Body text displayed on the category selection dialog
submitButtonTextStringSubmitText displayed on the submit button
categoryLayoutLinesInt1Number of lines to display categories across in the selection menu
maxReportsPerPlayerInt0Maximum amount of non-deleted reports each player may keep (0 = unlimited)
submissionCooldownInt0Cooldown in seconds between two submissions from the same player
notifyPermissionStringbugreport.notifyPermission required to receive staff notifications on new reports
adminPermissionStringbugreport.adminPermission required to use the list/status/delete admin subcommands
statusesList<BugReportStatus>defaultStatusesStatuses a report can be moved through with the status subcommand
BugReportStatus (3)
CampoTipoPredeterminadoDescripción
displayNameStringOpenDisplay name shown to players
descriptionString—Description of what this status means
sendNotificationBooleantrueWhether to send notifications when a report enters this status
categoriesList<BugReportCategory>defaultCategoriesAvailable categories shown to players, each with their own form inputs
BugReportCategory (4)
CampoTipoPredeterminadoDescripción
displayNameStringGeneralDisplay name shown in the menu
dialogTitleStringNew Bug ReportCustom title shown on the dialog window
inputsList<BugReportInput>emptyCustom inputs for this category (TextInput or BooleanInput only)Variantes:boolean_inputtext_input
boolean_input (3)
CampoTipoPredeterminadoDescripción
keyStringreproducible—
labelStringReproducible?Label for the toggle
initialBooleanfalseInitial state of the toggle
text_input (7)
CampoTipoPredeterminadoDescripción
keyStringdescription—
labelStringDescriptionLabel shown above the input
placeholderStringEnter text...Placeholder text shown when empty
minLengthInt0Minimum character length
maxLengthInt256Maximum character length
multilineBooleanfalseWhether to allow multiple lines
heightInt128Height in pixels when multiline; clamped to 1..512 by runtime
displayLineInt0Line number where this category appears in the selection menu (0-indexed)
messagesBugReportMessages—Player facing messages
BugReportMessages (13)
CampoTipoPredeterminadoDescripción
submissionSuccessStringThank you! Your report has been submitted as #{id}.—
submissionCooldownStringPlease wait {cooldown} before submitting another report.—
submissionLimitReachedStringYou have reached the maximum number of open reports.—
submissionMissingMessageStringPlease describe the issue before submitting a report.—
staffNotificationString{player} submitted bug report #{id} ({status}).—
reportNotFoundStringUnable to find bug report #{id}.—
statusUpdatedStringReport #{id} is now {status}.—
unknownStatusStringUnknown status '{status}'. Available statuses: {statuses}.—
reportDeletedStringReport #{id} has been deleted.—
noReportsFoundStringThere are no bug reports matching your filters.—
noCategoriesAvailableStringNo categories available for bug reports.—
listHeaderStringRecent bug reports:—
listEntryString#{id} - {title} [{status}] by {player} in {world}—
webhookBugReportWebhookSettings—Discord webhook delivery configuration
BugReportWebhookSettings (8)
CampoTipoPredeterminadoDescripción
destinationRef<WebhookDefinitionEntry>—Discord destination receiving the bug reports. Empty = no delivery.
threadNameTemplateStringBug #{id}: {title}Thread name template when posting to a Discord Forum channel (required for forums). Placeholders: {id},{title},{message},{category},{status},{player},{server},{world},{x},{y},{z},{gamemode},{created_at} + custom fieldsPlaceholdersVarias líneas
defaultTagIdsList<String>emptyDefault Discord forum tag IDs applied to the created thread
pingRoleIdsList<String>emptyRole IDs to ping on new reports (formatted as Discord role IDs)
contentTemplateString—Optional message content sent alongside the embed (supports placeholders: {id},{title},{message},{category},{status},{player},{server},{world},{x},{y},{z},{gamemode},{created_at} and any custom field key)PlaceholdersVarias líneas
titleTemplateString{title}Title template for the Discord embed (placeholders: {id},{title},{message},{category},{status},{player},{server},{world},{x},{y},{z},{gamemode},{created_at} + custom fields)PlaceholdersVarias líneas
colorString#ff5555Hex color applied to the embed sidebar (e.g. #ff5555)
fieldsList<BugReportWebhookFieldTemplate>—Fields added to the embed body
BugReportWebhookFieldTemplate (2)
CampoTipoPredeterminadoDescripción
valueString{player}Value shown in the Discord embed field (placeholders supported)
inlineBooleanfalseDisplay this field on the same line when possible
discordCommandsBooleanfalseRegister Discord slash commands (list/status/delete) for this report system
discordAdminRoleIdsList<String>emptyDiscord role IDs allowed to use the slash commands (empty = server administrators only)

How to use it​

  1. Set commandName, serverName and a sequenceStorage artifact.
  2. Add categories. Each category has an id, a displayName shown on a button, a dialogTitle, and inputs (text or boolean). Categories with the same displayLine are on the same row of the selection dialog. There are no default categories.
  3. The form always has a title input (added for you if you do not define one). The text of the report is read from an input whose key is description. A report with neither a title nor a description is refused.
  4. maxReportsPerPlayer and submissionCooldown (seconds) limit spam; 0 means no limit.
  5. statuses is the list a report can move through, the first one being the status of a new report. sendNotification tells whether the player is told when a report enters it.
  6. In webhook, set destination to post each report to Discord. Empty means no delivery. titleTemplate, contentTemplate, fields and threadNameTemplate accept {id}, {title}, {message}, {category}, {status}, {player}, {server}, {world}, {x}, {y}, {z}, {gamemode}, {created_at} and the key of any input. Fill threadNameTemplate only for a forum channel, and set defaultTagIds for its tags.
  7. With discordCommands, the same report system can be managed from a Discord slash command (needs the bot).