#dev-general

1 messages · Page 59 of 1

forest pecan
#

who wants to work for amazon 💀

pastel imp
#

also that xD

#

Well, their HQ is in luxembourg so yeah

#

it was a cool experience going through their HQ

#

full paid meals and what not

#

their facilities there are really cool

#

they had a full blown gaming room with VR, etc.

forest pecan
#

I haven't been to the US HQ

#

in the US they're HQ is in seattle i think

pastel imp
#

no clue tbh

wind patio
ocean quartz
#

Noxcrew and Element Animation

cinder flare
#

not from scratch, but we use PrimeVue at my work and I've used shadcn-vue a bit

#

what are ya looking to ask?

pastel imp
#

I was planning on using RekaUI as a foundation

cinder flare
#

ooh yeah I would definitely recommend Reka!

#

if you're using Tailwind (which I hope!), tw-merge or cn or whatever is like a necessity, and it makes it super easy to style components

pastel imp
#

but mini wants to ditch tailwind

#

he wants to use scss

cinder flare
#

other than that, I'd say just look up some inspiration for each component as you go, like maybe PrimeVue and shadcn, maybe Vuetify, etc.

cinder flare
#

SCSS is like, going out of style hard lol

#

normal CSS now has a bunch of stuff sass did well, so there's not really much point

#

but i mean, at least if you're using scoped styles I guess, it's not too bad with Vue

pastel imp
cinder flare
#

yeah I moreso meant for the actual component design from a code perspective, like good props and slot usage, etc., not really the styling per se

pastel imp
#

according to him he dislikes how tailwind pollutes html

#

which is a fair point I guess but I am so used to using tailwind I am gonna probably cry for the first few hours using vanilla css

#

but hey, he's the boss xD

cinder flare
#

i mean it's just something to get used to, in my head it's so so so so much easier to see what is affecting a component and apply small utility changes locally than try to find out which fucked up inheritance CSS selector is messing with stuff

#

and like, trying to make changes in a safe way without adversely affecting other things, etc.

pastel imp
#

oh yeah I agree

#

I do prefer tailwind

cinder flare
#

a lot of that is mitigated with scoped styles, so please at least use those lol, but i just still kinda dislike it, it's much more wordy

pastel imp
#

but it's not like I do have much of a choice if the big man doesn't want to use it xD

cinder flare
#

than just like slapping class="flex flex-row items-center justify-center gap-3" etc.

pastel imp
#

I shall see if I somehow convince mini not to ditch tailwind xD

#

maybe if I just create classes but use @apply instead of vanilla css?

#

eh idk

cinder flare
#

that's like mega cursed lol

#

at that point there's not much to it, the whole point is the colocation

pastel imp
#

but just spoke with mini

#

scss it is fingerguns

#

the boss has spoken

cinder flare
#

what a weird choice

#

built-in tech debt lmao

frigid badge
#

used nuxt ui, vuetify and shadcn-vue, prefer nuxt-ui the most.

cinder flare
#

yeah i definitely would choose Nuxt UI if i were making a personal project or something new

#

wish i had the drive to actually make something new lol, instead i just be sad about the state of my work's tech stack haha

frigid badge
#

yeah I feel you

#

we use angular at work and c# apis , prefer other languages and frameworks..

#

and so much tech debt

pastel imp
#

but yeah, I have used Nuxt UI and schadcn-vue before

#

Nuxt UI is neat indeed, based on RekaUI too!

desert horizon
#

Just now learned that Material for MkDocs has entered maintenance mode in favour of a new SSG called Zensical and....
Well.... "tell me you're greedy without telling me you're greedy":

#

(To be clear, the SSG is open source and free to use. This is just what you pay for having the oportunity to propose features/ideas more directly to their team)

#

ngl, I hated squidfunk before for stuff he did, but this kinda makes my blood boil.

quaint blaze
#

they made it source only and dont provide builds for it. you either have to build it yourself or pay

desert horizon
#

Yeah, idk

#

I seriously have a bad feeling about that Zensical thing

#

On one hand is it nice that he made his own project to go away from the MkDocs dependency, which has become pretty much unmaintained, but at the same time is this from the same guy who had donation goals of 18k, 20k, 22k and 24k dollars a month, thinking he can reach them
-# And then also blocking me on Mastodon after asking why there was a sudden loss of sponsors and I replied it probs is people stopping to sponsor since the features they needed are now in the free version.

brazen ether
#

people saying java ? extends T and ? super T is confusing or bad is so strange to me

#

I think it shows that it's just not explained very well

prisma wave
#

yeah i think it's unintuitive and poorly explained

pastel imp
#

yeah

half harness
#

tbh I feel like it's more intuitive than kotlin's in and out though

#

at least if you were see it for the first time

#

and besides those, I'm not sure what other alternatives there are

steel heart
#

i prefer use site variance but i understand why declaration site variance is preferred by many

ocean quartz
#

Yeah Kotlin's isn't much better, but it does make more sense if you think about it like out for types you "produce" and in are types you "consume"
For example let's say you have a MutableList<out Number> if you try to list.add(0) (aka put "in" the list) you get a type error, but you can do list.get(0) (aka "out" of the list) to get a Number
And for in assuming you have MutableList<in Number> you can add list.add(0) just fine (put "in" the list) but list.get(0) returns Any because it can't guarantee the type when getting "out" of the list

steel heart
#

its also like, type erasure makes things a bit goofy

brazen ether
#

i looked at part of the explanation for type erasure, from what i understand it's due to the nature of dynamic lookup and compatibility

steel heart
#

yea

brazen ether
#

sec

#

okay nvm i can't find the vid i was looking for

#

but it makese sense in the context of java

steel heart
#

i think C# tried to fix java's mistake of type erasure but they did what now? build the variance into their VM so apparently co/contravariance is a bit fkd in C# (I havent really touched much C# to tell how plagued this design caused C# to be)

brazen ether
# ocean quartz Yeah Kotlin's isn't much better, but it does make more sense if you think about ...

yeah, and for example:

A Consumer should be <? super T> because: say T is our base class and A is a superclass of T, while B is a subclass of T. a Consumer<A> can obviously be cast to a Consumer<T> since Consumer<A> can handle a superset of T, while a Consumer<B> can only handle a subset of T (you can cast Consumer<A> -> ConsumerT>)

mean while for producers, a Producer<B> can be cast to a Producer<T> since B is subclass of T, so it can be cast to T. meanwhile a Producer<A> produces things that might not be castable to T, so it requires a <? extends T> (you can cast Producer<B> -> Producer<T>)

#

a man who can eat all food can fill the role of a man who can only eat vegetables (? super T)

a chef who can produce only onion rings can fill the role of a chef who needs to produce any food in general (? extends T)

steel heart
potent nest
ocean quartz
#

Ignorant question, but what about not having type erasure would have killed the language or caused more problems?

brazen ether
#

is the explanation I saw in a video by one of the Oracle guys

#

type erasure is the way that dynamic linking works with stuff created before generics

potent nest
#

yeah it would have been a python 2 vs 3 like breakage

#

and some of the problems that people pinpoint to type erasure are probably more complex than that too

ocean quartz
#

I see, makes sense

potent nest
steel heart
# potent nest saying type erasure was a mistake is an odd take, given that everything else wou...

I mean ofc at that time, it was probably the most logical thing to do, a presumably good compromise per se. Type erasure can work well just look at Haskell. If you compare Java to C#, C# were willing to break compatibility just to add reified generics where they support generic value types. Maybe type erasure itself wasn’t the mistake, but perhaps not supporting user-defined value types in the first place which could’ve impacted the later decision on type erasure when Java added generics? Though who knows how Java would’ve looked today and if it would have been as successful of a language etc. Java’s is still working towards adding generic value types and user-defined value types today, and type erasure doesn’t make it any easier for the first part, given that they are trying to come up with a solution that isn’t overly complicated. It’s of course hard to predict how software and hardware will change and evolve over time.

#

Ig cuz of langs like Scala as well

cinder flare
#

it is quite nice that the JVM is an excellent platform, so that we can have stuff like Kotlin's reified generics that are still interoperable with everything else in Java land

steel heart
#

Yea, I suppose in that way type erasure can work in the jvms advantage

prisma wave
#

I don’t think type erasure in Java is that big of a deal though

#

It’s a headache when you’re a noob and then you realise how it works and what workarounds you have and it’s fine

steel heart
#

I mean sure, yeah. Do I think type information during runtime (reified generics) would be really useful in certain cases? Probably, though I’m not against using TypeTokens for example, and it’s not a deal breaker either. I do wishfully think Java could’ve away with opting for another solution instead of type erasure, but that would’ve of course caused other issues and put the language on another path. Just more so looks like they could’ve done it like C# for example (break compat) and it would’ve been fine. But yeah Haskell has like (largely) a complete type erasure and it’s kinda an unfair comparison given that the language is completely different to begin with, but it’s a good example that shows type erasure can work really well.

potent nest
#

Haskell is relevant because Philip Wadler worked on Haskell as well as on Generic Java :p

steel heart
#

Didn’t say irrelevant but yea

prisma wave
prisma wave
#

I think it’s nice that more and more things in the Java ecosystem are also moving to the compile time (eg annotation processors) model

#

Because that gives you a lot more information in many cases and is also faster

#

Eg there’s Micronaut and Quarkus which do all of springs annotation magic at compile time instead

#

So I really don’t think fixing type erasure is a huge priority

#

Aside from for value types I guess

#

not sure what they’re doing about that

steel heart
#

iirc that could be addressed today, it’s just that they were looking for a solution that’s not overly complicated to users

prisma wave
#

right

#

which makes sense

#

Not super related but I’m honestly quite surprised that given how much they care about LTS that the module system is so rigid wrt backwards compatibility

steel heart
#

Honestly yea

prisma wave
#

Like once you start using modules it becomes very difficult to use any Java 8 libraries I found

#

if they don’t have a module-info

potent nest
#

I mean there are ways around that, but yeah it's a bit annoying

#

(but I guess build systems could fix that in theory)

prisma wave
crude cloud
#

you can add an automatic module as requires just fine

#

or add to the module path to the java launcher too

#

as far as i know the only thing you can't do with automatic modules is using them in jlink, as it has to consume real modules

desert horizon
#

This seems like an interesting change

steel heart
#

veri nice

desert horizon
#

Can't wait for resource packs that rotate every block by like 0.1 degrees

still portal
#

🛠️ CAMBIOS DE RESOURCE PACK:

⭐ Los modelos de bloques ahora permiten cualquier tipo de rotación en todos los ángulos.

- Ahora aceptan valores "x", "y", "z" por separado.

- La restricción de "-45° a 45°" ha sido eliminada.

Esto permite un enorme control para modelos de

distant sun
#

Lol

quiet depot
#

this ij auto complete fucken sucks now

#

what happened

#

ai is ruining the world

ocean quartz
#

So true

quiet depot
#

all is good now I've turned it off

#

crisis averted

#

I lie, all is not good

#

new ij design sucks too

#

probably not new for you guys ik they changed it ages ago

ocean quartz
#

Okay that one is a bit too far, the new design is great 😔

quiet depot
#

I mean it's functional

#

was it a necessary or beneficial change

#

no

#

maybe less buttons for newbies to get confused by

still portal
#

the islands beta thing looks insanely cool imo

#

uses up a bit more space but looks a lot nicer

frigid badge
#

why are you not in full screen

still portal
#

i've always used macos like this 😭

prisma wave
#

same

#

the animation of switching windows in fullscreen annoys me too much

ocean quartz
#

Can't you disable the animations?

pastel imp
#

sounds like a mac issue

#

xD

frigid badge
#

I have almost everything in full screen and swipe between my spaces

#

don’t use the dock at all

still portal
#

i recently discovered the power of desktops but only really use it to seperate uni from the other bullshit

#

using full screen sounds more efficient though

wind patio
#

never have I ever used any other application in fullscreen except for games

brazen ether
#

full screening stuff makes the windows interact weirdly with things

#

I have designated usecases for certain desktops so I never have to wonder or press a key multiple times even if I'm switching between lots of applications

brazen ether
#

actually in general I realize I don't ever use alt tab anymore once I organized my desktops

surreal garnet
#

normally windowed borderless

wind patio
#

but yeah, I rarely use non-borderless fullscreen

desert horizon
pastel imp
#

Like, I am all in for AI, but not the way AI is being done atm.

half harness
#

usually I can just cut the code and re-paste it in the same spot and it fixes itself, but it's still pretty annoying
am I the only one with this issue? 🥲

crude cloud
#

i don't have that issue

#

mainly because i don't write kotlin

half harness
#

D:

crude cloud
#

which surprisingly tends to fix it

ocean quartz
#

I also don't have this issue mainly because I don't like NPE so I don't use !!

pastel imp
#

what's !!? never seen that /s

#

I made myself a rule, if I ever see myself using !!, my code is shittier than usual

half harness
# ocean quartz I also don't have this issue mainly because I don't like NPE so I don't use `!!`

for context - in this project intellij just has a bunch of syntax errors (other than null stuff) that don't go away unless you delete and re-add the code
what happened was that I knew that it couldn't be null (the code would compile), but intellij was really persistent here even after re-adding the code so I decided to just add !! to get the error out of the way

but then because there actually was no null safety issue, intellij recognized that and gave the warning that the !! was unnecessary while keeping the error 🥲

#

so that's where the double error/warning came from lol

#

intellij being wonky

brazen ether
distant sun
# quiet depot ai is ruining the world

The other week I was working on a new node proiect at work and we use visual studio. It was literally using copilot for creating new files and add some stupid template to it based on the name ig, and also for imports even if the context menu said "add missing import for <path>" so the editor knew what I wanted FFS.

quiet depot
#

ok guys

#

I need help from the braintrust

#

I'm adding components to papi, I was gonna have PlaceholderAPI.setComponentPlaceholders(OfflinePlayer, Component)

#

2 problems, we already shade and relocate adventure so the Component in that method is relocated and incompatible with the components you'd make in paper

#

other problem is that even if we somehow excluded PlaceholderAPI.class from relocation, the whole plugin would just fail on anything that isn't paper since that class wouldn't exist on spigot

#

do we change Component to Object and just check it reflectively to be the correct class, and have the actual replacement logic in another class that's only loaded when on paper to avoid reflective invokes on component methods

#

or we could just have the method in another class entirely, but like, that's kinda disgusting, PlaceholderAPI.class and PlaceholderAPIAdventure.class

#

or runtime bytecode instrumentation to add the method if the platform is paper 😎

sweet cipher
# quiet depot I need help from the braintrust

This might be a weird way to do it, but you could create some interface like

sealed interface MyComponent permits AdventureComponent

with an implementation

class AdventureComponent {
  // stuff
  public Component adventure() { /* ...*/ }
}

Then you can have PlaceholderAPI.setPlaceholders(OfflinePlayer, MyComponent)

I think either way though I think you're going to have to not shade adventure.

#

It is kind of an ugly way to do it

pastel imp
#

Adventure is already provided in 1.16+

#

Soooo

sweet cipher
#

In Spigot?

pastel imp
#

idk about spigot

#

I don't really care about that platform

#

lol

sweet cipher
#

Well PlaceholderAPI does

pastel imp
#

I am personally a huge fan of MiniPlaceholders

steel heart
desert horizon
#

The nuclear option would obviously be to only support paper servers... Tho obviously that would be an extreme solution.
The one given by Fisher probs works. I lack the info to verify this tbh.

Also, I noticed something odd: The bStats page of PAPI seems to have missing data. Server software and server location have no data to display, which is really strange...

abstract osprey
#

Seems to be happening everywhere

remote goblet
#

i love the nuclear option of only supporting paper

worldly saddle
#

or rather to say, which dev to contact, from what i see 5 plugins could be an issue

worldly saddle
#

@hushed prairie are you dev of PetNameFix?

pastel imp
worldly saddle
pastel imp
# worldly saddle you sure?

it's either that or ProtocolLib but most likely a mix of both, probably misusage of ProtocolLib or outdated one, lots of things can be

#

just contact CustomBiomeColors's author

#

he'll know what to do

#

I have no clue about its code, he does

#

well actually seems more protocollib

#

a bunch of plugins that rely on it are erroring

#

not fully sure, make sure its up to date

#

also this is not the place to ask this

hushed prairie
#

actually nvm, it doesn't seem like the same error

buoyant shadow
#

.

inner umbra
#

Ayo? When did I get access back to this channel?

prisma wave
#

never

#

this is all a dream

pastel imp
#

oh no

#

this is not locked anymore

#

rip

ocean quartz
desert horizon
#

Guess we aren't special anymore for this chat Q-Q

scenic cave
#

hey @latent relic I would be interested in working on this, I sent a friend request, let me know 🙂

inner umbra
surreal garnet
#

Damn

cinder flare
#

yeah idk why lol

#

now we just get random spam messages and shit

agile galleon
#

man it was peaceful in here

cold prawn
#

🙈

dull narwhal
#

Any minecraft dev here I want a small help , if someone interested pls dm me

agile galleon
#

It started already crying

ocean quartz
prisma wave
#

lol that didnt take long

crude cloud
#

can we go back

pallid gale
agile galleon
#

yes back to the dead chat please

pastel imp
#

preferred dead chat and the ocasional actual dev talks here

pastel imp
agile galleon
#

^

pastel imp
#

or change the damn name idk

#

people nowadays think everything is "dev"

pallid gale
#

real-dev-chat

frigid badge
#

can-hold-swe-job-at-a-reputable-company-for-longer-than-a-year

oblique star
#

:^

cursive breach
brazen ether
brazen ether
wind patio
#

when #real-dev-general

onyx loom
#

#developer-chat 😔

pastel imp
#

people think developers includes configurators etc

prisma wave
#

that one was properly hidden though

nocturne apex
#

tho I mean it makes sense they are called "developers", but like it causes so much misunderstanding as people do not specify what they mean exactly, whether they want actual dev who codes or dev that sets up plugins

pastel imp
#

I still hate configurators or skripters beings called devs lol

#

they have their own titles

#

why use "dev"

potent nest
#

because dev has already 0 meaning

crude cloud
#

"yeah i'm a developer"
"oh yeah? what district?"

half harness
#

And developer is just a broader term

potent nest
#

software engineer peepoWicked

brazen ether
#

programmer > software engineer

half harness
#

There used to be one for server owners and I think builders as well

pastel imp
#

nice

dire bison
dapper pawn
#

@delicate marsh sir, DMs.

merry meteor
#

hi

dapper pawn
#

@sly siren hey there! DMs

brazen ether
#

is including a pdf with your files peak documentation

potent nest
#

Only if it‘s properly layouted

brazen ether
#

hey the equations will be pretty!

#

god bless typst

prisma wave
#

Based Typst user

potent nest
#

typst is indeed epic

mint crow
#

respect if u can afford the time needed for that for only $100+

ripe hinge
mint crow
ripe hinge
#

Freecam and xray

#

Both in one for $25

#

😂

mint crow
#

yeah thats crazy

ripe hinge
#

But they wanted me to pay on some sketchy app

mint crow
#

freecam cant be stopped fully at all, anti-xray already exists and is free

ripe hinge
#

Maybe it was popular in their country idk

ripe hinge
#

You can just make life harder for the hackers

mint crow
#

probably yeah

dapper pawn
#

I have done like 2 commission till now so yea-

mint crow
#

yeah all good, its just that freecam anticheat is not really possible imo, so $100 doesnt make sense to me at all

pastel imp
pastel imp
#

freecam is client side, server has no control over that

river mesa
#

guys know how to off defaulttags in plugin deluxetags on operator

pastel imp
wind patio
#

😩

agile galleon
#

Can we start like a petition pepela

brazen ether
#

maybe make it so you can only chat in this channel if you have GitHub added?

#

but can see it either way

#

and then have a pin/channel description or something that tells you to add GitHub to be able to chat

#

if not that, then go back to how it was but add a pin somewhere about its existence or something

brazen ether
#

@potent nest it loosk nice now

#

this is mostly for me, but i guess if anyone is ever reading it, i expect them to be able to understand it anyway so no need for more detail

#

typst is awesome 🙏

#

||yes i did fix the extra dot in the K matrix||

wind patio
#

@pallid gale do it

#

or rename it to #dev-not-general

#

cuz #general is the first place people go to talk

#

😎

distant sun
#

calll it #coding-chat

#

and put it all the way to the bottom lol

potent nest
#

Call it #haskell-enjoyers

brazen ether
#

fake

distant sun
#

and put it all the way to the bottom lol

wind patio
#

and put it all the way to the bottom lol

quiet depot
#

well when I say we I mean cube

#

he gets very angry when I touch the permissions

#

might make a faq command and put that in the pin

#

adding ur gh is ez, just the linking part ppl get stuck at

pallid gale
pastel imp
#

And ngl, love the idea of making this read only unless linked

#

Might actually solve the issue

pallid gale
distant sun
#

scripting yes, configuring no

pastel imp
#

Anyways it's a W

#

Change has been made so W

cinder flare
#

only valid language

pallid gale
#

To talk in this channel you must have your GitHub account linked with Discord directly and then shared with the server. To do this click the "HelpChat" server, select "Linked Roles" then follow the prompts.

ocean quartz
#

Back to dead chat I guess 😔

distant sun
#

how to add money requirement to deluxemenus @ocean quartz ?

nocturne apex
#

eyyy

#

curious why discord does not handle the linked roles automatically

crude cloud
#

wooooo

wind patio
#

ayy dead chat we back

pastel imp
pastel imp
brazen ether
#

yes all the ops are hard coded rn, I am gonna test this same code performance and memory usage with Vector3f(); in theory EA should be able to make it identical? but haven't actually checked. also an improvement if EA doesn't like me is to use inline functions with a once invocation contract

prisma wave
#

I am making a TLS implementation in Haskell rn

#

It’s great

tiny portal
crude cloud
#

😭

tiny portal
prisma wave
crude cloud
#

it's better that way than people asking DM garbo and asking for custom lifesteal plugins or 20 hours a week for free

pastel imp
#

facts

royal tundra
#

what level do i need to grind

tiny portal
tiny portal
crude cloud
#

no

tiny portal
crude cloud
#

precisely

ocean quartz
#

Interesting definition of always ;p

royal tundra
royal tundra
#

L

abstract osprey
#

look who's talking

royal tundra
#

up the telos stickers

abstract osprey
#

when are we doing that in sunny

royal tundra
#

when custom textures

abstract osprey
#

when pain

royal tundra
#

bedrocker moment

prisma wave
#

jithub

quiet sierra
#

this cannot be real

#

💀

prisma wave
#

Average request-paid

#

Senior developer work for $30

onyx loom
#

thats more than just senior developer

#

almost asking to run the whole server

brazen ether
abstract osprey
#

he got clowned on

#

heavily

quiet sierra
pastel imp
quiet sierra
#

never heard of it joeshrug

pastel imp
#

Good

cursive breach
#

Friday 10AM EST on @Hytale for official reveal of the early access release date.
︀︀
︀︀Let me break it to you and reset expectations, the acquisition took just long enough to prevent us from doing a release before Holidays. That’s why it took us so long to announce the date, we tried to push as hard as we could but legally there is just too much to do and we would be cutting too close to Christmas.
︀︀
︀︀Go make your predictions. See you Friday for reveal!

**💬 471 🔁 596 ❤️ 7.4K 👁️ 156.2K **

abstract osprey
brazen ether
#

dont be like this guy

potent nest
#

wdym every open source maintainer loves something like that

distant sun
#

Can't just cache the OfflinePlayer itself?

nocturne apex
prisma wave
#

not to be that guy

#

or make a dynamic proxy

#

for also about 5 lines

nocturne apex
#

using by?

prisma wave
#

yep

nocturne apex
#

ye I dont even know why's he needing that, ngl

#

bcs like he's using delegate in every overriden method, only the getName not

#

isnt this new?

wind patio
#

no

nocturne apex
#

I havent seen that b4

wind patio
#

since 2024 March 15

abstract osprey
nocturne apex
royal tundra
crude cloud
#

god forbid new methods are added to OfflinePlayer

ocean quartz
#

Yeah what is the point of the wrapper if all you're doing is delegating everything? (except getName i guess)

crude cloud
#

reducing IO calls

#
  • Each call to {@link Bukkit#getOfflinePlayer(UUID)} results in a call to
  • net.minecraft.world.level.storage.PlayerDataStorage#load()
    no it doesn't lol
ocean quartz
#

I mean that's the point of the cache not the wrapper itself, could just cache the OfflinePlayer directly

crude cloud
#

well, OfflinePlayer#getName() is the one that does IO, not Server#getOfflinePlayer(UUID)
i presume they wanted to operate with OfflinePlayers but caching the name

#

which is very silly because clearly they aren't using the OfflinePlayer as an OfflinePlayer anyway

nocturne apex
#

like why would it call IO operation while the OfflinePlayer is the loaded op from IO

crude cloud
#

what

nocturne apex
#

oh wait what, okay am too tired for that lol

#

Ive misread something

#

why getName calls an IO operation? Like

#

whats the reason behind that

ocean quartz
#

Probably to get the updated name, it could be outdated from an offline player

crude cloud
#

all the methods in CraftOfflinePlayer load directly from storage

#

idk the whole thing stinks

#

CraftOfflinePlayer stinks and that code stinks, and the reason why that code exists stinks

nocturne apex
#

xDDD

#

ye Ive actually never used OfflinePlayer instance

#

Ive been just reading 6yo article abt the #getName and people say that it just always returns null

#

OP class getting stranger and stranger kekrvs

mint crow
#

when anyone of you are selling a plugin to a client, do yall send the source code or keep it for private use only unless they pay for the source code as well? (source was not included in the price in the first place and was not mentoined at all)

#

^ talking about a unique plugin, not something thats already opensource

brazen ether
#

for longer term projects I always share the GitHub with the client

#

if someone is paying you for something, why not give them everything they need to keep using it? unless you want them to always come back to you for any changes (because reverse engineering is annoying and most devs don't want to do it) then there's no harm in sharing the GitHub with them. I personally don't want to be attached to any project forever which is why I would never want to keep the source private from those using it

#

by "using" here I mean as in maintaining, adding features, etc

mint crow
#

yeah i made a deal with a client in which i fix any bugs if there are any for free and they pay additionally if they want features added or something like that

#

so maintaining it except bugs is paid by the same client if they want to have it maintained

#

so me being stuck with it forever is kinda not an issue, thats why im questioning should i send the source

#

dont know

pastel imp
#

I usually always provide source

prisma wave
#

same

agile galleon
#

I was once commissioned to decompile a plugin the customer had commissioned previously and add some features/change some stuff

pastel imp
#

love those jobs

#

I always ask to get paid per hour on them

#

and make a fortune lol

agile galleon
#

Legitimately turned a 20min job into 1h+ because of weird missing libraries etc etc, not providing source just makes everything more complicated with little benefit

#

If you think that they're going to hire a different dev to work on it, then you aren't providing an adequate customer experience

mint crow
#

true dat

cursive breach
#

Github

cursive breach
#

Anyone know a website to find good black friday deals?

#

Like a collection of em

cinder flare
desert horizon
cursive breach
wind patio
onyx loom
#

brett was late

#

thats a first

brazen ether
#

java keywords are

#

so random

#

at times

prisma wave
#

strictfp is useless nowadays I think also

potent nest
#

Yep

#

But it wasn’t really random back then

#

Just the ugly reality of x86

brazen ether
#

yes but I would think it would be an annotation or something

potent nest
#

Annotations don’t affect behavior

crude cloud
#

annotations did not exist back then

brazen ether
#

hm

cursive breach
half harness
#

I've always just used merge without really giving it another thought

however, now I'm going to be creating a repo to be used by other collaborators, and all the code would be worked on via other branches, then merged/rebased into main through PRs (rather than committing/pushing directly to the main branch)

At first, I thought rebase would be the way to go, but I found that commits are rewritten (with new commit hashes), which not only invalidates commit signatures, but it also makes it a little messy to update other not-yet-merged branches (I assume it'd require a force pull or smth?)

but everywhere I see online, people still recommend rebasing because no merge commits, making the git log cleaner... so what should I do? 🥲

#

asking since I assume some people here have some experience working on codebases with other developers :))

prisma wave
#

rebasing can be incredibly annoying when you have conflicts in my experience

#

you have to fix the conflicts multiple times

#

I think squash and merge is a decent best of both worlds?

#

But idk honestly I’ve always just gone with a vibe check

half harness
#

yeah I was looking into squash, and while it'd fix the issues, then you lose the details of each commit

half harness
prisma wave
half harness
#

ohhhh

prisma wave
#

this is probably bad advice

prisma wave
# half harness oh what

yeah im not sure, when you pull with rebase and there are conflicts it often makes me fix the conflicts multiple times

#

which is probably fixed by pulling often but idk

half harness
#

¯_(ツ)_/¯

wind patio
half harness
#

and so far, it seems like rebase doesn't really have many real advantages

#

even though everyone seems to love it

#

_ _
maybe to answer your question better - I also want to prioritize simplicity/ease of use (while having all code worked on outside of main branch)
no "do x y z in order to merge"

wind patio
#

you are going to have merge conflicts at some point one way or another, but I dont think rebase is going to really help you, rather would make things more complicated

#

rebasing imo is only good if you are working on personal projects

half harness
half harness
#

but yeah I think I'll go with just merging

wind patio
#

you could also do squash and merge instead of merge commit

half harness
#

I looked into that but squash gets rid of the details so I decided that I generally want to avoid that

wind patio
#

I saw you wanted "cleaner" log, so that's why I recommended it

half harness
#

ah

wind patio
#

also easier to revert, no messy in-between "wip" commits, and only one commit per feature

#

but yeah individual commits and signatures are lost this way

#

also to avoid merge conflicts, feature branches should be generally up to date with main, basically every time a feature gets merged into main every other feature branch has to pull those changes
thats what I had at my previous workplace

half harness
prisma wave
#

yeah but i think it's a silly thing to care about personally

wind patio
#

I would rather avoid merge conflicts

#

before applying this workflow I once had to spend around 2 hours solving merge conflicts with my colleague on screen share because we had huge new features

half harness
#

2 hours??

wind patio
#

maybe a bit less but sure left like it, it was hell lmao

#

obviously this is an extreme example, but solving merge conflicts is generally very annoying and time consuming

#

especially when you don't know anything about other features

half harness
#

I think
although the only real issue with this would just be clutter

half harness
wind patio
#

that was our issue and thats how we solved it

#

yes

half harness
#

ah

#

got it

wind patio
#

and I generally dont look at history tbh

half harness
#

yeah true

wind patio
#

so I personally dont really mind the clutter

#

and if I need to use it I can just filter those merges out

ocean quartz
#

I really enjoy how we do it, feature/ is the branch you work on (doesn't have to be feature ofc, chore, fix, etc)
Then there are update/ which is the current branch update everyone is working towards
Then develop the final place before going into main to go into production
Feature branches are always rebased on the update branches, once your features are done it is then squashed into the update as a single commit
Update branches are rebased and then merged into develop without squashing
This keeps the git history quite clean, no merge commits, etc
Rebasing is not that bad at all, unless you don't rebase often enough

brazen ether
#

yeah I think a lot of GitHub features are not explained well and developers end up thinking they're scarier or more complicated than they are

#

when they're actually really useful

nocturne apex
#

ye, I 100% agree w ixume

quiet depot
#

I push to master

#

always

#

only way to do it really

wind patio
#

tell me you at least force push

wind patio
nocturne apex
surreal garnet
quiet depot
#

exactly

#

no half measures

#

when I commit, I fully commit

#

no fucken around with these branches n shit

brazen ether
#

y'all not ready for this i fear

potent nest
brazen ether
#

i might look into log4j just so I can make a logger that outputs typst files

quiet depot
#

what is a typst file

brazen ether
#

because I have so many times I am outputting a matrix or variables related to formulas I have open and it would be much easier to see the relation with proper formatting

brazen ether
potent nest
#

that reminds me, not sure if there are nice java bindings for typst already

#

but you probably just want plain text to throw into typst

brazen ether
brazen ether
#

oh wwo

#

there is java-typst already

#

and typst is so fast i dont think it'll be much of a problem compiling large files

potent nest
#

jni 💀

abstract osprey
agile galleon
#

I just yesterday implemented Typst PDF generation in the Browser (client, not server) with QR-Codes, that was fun

worldly saddle
worldly saddle
#

did you maybe look? should i still compile this and use?
Just to mention i deleted the world that got this issue because i was not able to join at all, so i doubt i will be able to replicate this soon (this happened after a lot of time)

hushed prairie
#

hi, didn't have access to the channel anymore lol

#

I did look into the PR, it was mostly ChatGPT bullshit that added unnecessary null checks where values couldn't be null

#

there were one or two things that seemed like they could be useful and added, here's a jar if you want to try for yourself, but I don't know if it'll actually fix anything

brazen ether
#

big fan of kotlin contacts. hope they expand on this stuff in the future

half harness
#

oh wait do they actually work

#

I thought I tried using them before and IntelliJ just didn't care so I didn't see any point

#

but that's pretty neat

brazen ether
pastel imp
prisma wave
#

they provide some guarantees about how functions behave that lets the compiler do extra optimisations or more QoL features

pastel imp
#

interesting

#

need to check their usage, sounds hella nice

prisma wave
#

it's mainly for the stlib functions i think

#

or when you're making library code

brazen ether
prisma wave
#

like typescript

pastel imp
#

I tried convincing mini to change hangar's backend to kotlin....

#

I wasn't convincing enough... he wants to keep it easy to contribute, so java is the clear choice

brazen ether
#

for example if you have some Animal, you can create a function that you could use like

if(isServer(animal)) { ... (animal smart cast to ServeAnimal or whatever }

and here isServer could do something beyond just a type check

#

there's lots to it

brazen ether
pastel imp
#

that sounds rlly nice yeah

brazen ether
prisma wave
#

yeah it's cool

pastel imp
#

might be stupid from my part to say this but I think it shows how flexible and well done kotlin is

prisma wave
#

it's a nice consequence you get from inline functions and the contracts yeah

old wyvern
#

Oh my god, simon is still pinned 🥹

tired kiln
#

I didn't know a channel of this kind was possible but really cool

prisma wave
#

no spamming

crude cloud
#

not configuration help

wind patio
#

I'm at a loss again, shadowJar with .gradle build file produces different jar than with .kts. wtf

#

I double-triple checked, the .gradle/.kts files are pretty much identical, apart from syntax

#

META-INF\resources\webjars\swagger-ui\ has completely different versions for some reason as well

potent nest
#

Hard to say anything about that without actually seeing the complete files and also other gradle-related files

wind patio
#

yeah I understand, I changed quite a lot of things recently, might have messed up something myself, but can't seem to figure out what lol

potent nest
#

you can probably run a gradle scan, maybe that provides any useful information

#

in a not-so-shitty world a build tool would be able to explain what it is doing, but well, it's gradle

#

(time for a nix-based java build system)

wind patio
#

trying to go back to previous commits to see if I made some unintended changes in any of them

#

but I remember I had a similar issue previously as well, with .gradle -> .kts conversion

#

yeah, this.

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

#

so for whatever reason .gradle and .kts work differently, i dont fucking know lmao

potent nest
#

I mean you have some kind of plugins added

abstract osprey
abstract osprey
mint crow
#

is there anyone here that has done tebex store setups as a comission before

#

if so, what are prices for that usually?

sour flame
#

Considering the ones on tebex are like 25-30 USD, Id imagine a fully custom one would be 2x-3x that

dapper pawn
still portal
#

is it convention to put NonNull annotations before the inner class instead of before the whole stuff? intellij keeps doing Foo. @NonNull Bar

potent nest
#

Well only what IntelliJ does actually refers to the type

#

In many cases only that is correct, but due to the history of annotations, you might be able to wrongly annotate the field or the method instead of the type

still portal
#

Makes a lot of sense, thanks!

sour flame
crude cloud
#

You are absolutely right!

dapper pawn
#

Use their Tebex Checkout API

dapper pawn
#

So a decent web dev can do it easily

dapper pawn
sour flame
#

Not a terrible idea, but out of my leauge lol

frigid badge
dapper pawn
#

@hot grove DMs sir.

brazen ether
#

i'm sure this is very obvious to many of you but union types + state machines are a very useful way of thinking about certain parts of your program

#

makes me see the value of a CS education

prisma wave
#

discriminated unions are the greatest programming feature ever

brazen ether
#

why is there no state machine oriented Minecraft inventory framework?

#

thought someone would have done something like that for now, given how annoying and buggy so so many inventory stuff is

brazen ether
brazen ether
#

i said stupid thing

#

but really it's just about this

brazen ether
#

basically just not treating the inventory gui as any sort of holder of information

#

which is probably obvious to many but i see it being done a lot nonetheless

#

and in some cases it works

#

but lots of time it's not the right approach

pastel imp
brazen ether
#

no that's not the same

#

i guess it's more of a mindset than something you'd have in a library

#

a simple example would be the Furnace GUI. let's say you were trying to implement a similar thing. instead of checking the burn time or checking validity of whether you can put an item into the fuel slot or whether somethign starts cooking by checking the item data, you would update some state variable for that furnace with canonical representations of what's in that furnace, and you would only ever interact with the actual ItemStacks on events such as placing, or picking up items

#

and for all your checks you would deal with that canonical state instead of checking item stacks

#

or let's say you have an inventory where the player can move around 5 swords in the chest

#

instead of reading the item stack data whenever you need to interpret what's going on in the chest or to validate its contents (dupe bugs and whatnot), you instead keep something like an object which stores the canonical representations of your items (which, to be fair, could be ItemStacks, but not always, if those items are meant to represent something else) and where they are

#

and in this way you would always be forced to update the state with something that must be valid, and thus you could also reconstruct the inventory from your canonical state at any given time

#

basically it's about moving the data to your code where you have more control over what it represents and how it can be represented via types

pastel imp
#

Interesting

#

Well guess it's another library for you to do xd

wind patio
#

idk noone cares that much to make it a whole lib

#

though I use something similar for a trade system

crude cloud
#

I thought you were going to talk about fsm but what I'm reading rather screams "abstraction" (keep the frontend separated from the backend) instead of a fsm system

#

in which case, abstractions like that are in my experience very case-by-case dependant, you can probably make a generic library but then you need to ensure it's a one-size-fits-all rather than custom tailoring

prisma wave
#

i was going to make it follow the Elm architecture (essentially how redux works)

#

i dont think this works yet but this was my basic initial design

crude cloud
#

hi bm

#

where's that spigot java tutorial series?

prisma wave
#

yes ...

#

welll....

quiet depot
#

maybe you can release the whole series tomorrow?

dapper pawn
#

Hola people!

prisma wave
#

i was thinking about it the other day and im not even sure if theres an audience for that kinda thing anymore

crude cloud
#

true!

quiet depot
#

surely after all this time it's ready now

prisma wave
#

people just ask "chat gpt"

crude cloud
prisma wave
#

ill just make an llm of myself to make the tutorial

crude cloud
quiet depot
#

just feed java & spigot docs into notebook lm and ask it to generate tutorial

dapper pawn
#

😔 no gif perms

prisma wave
#

Wow, [user], that's a great question — by asking "what does extends JavaPlugin mean?" you're tapping into some really advanced concepts.

prisma wave
#

that poor llm

quiet depot
crude cloud
#

oh dear

dapper pawn
prisma wave
#

as soon as it reaches 2021 it kills itself

quiet depot
#

yes

#

we seem to have issues with ai's trying to kill people

#

or create worms

#

this one will kill itself

prisma wave
#

worms?

quiet depot
#

worms

crude cloud
#

i should play worms

#

anyone wanna play worms?

quiet depot
#

i have no source for worms i'm sorry I just heard it in a video yesterday

#

I can't remember what video

#

just a video

#

lots of videos

prisma wave
#

who up creating worms

quiet depot
#

the ai

prisma wave
#

what are you talking about brother

quiet depot
#

ai making worms

#

.

crude cloud
#

i think

#

no

quiet depot
#

good think

crude cloud
#

that's a lie

quiet depot
#

possibly

#

i didn't ask ai to fact check the video for me

compact perchBOT
#
Hey son,

Thanks for explaining the word "many" to me. It means a lot.

crude cloud
#

hold on

#

i can best that

quiet depot
#

holding on...

quiet depot
#

zoo wee mama

prisma wave
#

🔥

quiet depot
#

that really got me going

#

bm do you work for google yet

prisma wave
#

sadly no i am unemployed and broke as hell

quiet depot
#

smh

prisma wave
#

sorry

crude cloud
#

are you still studying (when does it END?

prisma wave
#

yes im in my final year

#

and then hopefully doing a phd too

crude cloud
#

omg!

quiet depot
#

phd in what

prisma wave
#

Programming language research

crude cloud
#

master thesis on what?!?!

#

oooo

quiet depot
#

that'd be pretty cool

#

ai makes a new programming language

#

credits ur thesis in it

crude cloud
#

(or doesn't)

prisma wave
prisma wave
#

ive been working on my research proposal rn and I think my idea is quite cool though, basically I wanna investigate if it's possible to make like "reversible optimisations"

quiet depot
#

is ur thesis related to the research they're doing

#

I was under the impression most phd students were given their topic by their supervisor

prisma wave
#

youre probably correct

#

the proposal is apparently just part of your application to show that you have some ideas and know the field and arent an idiot

#

but most people dont end up actually doing it

crude cloud
#

ohh yeah i've seen something like that before

#

really neat

prisma wave
#

it's very cool yeah

crude cloud
#

so basically a language that describes graphics and animations that isn't a python library

#

that would be interesting

prisma wave
#

yeah and ideally the interactivity bit too

crude cloud
#

right right

prisma wave
#

theres a yearly conference about programmatic art which im fully investing into trying to being able to present at, and if i cant then im kinda cooked cuz it's not actually a very researchy project

crude cloud
#

bro needs funding

prisma wave
#

yeah 😭

crude cloud
quiet depot
prisma wave
prisma wave
#

Hopefully

#

Depending on how hard I can lock in

#

So tutorial might have to wait another 6 months sorry guys

crude cloud
#

sob

brazen ether
# crude cloud I thought you were going to talk about fsm but what I'm reading rather screams "...

yes I started it kinda badly, but the reason I said fsm is because the canonical state wouldn't just be like, a list of item stacks that should be corrected to, but should represent what the menu actually does, and this should be stored as one of a few possible states via union types, such that you have type safety to enforce certain conditions. you would have a different type for these cases, and you would be able to register actions and handlers that depend on the state and only on that state.

crude cloud
#

yeah i mean you can achieve that with a fsm but you cannot only achieve that with a fsm

#

it definitely helps

brazen ether
#

these states could still be hierarchical though, the point of them is to simply separate everything that requires different behavior handling

brazen ether
#

so this is already quite a broad thing for me to say

brazen ether
prisma wave
#

was the code example i gave similar to what you were imagining?

brazen ether
#

I'm gonna check it out later and lyk!

prisma wave
#

👨‍❤️‍💋‍👨

crude cloud
#

woah 😳

distant sun
#

Off topic, BM's name is so long that on mobile is displayed as "Bri... 💠 DVDN 🛡️ 🔗 GitHub"

#

Too much bloat tbh

wind patio
frigid badge
#

for me it’s Brister…

crude cloud
#

wait

#

no

#

barry eats children

#

what happened to soldier 😭

wind patio
#

rip tf2 soldier

prisma wave
#

Awesome

pastel imp
prisma wave
wind patio
#

or rather how big is ur font

#

or how small is your screen

prisma wave
#

on mobile

crude cloud
#

i miss soldier

#

I despise you‼️

prisma wave
#

sorry

#

its the same colour palate

#

for what it's worth

distant sun
half harness
#

oh wow

#

I use 87.5% 🥴

desert horizon
#

Speaking of font size, anyone else noticed that font sizes for threads in post channels seem smaller?

potent nest
#

yep

agile galleon
#

How are you guys future-proofing your version checking systems for the new versioning schema?

wind patio
#

im not

#

also it's probably pretty straightforward

#

few lines of code

prisma wave
#

idk

ocean quartz
#

Future proofing by letting future me worry about it

crude cloud
#

I don't have to care about the version string if all I care about is the data version

#

or better yet, nothing regarding a specific version

wind patio
#

I use like 5 main colors in my plugin, but now I mostly write the colors manually, for example:
...("<#E33939>Some text here")

Does anyone have some/use sort of global color palette system?
I was thinking about two options, passing every string (whether it's from config, sending message to a player, etc.) to some sort transformer, which parses for example:
...send(Colors.parse("<color.primary>Some text here"))
to
"(<#E33939>Some text here")
(maybe use TextReplacementConfig from adventure)

or use constants, like:
...(Colors.PRIMARY + "Some text here")
though constants would be quite annoying for texts that have multiple colors in it.

crude cloud
#

i'd just slap them as minimessage tags tbh

#

and how is the usage of constants any different than having the "name" on the string lol

wind patio
#

string concatenation ugly

#

and would probably be a little more difficult than just find & replace from <#E33939> to <whatever>

ocean quartz
#

Yeah just minimessage custom tags

wind patio
#

um, I mean, if I have a string like:
("<#hex1>some text <#hex2>" + somevar + " <#hex3>more text...")

I could just search & replace each hex color, say <#hex1> to a, for ex., <color.primary> and then let the replacer handle it
for constants I would have to
find "<#hex1>
replace to "Colors.PRIMARY + ",
find <#hex2>" +
replace to "+ Colors.SECONDARY
or something like that

#

and not every string is equal by any means, maybe the hex color has a space after, maybe it doesn't, maybe it has a concatted variable after them, maybe not

#

not sure if I explained clearly

wind patio
crude cloud
#

just MiniMessage w/ custom color tags?

#

like, MiniMessage.miniMessage().deserialize("<foo>foobar", Placeholder.styling("foo", TextColor.of(0x123456))) or whatever

wind patio
#

no I meant like, um, I find it really annoying since there are a lot of cases to cover (sending messages, replacing in commands, in configs, in actionbars, titles, bossbars and whatever), I basically have to pass the component to a replacer everywhere I use any color, no? or is there MAYBE some sort of easier/magic way to do so

ocean quartz
crude cloud
#

MiniMessage is a component serialization format, the MiniMessage class is a serializer/deserializer to convert a Component to a String in the MiniMessage format and vice-versa

#

you can have custom simple tags like shown above, or more complex tags like shown in the papermc docs

wind patio
#

alr

#

I mean, I know what MM is, I was meaning to ask a different question, but that's fine, I'll figure it out, I've just been slowly migrating the codebase to use components since I didn't really have the time to do so and it's been PITA

ocean quartz
#

You can create a minimessage instance with your tag resolver MiniMessage.builder().tags(myTags).build()
Then just myInstance.deserialize("<my-tag>Hello!")

wind patio
#

yeah I am aware about that part, I was asking more about using that instance throughout the whole codebase, maybe there is something I don't know and I don't have to wrap every sendMessage("blah") to sendMessage(ColorUtilsOrWhatever.deserialize("<tag>blah")) and what not

crude cloud
#

how are you sending the messages/whatever right now?

#

you said you have something like ("<#E33939>Some text here"), surely you are using MiniMessage for that, yes? you'd replace the usage of MiniMessage.miniMessage with whatever custom instance you want to use

ocean quartz
#

If only you didn't hate Kotlin Clueless

fun Player.sendMiniMessage(message: String) = myInstance.deserialize(message)

player.sendMiniMessage("<tag>blah")
wind patio
#

some parts use an old lib of mine that also transforms old color tags (&c) to MM, some parts use a local transformer class, some go through a few different steps, anyways

#

I got the answer, thanks

ocean quartz
quaint blaze
#

oh if you need something custom, then yeah

quaint blaze
ocean quartz
#

That is very unreadable, bad usage of operator overloading 😔

brazen ether
#

Matt's version isn't significantly longer but is immediately understandable

#

wouldn't say the operator thing is horrible but definitely worse than the sendMiniMessage approach

pastel imp
#

although I just noticed this is in dev general, so using a plugin probs not the answer

#

xD

quiet sierra
#

make a sendMM method

#
fun CommandSender.sendMM(message: String) {
   this.sendMessage(mm.deserialize(message))
}
pastel imp
#

He was just stating that his friend did it that way

#

If you scroll up the exact same thing you showed was sent xD

quiet sierra
pastel imp
#

how would one even implement component caching in this case?

abstract osprey
#

caching string to components

#
    fun format(string: String): Component =
        simpleComponentCache.get(string) {
            miniMessage.deserialize(string)
        }
#

we do various layers of component caching

#

but for basic caching its ideal for the commonly used strings

#

because MM is awful for allocations and cpu usage when you're at higher player counts

potent nest
#

now do it with placeholders

abstract osprey
#

we do that

#

simpleComponentCache, singlePlaceholderComponentCache, complexComponentCache

potent nest
#

fair

#

though allocations are most likely not a problem at all

abstract osprey
#

on release they were an issue because we had an oversight in our locale object parsing

#

so we were OOMing every couple of hours

potent nest
#

yeah but that has nothing to do with MM

abstract osprey
#

our main coroutine executor was doing 900+gb of allocations in minutes thanks to adventure

pastel imp
abstract osprey
#

hm?

pastel imp
#

for instance, dynamic placeholders

brazen ether
#

that's why it's a simple component cache

pastel imp
#

for ex. a placeholder that show money

abstract osprey
pastel imp
#

caching that would not display the actual money

pastel imp
#

and how would you detect "simple" components from "non-simple"

potent nest
#

but most likely it also just means that you're doing far too much, which can be "fixed" with a cache but is still wasteful

brazen ether
abstract osprey
brazen ether
#

it doesn't modify the map

#

its hard coded

potent nest
abstract osprey
#

With things like balance where it differs for every player it's not very efficient because it's always entered into the cache, but it's still an advantage for the wide majority

abstract osprey
#

but it's still an issue as player count increases

#

you have tab header, tab player list, and tab footer to process for hundreds of players

imagine doing that without caching

#

with every single one having placeholders

brazen ether
#

i feel like you're underestimating how fast java is and the power of good code

potent nest
#

hundreds of players aren't the limitation there

abstract osprey
#

the cpu usage isn't a big deal tbh

#

but the allocation rate is

brazen ether
#

your solution is a bandaid over a much larger issue. that doesn't mean you shouldn't have it, because sometimes the bandaid is just good enough, but you're describing this as if it's an impossible thing to manage without a cache

potent nest
abstract osprey
#

I'll see if i can dig out a spark

brazen ether
#

java GC is REALLY fast

brazen ether
#

the performance difference between code that was allocating hundreds of GB and 0 allocations was not gigantic

potent nest
#

like if you achieve >1GB/s allocation rate just with adventure/MM, you're just doing far too much

brazen ether
#

I discovered this as I was optimizing my physics engine

pastel imp
brazen ether
#

so it must be set somewhere else

pastel imp
brazen ether
#

and they obviously can't have it cache just every generic string

abstract osprey
#

that code snippet i sent is for purely regular string -> minimessage conversion

parsing strings with placeholders are another function which is not in that snippet

#

our 900+gb allocations were as a result of an issue with our code itself (1 line fix)

#

it's much better now

#

I'll start an alloc profiler

abstract osprey
#

MM is fast

#

so apologies if i misclarified that

#

Over 3 minutes our MM allocations are about 2.5gb, just checked

#

That's with 251 online

brazen ether
#

just checked and ALL of the collision detection for my physics engine for 2000 objects in a pile takes just 1.7ms. that's crazy

abstract osprey
#

Yup

brazen ether
#

well ig that's with your caching

abstract osprey
#

the majority of that is our claim menu which is... inherently flawed xD

brazen ether
#

you must have a lot of commonly used components. why not hold the components themselves instead of strings

abstract osprey
#

our messages are fully localized

pastel imp
pastel imp
#

I was planning on potentially adding caching to Runway but not sure how I will do it as nothing is hard coded xD and I still can't afford showing wrong data

abstract osprey
#

i've heard adventure's localization system is nice but it's not very well documented (iirc) and we liked our own system more

abstract osprey
#

jesus it's scary how much usage setting entity customName is

#

0.19ms

steel heart
#

"Object-oriented programs are offered as alternatives to correct ones", do people here agree or disagree with said quote? Just out of curiousity

potent nest
#

stupid

steel heart
# potent nest stupid

i mean yea, it might be pointless or stupid, still would you rather agree or disagree, or just abstain?

steel heart
#

well, the quote isnt all that relevant today, but it used to be said as a critique against OOP, favoring other alternatives like FP, PD (and Data Oriented Design i think?)

cinder flare
#

is this for like, some kind of research or class assignment or something? lol

crude cloud
#

yeah i don't agree lol

steel heart
steel heart
#

lol, u might even remember parts of the discussion back then, i think sxtanna was still here at that time

prisma wave
#

I mean formal proofs of correctness are basically unheard of in the OOP world so…

#

good lord

#

who said that?

#

I don’t remember it

steel heart
#

oh welp, the quote's from dijkstra i think

#

idk their first name, but ye

prisma wave
#

he never gets anything wrong

steel heart
#

yeaa right...

brazen ether
#

given that it's from dijkstra