Commit ee4fccd
ZDiscord Maintainer
Fix shutdown + footer image; add interactive setup wizard + linked-identity chat
Bug fixes:
- YamlStorage: scheduleFlush now checks the plugin's enabled state
via a BooleanSupplier and falls back to a synchronous save when
the plugin is already disabled. This fixes the
IllegalPluginAccessException that fired during
TicketModule.shutdown() (which is called after Bukkit has set
the plugin to disabled) when setData tried to schedule an async
task.
- JoinQuitListener: footer icon is no longer hardcoded to a pair
of imgur URLs that often fail to load. The footer icon is now
resolved in three layers: events.<type>.footer-icon,
events.footer-icon, then the guild icon, then null.
Experience enhancements (join/quit embeds):
- Clickable author URL (links to NameMC profile of the player).
- Player count delta in the Online field (e.g. '12/50 (was 11)').
- Session duration on quit (e.g. '1h 23m').
- First-join indicator: a 'New Player' field and a private
welcome message (events.join.first-join-message) when
hasPlayedBefore() returns false. Configurable via
events.join.show-first-join-indicator.
Interactive /setup wizard:
- Rewritten SetupCommand with a 3-step ticket flow that uses
Discord modals to add, edit, remove, and reorder ticket
categories from inside the wizard. Operators no longer need
to edit config.yml for the most-tweaked ticket section.
- New buttons: Add, Edit, Remove, Move up, Move down, Done.
- The category list is rebuilt with every change; ordering is
preserved by re-writing the tickets.categories section in the
new order.
- Done & post panel validates that at least one category exists
before calling TicketModule.postPanel.
Linked-identity chat:
- ChatBridge now consults LinkModule and uses the player's
Discord name + avatar (via JDA's getMemberById) when sending
webhooks, instead of their Minecraft skin/username. Operators
can opt out per-field with chat.prefer-linked-avatar /
chat.prefer-linked-name (both default true). Unlinked players
always fall back to the Crafatar avatar and MC name.
- For default nameFormat, the resolved name is
'DiscordName (MCName)' so the channel can still tell who it is
at a glance. A new %discord_name% placeholder is available in
custom nameFormat strings.
Config additions:
- events.footer-icon, events.join.footer-icon, events.quit.footer-icon
- events.join.first-join-message, events.join.show-first-join-indicator
- chat.prefer-linked-avatar, chat.prefer-linked-name
- tickets.* (unchanged; the wizard writes to it)1 parent ea8af3d commit ee4fccd
5 files changed
Lines changed: 792 additions & 55 deletions
File tree
- src/main
- java/dev/demonz/zdiscord
- discord
- minecraft
- listeners
- storage
- resources
0 commit comments