#dev-general
1 messages · Page 369 of 1
Never ever seen that in my life
oh is that the thing you see in like cartoons and stuff
until smoke came out
Yeah we don't have those over here
you put water flavour and coal there and then smoke the vapor
weird
wot
Germans are fucking weird
Jesus
YES
lol
COOL
I haven't seen it much elsewhere though that's true
Yea that's not german I don't think
HAPPY BIRTHDAY
THANKS
In Germany you have bars for these at every corner
Happy Birthday!
Afternoon Glare
shisha fucks your lungs even more than regular cigarettes
Will you guys hate me if i do @NotNull final instead of final @NotNull
https://www.spigotmc.org/threads/player-hold-item-event.496932/
Imagine how dissapointed they are with this response
aw why
he's right though
what did ivan say
i said "what is that IDE? notepad++++?"
lol
there's a difference between not accepting other opinions and saying right off the bat that you aren't interested in arguments about IDEs
notepad--
he's tired of people telling him to use another IDE because they provide no sufficient reason for him to switch
he's used to Netbeans and likes it
show code
And likely all these comments he's, getting will make it even less likely he'll ever switch
Annoying someone into changing isn't a good strategy
Thank you!
HAPPY BORTH
THANK
question to anyone whos fucked around with cross server management, or managing sub servers in general, it should be done by the "parenting" server correct
are talking mc servers
i think that's not an ideal way to do it
i'm actually dealing with this right now, and all of my current management is happening in bungee
lobby bad because what if you want more than one lobby
same applies to bungee fyi, so you'd probably want an entirely separate management instance going separate from the MC servers
looks pascal-ish
Ivan, elaboration is what I require
some dodgy language
what specifically do you want me to elaborate on 😮
Imagine coding in german lmao
FFS
I know it's not
fucking terminal console appender depends on a different version of Log4j 2
How one would approach this all together, let me explain the end goal first
okay
and apparently you can get those issues with multiple Log4J versions on the classpath
because apparently Gradle can't figure out that shading 2 different versions of the same dependency is a bad idea
fml
Maybe pascal or Delphi
guess you'll just have to manually unzip the jar and delete the dependency every time 🤷♂️
you know exclude exists right?
(/s)
So let's say I've got multiple arena instances
- Arena 1,
- Arena 2,
- Arena 3
Their creation and management (resetting the world, clearing data etc), should be handled by a single parent server (or just a single input point in general),
Then there's lobby instances (one for an example)
- Lobby 1
The creation of it should also be managed by the parent, however the lobby itself should handle the joining of arenas, (if there's multiple lobbies, that might be a little scuffed so will probably be have to be done differently),
Now the question is, what/how one would have a single entry point for all this, and with what/through what should that entry point be handled.
(Since you said using a MC server for this isn't really ideal, what would be an appropriate thing for this)
quick google search says ada
well first i guess i want you to clarify
Do correct me on anything stupid I said in there 
each arena is a separate server instance right
not just a separate world on the same server
Indeed
Would be ideal since scaling wouldn't be an issue
Not using anything yet, but that could be a possibility yes
if you're not using it yet you definitely should
||Lemmo is gonna love me if I use docker||
docker can make the whole 'creation and management' part really simple
as far as writing code goes, at least
or more specifically docker swarm / k8s will make that easy
I don't care if it's simple or hard, I just need something which is reliable, and optimal for such a use case
docker orchestration is optimal
if you use k8s you can deploy the arenas across multiple physical machines with ease
now you do have several choices when it comes to where you put the 'brains'
Yeah the extension suggests Ada
as you said one potential option is the lobby server
i think that's silly because you can very easily decide to have more than one lobby down the line
However that becomes an issue if there's multiple lobbies
But that also poses an issue if there's multiple machines no?
that's what i'm doing and it'll probably be good for as long as you're using one bungee
why is that
Well as you said, multiple bungees
right yes once you have multiple bungees it might be a problem
2021-03-24 16:12:31,992 main DEBUG null null initializing configuration XmlConfiguration[location=jar:file:/C:/Users/callu/IdeaProjects/MineKraft/server/build/libs/Krypton-0.14.jar!/log4j2.xml] lol
ffs
if you think you'll get to the point where you will have more than one bungee
(wow)
why does Log4J just not like JAR files
Might as well make it as scalable as possible from the scratch no?
true
in that case i'd say just make a completely independent jar
and run it by itself, connected to all the backends and all the proxies
that gives you the best scaleability because you still have room to shard that one jar in the future depending on how you design it
mhm
so yeah thats what you want to do as far as the structure goes
oh having an independent server for just management is also nice because it's kind of like a microservice
so that's an instant cool factor
probably also performance through the roof
yeah since there's no extra overhead on bungee or on spigot
definitely a plus
so at that point you just need to find a good way to have everything communicate
Bardy suggested RabbitMQ
i'm sure you can use redis for that, i personally use java sockets to some moderate success
right, fucking finally fixed the issue with the console
Log4J's Log4J2Plugins.dat file wasn't getting combined with TerminalConsoleAppender's
you can even make a REST api for the management server or something
but luckily, shadow has a transformer to deal with that
No clue how I'd even go about doing that kek
actually a rest api / communication method would probably be needed for every server, not just the management server
so maybe something simpler is better
well I mean data would be sql, and communication would just be to inform the sub servers/parent of the state of things
anyone know if you can work on two separate branches at once in Git without committing changes?
Does that make sense?
yeah you'd keep all your data in an SQL db for sure
but you want to be able to give your spigot / bungee servers instructions
If you're editing a branch and change to another once you get back to the branch it'll still have the changes you made iirc
i will say you probably want to only connect to the SQL db through the management server
or at least not through every single backend
because that's a lot of connections
yeah ik
looking into a solution where apparently, you can create a new work dir that caches the changes on a certain branch
Forwarding the info to the management server and then storing it would probably be ideal then
yeah, that's what i'm doing right now
Now to actually try and figure out how to do any of these things :kek:
xd good luck
I've got no experience when it comes to docker, so we'll see how it goes kek
if kubernetes turns out to be too intimidating you can try docker swarm
both can do the basic orchestration stuff you need
but k8s is more powerful, popular, and has more cloud support
but also scarier
gonna do the hack of just creating two separate projects lol
Only thing I'm scared of is human interaction, so I'll be fine 
fixed btw
https://ci.kryptonmc.org/job/Krypton/ wait for this to finish and download that
You can use a git stash before you switch branches then pop it when you switch back I guess
yeah that works too
@oblique heath My head already be hurting from just reading on kubernetes :kek:
you are sick in the head
untrue
gradle init: exists
Not sure about you but i am not fond of 'compiler hacks'
kotlin and maven, next ull find out hes using eclipse
nope
intellij and the LATEST java
some would say it is the latest available
just as the tremendous James Gosling intended
Latest being 11 or 16?
16
Good.
17 prerelease or nothing
smh BM
🥴
src/main/java/Main.kt 😄
😩
oh god
are there any gains to targeting a higher jvm version on kotlin other than optimisations?
11 - best of both worlds 😄
If I TARGET JVM 8 But compile with JDK 16 can I run on JRE 8?
Time for windows reset. See you on the other side
Class 'kotlin.reflect.KClass' is compiled by a pre-release version of Kotlin and cannot be loaded by this version of the compiler
what would be proper package naming for the parent, and for the children
imma just go with source and receiver for now
"For every 1 java bug fixed. 3 Kotlin ones appear"
is Main a good class name (not for plugins)
some would say it is not
I like to think of it as a good name
one of the best
and I know alot of java names
ok
@jovial warren I like how velocity handles initialization, (using an initialize event)
ie.
bombardy can I get some support please
what with?
just because you came in here to ask instead of being patient and waiting for someone to answer you in there, no
I can't be patient, because people are waiting
well unfortunately for you, the staff here are volunteers, who dedicate their time off their own back to answer support queries
yeah nah
- Bardy is not support
- Even if people are support, they are volunteers
- Wait patiently and don't randomly ask in other channels
also, it's PlaceholderAPI, you don't pay for it, so you aren't entitled to premium support
^
https://paste.helpch.at/yiqoviyima.cpp can anyone think of how to convert this to Kotlin btw?
since you can't have assignments in a while
whoops
good job.
?
copy paste 🙂
actually, lemme give that a try for once
I mean we owe you nothing
let's see if IntelliJ's Java to Kotlin converter can actually be useful
TimingHandler last; might mess it up a bit
Recursion
your stack should be a persistent data structure which you copy with the elements popped
🙂
Please do not ping me, as I didn't ping anyone
it's not that
it was a reply-
wow, pinging, such a big deal amirite guys
Doesn't matter, it's still a ping
Did my link help you?
@jovial warren
hi
hello
hows ur day going
#off-topic lol
Says late
good thing i just open sourced my project today
Good thing you did
yoooo kotlin karens so does kotlin have some sort of static inheritance or whatever idk companion inheritance maybe
just like the concept that'd be
Something I thought was kinda weird at first but it's pretty cool
class MainClass {
companion object : AnotherInterface
}
Where the companion is an implementation but the "parent" class isn't
why is the code for aikar's timings so whack
how do timings even work?!
https://i.imgur.com/eGvA5cy.png I've never had so many elses before 🤢
and when I say a lot I mean a fucking shit ton
bruh
lemme show you
dkim deliberately codes horrible code?
theres no workaround
theres always a workaround
Wdym? There is no workaround that you know about
Send the entire code
I know the workaround I want to choose
figure out how the timings works by myself and write the entire code from scratch
not using aikar's existing code
uh
I might be a meanie now but you sound like the n3w0rk guy now
i dont want to get bullied :c
what
what am i doing
We'll bully even more if you don't send
About those horrible elses you have there
u know that project that u privated after i looked at it 👀
actually, maybe copying aikar's code is just the way it's meant to be
screw it
static abuse it is
lol
Oi Dkim, never do this lol
whats wrong with it?
oh
I guess it's just somewhat counter intuitive for me
It's very confusing though, makes it look like the code has bad indentation
now, who to copy from 🤔
I disagree
paper
nukkit is a cesspool from what I've seen
I'm trying to implement aikar's timings btw Johnny
just as context
but the code for it isn't published anywhere
and it's horrid
and yes, Nukkit already looks like a cesspit
I think the API and server are combined into one
anyway, copy from Sponge or Paper then
screw it, copying from Paper
yes, but it closes right after that time
Still says late.
though Paper loves exposing literally all of the backend for timings
ok but yugi have u ever been 4 days late
I get marks as long as I make the submission
🥲
@ me rn
FUCK i forgot to go to my conference i was supposed to have with the teacher
lmao
FUCKKKK
F
L
I got an 89 ON MY ESSAY
someones definitely getting muted
🤣
🙂
out of how much?
100 prob
Oh isnt that good?
actually, no
lol
I'm better than Paper and Sponge
Wha?

well
lol ik that sounds a bit random
I'm trying to implement aikar's timings into Krypton Yugi
gl
but it's a fucking mess
gl bard
like literally a mess on top of a mess on top of a mess
is that a "I've seen that shit and ik what it's like" or a "I've done that shit and ik what it's like" gl
I'm gonna search through the PHP code and stuff to see if I can find what and how it works
then try and implement it for myself
Warnings I hate in Intellij:
Unused warning - hate it for making libraries/apis
Inverting warning - hate it cause you may want to use it sometime later
...
what else
just suppress it
No
y
You can turn them off
lmao
but they're useful
Then don't suppress them
maybe not the inverted one
¯_(ツ)_/¯
lol
The user won't see it though
yea true
It's for you that are building it
mill
man you were smart for once
yesterday
telling bardy something useful
but now
it decreased
lol
Dkim in the inside: 🥲
🥲
me in the inside: 😭
https://github.com/SpongePowered/Sponge/tree/api-8/src/main/java/org/spongepowered/common/relocate/co/aikar/timings can anyone give me a hand on the best way to avoid static abuse implementing something like this?
Ask Masked, and do the opposite of what he says
who?
Search Masked in #development
TimingsPls lmao
Lol
lol
that was probably kashike's doing
let me show you the static abuse I want to avoid
also, Sponge uses an IAbstractSpongeTimingsFactoryBean here
and I don't want factories in Krypton
or statics
FactoryBean?
yeah I'm taking the piss
point is: factories in Kotlin big ew
I wanna do all of this with DI and proper instances
[5:41 PM] BomBardyGamer: point is: blah blah Kotlin big ew
lol
trying to think of how I want to actually do the DI though
since this is so riddled with static abuse
actually, the sponge one doesn't seem to be
a little static abuse wont hurt 🙂
🤣
heinz beans
Heinz Beinz
is heinz not just uK?
Lol no
o interesting
why have I only just noticed that Heinz think they're cool by spelling "Beans" "Beanz"?
Nice ketchup brand
ive always thought heinz was uk for no reason whatsoever
same
seen it here too, was pretty shocked lol
Really...
It's a bean factory!

Just do it Bardy
it means you are stupid in Spanish xD
nah I'm kidding, it means today at
or, today to the
bien, gracias
y tu?
lmao
puta is more like whore but yeah
I mean that does make sense (except for the question mark lol)
Mama, just killed a man
ispkspis
at this point, I might just say fuck timings and just not support it
Isn't Spark better?
if aikar and his cronies wanna keep it all secretly between them then screw them too
yeah I'll use spark I guess
wait how do you know that
No idea who those are
yup
oh btw, it's probably worth adding events to the ticking right?
these people need to get a job
Like tick start and tick end?
yeah
/s before anyone tries any funny business
If I ever used it I would like it lol
There wouldn't be any harm in doing it right?
nah
it's just as simple as calling an event
just like always
still gotta fix watchdog just randomly making the server go bye byes for no reason
it says the last tick time exceeded 60 seconds, but that's literally impossible
lol
while (true) {
lastTickTime = System.currentTimeMillis()
val tickTime = measureTimeMillis(::tick)
if (tickTime > 2000L && lastTickTime - lastOverloadWarning >= 15000L) {
LOGGER.warn("Woah there! Can't keep up! Running ${tickTime}ms (${tickTime / 50} ticks) behind!")
lastTickTime += tickTime
lastOverloadWarning = lastTickTime
}
lastTickTime += 50L
eventBus.call(TickEndEvent(tickCount, tickTime, System.nanoTime()))
if (tickTime < TICK_INTERVAL) delay(TICK_INTERVAL - tickTime)
}
```nothing wrong with that btw is there?
the watchdog process watches lastTickTime
actually wait a minute
while (true) {
val tickTime = System.currentTimeMillis() - server.lastTickTime
if (tickTime > tickThreshold) {
WatchdogProcess.LOGGER.fatal("A single server tick took ${"%.2f".format(Locale.ROOT, tickTime / 1000.0f)} seconds (threshold: $tickThreshold)!")
WatchdogProcess.LOGGER.fatal("Considering it crashed, shutting down...")
exitProcess(1)
}
}
```that's the watchdog code
that could get out of sync couldn't it?
Is that in a different thread?
yeah
wdym?
guess I could
while(thisBooleanIsTrueBecausePulseWantedMeToUseIt)
but that'll stop anyway
Better control
yea
Just wondering but how come its in a separate thread?
Exactly
because that's what watchdog is for
lol
oh
that's not the ticking mechanism
watchdog is not an anticheat it just checks the server's state
watchdog makes sure the server hasn't crashed
I know that
Oh wait I'm dumb
Yeah I just realized
It wouldn't do anything
:kekw:
lol
yeah if it was on the main thread it would be useless lol
I wish Kotlin had
for {
}
// or
while {
}
Rust has the for one
wdym?
instead of while true
I use exitProcess btw because I have a runtime hook
Ic
Yeah instead of while true
for {
let blah = blah();
if !blah {
break;
}
}```
i just prefer while(boolean) because it is the proper way to exit a thread
threads of life cycles and end cycles
Runtime.getRuntime().addShutdownHook(Thread({
KryptonServer.LOGGER.info("Stopping Krypton...")
isRunning = false
KryptonServer.LOGGER.debug("Shutting down scheduler...")
scheduler.shutdown()
KryptonServer.LOGGER.info("Shutting down plugins...")
pluginManager.shutdown()
KryptonServer.LOGGER.info("Goodbye")
}, "Shutdown Handler"))
and that stuff
that shutdown handler is why I use exitProcess
because it avoids me repeating code
for {
blah := blah()
if blah {
break
}
}```
since exiting the JVM will run the hooks anyway
you could make a listener for the boolean
but prolly nah
cause that adds extra resources
whats SRV again
dns
@jovial warren can I run WorldEdit on Krypton?
oh
soon™️
Hehe
but isnt that bukkit or spigot?
when Krypton has the tools for me to make an implementation for it, I will do so
how can you run it together lol
FAWE on krypton? 🤨
that too
🥲
buuuuuuuuuuump
stfu
😦
/s
Closest you can get :kekw:
yes
is that a function just for a loop?
actually wait
😖
okay I think I'm an idiot
Yes
val address = buf.readString(255).toInetAddress() because that'll definitely work for most situations
🥲
🌚
I'm not going to support aikar's timings until aikar gets his shit together and gives me at least something to go off of
Yeah
it doesn't load @eternal compass
Let me introduce you to Go.... where this is straight up a compilation error 🙂
I dont get what the difference is between compile and transpile, compile is when u make human readable code into machine code and transpile is just human readable code to human readable code or what?
i guess so
Transpiling means you are "compiling"/"converting" something written in one language to another non-machine language
converting is probably the better word yeah
Yesterday
yes what a special occasion
fuck
in uk its still his bday 😊
Ah
10pm rn
@prisma wave congrats afterwards :]
dang, its glitchy
yes congrats on staying alive bm (for 17 years now?)
fred that aint even opening
for me its 6
i made bm a gift but he no reply i scared
pain.
was it monads?
Do be monads
now thats one hell of a gift
yup
I painted him a QR code. 😦
okay and eat pizza
Let me introduce to you the "Mitten" monad
It holds values such as "Brister", "bitter", "Elara", "insert party cap emote, cant find it" and more as such. It is usually represented with the value appended with the "Mitten" word
🥲
not user input
Console.ReadLine
oh
?
cin
that is infact java.
Haskell 🙂
Wait was that a serious question?
yeah dkim questions
...
You want to read user input?
no
Or read the output stream?
.
uhh i guess so
actually
nvm ive found a better way
Alright
....
🥲
Sadly
Did your solution work?
And Rebecca or something like that
didn't test
never heard of it lmao
Aight. To confirm, do you want to read from the logger or the actual output stream?
It's like the same crap
wanna see my project for this shitty online class
Literally
Oh my fucking God
yup
It has images...
im over here making full plugins in kotlin and I have to do this shit 🙃
at least let me use blender lmao
oh and also the Alice download servers apparently suck because it's going to take 41 minutes to download 1.5GB
I mean fair enough that really is an intro to programming (mainly the whole flow & logic things), but for dummies lmao
yeah and I'm in my second semester as a CS Major lol
Oh what...
in my other class, I'm talking about QuickSort lmao
wanna help me with my homework?
lol
8.4 When all keys are equal, what is the running time of
a. Insertion sort
b. Shellsort
c. Mergesort
d. Quicksort
8.5 When the input has been sorted, what is the running time of
a. Insertion sort
b. Shellsort
c. Mergesort
d. Quicksort
8.6 When the input has been sorted in reverse order, what is the running
time of
a. Insertion sort
b. Shellsort
c. Mergesort
d. Quicksort```
It's in Big Oh notation lmao
yea its testing you the worst/average/best complexities
they should've asked you that directy lol
would've been much easier
ok basically I hjave to make something that when a user clicks on a button it lets them input the dimensions of the shape on the button they pressed
but i want it to be fairly easy for me to add shapes in future
whats the best way to do this? (Windows forms app with VB)
Radix tho 🤤
lol is that the counting sort?
or is counting sort different
Oh wait they are different
counting sort is radix sort but using whole value
omg
all my builds passed
😍
all my homies like merge sort
also constructing worst case scenarios for sorting is kinda fun lol
but I guess yeah the worst case would be
1 2 3 50000 6 3 49999
awee i like stalin sort
https://www.geeksforgeeks.org/add-elements-in-start-to-sort-the-array-variation-of-stalin-sort/#:~:text=Stalin sort (also%20'dictator%20sort,simply%20eliminated%20from%20the%20list.&text=The%20process%20is%20then%20repeated%20until%20the%20list%20is%20sorted.
yep
also know as trump sort
lol
@cinder flare got caught using block coding #lacking
haskell too hard, Im reverting to the basics haha
@old wyvern Did you make the todo? ;p
Add it to Gradle?
i already did
nvm
it just disappeared
okay now its just broken
intellij hates me 😦
invalidate caches and restart ij
lol
Will do in a bit, gotta finish a game for project review for tmr
💀
Oh take your time, was just wondering ;p
Alrighty
switch (mark)
{
case int n when n >= 80:
Console.WriteLine("Grade is A");
break;
case int n when n >= 60:
Console.WriteLine("Grade is B");
break;
case int n when n >= 40:
Console.WriteLine("Grade is C");
break;
default:
Console.WriteLine("Grade is D");
break;
}
```😮
is uh.. is that declaring a new int for every case line?
No
That exists only in the scope of the case I think
Just stumbled on this randomly
why lol
I assume theres also some form of type matching?
Maybe like you could switch a base class and handle cases of diff child classes
Might wanna confirm that
Yea same, but kinda nice ig
Has anyone here ever used JavaFX with fxml files with ImageViews?
Nope, but might be better if you mentioned the problem itself
Alright
imagine not using scenebuilder
So, my images won't load, there is no errors or anything, I'll put the code in a paste one sec
I have used TornadoFX, just not JavaFX directly
=paste
Please use a paste service to share configs, errors, code and long logs.
• HelpChat Paste
i used javafx for my jumpscares
lmao
Have you played Scary Maze?
Its basically a troll game
lmao
The images just won't show up
The path is probably incorrect
okay 😄
Its the path that it did automatically when I dragged in the image
I fixed it
yo guys i am new to this minecraft deving
if someone could help from where i could get sources like yt
Useful resources:
Java API: https://docs.oracle.com/en/java/javase/11/docs/api/
Basic Java Tutorials: https://docs.oracle.com/javase/tutorial/
Online Java Course: https://www.codecademy.com/learn/learn-java/
Object-Oriented programming in Java: https://java-programming.mooc.fi/
Interactive tutorials through projects: https://hi.hyperskill.org/
____________________________________________
Start with this -
https://docs.oracle.com/javase/tutorial/java/concepts/index.html
Breeze through this skipping stuff that doesn't seem relevant like bitwise operators-
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html
and then hit this
https://docs.oracle.com/javase/tutorial/java/javaOO/index.html
They're the first three from this larger thing - https://docs.oracle.com/javase/tutorial/java/index.html
Which you should definitely go through overall. But those three should be enough for slightly better understanding of wtf is happening here without feeling like a huge time sink
That one is a small part of this larger site - https://docs.oracle.com/javase/tutorial/index.html
wherein "Essential Java Classes" and "Collections" also have good useful stuff
____________________________________________
For plugins: https://bukkit.gamepedia.com/Plugin_Tutorial
A few challenges you can try and solve: https://github.com/PiggyPiglet/Challenges
Things you want to take a look at when making plugins: https://bukkit.gamepedia.com/Plugin_Tutorial#onEnable.28.29_and_onDisable.28.29
https://bukkit.gamepedia.com/Plugin_Tutorial#Commands
https://bukkit.gamepedia.com/Event_API_Reference
@ocean quartz where triumph chat
@clear junco there you go ^^ plugin making isn't a fun ride at the park, you have to know how to program (as the official Bukkit page says, it is a necessity), it will take a lot of time to learn if you are not familiar with the concept, way, way more than "just a few weeks", you will go to hell and back in the process especially since Bukkit has its own twists... I know you are all "but I want to make plugins, not 'just learn java'" and in reality it's "but I don't want to read this boring article that takes me 3 minutes to read and 15 to comprehend, I want to spend a whole frustrating week trying to do something without knowing how to"
But after all that's what we are here for, to help you out of this endless hell loop (also #development for dev support)
Sleeping
'tis 6:23 am, time to wake up
Tis 5:24am time to go sleep
@obtuse gale yes sir
Yikes
orange boys
If either amazon or microsoft buy discord and I see one fucking ad I'm nuking something
My house
Can i visit your house when that happens?
I'll be there as well, we're gonna have some coffee
How ew would something like this be
very pretty actually
and a very logical way of ordering servers
what format is that?
hocon
very smexy
do you prefer it over YAML?
for commissions I use yaml and properties, this is not a commission so testing out new things
hmm lemme eat my oreo mcflurry first
Could not care less about that
Also ur name is Dom
Like document object model
I mean it’s a convention still
yeye
Sure u cane have the folders uppercamelcase I guess but then change the names to kebab case ?
Now I want a kebab

Luckily, Krypton natively bundles kotlinx.serialization, so you can very easily add support for a multitude of formats
It comes bundled with JSON and HOCON though
No
whatever-this-case-is
And because it supports kotlinx.serialization, you can avoid messy code for transforming your configs into objects, since kotlinx.serialization handles that conversion for you
Just make a data class and annotate it with @Serializable
but what about yaml
Kaml exists
ooh?
It's not official, but it works
It's a converter for kotlinx.serialization for YAML
And it's promoted as a format serialiser in the official repo
oooh spicy
All you gotta do is manually read the files as text
Which I may add some helper functions for
I mean, it's one line
FileReader(File(context.folder, "config.yml")).readText()
You might wanna use use there actually (basically Kotlin's equivalent of try with resources)
I do like try with resources
I like Kotlin's lambda function for it
FileReader(File(context.folder, "config.yml")).use { it.readText() }
Since Kotlin doesn't actually have try with resources
Mainly because of that lambda function lol
Kotlin doesn't need it
It still takes me a sec to remember that it is a special keyword in Kotlin lol
It's not a keyword, it's just the implicit name for the receiver parameter in a lambda
Avoids you writing use { reader -> reader.readText() }
Well yeah I know, I'm just not used to it is all
Fair
Yeah Java gets you into bad habits of being over verbose lol
It can be difficult to get out of those habits
yeah man like I love those series of . calls that, in one line, (or many for prettiness) take an array or something and sort it and return an arraylist or something
those things are super cool
Literally File.readText()
No need for a reader
And apparently I don't know Kotlin that well
that sounds like two keywords you smooshed together
I mean the filtering and stuff
that's not reactive
I know lol, it just seems like a buzzword name haha
everything is a buzzword around here
yeah I guess that’s not reactive
oh also, is it worth me adding flat world generation to Krypton just so you can have something generated by default instead of having to copy your own world over?
oh shit wait can you not reuse the vanilla worldgen code? cause that's gonna suck
I could look at some of it, but I really have to limit the amount of time I spend looking at Mojang code, so I don’t end up going insane
also, their world generator is probably also a mess
but it must be pretty tough to generate a world exactly like how vanilla does it? I'm only now seeing the precarious balance we have that every server utility generates worlds exactly like vanilla
I plan to make my own world generator from scratch for Krypton
it’ll be a huge project, but I can do it I think
catch Krypton in 30 years with a fully redone worldgen system lol
ah yes, krypton users will be forced to enjoy their new server in the void >:)
lol
got a trello or something? i'd love to keep up to date on the progress of this bad boy if I ever miss a few discord messages in the infinite stream
nah I’ll make a really simple flat generator
got a project board, but I’m a bit behind because I’m pretty lazy and don’t make issues and add things and move them around like I should lol
bro trello is so satisfying tho
though I do agree it is better when other people make the boxes for you and you just get to move them
coming up with them yourself is the hard part
Trello is alright, but SaaS
free for indiviuduals, im sure?
clickup better
I need people to make issues on GitHub with suggestions and bugs lol
and atlassian is kinda cool
i shall look that up but it sounds cool already
not sure if I really like Atlassian tbh
jira kinda slaps
their services are a bit expensive for what they are
yeah Jira is an example of a good service that’s just overpriced
hey man, you can't put a price on reliability and ease of use
I guess?
why do you think Adobe still exists despite charging way too much
true
because theres nothing else that fully competes against them lol
It’s called kebab case but you didn’t read the entire convo did you?
and this
probably not lol
For companies Jira is worth it
Overpriced for consumers doesn't necessarily mean overpriced for businesses
for individuals though and hobbyists making open-source projects, it’s a rip off
