#dev-general

1 messages Ā· Page 57 of 1

pastel imp
#

I assume using display entities

desert horizon
#

Nope

abstract osprey
#

~~ it uses Nova~~

desert horizon
#

Bossbar and fonts

desert horizon
abstract osprey
#

what

#

wtf are you in the dc for then

#

😭

#

is it just a similar impl?

desert horizon
#

Yeah. It's my own implementation of a WAILA.

abstract osprey
#

ahh fair enough

desert horizon
#

Tho, I did use the textures of Nova here

#

But I had to edit the block icons... all 991,
Because of how MC creates fonts.

#

Since it only makes them as wide as the furthest non-transparent pixel of an image (from left to right) did I had to add a semi-transparent background to all the images for a consistent size.

abstract osprey
#

oh man

desert horizon
#

Good thing there was a batch option in Gimp

ocean quartz
#

What is Nova?

pastel imp
ocean quartz
#

thanks..

pastel imp
#

there ya go

ocean quartz
#

I see interesting

desert horizon
#

It's quite cool

#

Its own WAILA is really cool (Especially since it also supports textures of blocks from like ItemsAdder) and was the inspiration for doing this myself.

desert horizon
#

Haha.... Just found out some characters force a Right-to-left direction and it resulted in this xD

abstract osprey
#

that’s what I don’t like about nova

#

It makes sense though

#

Bedrock support would be hell

desert horizon
#

I personally don't like plugins trying to support BE if they are made for JE

sweet cipher
#

The class I am taking now used Dafny for the beginning part of the semester

#

The loop invariants are pretty much just look at the post condition

prisma wave
#

fireeee

prisma wave
desert horizon
desert horizon
#

To whoever in the past talked about my plugin sending too much text: At least it isn't Iris....

desert horizon
#

I hope so too

desert horizon
#

I'm really that lazy that I made this:

public class FunctionKeyMap<K, K2, V>{
    
    private final Map<K2, V> values = new HashMap<>();
    private final Function<K, K2> function;
    
    public FunctionKeyMap(Function<K, K2> function){
        this.function = function;
    }
    
    public void put(K key, V value){
        values.put(function.apply(key), value);
    }
    
    public V get(K key){
        return values.get(function.apply(key));
    }
    
    public Map<K2, V> map(){
        return values;
    }
}

So that I can do this:

FunctionKeyMap<Material, String, String> texturePaths = new FunctionKeyMap<>(material -> material.key().asString());

...and have a map with String, String from a Material and String...

#

(Probs could be made better too... idk)

prisma wave
#

why not just EnumMap?

desert horizon
#

Because I need a String key as I use that for identfication and don't wanted to do the Material#key().asString() 20+ times

prisma wave
#

for identification
bit vague but okay

desert horizon
#

I get the block's namespace:id key later and check for it in the map.

#

Tho, my current system is a mess and I need to find a better setup...

desert horizon
#

Spent some time making a section on my website for my ecloud expansions...
Kinda shows how the Formatter expansion is the most complex/large one.
https://andre601.ch/expansions/

wintry plinth
desert horizon
#

I noticed an interesting behaviour with fonts that have been shifted using negative space widths

#

If the font has its shadow disabled is ir rendered behind content following

#

Like f.e. I disabled the shadow for the block icon and here it's gone.

#

But when I re-enable the shadow is it displaying properly

#

Really interesting behaviour

desert horizon
#

(Also didn't know that there was a v3 lmao)

wintry plinth
desert horizon
#

We could probs suggest it. Tho unless it's tracked internally already would the stats probs not be accurate

desert horizon
wind patio
#

why no spaces between () and {}

ocean quartz
#

White space price is too high nowadays gotta save up a bit

#

MD5's parenthesis style is hoarding all the spaces pepeLaugh

desert horizon
wind patio
#

i would suggest some improvements, but i cant look at it due to missing whitespaces

#

šŸ˜” 🫰

desert horizon
#

mood

distant sun
desert horizon
#

wohoo! My expansion is on the first page

#

right above itemsadder (img is from itemsadder)

desert horizon
#

Need to push it now

desert horizon
#

Of course when I want to update the site are the actions runners causing issues... Have to wait I guess

desert horizon
#

Okay, it's now live

desert horizon
#

Since I started using the ItemsAdder API have I found various issues... Really hope LoneDev will fix them.

desert horizon
#

Meh...

#

I don't bother because A) Don't want to spend money and B) don't want to support something that is part of some stupid drama

pastel imp
#

lol

#

but oh welp

#

keep hoping for your fix then

desert horizon
#

I mean, I am in direct contact with Lone...

#

And he's always open to improve stuff

pastel imp
#

god claude sucks with svelte 5 xD

#

brilliant with 4, but 5.... gosh xD

desert horizon
#

Ah yes, Thanks IntelliJ...

#

Not sure what I can or should do here honestly...
Want to try out a library, but it only has a single Event class with a method. All other ones only extend it... And I don't want to do countless instanceof checks in a row here...

brazen ether
#

generics are a pain

potent nest
#

Thatā€˜s not IntelliJā€˜s fault

brazen ether
desert horizon
#

Yeah, and the "expected capture of ? but got capture of ?" doesn't help much there

potent nest
#

Yeah you have to understand Java for that I guess

wind patio
#

any recommended DI libs? Guice, dagger, spring?

crude cloud
#

yes

wind patio
#

šŸ˜” 🫰

#

ima juice it

crude cloud
#

idk they all kinda just work, requiring scaffold and setup of different kinds to varying degrees

#

it also depends on how complex your project it, i don't often find myself needing a DI framework or in a situation where it would make things easier or something, but i like dagger personally; if i were to be doing something with spring i'd use spring di ofc, or if i'm making a velocity plugin i'll be using guice since it's built-in, but eh

#

just try whichever and see what you like i guess

wind patio
crude cloud
#

omg it's john tesla

wind patio
#

currently trying out guice

crude cloud
#

the inventor of tesla

#

ah that tries to be more than just di but a whole spring framework harold

wind patio
#

kinda yeh

desert horizon
#

I have a hard time understanding the purpse of DI here... Tho I also never had any need to use it, so it's just lack of experience for me I would say.

wind patio
#

or by here you mean you dont understand the purpose of it

desert horizon
#

ye

wind patio
#

well, in a typical rest api scenario (for ex. Spring app), you would have a controller, which handles the request/response, a service, which handles validation and data fetching from repository and a repository, which does the actual database queries

in this example controller has a service dependency, which is "injected" into the controller, service has a repository dependency.

a DI library would make your life easier in a way where you would not need to do the usual "new ObjectService()" and then pass it to the controller "new ObjectController(objectService)" (same for repository)

#

also for singletons, you dont need all the "instance = this / getInstance" boilerplate, since a DI library can usually handle that for you too via a single annotation

#

well that's just from my experience, someone can correct me if Im wrong

prisma wave
#

It depends what you’re trying to explain exactly

#

I think that’s a good explanation of dependency injection as a process but not necessarily why you’d want to use a DI library

#

DI libraries like guice handle the basic boilerplate but they also move even more away like binding interfaces to implementations, calling factory classes where necessary, and they encourage you to compartmentalise your code a lot more

wind patio
#

yeah that was a part of the explanation, but yeah, DI libs basically just reduce boilerplate

#

for DI lib ex. I don't need to manually instantiate and store VouchersRepository as a field/variable and I can just "inject" as a parameter anywhere I would need

||oops thats a service and not a repository, but the idea is the same||

brittle leaf
#

when wrapping text, does it look better to have the last word wrap if it goes over the length limit, or to allow that word and then on the next word wrap over?

#

cus im trying to figure that out

prisma wave
#

The answer is probably very subjective haha

#

How would you even do the second option though, without overflowing the view area?

agile galleon
#

^

desert horizon
#

I feel like it depends also in what context it's used

#

For example: Javadocs.
I want to keep a consistent width for the comment, but when a method or class link goes beyond that am I accepting this (or worst case put that entire thing on a new line, but that usually makes the other line look really short and cut off.)

brittle leaf
#

i probs shouldve said the context, this is for an item's lore

desert horizon
#

I feel like a hard limit is needed here, especially since if it gets too long it can become hard to read on certain GUI scales and screen resolutions

#

Kinda sad that Mojang doesn't have automatic wrapping of long text in lore... I mean the Figura Mod has it!

distant sun
#

Is possible to track user interaction and link clicks in a CSR app? I want to see how many clicks I get for each url from my site that sends the user to another website.

brittle leaf
#

just started messing about with nbt data on itemstacks again. interesting that they have made some hella changes to how that works, very interesting

#

i havent touched them since i was working on 1.19 and its just a few extra lines to modify it it seems

brittle leaf
#

only a little different. you call for CUSTOM_DATA rather then calling the tag directly from the nms itemstack object

wind patio
#

or Posthog, Plausible, Mixpanel

#

or use backend proxy

ocean quartz
#

Posthog is pretty nice

wind patio
#

via posthog you can probably do something like:

document.addEventListener("click", function (event) {
  const link = event.target.closest("a");
  if (link && link.href.startsWith("http") && !link.href.includes(window.location.hostname)) {
    posthog.capture("outbound_click", { url: link.href });
  }
});
agile galleon
#

Umami is lightweight and great

distant sun
#

Ill probably use google analytics. Thanks.

distant sun
wind patio
# distant sun Wdym?

well instead of

<a href="https://someurl.com">Blah</a>

you would use a backend

<a href="/redirect?to=https://someurl.com">Visit Example</a>

Where you would "capture" the click

distant sun
#

Yeah my question was more about where can I track the data

brittle leaf
wind patio
distant sun
#

Fair

wintry plinth
agile galleon
#

And, additionally, blockers like uBlock don't block your own domain when you self host it

abstract osprey
#

I swear to god it didn’t have that before :/

crude cloud
#

and you'd be correct

#

it didn't have that before

abstract osprey
#

I last used PDC with the 1.21.1 API

crude cloud
#

1.21.1 kekw

abstract osprey
#

I remember being like

#

ā€˜Man, I wish I could access offline player PDC’ while being too lazy to check the OfflinePlayer methods

#

Maybe it was just the docs that didn’t reflect the change? I was using the api last year Thonk

forest pecan
#

I really wish I could use something other than citizens for NPC libraries

#

There’s npc-lib but even that is nothing but using citizens is annoying because I feel like I encounter a bug for every fresh build…

#

And it’s like the only NPC plugin out there

wind patio
#

time to create a new competitor - "Foreigners"

abstract osprey
#

are you using citizens traits

desert horizon
remote goblet
#

FancyNpcs is a banger

#

but thats like 1.21 + iirc

ocean quartz
#

Good you shouldn't be using anything lower than that

desert horizon
#

Using older servers is ewww

#

Same using spigot

pastel imp
#

I might hate vue more than react rn...

#

updating the whole frontend of hangar is gonna be SUCH a pain

desert horizon
#

good thing I don't touch either I guess

pastel imp
#

xd

pastel imp
#

HELP

#

whenever I click print screen button

#

Intellij opens?!

#

like tf

#

out of a sudden

ocean quartz
#

Sounds like a nice feature

pastel imp
#

not when I a ctually need that button

#

bro wtf

wind patio
#

win + shift + s?

pastel imp
#

but why is the print screen assigned to opening god damn intellij

ocean quartz
#

Did you setup some macros or something?

pastel imp
#

this suddenly happened

#

lmao

#

hella weird

desert horizon
#

I just read that HashMap isn't synchronized. What would that affect, if anything?
Because I want to ensure keys are not duplicated (I did encounter such an issue in the past funny enough, which shouldn't be possible?), so not sure if synchronization here is important or not...

potent nest
#

if you want to use a map with multiple threads, don't use HashMap

desert horizon
#

That isn't a concern of mine really.

wind patio
#

ConcurrentHashMap?

wind patio
steel heart
potent nest
crude cloud
#

a synchronized hashmap is only ever really helpful when you are dealing with multiple threads

#

if you are not dealing with multiple threads, then the fact it isn't synchronized does not matter to you

#

yeah what is the concern?

desert horizon
#

duplicate keys. But since that only happens on multiple threads, which I'm not having here should this not be an issue.

#

Although... the method is executed by Cloud's Paper command manager

#

And it's set to use async command handling, so there probs could be such an issue

crude cloud
#

well, do you need async command handling?

abstract osprey
desert horizon
abstract osprey
#

used on the HashMap

desert horizon
desert horizon
crude cloud
#

multi threading is not the kind of thing you throw to the wall and things just work

#

data structures and operations need to be specifically designed for it

#

otherwise completely unexpected effects might happen

#

anything from an outdated field read to a jvm crash, deadlocks, etc

#

so yeah it does hurt to have simply because the option is there

#

it makes things harder to reason about and work with, so you need to evaluate if running things across separate threads is an improvement to your system and how much of an improvement

forest pecan
#

Usually the ā€œless timeā€ benefit from parallelization doesn’t make a big difference for things like commands

#

In fact, there might be more overhead sometimes by just creating extra threads itself rather than just running them sequentially on the main thread

#

Also from a developer standpoint, you have to handle now that everything is going to be possibly called not on the main thread, and if you’re accessing the Bukkit API, well.. wouldn’t that be a bit annoying?

#

You would need something that’s intensive that would ideally be able to be mostly independent so you don’t have to worry about syncing information as much or anything like that

desert horizon
#

Well, looking at the docs, the asynchronous stuff is apparently the command suggestions stuff and uses Paper's own async API for it alongside Brigadier

#

(Or well, Brigadier is used first if available, followed by Paper's async API from what I can decypher here)

crude cloud
#

if you're explicitly using the async coordinator, everything related to cloud will run on its own thread pool

#

parsing, execution, suggestions, exception handling

#

not just brigadier suggestions

#

it is best to use the simple coordinator

#

unless you have a reason otherwise

brazen ether
#

anyone interested in hiring CodeBreaker_ShadowScript

#

bro went with a Pinterest hacking pfp 😭

prisma wave
#

i love hacking

abstract osprey
static zealot
#

The hacker

desert horizon
lavish notch
#

There seems to be some sort of exploit on SpigotMC that allows users to change the currency at checkout when purchasing a premium plugin - someone bought ShopGUI+ for 20 czech crowns instead of 20 USD - has anyone heard about this?

crude cloud
#

isn't the transaction entirely handled by paypal or something like that?

lavish notch
#

I'll wait for Spigot to hopefully fix it and then disclose exploit steps.

crude cloud
#

lol

#

gg

static zealot
desert horizon
#

I have my honest doubts it will be fixed, unless they really work on the xenforo thing

#

....or you know.... remove paid plugins

lavish notch
# desert horizon ~~so probs never~~

MD_5 has already replied to my email believing there to not be an exploit and that he has messaged BRC about it. So I'll wait to hear from BRC about the details MD_5 has given him.

crude cloud
#

"yo there is this exploit you can do by doing this and that"

#

"no"

lavish notch
#

He's the one who initially discovered someone paid 20 CZK instead of USD for his plugin and still got added to the buyers' list.

half harness
#

Oh

agile galleon
#

Maybe it wasn't the best idea to publicly announce that there is an exploit

cinder flare
#

well didn't you hear, md5 said there's not bro

agile galleon
#

If that what I'm looking at is the exploit then it's very easy to find (i hope it isn't)

agile galleon
#

Does it still work? I don't want to be poking around myself in these dangerous waters

steel heart
#

cant believe Id ever have to do this, but lets ball

pastel imp
#

Wait what

#

Who announced an exploif

#

And what

potent nest
#

joe

pastel imp
#

Bruh

agile galleon
#

Then that's the stupidest fucking thing I have ever seen

#

I pray for md5 to have disabled automatic verification or something

wind patio
#

didn't really know what the bug was

#

took me like 10 seconds to find

pastel imp
#

bruh

#

ye

wind patio
#

that's what no server-side validation gets you

pastel imp
#

this can be abused so easily

abstract osprey
#

I’m more shocked at how this has only been discovered now

pastel imp
#

I knew md_5 was stupid, but didn't know he was THIS stupid

#

like, it's just a matter of time until this spreads

abstract osprey
#

This isn’t even like.. a minor exploit

Which makes it even worse

wind patio
#

I think automatic verification is disabled, so not much use

pastel imp
#

this is going to affect many people

#

but tbf, in the bright side, maybe people will move out of spigot because of it

#

I am down for that

abstract osprey
#

don’t worry! md_5 says there’s not an exploit so we can all move on with our day :)

pastel imp
#

yeah exactly!

#

does that mean I can tell all my friends and their families about the exploit?

#

should probably ask md_5 that

#

oh wait

abstract osprey
pastel imp
#

sorry

#

the non existent exploit

abstract osprey
#

smh

pastel imp
#

gonna try to see if I can contact anyone that has some type of influence/contact with md_5 to make him see things clearly

#

lol

#

tbh

abstract osprey
#

cough

pastel imp
#

I would let it burn

#

gladly would

abstract osprey
pastel imp
#

but this doesn't affect only the platform

#

it affects developers...

abstract osprey
#

it affects a lot of pissed off developers

pastel imp
#

(which tbf, their own fault they chose to use spigotmc)

#

wanna know something even funnier?

#

you can change both amount and currency LMAO

#

@lavish notch ^^

wind patio
#

yeh

agile galleon
# pastel imp

Does it verify you automatically for the download of the resource? Or has he disabled it

pastel imp
#

I don't want to abuse it...

#

so idk

agile galleon
#

Same same

lavish notch
#

@agile galleon @pastel imp So it turns out the user wasn't added to the buyer's list with the cheaper purchase.

They made a full payment aan hour later under a different PayPal email and was added then.

agile galleon
#

Ah great, false alarm then

wind patio
#

based?? based on what

desert horizon
desert horizon
agile galleon
#

It's just you sending the developer a donation, as you don't get the plugin according to Mackenzie

desert horizon
#

Would you be okay to share the details with me in DMs?
I would like to make some devs of premium plugins aware of this, so they know and can possibly take meassures.

agile galleon
#

Measures against what exactly?

desert horizon
#

šŸ¤·ā€ā™‚ļø

#

Just want to make them aware, so they aren't confused why some random user sends them like 1 cent in a random currency or smth

pastel imp
pastel imp
#

Okay that is better

steel heart
crude cloud
#

prolog is really interesting

#

conceptually

#

but who would ever actually write that lmao

forest pecan
#

wtf 😭

#

import static me.clip.placeholderapi.libs.kyori.adventure.text.Component.empty;

#

intellij importing the wrong one

steel heart
#

Lol

wind patio
#

I have a weird problem with IntelliJ - my "test sources" for a module are not being recognized.
I tried marking them as "Test sources root" via the IDE, but it gets reverted after reimporting the gradle project.

#

tried various things, for ex. my root project build.gradle:

subprojects {
    idea {
        module {
            testSources = files("${project.projectDir}/src/test/java")
        }
    }

    sourceSets {
        test {
            java {
                srcDirs = ["${project.projectDir}/src/test/java"]
            }
        }
    }
}
#

and module build.gradle:

sourceSets {
    test {
        java {
            srcDirs = ['src/test/java']
        }
        resources {
            srcDirs = ['src/test/resources']
        }
    }
}

idea {
    module {
        testSources.from(sourceSets.test.java.srcDirs)
    }
}
#

any ideas what might be wrong? can't seem to figure it out at this point

crude cloud
#

I don't use the idea plugin and never specify any source set directory (unless it's custom stuff) and it works wonders dviperLike

wind patio
#

I had the test dir before, then I removed it completely (somehow), and now I cant get it back lmao

ocean quartz
#

Just java or java-library plugin, don't touch sourceSets and by default both main and test work just fine

crude cloud
#

the key is to not touch anything

wind patio
#

true that

wind patio
#

alright, well, the issue was .idea/workspace.xml had the <module>.test in "unloaded modules" section

agile galleon
half harness
#

ok I imported the settings from intellij and it's much better now šŸ™ƒ

brazen ether
#

i hate this game

#

one is blended and the other is occluded in thsi screenshot

#

the difference?

#

SPAWN ORDER

#

fucking SPAWN ORDER makes this difference

#

that's so stupid! this is garbage graphics programming!

abstract osprey
#

Mojang makes this shit unbearable enough without touching that

wind patio
#

Using build.gradle my output jar was around 20mb, I migrated to build.gradle.kts and the jar dropped to ~13mb.
Is it normal or did I miss something when migrating?

wind patio
#

nvm I see org/sqlite is for some reason excluded or just straight up missing

brazen ether
#

lmfao

brazen ether
wind patio
#

yeah I dont understand why, there are no changes anything regarding sqlite

#

the one on the left is when I built after migrating to .kts

#

org package does not contain sqlite for some reason

#

I mean, I haven't added implementation() for sqlite, but for some reason build.gradle includes it, build.gradle.kts does not

crude cloud
#

i mean, i would need to see both scripts side by side

wind patio
#

I'll try to see if I can post it tomorrow, gtg sleep

#

but yeah, a very weird issue

#

also if I do include sqlite jdbc in build.gradle.kts, the output jar is ~28mb, which is higher than build.gradle output jar (reobfJar)

#

my only guess is that shadowJar's minimize option is more strict/aggressive in kotlin dsl and sqlite is being removed due to being brough transitively

#

I suppose I can try to debug minimize, see what it removes

crude cloud
#

that does not make any sense

#

a plugin can't know the dsl used for writing the script

#

also minimizing is cringe

brazen ether
#

just decompile the jar

#

you don't have to guess

#

uon even gotta decompile it

#

legit just unzip your jar

#

and you can see what's in there

half harness
#

I'm guessing that the issue lies in an mistake while migrating from groovy to kts

#

especially if it was your first time

#

not a shadow issue

static zealot
potent nest
#

so based

wind patio
wind patio
forest pecan
#

I finally got my own repo set up šŸ’€

#

it took me like 3 hours lmao

#

trying to get nginx to work

desert horizon
forest pecan
#

this was my first time

desert horizon
#

Ah, you mean repository like that

#

I assumed you meant a git repo service

forest pecan
#

oh nah

#

i wanted my own repo because it'd look nice

#

and also i cba publishing to central

desert horizon
#

I personally just use the repo host's packages thing, which thankfully allows anonymous access unlike GitHub

forest pecan
#

Yeah

desert horizon
distant sun
#

Why are you making an api for the api of american sign language?

desert horizon
#

Because:

brazen ether
#

asl-api-api

#

I have a genius idea for what my next project is..

pastel imp
#

Let me guess

#

Asl-api-api-api?

desert horizon
desert horizon
#

Huh..... Just made an update for the API and this time it was processed without any real issues.
The past times I always had a timeout with a "bad request" error.... Only thing I really changed was adding a <groupId>...</groupId>, to the individual pom.xml files of each module (which is redundant as they inherit it from parent)... So I guess forgejo doesn't like the pom not having a missing groupId, or the generated metadata file was messed up....

distant sun
#

Wasn't there a website that had all mc items / blocks and you could embed them on a website? I need something for a project.

still portal
distant sun
#

cool, thanks!

desert horizon
#

(Probably)

abstract osprey
#

random question but, does anybody have some good resource for mc sounds?
making a plugin/gamemode and good sounds (pitch/vol/sound combinations) are really hard to get right KEKW

surreal garnet
dry harbor
#

That's what I do too lol

#

Like you'd be surprised how good pufferfish blow sounds are for picking up / dropping items šŸ¤”

spare falcon
abstract osprey
#

oooh that's a good shout

#

thanks y'all ^^

#

i'll go stalk 8 year old spigotmc forums too prayge

lavish notch
#

Does anyone know how / if it's possible to dynamically unregister a command on startup?

Basically looking to have a command that can be disabled via a config property and I'm having difficulty unregistering it - so far managed to get it to produce the usage message defined in the plugin.yml but no further... looking for a unknown command output and thus another plugin will be able to take priority should it have a command with the same name registered.

potent nest
#

could you register them manually instead?

static zealot
# lavish notch Does anyone know how / if it's possible to dynamically unregister a command on s...

We have dynamic commands for DeluxeMenus. The code for it is here: https://github.com/HelpChat/DeluxeMenus/blob/main/src/main/java/com/extendedclip/deluxemenus/menu/command/RegistrableMenuCommand.java

I had ran into the problem with commands not unregistering as well. The problem is I don't think you can completely unregister them. There is always some fragments of it remaining until a server restart. If I remember exactly, it's actually the bukkit:help command which has no way of unregistering a command. But other than that, it is unregistered from all other places.

lavish notch
lavish notch
potent nest
lavish notch
static zealot
lavish notch
#

šŸ˜„

desert horizon
#

And afaik does IA execute the command using performCommand(String)

static zealot
desert horizon
#

From what I recall, no. It appeared red when typed, but entering it still executed it, if I did so via chat, not via the item.

static zealot
#

Well then the command wasn't actually registered. To do that you have to add register_command: true inside the menu and restart the server.

#

I think if the command isn't registered, it simply listens for the command process event or whatever it is called and executes the code then

desert horizon
#

Seems a bit weird

static zealot
desert horizon
#

that you would need to separately configure it to register the command to begin with.

static zealot
#

I guess? The option wasn't always there and even after it was added, it was quite buggy. We had a bug going on for years and it was only recently solved for example. /dm reload didn't properly unregister the aliases and didn't let go of the old menus so you would be able to open menus without changes being applied to them.

#

And not everyone wants tab completion for all commands. Sometimes they want the commands to be used by other plugins and such

forest pecan
#

Correct me if I’m wrong, but setting the order of a ByteBuffer using ByteBuffer#order never actually changes the contents, but only influences the read and write methods correct?

#

I’m supplying a byte[] from a native application that always provides the order in native endianness

#

Since I use ByteBuffer#wrap and ByteBuffer#array a lot, if I were to wrap my native endianness byte[], then set the byte order using ByteBuffer#order, and then call the array function back, it’s not like any of the values are actually converted. Since in the wrap function they assume that your data is already in big endian format and it only actually uses the order in the read and write methods

wind patio
#

yes

forest pecan
#

Ok I spent like an hour or two debugging this

#

lol

wind patio
#

just make sure that when you read from or write to the buffer, the ByteOrder matches that of the underlying data
the data itself is untouched unless you explicitly modify it

forest pecan
#

Yes exactly

forest pecan
#

Actually that makes entirely sense, because endianness only affects the bytes in the data type and not an array. An array of bytes in small and big will have the same corresponding bytes in order

potent nest
#

Cool people use VarHandles instead anyway

crude cloud
#

no they don't when the HH plugin is BROKEN

#

it deleted my intellij

potent nest
#

Itā€˜s 100% bug free (besides some bugs)

crude cloud
#

it bricked my firmware

potent nest
brazen ether
wind patio
#

So our "team lead" insists (since we have an "agreement" (which I don't even recall) to prefer to use Stream API instead of for loops) that I should change this for loop (for a dynamic query building):

for (var data : maskedData) {
    var field = table.field(data.columnName(), String.class);
    var value = data.maskedValue();

    updateStep = updateStep.set(field, value);
}

into Stream API, which would look something like:

updateStep = maskingOperationResults.stream()
    .reduce(updateStep,
        (step, data) -> step.set(table.field(data.columnName(), String.class), data.maskedValue()),
        (step1, step2) -> step1); 
    public void update(/* ... */) {
        // ...
        var updateStep = dslContext.update(table)
                .set(table.field(DATE_MODIFIED_FIELD), Timestamp.valueOf(now))
                .set(table.field(USER_CREATED_FIELD), adaUserCreated);

        for (var data : maskingOperationResults) {
            var field = table.field(data.columnName(), String.class);
            var value = data.maskedValue();

            updateStep = updateStep.set(field, value);
        }

        // ...
    }

to which I told I don't see any advantages of using Stream API here and it just makes it less readable. thoughts?

prisma wave
#

i mean i would be in favour of the stream api in principle there since it's a textbook fold/reduce but reduce is kind of an annoying method i guess

oblique heath
#

i think you should prefer whatever is more readable

#

and as much as i love fp, in most complicated cases imperative programming is more readable

distant sun
#

Yeah I sometimes use for loops over stream api because I have more control over the flow and the code is more readable that way (imo).

brazen ether
oblique heath
brazen ether
#

it's hilarious

prisma wave
wind patio
oblique heath
#

imo for reduce specifically, unless you can pointfree the perfect method it usually gets out of control quick

wind patio
#

I would understand if its a bad implementation, difficult to read or poor performance, but I am sure none of these apply in this case

#

generally I would just "fix" it and go on with my day, but it's not the first time I get "change this but it will not have any effect whatsoever I just want it to be this way" code review comments and it's getting annoying lol

#

probably an indicator to look for a new job

brazen ether
prisma wave
brazen ether
#

ts really is art. beautiful

prisma wave
#

perhaps .set is a bad name for this kind of method because it implies a mutable update

abstract osprey
# brazen ether

i'd love to interview one of these people and know their train of thought in this

abstract osprey
woeful flame
#

i completed that commission. honestly, it wasn’t anything huge they just wanted some basic mechanics modified, I'd say $80 isn’t too little for that, at least in my opinion

crude cloud
#

i love streams!

#

but j.u.s is meh

#

reactor!

abstract osprey
forest pecan
#

Streams are a pain to debug

#

In my opinion I would rather use the loop in this case

brazen ether
cinder flare
#

if you had to use streams, honestly i would probably prefer a .map().forEach(), so it's clear that you're mapping to a pair of columnName -> data, then setting that in the query builder or whatever

#

now if you could pass in a hashmap already populated with that data to the query builder, then you could just map().toHashMap() or whatever and pass it in and that would be pretty nice

wind patio
#

anyways, my tech lead is annoying as fuck sometimes

#

always with this back and forth, we talk, we come to a conclusion that what I did is "good", but then he comes back and tells me to re do it lol

#

"SOLID", "OCP" blah blah blah

bro I don't care, it works, it does the job, its readable, the performance is fine, its not that difficult to maintain, just fuck off already

#

so yeah, see yall next monday

onyx loom
#

the managers just gotta keep you working for no reason

crude cloud
#

egh

#

hate people that follow those "principles" like they're bibles

#

even calling them principles makes me gag

#

guidelines :)

wind patio
#

god forbid you make a class that does TWO THINGS

#

oh no no no young buck that aint gonna fly

forest pecan
#

Does anyone know like some website that provides compiled dummy shared libraries across Linux platforms for like different arch

#

I'm using a Java library that uses OpenCV which loads a library functionality that's not even used, but only the name is used for linking if that makes sense

#

it uses libgtk but its not even needed for my usecase cause i have nothing to do with ui

#

and im just trying to load a fake dummy lib so it thinks that it exists

#

Actually wait Go cross compile is perfect for this so I don't have to get into docker mess

desert horizon
#

Currently thinking about adding support to my plugin for merging multiple images into a single one to use as the favicon, but I'm not too sure how I should implement this into my FaviconHandler...

To not break pre-existing configuration (And to also not having to deal with checking for what type the option is) would I probs go with a semi-colon separated String to determine the invdidual parts.

Difficult part is - as mentioned - the FaviconHandler. Would apreciate ideas for it:
https://codeberg.org/Andre601/AdvancedServerList/src/branch/master/core/src/main/java/ch/andre601/advancedserverlist/core/profiles/handlers/FaviconHandler.java

To clarify: The F generic is the Favicon instance the server/proxy is using. and the createFavicon(image) method simply uses whatever method the server/proxy provides to create a Favicon from a BufferedImage.

desert horizon
agile galleon
#

Cloudflare is blocking GitHub actions from accessing my Reposilite instance, any ideas on how to fix this?

agile galleon
#

Recreated it a third time but now custom building that and now it works, apparently the Edit Zone template isn't correct anymore

pastel imp
#

Yoo any volunteers to get tagged on a tweet? Appwrite doing a giveaway and I gotta tag 3 devs... thing is.. me not use twitter at all soo me have no one there 🄺

desert horizon
#

Eh.... idk

pastel imp
#

the winners would get a custom hoodie with a contribution graph

#

which mine would be 0

#

which seems unfair to others

lavish notch
#

Looking for opinions, I can't decide if this Java warning message is obvious/big enough for the below average (or average at this point) SpigotMC server owner... what do you guys think?

I'm going to pop it as an on-join message for server operators as well but I'm contemplating adding line breaks above and below or something similar to emphasis it more.

For context, I have a feature release pending (Folia Support to be specific) which requires Java 17 and the plugin is currently Java 8 based. I want to avoid the negative reviews and sentiment from idiots not be able to read basic error messages like 'Compiled with a newer Java version'.

#

*also ignore the typo in the warning message lol, just noticed as I posted this

potent nest
#

I assume you are only printing the warning when using <17?

potent nest
#

I mean I guess it can't be any clearer than that

lavish notch
potent nest
#

if they complain because they're bad at managing their servers, there isn't much you can do

ocean quartz
#

If someone runs the server with hundreds of errors on startup then they deserve to not see the message

lavish notch
#

Beginning to wonder if this is too much text for an on-join warning and if I should include like a Java X detected, please update so the reader gets the idea that the message will go away when they update the server Java version past 17.

oblique heath
#
  • add a config option to disable that ig
#

since someone will always complain

pastel imp
lavish notch
lavish notch
desert horizon
#

You cannot avoid this

lavish notch
desert horizon
#

Bruh, Barry being mean

lavish notch
#

Even Barry is after me. 😦

desert horizon
#

I f.e. have this, but I'm sure people will ignore it

lavish notch
desert horizon
#

And lazy

lavish notch
#

That too.

desert horizon
#

Not to long ago did someone ask for support while using v3.3.0-b1

#

Which is the latest version I have on Spigot

#

...where I have this big text at the top of the page

lavish notch
#

Ouch

wind patio
#

at least you did your part

#

also personally I would log with WARN level, not INFO šŸ¤“

lavish notch
wind patio
wind patio
cinder flare
#

lol Paper 1.19+ is the way to go

#

that's still like 95% of servers and is a massive upgrade

lavish notch
#

This is SellGUI's bstats for reference.

#

SellGUI being an addon for ShopGUI+

wind patio
#

so from this chart 1.8 is lower than 0.5%, whats the point of supporting it

#

you are just holding yourself back lol

cinder flare
#

yeah I stand by my assessment lol

#

that's even better than i thought it would be tbh

lavish notch
#

I would happily jump to 1.19+, it's just ShopGUI+ is such an old plugin that many still use it on say 1.8.

cinder flare
#

then they can still use all your older versions lol

lavish notch
#

Bare in mind, the graph I sent is from an addon which not all SGP people use and also some people turn bstats off.

cinder flare
#

it's not like you're deleting it, just not actively updating it

wind patio
#

I don't think old server versions that you would drop support for would even need any "new" features, given there would be any

cinder flare
#

yeah exactly, if they want to use an 11 year old minecraft version, they can use a 1 year old addon version or whatever

wind patio
#

as Star said, they can continue using old versions

lavish notch
#

True true.

#

Well, I suppose I can pop dropping 1.16 and below on the table maybe.

wind patio
#

you deprecate old stuff and tell the users to move on and update or use unsupported versions

lavish notch
#

The negative reviews though. sadgesip

wind patio
#

who cares lol

lavish notch
#

Me sadly. sadSit

wind patio
#

imo the plugin is popular enough, people can also have their own opinions without looking at the reviews

lavish notch
#

Fair enough.

wind patio
#

usually I just ignore version/update or outlier complaints since they don't bring any value

pastel imp
pastel imp
lavish notch
pastel imp
#

Majority is 1.18+ at least

#

1.18 should be the lowest anyone should go

#

(Totally not because of minimessage being included on paper)

#

Tbf my opinion is biased af

#

Afterall, I am the one losing countless hours redesigning Hangar lol

#

So ofc I will be biased towards paper

#

And newer versions

lavish notch
#

šŸ”„

pastel imp
#

confusion

desert horizon
#

Also, any of you good with python and pip?
I've reset my PC and now installed python again (Via their Python install manager) and now want my pip install s to be stored on the D: drive instead of C:
I changed the --target via PIP_TARGET environment variable, but now installed packages that add a command - in my case MkDocs - don't have the command installed and working... Not sure what else I can/should do.

wind patio
#

I remember I had to use python and pip back in the day

#

this shit was so annoying

desert horizon
#

Yeah, it can be

pastel imp
desert horizon
#

All I really want rn is have packages be installed on D: instead of C: as the later is mainly for the OS itself

wind patio
#

iirc the issue is that the entrypoint is wrong

#

you could try using virtual environment

#

well, you can do this:

#

Install on another drive:
pip install --prefix=D:\python-packages mkdocs

Modify your PATH environment variable, add:
D:\python-packages\Scripts

Create a new environment variable PYTHONPATH, set the value to:
D:\python-packages\Lib\site-packages

desert horizon
#

uh....

#

I feel like we have some differences here?

#

Like where does the Scripts folder come from?

wind patio
#

when you install via pip install --prefix=D:\python-packages mkdocs it creates it

desert horizon
#

That's.... annoying

#

I probs just bite the sour apple and have packages on the default drive until I find a fix...

wind patio
#

well, if that makes any difference I have Pip v24.3.1 and Python 3.10.6

wind patio
desert horizon
wind patio
#

did pip install --prefix=D:\python-packages mkdocs not create a D:\python-packages\Scripts dir for you?

desert horizon
#

I didn't bother with this as I don't see this as the right aproach here

#

Because having to do this for mkdocs would mean I have to do it for every other python project that adds commands

#

Tho, even resetting package stuff to the default does have the issue

#

So I start to believe this is a general python issue

wind patio
#

you would just install other packages via:
pip install --prefix=D:\python-packages <package-name>

the rest of the steps are one time set and forget

#

the difference here is I use --prefix instead of --target. Target is used to install packages into a flat, standalone dir and does not use the standard python directory layout

desert horizon
#

I think the primary issue was either the install manager or the 2.14 version, which apparently is beta

#

(Not sure why the default is to install a beta, but whatever)

wind patio
desert horizon
#

deinstalling all python stuff and then re-installing 3.13 via an installer seems to properly add pip as a standalone command

desert horizon
#

Yeah, the mkdocs command works

#

So it was related to the Python installation or the way it was installed.

cinder flare
#

Tbh if you can afford to, using uv for Python package management has been a dream

#

It’s basically Cargo from Rust but for Python

#

Fixes all my issues with their horrible package management and stuff

potent nest
#

pixi >>>

#

(I'm not a python dev)

cinder flare
#

oh it's a conda thing?

#

uv is basically a replacement for normal pip/pipenv/virtualenv stuff, not conda related or anything

potent nest
#

I have no clue

#

I only know a few people who regularly contribute to pixi stuff

cinder flare
#

yeah i mean from what i saw it doesn't really seem that comparable lol

#

and uv is like at least 10x more popular, so i would recommend uv

prisma wave
#

does anyone remember the name of the development collaboration platform website that's kinda like jetbrains space

#

it had a like black and silver theme

#

i think either star or matt was talking about it ages ago but i cant find it anywhere

#

it's quite a new one, not a well established thing like Trello or Jira

#

nvm i found it lmao it's called Linear

#

was in my bookmarks this whole time my eyes just glossed over it

abstract osprey
#

oh

#

I didn’t read down far enough

prisma wave
#

classic

abstract osprey
#

thanks iOS for the autocorrect

pastel imp
desert horizon
#

Really need to find a good way of merging multiple BufferedImages in an async fashion (i.e. in a CompletableFuture.supplyAsync call).
The one I tried doesn't work, probably due to a logic failure on my end.

forest pecan
#

like in a pipeline?

desert horizon
#

Combine them into a single image. Like treat each as a new layer to add

forest pecan
#

how would the combining work

desert horizon
#

My idea is, that the user can define multiple sources separated by a semicolon (To still support the current String option)
I would go through each part, obtain the BufferedImage for each and then combine them one by one.

The annoying part is, that I want to keep this async, so that it doesn't delay the Event this is called in too much... I already do that with the current setup for a single image where local ones are pre-made at enable and URL or Name/UUID ones are created asynchronously.

prisma wave
#

combine them how

forest pecan
#

^

prisma wave
#

overlaying them?

#

seems like it'd be easy enough to do a divide and conquer if so

forest pecan
#

putting them side by side?

desert horizon
#

I did say I treat them as layers right?
Like I don't think there is much guessing here

#

But yes, overlaying them

forest pecan
#

I see like templates

prisma wave
#

The one I tried doesn't work
in what way

desert horizon
#

The image it has to fetch doesn't get added

#

Only the local one, which already exists

prisma wave
#

what does the debug output show

desert horizon
#

Like I tested with ${player uuid};vanillaplus.png which effectively would be converted to https://mc-heads.net/avatar/286f8d0c-b571-4720-b7ab-f2929cb38120/64;vanillaplus.png
And the output is just the vanillaplus.png image.

prisma wave
#

does it work with 2 local images?

desert horizon
prisma wave
#

Layer 1 was null! Skipping...
alright well this is why

#

the web requests takes a while so it isn't completed in time

#

future.getNow(null); this is probably not what you should be doing

forest pecan
#

Yeah its not enough time

prisma wave
#

in fact composeFavicon should probably take a List<BufferedImage> instead

#

use CompleteableFuture.allOf and then you know when all the results are completed

desert horizon
#

Can't think of another aproach that wouldn't delay the event unessecarely

prisma wave
#

well yeah...

forest pecan
#

you can't really do anything about that...

#

web request in an event

prisma wave
#

if something takes 5 seconds it takes 5 seconds, asynchronous or synchronous

#

doing it async doesnt make it faster it just avoids lagging the server

desert horizon
prisma wave
#

yeah its a stupid method but you can then safely use .join() on all of them

#

instead of getNow

desert horizon
#

I did try something like that

prisma wave
#

and?

desert horizon
#

Well, it didn't seem to actually receive the stuff. Tho, I didn't use join() then, so that was probably the issue

#

But looking at this, I think I can throw a lot of the CF stuff away.
The only method used outside the class to make a Favicon is the favicon(String) method. So I can probably just make a CF there.

prisma wave
#

It does seem like you’re misunderstanding/misusing them a bit, yeah

steel heart
#

one day we'll have structured concurrency šŸ™ and then we can say good bye to allOf() (not really but kinda :D)

desert horizon
#

Seems to work now

cobalt marlin
potent nest
#

but structured concurrency is still in preview

forest pecan
#

virtual threads are nice but thats different

desert horizon
potent nest
#

They reworked some stuff, I didn’t followed it too closely so not sure what changed and why

#

But I guess theyā€˜re getting there slowly

desert horizon
#

Looked at it a bit and eh....

potent nest
#

What eh

#

Like… what are your expectations

desert horizon
#

idk honestly

steel heart
# cobalt marlin i mean virtual threads are a thing now

Yea- they’re cool and in combination with gen zgc we can get insane performance, tho iirc virtual threads still have some issues w thread pinning like blocking inside a class initializer due to a native frame on the stack or resolving symbolic references (think there were some other small issues that cause unnecessary pinning)

crude cloud
#

yeah uh VTs don't really solve the need for CFs, lol, they're completely orthogonal

abstract osprey
#

it was fixed in java 24 iirc?

#

but

#

virtual threads are amazing yes

steel heart
#

not allocation issues I think- but as said pinning issues- one major issue was pinning due to synchronized, but that’s been fixed there are still some small pinning issues tho

desert horizon
#

Would any of you have experience with OpenAPI and fetching its JSON in Java?
I have a JSON file for an API and want to extract its paths values to return a different, more simplified JSON like this:

{
  "paths": [
    {
      "url": "https://api.example.com/v1/some/path",
      "method": "GET"
    },
    {
      "url": "https://api.example.com/v1/some/other/path",
      "method": "POST",
      "request_body_schema": "https://docs.example.com/api/#post-schema"
    },
    {
      "url": "https://api.example.com/v1/yet/another/{path}",
      "method": "GET",
      "parameters": [
        {
          "name": "path",
          "location": "path",
          "required": true,
          "type": "string",
          "supported_values": [
            "value1",
            "value2"
          ]
        }
      ]
    }
  ]
}

...assuming the paths JSON of the openapi file is like this:

"/some/path": {
  "get": {
    "...": "Unrelated JSON"
  }
},
"/some/other/path": {
  "post": {
    "requestBody": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/post-schema"
          }
        }
      }
    },
    "...": "Other unrelated JSON"
  }
},
"/yet/another/{path}": {
  "get": {
    "parameters": {
      {
        "name": "path",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "enum": [
            "value1",
            "value2"
          ]
        }
      }
    },
    "...": "Other unrelated JSON"
  }
}
#

I could probs use the parser they offer for Java to make POJO's, but at a first look does it seem a bit complicated in structure.

cinder flare
#

Yeah I mean parsing to a pojo then mapping to another pojo and serializing is as good as you’re gonna get probably

potent nest
#

nothing that couldn't be done with a simple jq tramsformation

cinder flare
#

lol when are they rewriting jq in Java, it already has j in the name!

potent nest
#

jq4j

pastel imp
#

Like, as you said, it could make your life easier

#

Why are you choosing to go the "manual" route?

#

I mean, I guess complicated structure is fair

#

Although you are probably more prone to error by using json

abstract osprey
agile galleon
#

Why is it produced like a YouTube short

#

I can't even see what's happening through the frantic zooms

wind patio
#

just gen z stuff

abstract osprey
#

it’s the most downvoted showcase I’ve seen so far lol

ocean quartz
#

Tbh the edit is terrible

oblique heath
#

feels like what i would expect some ai powered video editing program to come up with

forest pecan
#

i don't understand the edit

#

he just points to the italian brainrot at the end but i dont understand it

pastel imp
#

me neither

#

showcases something that has been done tons of times already

#

like it's something wow

#

with a very bad edit

#

and then shows some random text at the end

#

idk

#

lol

onyx loom
lavish notch
#

Does anyone know if it's against Spigot's rules to promote off-site payment methods on a plugin page? (Eg. Bank Transfer or Crypto)

This would be an option for individuals who don't have access to PayPal due to regional restrictions.

pastel imp
#

Ew crypto

oblique heath
#

ew banks

desert horizon
lavish notch
solar cradle
#

Hi! Anyone here a CSS nerd?

I have managed to add a backdrop-filter of blur to a <dialog> element, but I cannot seem to figure out how to fade it in. One StackOverflow thread mentioned using opacity() but the below CSS just snaps in the blur (And it seems that Safari doesn't support the :open tag so that isn't great). Any help would be appreciated :)

dialog::backdrop {
    transition: backdrop-filter 2s;
    backdrop-filter: blur(4px) opacity(0);
}
dialog:open::backdrop {
    backdrop-filter: blur(4px) opacity(1);
}

Here's a minimum reproduction Codepen that I've set up, most of this is just copy paste from the mdn docs, my real code is quite different - although the CSS is identical.
https://codepen.io/Zax71/pen/MYwvLwd

desert horizon
#

Welp.... Tried to use the Swagger parser now and.... It complains about required not being an array?
For a schema component that doesn't have such a thing? Like.... it's weird

oblique heath
#

i have found those errors to be super unhelpful

#

probably just some json somewhere being wrong in some way that has very little to do with that error message

desert horizon
#

The JSON is valid, as I'm using it to generate content for an API page and it would otherwise raise errors there if it wouldn't parse to valid JSON.

oblique heath
#

when i say the json being wrong i mean it probably doesnt adhere to json schema, not that its not valid json

desert horizon
#

I found the issue

#

Apparently does required inside schema objects resemble a list/array of properties that are required to be included in the schema

#

So if I f.e. have

{
  "text": "hello world",
  "something": true
}

and I want to define that text is required, then I would have "required": ["text"] set in the JSON schema

abstract osprey
solar cradle
#

Ooh, I have found a solution but it uses some new CSS features that aren’t in Firefox yet so I’ll give that a go as well

abstract osprey
solar cradle
#

Dw, it was in a different server, you had no way to know xD

brazen ether
#

implementing a simple-shape rigidbody physics solver over the next week or so and quickly got this hunkered down; demonstration of angular velocity and why your phone always flips sideways when when you try to spin it

#

(basically just copied code from here: https://www.youtube.com/watch?v=4r_EvmPKOvY&ab_channel=blackedout01 but gonna see about re implementing this with quaternions because there are some things that seem to be easier with them than rotation matrices)

I explain all the derivations necessary to understand the basics of 3D rigid body physics intuitively and show how I implemented them from scratch in C/C++.

Links to the listed references

Physically Based Modeling
https://graphics.pixar.com/pbm2001/
or for a combined pdf
https://graphics.stanford.edu/courses/cs448b-00-winter/papers/phys_model....

ā–¶ Play video
brazen ether
#
  • faster
#

awesome paper for learning more about quaternions in general too

#

explains a lot of the basic stuff well

desert horizon
#

Does one of you guys know an easy way to create a site that accepts a /api/webhooks/<id>/<token>/<bitmap> URL, takes the <bitmap> to determine the set of events to forward and based on the received info send a Discord Webhook with the <id> and <token>?

Kinda want to make a sort of webhook filter for Gitea/Forgejo, as their Discord webhook sends webhooks for all events, even ones you may not want (i.e. I enable releases and they send webhooks for release creation, edit and deletion when I only want the first)...

#

Kinda want to make it a thing others could use if they want to, hence the bitmask, as I think assigning a unique number to each event type could be the best aproach...

Main issue I see right now is get a setup to host on vercel AND to also determine what kind of event a received POST request is, as f.e. release contains the same event type header, but has a action in its JSON body afaik.

desert horizon
#

Got something basic that actually works....

#

Tho, now I need to find out all the individual event types a webhook can trigger AND also sent the apropriate JSON.... fun.

brazen ether
#

day #2 of working on this... rk4 integration method for super a stable system, raycast and physically accurate linear and angular momentum from impulse application

#

after this it's collision solving + generalizing to ellipsoids + optimization... and then it goes into Comet!

brazen ether
agile galleon
#

Is there any website to see packet definitions and how they have changed over time, I can't figure out for which versions I need to make a seperate definition...

abstract osprey
#

linkie for packets when Sadge

agile galleon
#

What's linkie?

#

Or is there possibly an NMS viewer for each version?

brazen ether
abstract osprey
#

absolute godsend of a website

#

lets you move your code between different mappings and/or versions

agile galleon
abstract osprey
agile galleon
#

yeah

pastel imp
#

tbf this channel kinda indeed died a tiny bit after the GH linked roles thing

#

but at least convos here are actually relevant

crude cloud
#

bob and vagene

brazen ether
pastel imp
#

xD

distant sun
#

Live album "XX Years Of Steel" out this Friday!
Order here: https://lnk.to/NoS-XX-YearsOfSteel

Mixed by Christian Ice at Temple of Noise Studios

Video by LyricVids.com
Official HelloWorld Repository: https://github.com/NanowarOfSteel/HelloWorld

NANOWAR OF STEEL LIVE 2025

European Tour 2025
Co-Headline Tour w/ Dynazty
21.02.25 AT - Vienna / ...

ā–¶ Play video
brazen ether
#

standalone Kotlin lsp SOON

#

this a gem for me and my fellow neovim users šŸ™

brazen ether
#

though right now its

#

quite bad

desert horizon
#

You gotta love stuff breaking without any known reason :/

potent nest
#

sounds like broken index

#

just do the repair ide stuff

brazen ether
#

intellij has this thing where it can't function at all if it's in a project which is lacking a build system

#

even the semantic highlighting is worse than what treesitter gets you in neovim

#

so if you decompiled something or you're looking at open source with private build configurations, it becomes way less useful

desert horizon
#

tho, this happens every single time I reload maven/resolve dependencies

#

So something else must be broken

#

I get the feeling that the MC dev plugin may be a possible cause here, as I just encountered an IDE error and everything hints at the dev plugin being the cause.

crude cloud
#

so it kinda needs to have all classes indexed

#

i'm not saying that it's for the colour highlighting alone

#

but if you want anything more than a bitch basic "hmm yes this looks like a method and this looks like a keyword" syntax highlighting, you need that info

#

i have it set up so every thing is highlighted differently, and it's very nice and easy to read!

brazen ether
wind patio
#

personally, the less visual clutter & animations the better

crude cloud
#

dear christ

#

it looks like i'm playing neon white all over again

ocean quartz
desert horizon
brazen ether
desert horizon
#

Not for me tbh

brazen ether
#

feature a lot of terminals have that I enjoy and it was fun to implement

brazen ether
#

it not then yeah I can see why it wouldn't make much sense for you

half harness
cinder flare
#

Window Manager with way too many desktops lol

brazen ether
#

basically like

#

diff workspaces

#

there's 16 max

brazen ether
#

default thijg

#

and this isn't even being displayed by a wm

#

I use ~10 currently

#

different one for each application

#

mostly

#

or just the most that would make sense to have on one screen

cinder flare
#

You’re telling me that’s not like yabai or something?

brazen ether
#

diff desktops are vanilla thing

#

sketchybar for that display

cinder flare
#

Well yeah I mean same on windows I guess

#

Oh the bar isn’t just part of yabai?

brazen ether
#

ik aerospace has their own thing but yabai works so I have no reason to switch

brazen ether
cinder flare
#

Damn

brazen ether
#

I got cmus integration for the music display widget :>

cinder flare
#

Bro’s living the like arch Linux lifestyle on macOS lmao

distant sun
brazen ether
#

ideavim thing

#

like if I need to go to a line, I can glance at the relative like number and then type like 29j or 8k (j and k move cursor down and up, respectively)

#

tho you just have it by intuition after a while

distant sun
#

Ok ig

wind patio
#

mfs would rather remember 30 different shortcuts than use 3 mouse clicks

cinder flare
#

i recently added a bunch of shit to mine lol, still trying to get myself to adopt stuff slowly

#

i recently "discovered" % hops between bracket pairs, shit is so nice in like huge SQL functions or whatever to find what's matching what

#

cause i would just like click on it and scroll down to find the matching highlighted bracket, but that shit is hard to find lol

cinder flare
#

and you don't take your fingers off of home row most of the time so it's super quick

ocean quartz
#

I have no opinions on vim because well use what you like, but I always find funny to see people using it like for example ThePrimeagen and pressing a bunch of keys just to have the cursor move a bit lol

brazen ether
# cinder flare omg how big is your .ideavimrc

this is it

set mini-ai
set functiontextobj
set multicursor

set scrolloff=10
set ignorecase
set smartcase

set incsearch

map Q gq

Plug 'machakann/vim-highlightedyank'

map <Space>r <Action>(ReformatCode)
map <Space>e <Action>(GotoNextError)
map <Space>E <Action>(GotoPreviousError)

map <Space>1 <Action>(GoToTab1)
map <Space>2 <Action>(GoToTab2)
map <Space>3 <Action>(GoToTab3)
map <Space>4 <Action>(GoToTab4)
map <Space>5 <Action>(GoToTab5)
map <Space>6 <Action>(GoToTab6)
map <Space>7 <Action>(GoToTab7)
map <Space>8 <Action>(GoToTab8)
map <Space>9 <Action>(GoToTab9)

map <Space>s <Action>(SplitHorizontally)
map <Space>v <Action>(SplitVertically)

set number relativenumber
set clipboard=unnamedplus

brazen ether
#

literally muscle memory

cinder flare
#

and it's really nice to just move the cursor around really quick instead of like holding the arrow keys for 5 seconds or whatever

#

especially when it's smart and you can do better than just simple cursor moving, like the matching brackets thing i mentioned, or like editing basically any textobject (ci(, ciw, etc.)

brazen ether
# cinder flare i recently "discovered" `%` hops between bracket pairs, shit is so nice in like ...

i would say most useful things for me:

  • space + number for going to tabs, but i eventually will replace this with my own intellij plugin so i can navigate around things just like how i do in neovim
  • relative line numbers is the best way 90% to quickly go to some arbitrary line that you can see
  • space e for gotonexterror is awesome
  • macros are awesome and have been a huge timesave for me; learn to use them intuitively, that's how they get fast
  • for navigating inside a line, searching with / + n is pretty great
  • i often find myself replacing parts of words, so learn f, F, t, T ; it's really common to do some motion like ct<something>
brazen ether
brazen ether
#

but it doesn't work 100% of the time at least in kotlin

#

i'll fork it and fix it eventually?

#

cause it's really cool in theory

#

i set up custom text objects in neovim for yaml stuff

brazen ether
#

easier to type

cinder flare
#

well usually i'm specifying which bracket i want to edit in a lot of nested ones

brazen ether
#

ah yeah makes sense

cinder flare
#

like () in a function surrounded with {}

brazen ether
#

B for { btw

cinder flare
brazen ether
#

and also big thing @cinder flare try to get into habit of using your right shift more if you don't already

cinder flare
#

and yeah i use f,F,t,T all the time

#

oh I never use right shift lol

brazen ether
brazen ether
#

like hurting my hands typa thing

cinder flare
#

here's my .ideavimrc

#

quite a bit in there lol

brazen ether
#

also it's faster to use right + left at the same time instead of left

#

lemme c'

cinder flare
#

oh my right pinky is just not trained on that lol, that's gonna take a while to get used to

#

oh yo why do i have double c-w binds lol

brazen ether
#

ima steal some of these

#

my ideavim config is so sparse compared to nvim

cinder flare
#

yeah those are really nice, i usually use gd and gu a lot

#

also a really nice one for me has been <leader>ga to show Git Blame gutter annotations

brazen ether
cinder flare
#

cause idk if there's normally a keybind but i had been right clicking, hovering over git, clicking on annotate

#

and that shit is slow as hell

#

cause i always wanna know which one of my coworkers wrote a fucked up function or something lol, so that's been a huge timesaver for me

#

and yeah i recently learned more about the jump list, so c-o and c-i, which has been sweet with like gd and stuff

brazen ether
#

i'm gonna try and clean up my intellij from some stuff

#

cause

#

i don't use vast majority of what's on screen

#

minecraft plugin dev is just not that intense

cinder flare
#

but yk what really pisses me off, gj and gk don't work in the non-modal commit message editor

#

and it's like a known issue that they only work in the main editor window and not in any other text box

brazen ether
cinder flare
#

but i always write long git commit lines cause the formatting on those is weird, then i try to navigate up/down cause it wrapped it, but it doesn't work 😠

brazen ether
cinder flare
#

oh i have really come to love IJ git stuff working at my current job, it's so nice to see inline commit histories and diffs and shit, to review my changes before committing, stashing changes when i have to swap branches to work on a random ticket or something, it's been really nice

brazen ether
#

biggest thing missing from intellij for me is nvim-style undotrees

#

i hate local history

cinder flare
#

oh yeah i never really got into them, i just press u a lot lol

brazen ether
cinder flare
#

and i've slowly been getting myself to use buffers more, it's just so unergonomic to me to press "a or whatever all the time

cinder flare
#

er

#

not stash, shelf

#

which saves like context and a bunch of crap, and you can have multiple changelists and it separates them nicely in-editor, idk i just have really grown to love it

brazen ether
cinder flare
#

yea yea i meant shelf

brazen ether
#

that's just non-commit work saving right

cinder flare
#

yeah it's just like doing partial saving for when you want to swap branches or whatevs

brazen ether
#

is there a difference between git stash

#

ah doesn't seem like it

cinder flare
#

yea you can select certain files

brazen ether
#

but yes it's super useful

cinder flare
#

stash is every uncommitted change

#

shelf is you can pick and choose into multiple separate stashes really easily and stuff

brazen ether
#

i've been working on physics stuff and that can't exactly be broken up into atomic commits

#

yeah lazygit has allat

cinder flare
#

ah well maybe i should get into it lol

cinder flare
#

but tbh i just love IJ stuff

brazen ether
#

if intelij works don't bother

cinder flare
#

recently discovered how to use the IJ profiler and SQL Query Plan analysis, holy shit it's been a gamechanger

brazen ether
#

i have 0 experience with any of that shit

cinder flare
#

i'm working on a huge commit right now to just optimize a million things that i never would've known without nice flamegraphs and stuff

#

yeah my only profiling experience before this was like Spark Minecraft reports lmao

brazen ether
#

that seems way more useful than spark

cinder flare
#

yeah theoretically it should, i mean it's probably just using the same Async Profiler that Spark uses

#

but it does show you like gutter annotations for long methods and stuff

brazen ether
#

i'ma check that out

#

physics sim is very performance sensitive

cinder flare
#

like that one sql query took a long fucking time lol

brazen ether
#

ah yeah that's definitely important

cinder flare
brazen ether
#

is that in CE

#

or ultimate only

cinder flare
#

probably Ultimate onyl?

#

but yeah it shows you the flamegraph super nice, you can click on stuff to navigate, sort it by CPU Time, Real Time, or Memory Used

#

super impressive shit i gotta say

brazen ether
#

$800 yearly

#

that's a lot of dabloons

brazen ether
brazen ether
#

but awesome shit from them

#

it's nice when enterprise level software is actually enterprise level

brazen ether
cinder flare
#

yeah no it's like, superb

#

i always loved IJ, but since i've started my job i've really come to appreciate all it does and why it is truly the best JVM IDE experience you can get

brazen ether
#

oh shit they have free student shit

cinder flare
#

and yeah that shit is pretty cheap tbh, i'm probably gonna get just the yearly Jetbrains All Products plan once my student discount runs out

brazen ether
cinder flare
#

yea it's amazing

brazen ether
#

maybe they'll accept it?

cinder flare
#

i've been using it for like 6 years lol

#

and then you get like a 30% discount when you graduate or whatever

#

it's like amazing

brazen ether
#

I'm a highschool student so I hope they accept that

cinder flare
#

oh yeah totally

#

i did that shit in middle school lmao

brazen ether
#

I should have been on this earlier wtf 😭

brazen ether
#

this is crazy

cinder flare
#

haha lol