Friday, February 20, 2015

TabbyChat 2 beta (mc1.8)

Update: I've fixed some startup issues when obfuscated. Redownload.

I've done some progress on TabbyChat 2 and am pleased with it so far. Currently implemented is timestamps, movable chat box, channel and pm detection, anti spam, and basic filters. Filters right now are able to redirect messages to other channels and that's about it. A new feature related to filters is live expression validation, meaning it will tell you if your RegEx is valid and what's wrong with it.

One other new feature that is implemented is the ability to change the colors of chat. You can change the colors of both the chat box and the chat text. I designed a gui to change them, so tell me how it is.

To access the settings, right click on the "*" tab. Right clicking on any other tab will take you to the settings for that tab.

By now, the API is mostly stable, so developers, feel free to start using it. In fact, I encourage it. That doesn't mean it won't change in the future, so watch for updates.

Because of new functionality in FML and LiteLoader, I am able to distribute using one archive for both versions, so no need to change the extension to litemod if you're using LiteLoader. However, Tabbychat now requires a dependency of my own, so be sure to grab that as well.

Here are the downloads for them. This is for Minecraft 1.8, so don't try using it on 1.7.10.

TabbyChat
Main | API | Deobf

MnM-Utils (required)
Main | Deobf

Report any issues you have with it. More features are to come.

Sunday, February 1, 2015

Kappa

Over the past few days (since Friday afternoon), I've been working on an annotation processor to help me deal with the many Forge annotations, and this is the result. It is called Kappa (Killjoy's Annotation Post Processor Application). Thanks to LexManos for the name. The source is available on GitHub.

It works with both 1.7 and 1.8 versions of Forge, but it does require Java 1.7 because of some String switches I use. What the Forge portion of this actually does is cause compile errors if the annotation isn't being used correctly, such as giving the wrong modifiers, providing the wrong return type, or wrong parameters. It also does type checking so things don't explode when you run it.

@Instance will check that the type is the same as the owner.

@SidedProxy is special. It will parse the clientSide and serverSide Strings and warn you when they don't exist. It will error if the types aren't compatible.

This is very easy to use with javac (simply add it to the classpath), but it's a bit involved with IDEs. See here for eclipse, and here for IntelliJ.