#dev-general
1 messages ยท Page 358 of 1
OpenBoard when???
when I have time not working on Krypton
haskell interpreter plugin
YES!
very well
we could make DeluxeMenus using haskell! now that would be a dream come true
๐คค
actually would that be a good idea
programming languages tend to be kinda dumb for ui design and stuff
deluxemenus krypton toml version
Kotlin and tornado fx
๐
DSLs all the way
not pragmatic
wdym?
my small amount of experience creating javafx ui's leads me to believe that a normal OOP lang isn't the way to go, it's just full of 10 calls in a row to set the color, name, size, position, etc.
You do realize it provides stylesheets right?
xD
other than break chunk loading
Why are you setting the color in java
stylesheets???
Yes
JavaFX allows a "form" of css
Learn how to skin your JavaFX application GUI using cascading style sheets (CSS) to create a custom look.
And kotlin introduces a typesafe css dsl ๐
are you saying
FSS functional style sheets
that this was avoidable
lol
You only need to set the color in Java for some dynamic stuff maybe
frame = new JFrame();
frame.setBounds(0, 0, 1000, 800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel menuPanel = new JPanel();
menuPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
menuPanel.setBounds(0, 0, 150, 400);
frame.getContentPane().add(menuPanel);
menuPanel.setLayout(null);
hotelsButton = new JButton("Select Hotel");
hotelsButton.setBounds(0, 20, 150, 40);
menuPanel.add(hotelsButton);
roomSearchButton = new JButton("Search Rooms");
roomSearchButton.setBounds(0, 65, 150, 40);
menuPanel.add(roomSearchButton);
ordersButton = new JButton("Search Orders");
ordersButton.setBounds(0, 110, 150, 40);
menuPanel.add(ordersButton);
insertButton = new JButton("Insert Books");
insertButton.setBounds(0, 155, 150, 40);
menuPanel.add(insertButton);
JPanel titlePanel = new JPanel();
titlePanel.setBorder(null);
titlePanel.setBounds(174, 0, 710, 25);
frame.getContentPane().add(titlePanel);```
whats the difference between logger and sj4llogger
SImilar to how you work with html,css and js
or whatever it is
one is better
yeah sl4j is where it's at
but we will never say which is better
oh
dangit
awkward
why is it
ur not supposed to
devs other than the java devs made it
so it's significantly more optimized in every way
He and piggy were talking about it a while ago
Are you saying James Gosling sucks? ๐ฎ
What do I know?
#AntiJamesGnag
why slf4j is good
Better loggers
ya
Yes that I think
no cap
GlobalScope.launch(Dispatchers.IO) {
var chunkRegion = region
for (i in 0 until server.config.world.viewDistance.toArea()) {
val chunkPosition = server.worldManager.chunkInSpiral(i, centerChunk.x, centerChunk.z)
val regionX = floor(chunkPosition.x / 32.0).toInt()
val regionZ = floor(chunkPosition.z / 32.0).toInt()
if (chunkRegion.x != regionX || chunkRegion.z != regionZ) {
chunkRegion = server.worldManager.loadRegionFromChunk(chunkPosition)
}
val chunk = chunkRegion.chunks[chunkPosition] ?: continue
session.sendPacket(PacketOutUpdateLight(chunk))
session.sendPacket(PacketOutChunkData(chunk))
}
}
```this is the code that loads chunks on join
now, think about it
Jesus
a region is 32x32 chunks
now, what happens if my player crosses 4 regions at the same time
how many chunks are loaded?
more than needed?
4096
uh seems like 0 to the render distance
which could give you a maximum of 65536 sections loaded
slf4j has nicer API, better configuration support, and probably performs better or something
that uh, seems like a lot?
when we don't use most of those
I generally prefer it just because the method names aren't gross
ok
what's your render distance man?
ill accept that answer
so I think I have two options:
a) load each chunk separately, so we only load what we need
b) load the whole region and discard anything we don't need
I need to load (render distance * 2) + 1 chunks
Haskell has something for this in the standard library iirc
why not just load on a chunk by chunk basis
lmao what
that's how Anvil works
Haskell stdlib can do everything
dunno what anvil is
in MCA files (Anvil/region files), chunks are grouped into 32x32 areas
but that seems woefully inefficient
to avoid heavy file system access
oh I see
so can you just load a region into memory then discard the unnecessary chunks?
since they most likely can't see that many
that's option B
or A is I specify when loading a region which positions of which chunks I need and discard every one I don't need
A is discard chunks as you load them, B is discard chunks after you load the whole region
wait for what?
yeah
that's what I said earlier lmao
I think A is probably my best option tbh
No idea
oh xD
Whatever bardy wants to do
though it might perform worse since you have to check as your laoding each chunk, as opposed to getting everything then cutting it back
I mean, it'd just be a simple in check
Aristotle invented the pure function in 1603 BC
๐ฎ
I think the way I would do option #2 is calculate the spiral first and then give that to the region loading
option #1 I mean
not even sure how the hell I'd do option #2 with my whack
also, trying to think whether permanently loading the spawn chunks like vanilla does is a good idea
OMFG no way
first time BOIIIIIIIIIIIIIIIIIIIII
still not getting GC'd but that should be an easy fix lol
exactly 882 chunks (at render distance 10, the client needs 441) on the heap
that's probably inefficient but it seems to be fast
okay caffeine has now been promoted above god tier
man, caching OP
just under a million longs isn't so bad
especially for 441 chunks
is it?
right, now what I want to do is make chunks load and unload after the initial load
7x less longs!
how many longs does spigot use?
approximately 2
not sure
gotta figure out how to do the whole replace old chunks with new ones when players move around
actually that should be ez
I've gotta detect when the chunk coords are different, then move 10 in the direction the player is looking, starting at the player's new chunk position, then 10 either side, then load all of those chunks in that row, and then just do the same thing the other way and unload those
or at least, I think
when is it ever that easy though lol
is there not a way to get a radius of chunks from a player's position?
cause you could just check with every crossing of a chunk the new radius and unrender the oldies that aren't in it and render the new ones, no?
pi * r^2
ye
true
https://paste.helpch.at/bigoqituto.java here's how vanilla does it
(couldn't be assed to go through and rename that many variable and parameter names)
move is the method of importance here
line 652
damn I did not expect to see bit shifts lol
yeah I realized that lol
I tested that in playgrounds
it's a real micro optimisation, but for this purpose, it's kinda worth it
summarise that method?
yes
like, is it a circle or what?
if Java doesn't optimize divisions and multiplications by powers of two to bit shifts I will be incredibly disappointed
lmao
yeah
the JIT does some mad optimizations
it do yea
isn't JIT where it's basically compiled twice?
double checking
so it's compiled to bytecode then compiled when it's needed at runtime?
yes
Just-In-Timeโข
right, anyway, can any of you help me break this down?
Absolutely not
I wanted you to do that for me!
convert it into haskell and i'd be glad to help ๐
if I knew Haskell, I would lol
ive sworn to never look at java code again
fine, I'll summarise it for you lazy bastards
oooh, apparently if a division has a negative number, java won't optimize with bit shifts cause it'll round dowdn or something
clever
in Java, -3 / 2 evaluates to -1, whereas -3 >> 1 evaluates to -2. So in this case, the compiler cannot optimize division by two by replacing it by a bit shift, when the dividend could possibly be negative.
Interesting that there's a whole wikipedia page about Division By Two lol
first, the for seems to iterate over the entities in the entityMap (not sure what that's used for yet) and provide some sort of update to some player(s)
then, we allocate a few variables (you can read these yourselves)
then it seems to check a few conditions
and that's about all I got up to
the absolute stuff and checking there went straight over my head
SectionPos is a chunk section position
not sure what it needs chunk section positions for
seems to be updateChunkTracking that does the actual useful stuff
which calls playerLoadedChunk
which is the bastard we need
ok
I thought Anvil was hell
at least when you're contributing to a project, you can refactor the shitty parts
mojang's gonna be this way forever
until we bring notch back from his mansion and he rewrites everything in kotlin
Except in android, where they just decided AoT is the way to go ๐ฅฒ
I guess Android runtime isnt exactly a proper jvm
for performance right?
Yea
I think it's time Krypton got something that literally every Minecraft server has
it begins with a T
Tits
-_-
Taskell
Tlojure
Trauma
Totlin
Tava
Tidiots* ?
ticking
Make the server tick 40 times per second
blitz enough
lmao
that literally wouldn't work
Everything is possible if you try hard enough
make it tick 21 times per second
it very much could work
?
Warzone servers tick 60 times a second
you know how much has to be done every tick?
or at least, how much has to be checked
I am aware, yes
I mean, this is where coroutines come in I guess
bUt bAdLiOn HaVe 128 TiCk SeRvErS
cs:go
Now for real, don't think more than 20 tps would go well with the client
right, gotta figure out what changes I gotta make to the code now
I guess the Netty job can finally be async
since the server won't die now
lunar is better
silence valorant user
care
people that like 1.8 pvp don't have the right to an opinion
silence elara appreciator
I strongly second this notion
Bardy, Krypton 1.8 wen?

I doubt this
i think some people may have problems with this
Go make another spam clicking montage noob
ew montages
bit of lens flare + 20 CPS = content
RSMB
I wonder why
lmfao
Congratulations on reaching the age of 11!
This montage fucking blows, don't watch it. Server: us.oc.tc (rage gamemode)
I'm turning 16 this year ๐ค
gg
k these are cringe
bUt 1.8
butt 1.8
editor forgot hitmarker sound
0/10
Ikr
mw2 ๐ฅบ
1.8 pvp > mw2
valorant
valorant > all

my friends made me redownload it so i actually have an opinion here now
lol
ah, kingoros, one of the best PvPers Minecraft even has
what don't u like about valorant
literally everything
professional loser*
hey! that's mean ๐
literally everything
took em 200GB to achieve it though
unbelievable ugly
enough said
the cs:go art https://i.imgur.com/MRaWtzc.png
when im home i shall write everything wrong with it
okay
you can run and gun in valorant, but its much harder
this may take days because its very long
Take your time
oh boy I can't wait the day this face talks about Krypton @jovial warren
awesome
OMG YES PLEASE
those teeth
perfect teeth
is that who i think it is
literally yellow
yes
my guy
so white
Is that Knightz ๐ฎ
absolutely not
oh
๐ณ
yes
It's Federico Lรณpez!!!
K
@obtuse gale
a
yo bm lemme work on elara with u
become self reliant
I can show u my resume
now!
and my pay?
$0/hr
๐ฆ
nah
soz
$-5/hr
A finger up your bum
yup
2 fingers per 5 bums an hour
while elara developers are the best paid developers, creating elara pays nothing
reminds me of dodging for the team to take a shit
๐ฅฒ
@oak raft would know
for any agent select game
What is the packed ice noteblock sound effect for MessageAnnouncer? I had it before and I forgot what it was
I thought it would be NOTE_BLOCK_CHIME but that didn't work
its ok I'll be known as a legendary developer who has worked on the great language of elara
yes you get lots of clout
oh yeah I'm a dodger myself
so be toxic
oh no
is that kangarko?
dodging icebox :kekw:
yea ya know
nah that's kangarko isn't it
Mr. "I can make your server dreams come true with this course"
anyone wanna become self reliant?
also Mr. "I can get myself banned off of SpigotMC for advertising my shitty service in literally every single possible category on the Spigot forums"
yes please!
spigot is jealous
Yes, as an elara developer I'd love to become self reliant
๐ฆ
o
is his course actually $500?
||yo bm you know any good resources to learn go online?||
Become self-reliant
go website has a nice tutorial
tyty
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
i think
it's like photography! do it for free for popular influencers, lots of clout ;)
and that's on learning on the job
if you can't beat them join them
i don't think I can do either
depresso
๐
lmao I just got my teammate banned :))))
nice
he was talking shit and I knew he accidentaly killed a teammate so I shot him just to make him shoot me and he shot me and my teammate at the same time and got banned 30 minutes
I mean it was a win game anyways
16-3
for us
16-4*
now i can get behind that
Elaracademy ๐
okay that kinda slaps
odds on if I convert my entire java plugin codebase to Kotlin, will it still work
0.01%
aw shit
usually that way works pretty well
it's usually kotlin to java that no worky cause they add like a million annotations and shit
I actually never converted more than 15 lines in IJ from java to kotlin
like automatically
with the IJ converter
ctrl alt shift k can only do so much if thats what ur doing
15 lines at a time
aw shit i have to go one file at a time? very sad
yeah think so
tbf, lombok isnt as bad as it seems, but i just dislike it in general
๐ฌ
Ij has a delombokify option
^
Use that and then convert
hell yeah
Shouldn't be too hard to convert
ctrl shift k i heard?
Yeah then correct some of the converted code to make sure it's right
gradle init
ยฏ_(ใ)_/ยฏ
Gradle init then gradle to kts
I see you have converted ๐
Hell yeah, it's much better, was tired of the dumb warnings
Plus it doesn;t look as bad as i though
does the gradle kt syntax look worse than the groovy?
I used to think so, but no it looks much better in most cases
nice nice
im not sure about that one
This should tell you everything about ugly groovy gradle
yup
i see nothing wrong with that
It's hideous
looks pretty similar to kt
Hehe thats a good implementation of shading
does it now?
why configme tho? ๐ข
some people would say lein is more ugly
This is Gaby's doing and it's old as well
oh
but having the build script in the same language that u are building
Yeah that's latest
ty
I use whatever gradle wants me to use
@ocean quartz Where Triumph Chat
right there
okay so turns out refactoring the package of every single file takes a while
ew wtf
I do like GNU GPL v3
just give your code for free
yeah
OS gang
but u need a license
nah
even MIT license
MIT
I like credit tho
quick rundown of the differences?
Basically credit
I need to figure what to do with the display name, for example if i do <r>Matt it looks nice on chat but anywhere else it'll look like shit
i think it looks nice ๐
matt's deluxechat clone /s
no u
:(
its os
my quick google search returned nothing of value
ah yes i see now
top-tier readme.md :)
It is nothing like dchat lol
It's a discord like markdown implementation for mc chat
so what all does the whole triump team make?
besides discord-like markdown interpretation for mc chat
Config lib, gui lib, cmds lib, msg lib, chat plugin, pet plugin, gradle plugin, and more
Hopefully one day I'll finish one of them
monopoly ^
absolutely
Hell yeah
Looks decompiled
it's literally a fork of a plugin im working on
lol, I just saw that worldedit package which looks relocated
oh yeah dunno whats up with that
there's like a million relocations in the pom.xml so it scared me
lol
?plsnolombok
Why is Lombok bad?
- It's a compiler hack - the Java compiler isn't designed to modify code, so it can cause difficult to debug errors, or worse
- It requires an IDE plugin, so unless you've properly configured Maven, Gradle and your IDE, you'll get hundreds of compilation errors. This process takes time too, it's not easy
- Lombok'd code won't show in Javadocs
- The code generation is often unpredictable and difficult to debug, and often you'll have to do it "the hard way" anyway
- Java is supposed to be explicit, Lombok hides a lot of key functionality into a subtle annotation which can be easy to miss
- While IDEs support it with a plugin, it's usually more difficult to find specific things, like usages of a getter because they don't exist in the source code
- Finally, Lombok'd bytecode doesn't match the source code, so it causes a pretty annoying warning in IntelliJ
nice person didn't you read earlier
the whole reason im going to Kotlin is to get rid of lombok lmao
this ain't my repo
lombok provides a small amount of functionality that kotlin does, like auto genning getters and setters
which is why I presume this repo uses it
yeah i figure it's called quickshop, might as well make this one kotshop
but i might not ever get there at this rate
what is it with everyone who makes Kotlin stuff changing a C for a K everywhere lol
Quick != Kot
Cotlin
Everyone goes through the lombok phase at some point
I still remember when Sxtanna and @prisma wave initially knocked some sense into me for thinking Java + Lombok > Kotlin
continue coding u lazy ass
14h lol
Pepperidge farm remembers
wdym it goes to java bytecode or js wtf
it can be native too
no
Kotlin/Native
it's like the dark horse of the Kotlin compiler
probably the least known yet literally the coolest of the three
๐คก
Kotlin native isn't really for what you think though
it's not gonna unlock 1000x performance increases or anything
it's for embedded stuff where you cant really run a JVM
Elara Native will though
Wdym?? I compile to LLVM = my language is now 10 times faster than C++
I remember that like it was yesterday I swear
I thought type inference was bad
what the actual fuck
hehe
now that makes me sad
god i love non-explicit static typing
False
I was lazy to install it
๐ฅฒ
which languages aren't useful?
The plugins
Lmao
well wait yeah if it compiles to llvm, shouldn't it be faster?
or is the compiler no good
actually, let me rephrase
now you circlejerk functional languages
correct
False claim
removing state removes bugs
^
#off-topic message
How does Kotlin look like python? I can't see any similarity
functional languages are more functional
I respect your wrong opinion
no semicolons, means big similar lmao
functional is a synonym of working well for a reason
I also respect your also wrong opinion
I do not respect your opinion if it is that fp bad
LITERALLY the same!!
how am i wrong
which part of what im saying is untrue?
Lmao you can name so many others then
does state not create bugs?
bardy likes data oriented programming prolly
I looked at it, went "it doesn't look like it has any types" and called it Python @ocean quartz
iirc
FP is objectively superior
^
Lol
I yet again respect your wrong opinion
elaborate
^
i think state is easier to think about for certain stuff
a world without objects is just not a world
FP is better in the vast majority of scenarios
idk about fp, but I like map/filter functions
Easier to think, but prone to bugs
now imagine them everywhere
hehe
Obviously it is much easier to envision our world as a monad
the real world is made of objects, so why shouldn't programming be made of objects too?
mmm monad
lol that is the worst argument I think I've ever made regarding OOP vs FP
cause that's dumb
ahh yes AbstractFactoryProvider occurs everywhere in the real world
also misinformed
๐คฃ
that's why kotlin is love
yo do i have to do extra things to shade my jar in gradle too
AbstractVertebrateAquaticAnimalFactory
bc it has map, interfaces, filter, and u still get classes
Why do you feel like there is a superior language?
Languages are good for different things
Ofc there is one Elara exception which is the one true superior language
ofc ofc
Why do you feel like there is a superior language?
because there is
Sadly in the realworld a chair does not randomly MUTATE into a table and suffocate you to death
wdym, we have AbstractLivingEntityFactorys everywhere
there is no such thing as a superior language, but there are inferior languages
they're called parents
hehe
This is actually not true at all. Like that's what teachers in oop 101 tell you, but think about it. Our world doesn't combine state and behaviour, there is no "inheritance" or anything like that. We have data and we can abstract from that data
but they implement Sentience
having inferior languages inherently means there are superior languages
OOP does not make sense... person.setAge is a logical paradox
^
yeah I was just messing haha
not sure about that one
sure we believe you
but tbh u should just use birthdate
wtf why would that ever happen lmao
lol
then just use birthdate
OOP is a failed attempt at simplifying logic
the age can be determined from some immutable variable
now() - birthdate() = gg
a person does not control their own age
n - b
Kotlin objectively superior to Java
now that is a fact
what are those
Macros are vastly superior to functions becausee you actually run all your code at compile time! Huge performance gains
help im scared how do you use local .jars in gradle
lol
i made an entire game in just rust macros!
You install them to your local maven repo
stonks
๐ฅฒ
okay how do i do that
you can do compileOnly files('jar.path.jar') too
Reminds me of this
https://www.youtube.com/watch?v=mZWsyUKwTbg
FizzBuzz, the classic interview question no one probably asks anymore but I'll show you how to solve it anyway with vim and haskell.
#fizzbuzz #vim #haskell
Checkout my side projects:
If you're into cooking: https://www.mysaffronapp.com/
Join the Discord: https://discord.gg/Vehs99V
Patreon: https://www.patreon.com/benawad
-...
Master piece
very convenient
@cinder flare compileOnly fileTree(dir: 'libs', include: ['*.jar'])
Vim all the way
yes
how so
ngl I'm getting into emacs
vim gang
I love the Elara in Elara
what is elara
C-c C-c c
Elara is everything
It's basically 42
This simulation runs on the Elara Virtual Machine
i see you guys talking about it all the time
Bascially the matrix
is that a programming language
I use this chord allll the time
yes
looks like javascript
what
actually, typescript
ew
dear OOP fanboys
you claim objects represent real things, but real OOP rarely does this.
instead, you insist on encapsulating basic functionality into some global state that doesn't represent anything in the real world and overabstract everything
Curious.
That's a sin
mmm factories
The syntax is actually being changed a lot tbh
^
Does type script have pure functions?????
technically
You should extract your control flow into factory objects
yes it does
says robert c martin
Not enforced
u don't need to enforce, just be like python
it represents things in the real world dude
I remember when the syntax was let name => print "Hello" or something like that
Bad
๐ฅฒ
the programmer is a grown up boy, he knows his stuff
we're kinda going back to that actually
Statefulness
atm it would be the same thing just with parens
terrible
so parentheses are going
bm rewrite it in common lisp
god no
ik i may sound like an idiot but this kid is legit onto something
like not capping
let say name message => print (name + ":" + message)
like that is actually O(1) no shit
You havent watched any of ben's videos yet? xD
|> operator in elara????
no lmao
The Elara operator
I mean, would end up too much like F#
okay now how do you shade this bad boy
much fun
not necessarily a bad thing
it's a nice syntax sugar to have
were there major changes to paper or smth?
use the shading plugin from john
Maybe something different for a similar effect?
from john?
yeah, john
let say name message => "$name:message" |> print
ah okay
any ideas?
hmm
what is that say name message
I have the ultimate strategy to delay the development of elara forever
Just when you're about to finally specify something and leave it that way, I'll start randomly referring to some new language that nobody knows
function parameters
noooooooooooooooooooooooo
oh got
please one parenthesis
๐ฅฒ
absolutely not
because it's better
add all parentheses
i can't even differentiate what is the function name and what is the function parameters
let say (name message) => "$name:message" |> print```
extra chars for no reason!
Elara "No parentheses" Lisps "All parenthesis"
yes!!!
|> then ?
Alrighty
bro wtf is the maven publish plugin
for publishing to maven
Yea, |> can just be defined in the language
mhm
compileOnly files("tne.tne:TheNewEconomy:4.9.2") says no
let (|>) a fn = fn a
no u need the jar file name
f#
no
but also you should use maven local
meh
what about it did not make sense
i already show'd you how to compile with local jars starmism
i have to run like maven build commands?
just copy and paste man
gradle supports file dependencies so there's no reason to not use them
You run a command and the jar is in your local maven repo
errors bro
what
yeah you could also download every dependency and use it as a file
thats very much groovy
they're already there bro
that's dumb though
that's what he told me to do ๐
oh
file dependencies mean you can publish the dependencies that arent in a repo along with your project, maven local means additional setup
just a sec
i like gradle but its so much harder to use :(
ah now that's nice
ez
does each maven repository have to be its own open and closed curly brackets?
create folder libs on the root dir
or can you do like a lot
It feels like that in the beginning but you get used to it
maven(url = blah) iirc
maven("url")
^
oh I see
For kts
can't put more than one url in the same thing?
dont think so
sad
you could do ```kt
listOf(url1, url2).forEach { maven(it) }
::maven ๐
hehe
yes
listof
holy shit
map
that's the point sort of
filter
gradle scripts are just code
etc
im used to xml okay dont hurt me
mapM_ maven ["url1", "url2"] ๐
YES

make gradle pure again
this is the code I usually use (boilerplace) for kotlin kts gradle
plugins {
val kotlinVersion: String by System.getProperties()
kotlin("jvm") version kotlinVersion
id("com.github.johnrengelman.shadow") version "6.1.0"
}
// Disables the normal jar task
tasks.jar { enabled = false }
// And enables shadowJar task
artifacts.archives(tasks.shadowJar)
tasks.shadowJar {
archiveFileName.set(rootProject.name + ".jar")
relocate("kotlin", "com.github.secretx33.dependencies.kotlin")
relocate("kotlinx", "com.github.secretx33.dependencies.kotlinx")
relocate("org.jetbrains", "com.github.secretx33.dependencies.jetbrains")
relocate("org.intellij", "com.github.secretx33.dependencies.jetbrains.intellij")
exclude("DebugProbesKt.bin")
exclude("META-INF/**")
}
tasks.register("customCleanUp", Delete::class){
delete("$rootDir/build/libs/${tasks.shadowJar.get().archiveFileName.get()}")
}
tasks.shadowJar.get().dependsOn(tasks["customCleanUp"])```
fyi
okay whats the right way
u need version too iirc
I prefer this:
tasks {
withType<ShadowJar> {
}
// etc
}
id 'com.github.johnrengelman.shadow' version '6.1.0'
kt blitz
id('com.github.johnrengelman.shadow') version '6.1.0'
starmism, look up there
okay someone really needs to make a gradle copy paste thing and ill be like 900% more likely to use it
tasks.withType<ShadowJar> would be the correct way to do it in the Kotlin DSL I think
kts doesn't accept ' , use " instead
it still doesn't like the version number!
wdym
double quotes?
id("com.github.johnrengelman.shadow") version "6.1.0"
That's the same thing but without needing to do task. all the time
what's the point of that custom task at the bottom
oh double quotes
just copy what I pasted up there
weird
ah
delete the old .jar file
this is basically Gradle written in Kotlin Starmism
nauseated face
Kotlin's single quotes are the same as Java's
and why is the existing task graph not enough for that
they're used for single characters
you're wasting incremental builds
all im saying
is if someone made a default template for gradle
it'd see a lot more usage
idk, but normal clean task did not removed the old jar
Groovy on the other hand does support single quotes
the normal clean task should delete the entire build directory
also, is it just me or is the Kotlin DSL more widely used
i mean it should be
ok then starmism
I literally see it everywhere
what a sec
kotlin is the best
untrue
Groovy DSL > Kotlin DSL
true ๐
it's over verbose in this situation