跳到主要内容

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.

字段

字段类型默认值描述
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)
字段类型默认值描述
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)
字段类型默认值描述
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)变体:boolean_inputtext_input
boolean_input(3)
字段类型默认值描述
keyStringreproducible—
labelStringReproducible?Label for the toggle
initialBooleanfalseInitial state of the toggle
text_input(7)
字段类型默认值描述
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)
字段类型默认值描述
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)
字段类型默认值描述
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 fields占位符多行
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)占位符多行
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)占位符多行
colorString#ff5555Hex color applied to the embed sidebar (e.g. #ff5555)
fieldsList<BugReportWebhookFieldTemplate>—Fields added to the embed body
BugReportWebhookFieldTemplate(2)
字段类型默认值描述
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).