An extensive chat plugin for Minecraft servers.
As of writing, this plugin is in use on over 200 servers across the globe.
Features include discord support, various channel types (and an ability to create custom implementations), a public API, formatting, integration w/ other plugins, chat color, custom death messages, and much more.
I'm working on two expansion modules right now, StringsDiscord and StringsModeration that expand the plugin even further.
dave9123
Check their projects out: Recall Me, InstaQuote, Lenie
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
This devlog is work I did upading the DiscordSRV project to support my plugin. I wrote a hook that hooks in to Strings, and allows the Channel system to work with Strings.
PR open here https://github.com/DiscordSRV/DiscordSRV/pull/1831
I didn't realize how messed up the maven structure was, so I went in and fixed that, added some things to support DiscordSRV and fixed some bugs. I also set up a maven repo so its not a pain to import the api to external projects, hosted on aws s3
Wrapped up the main functionality of the /emoji command. Still considering if I want to add a few things to it but this is the gist. Clicking on any of the emojis will have you copy the text representation (like :metal: in the image)
Not as pretty of a milestone, but the Modrinth API integration to download the texture pack is now done. In chat emojis are looking great, and I just started working on a /emoji command to provide emojis to copy and paste.
https://modrinth.com/resourcepack/allure-emoji-pack
Emojis! Unicode was very finicky so this took a long time. Added emoji mappings like discord has (:cowboy: -> 🤠) Using a texture pack (Allure on Modrinth). Need to improve logic for prompting players to use the pack next.
Made some small changes, tested some things to make sure the plugin works with CMI. Added a isNew() method to the User class to tell if it's the first time a player has joined.
These minutes were done a few days ago, I think they have to do with Discord account linking. I want to take a break from this project, so while theres some things that aren't exactly where I want them, theres a lot of new stuff so I'm shipping it. This project just kind of becomes a time sink because of how large it is, I'm getting kind of tired of it right now.
Moved another listener to kotlin, added a discord user id field which im gonna change again, other work too.
Finished up adding a public API for StringsDiscord. Worked on registration, impl, etc. and fixed an issue I noticed with registration for StringsDiscord
No new feature is fully complete but its been a while since the last devlog so heres what Ive been working on:
Fuzzy chat filtering (I wrote a trie for this)
Fixed a death message bug
Worked on moving configuration for the Discord module to the new system
Misc. stuff
Added sounds for both global broadcasts and Channel broadcasts. This ended up much more complicated than I had anticipated but theres less tech debt than the alternative so thats nice
Added a enum for the ChannelBuilder instead of relying on Strings to determine what Channel type to make. Added methods to the Channel interface for playing sounds when a message is broadcast to the Channel, yet to actually implement this though.
Started adding some things to StringsModeration, and completely reworked the configuration system for the second time. This version utilizes generics and gets rid of lots of boilerplate
Added PlaceholderAPI support to death messages, added a /rules command
(attatched image is a visualization of the default text, screenshotting in game would be annoying bc MC is open on a separate computer)
Spent some time updating StringsDiscord so it works with some changes to Strings, added support for deleting messages on Discord that were deleted in game
Converted some of the classes in the Discord module to Kotlin, as well as some other misc. work.
Added message deletion and refactored the ChatRenderer for Paper to support it and be better organized
Worked on updating the death message system to be better, refactored the ignore command and started work on the unignore command. Death message expansion isn't done, but I finished adding a new Collection thats like a buffer to help handle previous damageevents so I can see if the player was damaged by another.
The longstanding mentioning color issue with my paper implementation is gone...
I think this is finally in a shippable state. Posting this to the plugin's discord if any of them want to test it before I publish it
Wrapped up death messages to the extent I want to, I think further work on them would have descending returns (messages shown are default but are operated by my plugin)
Continued work on the death message service. Very tedious, but I want to get this finished tomorrow
Refactored some things, updated the User class so the dirty flag is always set properly bc I forgot to set it for some new methods I added. Added a way to send messages without prefixes with the Messenger service.
Updated the ChannelBuilder system to not rely on Bukkit bc Im trying to make it platform agnostic. Its a whole parameterized mess but itll get the job done. Added the bukkit adventure adapter so I can support spigot and bukkit while allowing for adventure components to be sent to players. Updated README.md, and did other misc. work.
Implemented the /channel list subcommand, added a Message batching method in the Messenger class.
Moved the /channel command over to my new framework. Rewrote all the subcommands, and it looks much cleaner now. Added functionality for muting and unmuting Channels. Need to make a /channel list subcommand next.
Though the framework is not quite complete yet, moved over the /strings command to my new command framework (https://summer.hackclub.com/projects/7178). Shouldn't break as I continue to flesh out the framework.
Finished moving over to a new configuration system I made, which is better bc it's exposed in the api, and has better type safety
Lots of work (I don't remember all bc this was over multiple days), but one of the things I did was start moving the API to be more platform agnostic so maybe I can implement this plugin on Fabric, & changing the bukkit implementation to work with the more platform agnostic API. Still a WIP in that regard.
Did more Discord work. Added messages for advancements and player deaths, implemented the channel-specific manager (which is why I'm making this), and did some other misc. work.
Worked on adding join and leave messages, tinkered around with the embeds. This is pretty similar to discord srv but looks the cleanest
A whole lot of work, mentions are working, maybe theres a few things to tweak there. Fixed some bugs, added customization including for the bot's activity. Many other things too. I also wrote a enum with for the project in Kotlin.
Started working on a Discord expansion, similar to DiscordSRV, but better integrated with my plugin.
Refactored some Logging things & commands
https://github.com/Wiicart/Strings/commit/57ac990ce99513c42443aa7317d65d37f8712503
Rewrote the ChannelFileReader, which reads all Channels from channels.yml, for improved logic flow, cleaner code.
https://github.com/Wiicart/Strings/commit/f711959f54ab43224b7d4d34a23a6371c2304698