TheCSMods/mc-better-stats

[v3.0.0-alpha.1+fabric-1.20.1] A message for all project contributors

TheCSDev opened this issue · 12 comments

Hello everyone!
This GitHub issue is in regards to the new version of betterstats I am working on that I will soon publish an alpha version of called v3.0.0-alpha.1+fabric-1.20.1.

There are some important things I'd like to handle here before making a full release one day in the future, and for that I will need to relay some info to the contributors as well. Apologies in advance for the @mentions, I know the time-zones also differ by a lot as well, so sorry about that as well. The contributors I will tag here are:

... as most of those are the contributors who have contributed in the past like 2 months or so.

So, what's going on?

Altho v3.0 is taking me a long time to make, it will feature some big changes internally, and will have some extra useful features in the front-end as well, one of which you'll get to see in v3.0.0-alpha.1 soon as well. Not gonna lie, I am excited to show that idea to everyone.
However the biggest reason is, given how long it's taking me to fully complete this version, and how much time and effort has to go into this for me, I have decided I will update the license of this project yet again, this time back to LGPL v3.0, as I now feel like having a license such as MIT is too permissive, as anyone could take all that time and effort and turn it into proprietary software if they so chose to (which in a way, I now feel uncomfortable with, as I wish to promote openness and freedom).

Why does the license change even matter?

As far as I know (not 100% sure), the contributions so far were all translations, and when one contributes their work to this project, that work is automatically protected by Copyright law. In other words, I have no Copyright rights over your works, as they are all rightfully yours, which is completely fine. The issue starts presenting itself however, when doing things like this, such as changing an entire project's license, as (as far as I know), now I need consent from all Copyright ownership holders of the translation files, to change the license those files are subject to.
TLDR; If you contributed a translation, you own it according to Copyright law, and I need your permission to change the license those file(s) are subject to (as far as I know).

How I'll handle this

I have decided to completely exclude translations from the project for now, and am hoping contributors won't mind having to push them again (sorry for the inconvenience). Alongside that, the translation keys have changed a lot in v3.0-alpha.1, and I am yet to implement more of them. You may contribute new translations immediately if you wish to, but keep in mind that there will be more stuff to translate in the future than this alpha has to offer right now.

On top of that, TCDCommons API will now need some help with translations as well, all because of that file chooser utility I implemented there (you'll see it in action soon tho, I don't wanna spoil the surprise on what it's for).

-

So yeah, overall, I hope I ain't inconveniencing anyone with those pings or with these news. This is still an alpha that I'll soon release, and it may take a lot more time before a full release, so no need to rush if you do choose to help out. I am hoping I can also gather some feedback from the alpha version as well, altho not much has changed there anyways. If anything, there are more features missing there than there are ready to show off.

Aight, now onto the general info about v3.0.

What will be new in v3.0, and why will it exist?

I decided to work on v3.0 from scratch, basically a full rewrite, because of a few flaws I noticed in my mods that I wanted to correct, and because of the changes to the Minecraft's code as well:

  • Firstly, the biggest reason is because I wanted to finally implement a proper API into this mod, so other mod developers can make their own cool GUI stuff on the betterstats screen and so they could integrate their mods into this mod as well, but my code felt too messy to write an API for. Like, altho it wasn't bad and was written in a clean way, it still wasn't good enough.
  • The second biggest reason was because of the Minecraft update 1.20.X, which made a bunch of changes to the underlying GUI code, forcing me to write a bunch of "spaghetti code" just to quickly push a working version that works with the changes that were made to the game. This of-course, made the code even more messy, making writing a proper API impossible in that state.
  • Third reason, altho not the reason I started working on v3.0, is because I wish to add even more features into the mod, and as mentioned earlier, one of which will be present in the alpha version.

All features planned to be in v3.0 for now

If you have any suggestions for even more features, let me know.
I will also put a ✅ to indicate if a named feature is present in the alpha version I will publish, so you know what to expect there.

  1. ✅ Better Stats Screen itself (i mean, obviously)
  2. ❌ Better Stats Hud; Shows local-player's stats on the in-game-hud while playing
  3. ❌ Better Stats Network; Server-side utilities that can optionally be installed on the server
    • ❌ Seeing other player's stats via the network (may present privacy complications tho, which was overlooked in v2.X)
    • ❌ Real-time stats HUD updates
  4. ⏹ Player badge system
    • ✅ Ability to register player badges and their corresponding renderers
    • ✅ Ability to grant/revoke, as well as save/load player badges
    • ❌ Actually having them displayed on the Better Stats Screen
  5. ⏹ Config system
    • ✅ The config file itself and being able to create/edit it
    • ❌ Editing the config in-game (didn't implement the screen for that yet)
  6. ✅ Ability to save and load statistics files (doesn't affect actual stats) (spoiler, or ig technically not, since I just revealed it)
    • ❌ Ability to edit stats files and add/remove/modify stats; A stat editor, if you will
  7. ⏹ API
    • ⏹ Player badges - Note: I changed the way they are registered, for better formality reasons. Sorry if that breaks your mods!
    • ✅ Ability to create custom stat tabs, and place custom GUIs in there
    • ✅ Ability to create custom stat filters for custom stat tabs (not for the built-in stat tabs tho)
    • ❌ Ability to put custom menu items into the menu bar - Was gonna put that into alpha, but then I forgot to
    • ✅ Ability to open the Better Stats Screen yourself

Some other changes include

  • ✅ No more depending on Architectury API and Fabric API. I ditched them, so I don't have to embed them, and so as to take #62 into account. They were causing compatibility and security issues for people ig.
  • ✅ Only embeds TCDCommons, so people don't have to be inconvenienced by having to download it as well.

-

So in other words, a bunch of stuff is missing for now, but I'll work on implementing those as well, and I will be adding some extra features I may come up with such as that file system thingy. I personally find it so cool that people will now be able to share their stats remotely, via files.

Also, keep in mind the API code stuff may be subject to change while still in development, but I'll try my best to not make changes to it, so any potential developers can be more ready to work with the API.
If you wish to work with this mod's API, register player badges and their renderers, and so on, and you need help with it, feel free to reach out, and even provide feedback on what to implement. Also, I don't have a Gradle repo, so I guess use CurseMaven or local/embedded jar files or something.

TLDR

There's a lot going on ig. Sorry for making you all read thru all that, especially the contributors I tagged in here. Have a great day!

Note:
I just released the file here on GitHub in the Releases section. If anyone wishes to, you can check it out. Keep in mind it lacks some features from v2.X for now.

Yea, ofc, you can use translation and i can done it for 3.0

saying about config: you also mean that you cant edit it from modmenu?

saying about config: you also mean that you cant edit it from modmenu?

The ability to edit configs in-game, including from modmenu, isn't there yet. I haven't implemented the GUI for that yet, but will soon I think, once I continue work on v3.0.

As I already said before... You can use My translations without any issues. And yes, I keep supporting Your mods by translating them into My language.

Please, don't worry about legal nuances regarding my work — I present my translations as public domain (if possible), so everyone can use my work in a way they want. But yeah, the translation should be updated anyway. I just need to finish repairing my laptop to continue translating.

Note:

It appears I just found out that I have accidentally forgotten to remove a debug line from TCDCommons's code.

TLDR is;
During development, there was a time when the "menu bar" buttons weren't working at all due to input mishandling issues in my code. At the time, I debugged for a while, not knowing what's going on. Afterwards, out of frustration of not being able to spot the bug, I have written a debug line of code that would log a slightly inappropriate string of text to the console/logs when a menu button is pressed. The debug line managed to help me realize the button isn't handling the clicks, therefore that helped pinpoint the source of issue.

Debug lines are not an issue at all, but I did want to mention the following:
Prior to release of the alpha version of v3.0, I forgot to remove that debug line of code. So, if anyone just so happens to open the game log files for whatever reason, and stumble across a bunch of f- slurs in the logs and is wondering what's going on, just know that this line of code right here, that i forgot to remove is why.

-

Not gonna lie, it was quite funny to me when I found out I accidentally left that in. Hopefully that doesn't end up causing any issues. It is an alpha after all.

Anyways, I plan on releasing the next alpha version soon, once the config system GUI is fully complete, as I've finished the "stats summary" feature that shows up below all stats.

Edit:

There's little to no chance you encounter it in the logs tho, as the on-click event handler is largely overridden by betterstats I believe, but saying just in case it does show up.

Hey everyone!
I finally managed to transition from alpha into beta and release the first beta version.
A full release is close, after which the API will be ready and the translation keys will be fully ready for translating as well.

More into on this is* in the latest release I just published on GitHub*. Thanks again to everyone!

do you plan to making discord server? because it will be more comfort to report small bugs

That's an interesting idea.
I remember someone asked me that in the NUC comment section as well. I did eventually get the idea of linking a Discord in the mod's menu-bar where the links are, as indicated by this line in the latest translation file.
Tho I'm not 100% sure how to go about fully setting it up and maintaining it, and what channels to put in it and like what it's gonna be about and stuff.
I do technically still have an empty server lying around for like a couple years now, still unsure how to actually make use of it.

I guess I can try and think of something. If you have any ideas, that'd be great as well.

Just leaving a note to let everyone know the beta.2 release that got released today ended up being "Under manual review" on CurseForge after their automated systems failed to process the file. As usual, manual reviews taking them a long while to review the file. Once it's done and if it passes, it should be available here.

Also one more feature left to implement for the HUD screen and then it's done. I hope it'll manage to finish it soon. Have a great day everyone!

Hello again everyone, just here to let you know v3.0 is done, but I also just so happen to have discovered some bad news as well. I'll get into that now.

-

Basically, as I was testing the mod on Minecraft 1.20.2, I noticed some weird persistent crashes related to Fabric API's event system. "That's weird" I thought to myself, as I never used Fabric's APIs so as to not depend on it. I tried uninstalling Fabric API, only to get further crashes about Fabric API's classes "missing" (because ofc, i uninstalled them). "That's even weirder" I thought, as the mod does not interact with Fabric API in any way.

After some investigation, turns out, the crash appeared to be coming from my own event system I built so I don't have to depend on Fabric API and Architectury API. But the thing is, the only way to implement one is by using the Proxy.newProxyInstance(...) line of code when handling event handlers. The problem here is, the Fabric Loader itself makes a code injection somewhere in the Proxy class as far as my assumption goes, and this injected code requires Fabric API's presence in order to exectute. So whenever it does attemt to execute, it raises errors because Fabric API is either not present or when it is present, it makes BSS 1.20.1 incompatible with 1.20.2.

In other words

The sole attempt of me making my own mod independent from Fabric API by writing my own event system, ended up making the mod incompatible with the Fabric mod loader itself when Fabric API isn't present, because of the way the loader behaves... What a wild thing. And the only way to resolve this, is for having the Fabric developers themselves do something about this.

Words cannot describe how annoyed by this I am right now, and I do not feel like wasting more time rewriting the entire event system just to resolve incompatibilities with the loader itself (which btw, the loader made the only proper way impossible without Fabric API), so I'll just proceed, and if anyone gets any Fabric-API-event-system-related crashes, I'm not even gonna bother dealing with it.

-

Anyways, back to v3.0; It's all done, and I'm excited to show it to everyone. I got some more mod ideas as well, which may take a long time to make if I do proceed with them, so yeah. Have a great day everyone!

Edit:
By the way, I just noticed CurseForge all of a sudden loves placing my files "Under manual review", and their human reviewers usually take like weeks to ages to review and still haven't reviewed the last file. So I guess that's gonna be a long wait as well.

Edit 2:
I am currently working on porting to 1.20.2, and it turns out, even if there were no issues with Fabric, the Minecraft's code changed a lot anyways, so it 1.20.1 would be incompatible either way.