Strings

Strings

42 devlogs
107h 33m
Created by Chris

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.

Timeline

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

Update attachment
Chris
Chris
2h 22m 10 days ago

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

Update attachment
Earned sticker

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)

Update attachment
Chris
Chris
3h 57m 11 days ago

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

Update attachment
Earned sticker
Chris
Chris
3h 59m 12 days ago

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.

Update attachment

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.

Update attachment

Ship 2

Chris

15 days ago

Chris Covers 14 devlogs and 29h 32m

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.

Update attachment

Moved another listener to kotlin, added a discord user id field which im gonna change again, other work too.

Update attachment
Chris
Chris
1h 20m 21 days ago

Moved the player join quit listener to kotlin

Update attachment

Moved most StringsDiscord listeners to kotlin, other work.

Update attachment

Got console support working. StringsDiscord is getting there

Update attachment
Chris
Chris
1h 16m 22 days ago

Finished up adding a public API for StringsDiscord. Worked on registration, impl, etc. and fixed an issue I noticed with registration for StringsDiscord

Update attachment
Chris
Chris
4h 16m 22 days ago

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

Update attachment
Chris
Chris
2h 27m 24 days ago

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

Update attachment
Chris
Chris
1h 44m 25 days ago

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.

Update attachment
Chris
Chris
4h 40m 29 days ago

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

Update attachment

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)

Update attachment

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.

Update attachment

Added message deletion and refactored the ChatRenderer for Paper to support it and be better organized

Update attachment

Ship 1

1 payout of shell 525.0 shells

Chris

about 1 month ago

Chris Covers 22 devlogs and 64h 40m

Finished the death messages, finished unignore command and fixed the ignore command

Update attachment

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.

Update attachment

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

Update attachment

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)

Update attachment

Continued work on the death message service. Very tedious, but I want to get this finished tomorrow

Update attachment

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.

Update attachment

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.

Update attachment

Implemented the /channel list subcommand, added a Message batching method in the Messenger class.

Update attachment

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.

Update attachment

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.

Update attachment

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

Update attachment

Fully implemented the /ignore system.

Update attachment

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.

Update attachment

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.

Update attachment

Worked on adding join and leave messages, tinkered around with the embeds. This is pretty similar to discord srv but looks the cleanest

Update attachment

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.

Update attachment

Started working on a Discord expansion, similar to DiscordSRV, but better integrated with my plugin.

Update attachment

Lots of refactoring, and minor changes, including moving to LocalDateTime for logging

Update attachment

Rewrote the ChannelFileReader, which reads all Channels from channels.yml, for improved logic flow, cleaner code.
https://github.com/Wiicart/Strings/commit/f711959f54ab43224b7d4d34a23a6371c2304698

Update attachment

Fixed chat color parsing in chat, will need to refactor later, but is working

Update attachment

Worked on fixing the adventure-bungee chatcolor integration

Update attachment