Well, I guess the “compile” dependency is gone in 5.0, isn’t it?
As to the others, I didn’t even know it was possible at all. So I’m not sure. Hopefully someone more familiar with the magic will know.
I know it’s not really addressing your issue… but I’m waaay overdue for a release on that. I’ll try to push one this weekend.
Edit: and if you were asking specifically about the 1.4 release then I’m not sure why gradle is unhappy… but most of those group IDs are wrong, though.
For some reason sim-ethereal did finally work as it should. When I run that statement using “compile” it works just fine now. Might of been a bug in 5.0 because I changed the gradle version to 5.1 and now works.
Lastly, Im not sure if slf4j worked like this before but now all you do is this.
LOG.info("Will walk from {} to {}", getCharacters().get(0).getWorldTranslation(), locOnMap);
Anything over two variables creates a new object, otherwise no.
Yes, for me it’s just easier to gate the trace logs because if a) I don’t need to remember how to format (or escape brackets) and b) if I ever add a third parameter then I don’t need to rewrite the whole statement. So I generally just opt for the isTraceEnabled()/isDebugEnabled() if blocks by habibt.
implementation 'io.github.simsilica:SimEthereal:master-SNAPSHOT' sounds like a jitpack dependency to me, but I think there were some troubles with pauls projects, because SimEtheral e.g. could depend on an unreleased version of SiO2 and thus SimEtheral Snapshots are unable to build because they’d need SiO2 Snapshots on their own. So I end up manually building sometimes.
Personally I had a bug in IntelliJ with implementation where only compile helped (but that was probably gradle < 5.0), where implementation worked fine unless the first build/sometimes randomly it failed to locate the dependencies. Specifying compile and building worked and then I could change it back to implementation. Just FYI.
There’s another good reason for that if you have “computationally intense” logs. E.g. lengthSquared() for human readable vector lengths, some strings you have to fetch from a database or anything like that. That’s what I figured makes the most sense to use them.
I adopted the isXXXEnabled() idiom so long ago that I’ve long since internalized all of the good reasons to do it. I just know it’s the 100% worry-free way to add a ton of logging for when you need it. And you are right that the largest factor was not really about the extra string builders.