June 16, 2025
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
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
I realized another limitation of having to build the tree in the call to the super class constructor is that you can't retrieve objects other than those passed into the main constructor, so I added the Workbench which lets you run any code, and store/retrieve Objects from within the constructor. After fighting with Maven central for what feels like YEARS, this is getting deployed.
Some of this devlog is from like a month ago. What I've done most recently is start unifying handlers for pages bc it seems kinda pointless to have very similar classes do almost the exact same thing. Also moved over to a config system I designed for my Minecraft plugins, its more clean.
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.
Did some refactoring, reworked the messenger system, added the /ghasts command
Added a workaround for not being able to pass java's this into a super class constructor
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.
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.
Finished the project. input is parsed into Tokens, and tokens are used to calculate the result.
Basic functionality is working, but only accepts single digit numbers and is kind of finicky.
A basic calculator to help me learn C. Reads input into Tokens, which are then used to calculate the result. I have experience with Java, so this has been a pretty good way for me to do some coding thats not OOP AI lightly used to help me learn the nuances of C. Ive seen how the static analysis is pretty poor as compared to a Java project
Published the project to maven central, though not all planned things are added, its in a workable state.
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.
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.
Implemented an Exception that can show the path the CommandTree took to the exception node-wise like ROOT/join/silent. Wrote a Junit test to test it and it works.
Did some more work and changed stuff to get rid of some design flaws. Still a lot to be done, but this is starting to take shape. Updated command construction attatched
Most of the foundations are here, wrote a builder class, wrote a node implementation & wrote a test.
A tree-based command framework for my Minecraft plugins. Streamlines making more complex commands.
Did some documentation, minor changes to code. Ready to ship.
The improved renderer still needs a lot of work, but I'm going to save that for next ship. Did some work, renamed the browser to Karatasi (meaning paper in Swahili), and preparing to ship.
I'll probably update this project further later on, but this is ready for an initial ship. The enchantment is available through enchantment tables for both books & harnesses, and varies based on how many shelves you have.
Worked on the /ghasts command. Still need to implement higher args amounts, but making progress. The plugin may be ready to ship in the next devlog
Finished the enchantment configuration. Decided supporting reloads wouldn't make sense bc Minecraft registries cannot be modified at runtime, which would allow for a weird state where Minecraft and the plugin think different enchantments exist
Added the enchantment in game, implemented the speed boosts. Need to program the reload command and a few other minor things.
Minecraft Happy Ghasts are slow. This plugin allows enchanting harnesses in Minecraft to increase their speed & allows setting default riding & idle speeds. Might add more enchantments too.
Did some basic refactoring, including setting the new SimpleRenderer background to white instead of gray. Eventually I'll try to set background colors based off page CSS.
This doesn't look pretty but it's some progress. I added (working for the most part) hyperlinks. I did some more work with scrolling-now you cant scroll down forever, and you cant scroll over the top of the page. I need to work on making all Components render at their fullsize no matter the window size, in the screenshot they're still not even in their full size.
Spent a lot of time working on a second way of rendering things, which would make the browser much more usable. Wrote some renderers for certain elements. Panels, which is what all page content is displayed arent scrollable normally, so thats been a problem. Ive worked on making a scrollable version, and Ive got something going so far. Its not perfect, but its a start.
Got the config editor working fully, file saving, loading & all. Had to fix some issues with the Configuration class.
Finished most config implementation, still need to write the editor for it though. Moved logic for the back and forward buttons in the toolbar to a separate class to declutter the Screen class, probably going to move more things out of the Screen class too.
Started work on making a configuration, which will be editable in the browser. Worked on writing classes for it, and started on the file itself.
Wrote some more Handlers for files stored in the JAR. Not much to see really.
Implemented different Handlers for filetypes over the web, and added HTML support for files that are stored on the jar. Made the home page be one thats on the jar locally, so it can still load w/o internet
Did some refactoring with pages, added html support for jar files, working on moving over to a new system so less sites are blocked from loading by cloudflare
Among other things, reworked loading documents and added a way to load files that are stored in the jar, with jar:/ just like https://. Planning on adding file:/ to browse local files next. Also started reworking error page loading, so I wrote a new Exception that all Destinations will throw if they can't be loaded.
Worked on various things, including a way to size images based off window size.
Messed around with the ASCII image library, figured out sizing, might look at adding small images to webpages. For now, if a user enters an address to a image file the ASCII image converter will be used.
Tried adding image rendering w/ an ASCII image generator lib I found on GitHub, but the images were too large. Might make it so that the generator is used if you enter a link to an actual image. Added true element nesting w/ recursion, and I worked on changing some specific elements so it works better w/ the nesting & boxing.
Moved page loading to a different thread so the whole application doesnt hang if a website is slow or not responding, added a Loading Page with a progress bar.
Added a specific page for 404 errors, got an ASCII text generator library for heading tags
Various small changes, added full boxing around text elements like , , etc. Need to work on nesting now
Fixed image tags, added link rendering, other work, attempted to add a progress bar but the page loads too fast
Did some additional formatting work, got to implement formatting for more tag types, and figure out nesting
Worked on implementing the PrimitiveTextBoxRenderer - a solely text based renderer, so I can better understand jsoup. Formatting doesnt really work right now. Also wrote a html page on my website to act as the landing page when you launch the application
Worked on an error message page, updated code for the main browser screen
Worked on a main browser page, wrote a tool bar and just setup the web page so it would print out the html code, no processing
Did some work with message dialogs
Worked w/ Maven so I can compile & test outside of my IDE, changed a few things for the url entry UI, and wrote a method to normalize urls so more urls wont throw exceptions
Worked on taking the input from the text input page and processing it, for now just printing it out.
Wrote initial code, getting to understand the Laterna library
A terminal-based web browser, written with Java, using Lanterna & Jsoup. Settings configurable in-browser. To be added: Local file browsing Basic text editing Audio playing (maybe)
Initial work, start working on manager classes, User classes, project setup, etc.
Lightweight version of my main chat plugin, Strings stripped down to the more basic features.
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
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.
This was widely regarded as a great move by everyone.