#dev-general

1 messages ยท Page 358 of 1

jovial warren
#

cough KiteBoard (@heady birch) cough xD

stuck harbor
#

hehe

#

I'll port it if its FOSS

cinder flare
#

OpenBoard when???

jovial warren
prisma wave
#

haskell interpreter plugin

stuck harbor
#

does krypton have clojure binding?

#

idk kotlin

old wyvern
stuck harbor
#

very well

cinder flare
prisma wave
#

๐Ÿคค

cinder flare
#

actually would that be a good idea

jovial warren
#

DeluxeMenus

cinder flare
#

programming languages tend to be kinda dumb for ui design and stuff

stuck harbor
#

deluxemenus krypton toml version

old wyvern
#

๐Ÿ˜Œ

#

DSLs all the way

prisma wave
#

not pragmatic

old wyvern
#

wdym?

cinder flare
#

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.

jovial warren
#

lol

#

filtering 0's did pretty much nothing

old wyvern
#

xD

jovial warren
#

other than break chunk loading

old wyvern
#

Why are you setting the color in java

cinder flare
old wyvern
#

Yes

#

JavaFX allows a "form" of css

#

And kotlin introduces a typesafe css dsl ๐Ÿ™‚

cinder flare
#

are you saying

prisma wave
#

FSS functional style sheets

cinder flare
#

that this was avoidable

old wyvern
#

Yes

#

lol

prisma wave
#

lol

old wyvern
#

You only need to set the color in Java for some dynamic stuff maybe

cinder flare
#
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);```
stuck harbor
#

mmmmm

#

OOP

winter iron
#

whats the difference between logger and sj4llogger

old wyvern
#

SImilar to how you work with html,css and js

winter iron
#

or whatever it is

stuck harbor
#

one is better

cinder flare
#

yeah sl4j is where it's at

stuck harbor
#

but we will never say which is better

cinder flare
#

oh

stuck harbor
#

dangit

cinder flare
#

awkward

winter iron
#

why is it

stuck harbor
#

ur not supposed to

cinder flare
#

devs other than the java devs made it

old wyvern
#

bm knows I think

#

@prisma wave

cinder flare
#

so it's significantly more optimized in every way

old wyvern
#

He and piggy were talking about it a while ago

old wyvern
cinder flare
#

ayyy

#

had to google that one

prisma wave
old wyvern
#

#AntiJamesGnag

cinder flare
#

why slf4j is good

prisma wave
#

o

#

Uh

old wyvern
prisma wave
#

slf4j Vs java logging?

#

Or something else

cinder flare
#

ya

old wyvern
#

Yes that I think

jovial warren
#

okay I think ik why I'm loading so many chunks lol

#

I'm so fucking stupid I swear

winter iron
#

no cap

jovial warren
#
        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

prisma wave
#

Jesus

jovial warren
#

a region is 32x32 chunks

#

now, what happens if my player crosses 4 regions at the same time

#

how many chunks are loaded?

winter iron
#

more than needed?

jovial warren
#

4096

cinder flare
#

uh seems like 0 to the render distance

jovial warren
#

which could give you a maximum of 65536 sections loaded

prisma wave
#

slf4j has nicer API, better configuration support, and probably performs better or something

cinder flare
#

that uh, seems like a lot?

jovial warren
#

when we don't use most of those

prisma wave
#

I generally prefer it just because the method names aren't gross

winter iron
#

ok

cinder flare
#

what's your render distance man?

winter iron
#

ill accept that answer

jovial warren
#

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

cinder flare
#

wait wait wait

#

did you combine a group of chunks into a region?

jovial warren
#

I need to load (render distance * 2) + 1 chunks

prisma wave
#

Haskell has something for this in the standard library iirc

cinder flare
#

why not just load on a chunk by chunk basis

jovial warren
prisma wave
cinder flare
#

dunno what anvil is

jovial warren
#

in MCA files (Anvil/region files), chunks are grouped into 32x32 areas

cinder flare
#

but that seems woefully inefficient

jovial warren
#

to avoid heavy file system access

cinder flare
#

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

jovial warren
#

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

cinder flare
#

so the question is when the discarding is done?

#

pre-emptively or after the fact?

jovial warren
#

what?

#

that made 0 sense

cinder flare
#

A is discard chunks as you load them, B is discard chunks after you load the whole region

cinder flare
#

that's what I said earlier lmao

jovial warren
#

I think A is probably my best option tbh

cinder flare
#

yeah seems like it

#

doesn't waste any memory

prisma wave
old wyvern
#

oh xD

prisma wave
#

Whatever bardy wants to do

cinder flare
#

though it might perform worse since you have to check as your laoding each chunk, as opposed to getting everything then cutting it back

old wyvern
#

Haskell can rewrite particles

#

Alchemy was born from it

jovial warren
#

I mean, it'd just be a simple in check

old wyvern
#

Easy greeks were Haskellers

#

Followers of the great Jones

prisma wave
#

Aristotle invented the pure function in 1603 BC

old wyvern
#

๐Ÿ˜ฎ

jovial warren
#

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

jovial warren
#

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

cinder flare
#

how many longs does spigot use?

prisma wave
#

approximately 2

cinder flare
#

oh

#

awkward

prisma wave
#

idk

#

give or take maybe a few billion

jovial warren
#

not sure

jovial warren
#

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

cinder flare
#

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?

prisma wave
#

pi * r^2

cinder flare
#

ye

jovial warren
#

(couldn't be assed to go through and rename that many variable and parameter names)

#

move is the method of importance here

#

line 652

cinder flare
#

damn I did not expect to see bit shifts lol

jovial warren
#

lol

#

that just divides by 16

cinder flare
#

yeah I realized that lol

jovial warren
#

I tested that in playgrounds

cinder flare
#

just didn't think about it

#

okay, summarize this

jovial warren
#

it's a real micro optimisation, but for this purpose, it's kinda worth it

#

summarise that method?

cinder flare
#

yes

jovial warren
cinder flare
#

like, is it a circle or what?

obtuse gale
#

if Java doesn't optimize divisions and multiplications by powers of two to bit shifts I will be incredibly disappointed

jovial warren
#

you expect that from the JVM?

cinder flare
#

lmao

prisma wave
#

it probably does at runtime

#

not at compile time

jovial warren
#

yeah

prisma wave
#

the JIT does some mad optimizations

obtuse gale
#

it do yea

jovial warren
#

isn't JIT where it's basically compiled twice?

forest pecan
#

double checking

jovial warren
#

so it's compiled to bytecode then compiled when it's needed at runtime?

prisma wave
#

yes

cinder flare
#

Just-In-Timeโ„ข

jovial warren
#

right, anyway, can any of you help me break this down?

obtuse gale
#

Absolutely not

cinder flare
#

I wanted you to do that for me!

jovial warren
#

wow

prisma wave
#

convert it into haskell and i'd be glad to help ๐Ÿ™‚

jovial warren
prisma wave
#

ive sworn to never look at java code again

jovial warren
#

fine, I'll summarise it for you lazy bastards

prisma wave
#

lazy ๐Ÿ™‚

#

haskell is lazy ๐Ÿ™‚

cinder flare
#

oooh, apparently if a division has a negative number, java won't optimize with bit shifts cause it'll round dowdn or something

prisma wave
#

clever

cinder flare
#

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

jovial warren
#

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

cinder flare
#

oh I literally already did that

#

lmao

jovial warren
#

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

prisma wave
#

ok

cinder flare
#

i am never writing my own server implementation

#

this seems like hell

jovial warren
#

I thought Anvil was hell

cinder flare
#

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

jovial warren
#

I mean, half of this we ain't interested in anyway

#

oh this is easy

jovial warren
old wyvern
#

I guess Android runtime isnt exactly a proper jvm

old wyvern
#

Yea

jovial warren
#

I think it's time Krypton got something that literally every Minecraft server has

#

it begins with a T

ocean quartz
#

Tits

jovial warren
#

-_-

prisma wave
#

Taskell

ocean quartz
#

Tlojure

jovial warren
static zealot
#

Trauma

prisma wave
#

Totlin

ocean quartz
#

Tava

jovial warren
#

idiots

#

ticking

static zealot
#

Tidiots* ?

jovial warren
#

ticking

static zealot
#

TOh

#

TMakes tsense

ocean quartz
#

Make the server tick 40 times per second

jovial warren
#

blitz enough

static zealot
#

lmao

jovial warren
ocean quartz
#

Everything is possible if you try hard enough

static zealot
#

make it tick 21 times per second

prisma wave
jovial warren
#

but it just wouldn't

#

all the processing that has to be done

prisma wave
#

?

ocean quartz
#

Warzone servers tick 60 times a second

jovial warren
#

or at least, how much has to be checked

prisma wave
#

I am aware, yes

jovial warren
#

I mean, this is where coroutines come in I guess

onyx loom
#

bUt bAdLiOn HaVe 128 TiCk SeRvErS

static zealot
#

cs:go

jovial warren
ocean quartz
#

Now for real, don't think more than 20 tps would go well with the client

jovial warren
#

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

oak raft
onyx loom
#

silence valorant user

prisma wave
#

care

prisma wave
#

people that like 1.8 pvp don't have the right to an opinion

oak raft
jovial warren
ocean quartz
#

Bardy, Krypton 1.8 wen?

jovial warren
oak raft
onyx loom
prisma wave
#

Go make another spam clicking montage noob

oak raft
#

ew montages

prisma wave
#

bit of lens flare + 20 CPS = content

onyx loom
#

RSMB

oak raft
#

it's actually been a long time since I've pvped

#

I haven't been finding it fun recently

prisma wave
#

I wonder why

onyx loom
#

congrats

#

uve matured

oak raft
#

lmfao

prisma wave
#

Congratulations on reaching the age of 11!

ocean quartz
oak raft
#

I'm turning 16 this year ๐Ÿ˜ค

stuck harbor
#

gg

oak raft
ocean quartz
#

bUt 1.8

oak raft
#

no

#

none of this but

static zealot
#

butt 1.8

forest pecan
#

0/10

ocean quartz
#

Ikr

onyx loom
#

mw2 ๐Ÿฅบ

oak raft
#

1.8 pvp > mw2

forest pecan
#

valorant

oak raft
#

valorant > all

onyx loom
#

debatable

#

valorant is actually dosghit

oak raft
#

no

#

it's good

forest pecan
#

๐Ÿ™‚

onyx loom
#

my friends made me redownload it so i actually have an opinion here now

forest pecan
#

lol

jovial warren
#

ah, kingoros, one of the best PvPers Minecraft even has

oak raft
#

what don't u like about valorant

onyx loom
#

literally everything

oak raft
#

explain

#

what's wrong with it

prisma wave
oak raft
#

hey! that's mean ๐Ÿ˜”

onyx loom
#

literally everything

cinder flare
prisma wave
onyx loom
#

enough said

static zealot
oak raft
#

go into detail

#

write an essay

forest pecan
#

is it cause you cant run and gun like other games

#

lmao

onyx loom
#

bruh

#

ok then

oak raft
#

make a powerpoint and present it to nasa or some shit

#

just EXPLAIN

onyx loom
#

when im home i shall write everything wrong with it

oak raft
#

okay

forest pecan
#

you can run and gun in valorant, but its much harder

onyx loom
#

this may take days because its very long

oak raft
#

Take your time

obtuse gale
#

oh boy I can't wait the day this face talks about Krypton @jovial warren

onyx loom
#

awesome

oak raft
#

perfect teeth

prisma wave
#

is that who i think it is

obtuse gale
#

literally yellow

forest pecan
#

๐Ÿ˜

#

teeth

obtuse gale
prisma wave
#

my guy

forest pecan
#

so white

oak raft
#

Is that Knightz ๐Ÿ˜ฎ

prisma wave
#

absolutely not

oak raft
#

oh

onyx loom
#

๐Ÿ˜ณ

forest pecan
#

Is that

#

Is tha

prisma wave
#

yes

forest pecan
#

It's Federico Lรณpez!!!

onyx loom
#

K

forest pecan
#

@obtuse gale

onyx loom
#

a

oak raft
#

yo bm lemme work on elara with u

prisma wave
#

become self reliant

oak raft
#

I can show u my resume

prisma wave
#

do u know Go

oak raft
#

bet

#

when do I start

#

yeah

prisma wave
#

uhh

#

idk

onyx loom
#

now!

oak raft
#

and my pay?

prisma wave
#

$0/hr

oak raft
#

๐Ÿ˜ฆ

forest pecan
#

nah

prisma wave
#

soz

forest pecan
#

$-5/hr

hot hull
#

A finger up your bum

prisma wave
#

yup

forest pecan
onyx loom
#

while elara developers are the best paid developers, creating elara pays nothing

prisma wave
#

exactly

#

we are taking one for the team

forest pecan
#

reminds me of dodging for the team to take a shit

#

๐Ÿฅฒ

#

@oak raft would know

#

for any agent select game

stray crater
#

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

oak raft
# prisma wave $0/hr

its ok I'll be known as a legendary developer who has worked on the great language of elara

prisma wave
#

yes you get lots of clout

oak raft
forest pecan
#

lol

#

people in vc are so toxic

#

i want to be toxic to them tho

oak raft
#

so be toxic

forest pecan
#

lmao

#

true

jovial warren
#

is that kangarko?

onyx loom
#

dodging icebox :kekw:

forest pecan
#

i think

forest pecan
#

yea ya know

jovial warren
#

nah that's kangarko isn't it

#

Mr. "I can make your server dreams come true with this course"

prisma wave
#

anyone wanna become self reliant?

jovial warren
#

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"

onyx loom
prisma wave
#

spigot is jealous

oak raft
prisma wave
#

ok boys

#

that will be $500

oak raft
#

๐Ÿ˜ฆ

onyx loom
#

o

jovial warren
#

is his course actually $500?

prisma wave
#

probably

#

if not it should be!!

oak raft
#

||yo bm you know any good resources to learn go online?||

obtuse gale
#

Become self-reliant

prisma wave
oak raft
#

tyty

prisma wave
#

i think

cinder flare
cinder flare
prisma wave
#

exactly

#

you get exposure!!

cinder flare
#

yeeeeeee

#

god i hate influencers

obtuse gale
#

if you can't beat them join them

cinder flare
#

i don't think I can do either

obtuse gale
#

depresso

oak raft
static zealot
#

lmao I just got my teammate banned :))))

stuck harbor
#

nice

static zealot
#

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*

cinder flare
#

now i can get behind that

onyx loom
#

couldnt be me

#

if u play faceit team damage is disabled ๐Ÿ˜Ž

old wyvern
cinder flare
#

okay that kinda slaps

#

odds on if I convert my entire java plugin codebase to Kotlin, will it still work

static zealot
#

0.01%

cinder flare
#

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

static zealot
#

I actually never converted more than 15 lines in IJ from java to kotlin

#

like automatically

#

with the IJ converter

onyx loom
#

ctrl alt shift k can only do so much if thats what ur doing

static zealot
#

15 lines at a time

cinder flare
#

aw shit i have to go one file at a time? very sad

onyx loom
#

yeah think so

cinder flare
#

think it'll convert lombok correctly?

#

cause thats what im trying to get away from

forest pecan
#

tbf, lombok isnt as bad as it seems, but i just dislike it in general

onyx loom
#

๐Ÿ˜ฌ

old wyvern
forest pecan
#

^

old wyvern
#

Use that and then convert

cinder flare
#

hell yeah

ocean quartz
cinder flare
#

ctrl shift k i heard?

ocean quartz
#

Yeah then correct some of the converted code to make sure it's right

cinder flare
#

ooh and i'd like to convert maven -> gradle too

#

online converter I presume?

onyx loom
#

gradle init

cinder flare
#

innit

#

im not british mate

onyx loom
#

gradle init

#

i dont remember saying innit

#

๐Ÿ™‚

cinder flare
#

ยฏ_(ใƒ„)_/ยฏ

ocean quartz
#

Gradle init then gradle to kts

obtuse gale
cinder flare
#

awe yeah

#

100% kotlin, even the build files

ocean quartz
#

Hell yeah, it's much better, was tired of the dumb warnings
Plus it doesn;t look as bad as i though

cinder flare
#

does the gradle kt syntax look worse than the groovy?

ocean quartz
#

I used to think so, but no it looks much better in most cases

cinder flare
#

nice nice

prisma wave
cinder flare
#

oop

#

which of the gradle files do i want in my git

prisma wave
#

gradle/ and build.gradle and the 2 gradlew and properties

#

everything except .gradle

cinder flare
#

so yes to all?

ocean quartz
prisma wave
prisma wave
ocean quartz
#

It's hideous

prisma wave
#

looks pretty similar to kt

stuck harbor
#

Hehe thats a good implementation of shading

static zealot
#

does it now?

prisma wave
#

except the map literal

#

which is nice

static zealot
stuck harbor
#

some people would say lein is more ugly

ocean quartz
static zealot
#

oh

stuck harbor
#

but having the build script in the same language that u are building

static zealot
#

btw what's the latest version of MF Config?

#

I use 1.0.5-SNAPSHOT

ocean quartz
#

Yeah that's latest

static zealot
#

ty

stuck harbor
#

I use whatever gradle wants me to use

cinder flare
#

mmm gradle

#

has a better icon too

hot hull
#

@ocean quartz Where Triumph Chat

stuck harbor
cinder flare
#

okay so turns out refactoring the package of every single file takes a while

stuck harbor
#

turns out

#

I had to add the copyright to an intellij project

#

that was fun

cinder flare
#

ew wtf

stuck harbor
#

I do like GNU GPL v3

cinder flare
#

just give your code for free

stuck harbor
#

yeah

cinder flare
#

OS gang

stuck harbor
#

but u need a license

cinder flare
#

nah

stuck harbor
#

even MIT license

ocean quartz
stuck harbor
#

I like credit tho

cinder flare
#

quick rundown of the differences?

ocean quartz
#

Basically credit

ocean quartz
cinder flare
#

triump chat?

#

what that

onyx loom
stuck harbor
cinder flare
#

oh hell yeah

#

send me the source rn

stuck harbor
#

no u

cinder flare
#

:(

onyx loom
#

its os

cinder flare
#

my quick google search returned nothing of value

#

ah yes i see now

ocean quartz
#

It is nothing like dchat lol
It's a discord like markdown implementation for mc chat

cinder flare
#

so what all does the whole triump team make?

#

besides discord-like markdown interpretation for mc chat

ocean quartz
#

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

onyx loom
#

monopoly ^

cinder flare
#

hell yes

#

all my plugin needs from one company with questionable ethics

onyx loom
#

absolutely

ocean quartz
#

Hell yeah

cinder flare
#

okay intellij it was funny for a minute

#

you can stop meming on me now

old wyvern
#

Looks decompiled

cinder flare
#

it's literally a fork of a plugin im working on

old wyvern
#

lol, I just saw that worldedit package which looks relocated

cinder flare
#

oh yeah dunno whats up with that

#

there's like a million relocations in the pom.xml so it scared me

old wyvern
#

lol

gusty glen
compact perchBOT
#
FAQ Answer:

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
gusty glen
cinder flare
#

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

jovial warren
#

lol

cinder flare
#

yeah i figure it's called quickshop, might as well make this one kotshop

#

but i might not ever get there at this rate

jovial warren
#

what is it with everyone who makes Kotlin stuff changing a C for a K everywhere lol

cinder flare
#

Quick != Kot

jovial warren
onyx loom
#

Cotlin

cinder flare
#

is that Kotlin written in C?

#

that'd kinda be cute ngl

jovial warren
#

lol

#

you know Kotlin compiles natively right?

ocean quartz
#

Everyone goes through the lombok phase at some point

jovial warren
compact perchBOT
#
New Reminder Set!
In 13 hours, 59 minutes, 59 seconds:

continue coding u lazy ass

jovial warren
#

oh those were the days

#

you remember that BM?

ocean quartz
#

14h lol

lunar cypress
#

I remember it

#

About a year ago

ocean quartz
#

Pepperidge farm remembers

jovial warren
cinder flare
onyx loom
#

it can be native too

jovial warren
#

Kotlin/Native

#

it's like the dark horse of the Kotlin compiler

#

probably the least known yet literally the coolest of the three

cinder flare
#

omg wait it even uses llvm

#

it's basically Cotlin

prisma wave
#

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

onyx loom
ocean quartz
#

Elara Native will though

jovial warren
lunar cypress
#

Wdym?? I compile to LLVM = my language is now 10 times faster than C++

jovial warren
#

I remember that like it was yesterday I swear

#

I thought type inference was bad

#

what the actual fuck

stuck harbor
#

hehe

jovial warren
#

oh those were the days

#

when BM used to circlejerk actually useful languages xD

cinder flare
#

god i love non-explicit static typing

old wyvern
#

I was lazy to install it

#

๐Ÿฅฒ

prisma wave
old wyvern
#

The plugins

ocean quartz
#

Lmao

cinder flare
#

well wait yeah if it compiles to llvm, shouldn't it be faster?

#

or is the compiler no good

jovial warren
#

now you circlejerk functional languages

prisma wave
#

correct

jovial warren
#

Kotlin superior language

#

that's a fact, not an opinion

prisma wave
#

because they are objectively superior

#

state creates bugs

#

that is a fact

old wyvern
prisma wave
#

removing state removes bugs

old wyvern
#

^

ocean quartz
stuck harbor
#

functional languages are more functional

jovial warren
cinder flare
stuck harbor
#

functional is a synonym of working well for a reason

jovial warren
old wyvern
prisma wave
prisma wave
#

which part of what im saying is untrue?

ocean quartz
prisma wave
#

does state not create bugs?

stuck harbor
#

bardy likes data oriented programming prolly

jovial warren
#

I looked at it, went "it doesn't look like it has any types" and called it Python @ocean quartz

#

iirc

old wyvern
#

FP is objectively superior

prisma wave
#

^

ocean quartz
#

Lol

jovial warren
prisma wave
#

elaborate

old wyvern
#

^

cinder flare
#

i think state is easier to think about for certain stuff

jovial warren
#

a world without objects is just not a world

stuck harbor
#

FP is better in the vast majority of scenarios

gusty glen
#

idk about fp, but I like map/filter functions

old wyvern
#

Easier to think, but prone to bugs

prisma wave
stuck harbor
#

hehe

lunar cypress
jovial warren
#

the real world is made of objects, so why shouldn't programming be made of objects too?

cinder flare
#

mmm monad

jovial warren
#

lol that is the worst argument I think I've ever made regarding OOP vs FP

prisma wave
#

also misinformed

gusty glen
#

that's why kotlin is love

cinder flare
#

yo do i have to do extra things to shade my jar in gradle too

stuck harbor
#

AbstractVertebrateAquaticAnimalFactory

gusty glen
#

bc it has map, interfaces, filter, and u still get classes

ocean quartz
#

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

stuck harbor
#

ofc ofc

prisma wave
#

Why do you feel like there is a superior language?
because there is

old wyvern
jovial warren
#

wdym, we have AbstractLivingEntityFactorys everywhere

gusty glen
jovial warren
#

they're called parents

stuck harbor
#

hehe

lunar cypress
stuck harbor
#

but they implement Sentience

onyx loom
#

having inferior languages inherently means there are superior languages

prisma wave
#

OOP does not make sense... person.setAge is a logical paradox

old wyvern
#

^

jovial warren
stuck harbor
gusty glen
#

but tbh u should just use birthdate

prisma wave
#

because a person's age cannot be set

#

exactly

cinder flare
onyx loom
#

lol

gusty glen
#

then just use birthdate

old wyvern
#

OOP is a failed attempt at simplifying logic

prisma wave
#

the age can be determined from some immutable variable

gusty glen
#

now() - birthdate() = gg

prisma wave
#

a person does not control their own age

jovial warren
#

๐Ÿ˜Ž

gusty glen
#

n - b

jovial warren
#

Kotlin objectively superior to Java

stuck harbor
#

just use a clojure macro

#

u nerd

#

I use so many clojure macros

jovial warren
gusty glen
lunar cypress
#

Macros are vastly superior to functions becausee you actually run all your code at compile time! Huge performance gains

cinder flare
#

help im scared how do you use local .jars in gradle

gusty glen
#

lol

prisma wave
lunar cypress
stuck harbor
#

stonks

old wyvern
cinder flare
prisma wave
old wyvern
#

Master piece

prisma wave
#

very convenient

gusty glen
#

@cinder flare compileOnly fileTree(dir: 'libs', include: ['*.jar'])

stuck harbor
#

stonks

#

fizzbuzz

cinder flare
#

gradle init used system

#

and it's weird

old wyvern
#

Vim all the way

stuck harbor
#

yes

onyx loom
#

how so

stuck harbor
#

ngl I'm getting into emacs

cinder flare
#

vim gang

stuck harbor
#

I love the chord system

#

in emacs

old wyvern
#

I love the Elara in Elara

gusty glen
#

what is elara

stuck harbor
#

C-c C-c c

old wyvern
ocean quartz
old wyvern
#

This simulation runs on the Elara Virtual Machine

gusty glen
#

i see you guys talking about it all the time

old wyvern
#

Bascially the matrix

gusty glen
#

is that a programming language

stuck harbor
old wyvern
old wyvern
gusty glen
#

looks like javascript

stuck harbor
#

what

gusty glen
#

actually, typescript

stuck harbor
#

take that back

#

heretic

old wyvern
#

ew

prisma wave
#

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.

ocean quartz
old wyvern
#

The syntax is actually being changed a lot tbh

gusty glen
prisma wave
#

tbf the original syntax was kinda based on JS

#

i like JS lambda syntax

old wyvern
prisma wave
#

technically

old wyvern
#

HA

#

xD

lunar cypress
#

You should extract your control flow into factory objects

gusty glen
#

yes it does

lunar cypress
#

says robert c martin

old wyvern
gusty glen
#

u don't need to enforce, just be like python

prisma wave
ocean quartz
#

I remember when the syntax was let name => print "Hello" or something like that

prisma wave
#

๐Ÿฅฒ

gusty glen
#

the programmer is a grown up boy, he knows his stuff

old wyvern
#

Depending on external state

#

Bad

prisma wave
old wyvern
#

Statefulness

cinder flare
#

that kinda cute tho

#

what is it now?

prisma wave
#

atm it would be the same thing just with parens

stuck harbor
#

my first thought was 'looks like assembly'

#

idk why

prisma wave
#

let main => print("Hello")

#

but we have been haskellpilled

onyx loom
#

terrible

prisma wave
#

so parentheses are going

stuck harbor
#

bm rewrite it in common lisp

prisma wave
#

god no

forest pecan
stuck harbor
#

more parens

#

all parentheses

forest pecan
#

like not capping

old wyvern
#

let say name message => print (name + ":" + message)

forest pecan
#

like that is actually O(1) no shit

old wyvern
prisma wave
forest pecan
#

no lmao

ocean quartz
old wyvern
stuck harbor
#

ben is good

#

he making fake facebook

cinder flare
#

okay now how do you shade this bad boy

stuck harbor
#

much fun

prisma wave
#

it's a nice syntax sugar to have

winter iron
#

were there major changes to paper or smth?

stuck harbor
old wyvern
#

Maybe something different for a similar effect?

cinder flare
#

from john?

stuck harbor
#

yeah, john

prisma wave
#
let say name message => "$name:message" |> print
cinder flare
#

ah okay

prisma wave
old wyvern
#

hmm

gusty glen
lunar cypress
#

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

prisma wave
gusty glen
#

oh got

prisma wave
#

nonon

#

on

#

on

gusty glen
#

please one parenthesis

old wyvern
#

๐Ÿฅฒ

prisma wave
cinder flare
#

god why did I use kts gradle

#

all the examples are in groovy

lunar cypress
#

because it's better

stuck harbor
#

add all parentheses

gusty glen
#

i can't even differentiate what is the function name and what is the function parameters

prisma wave
#

name params

#

name a b c

#

let add a b = a + b

gusty glen
#
let say (name message) => "$name:message" |> print```
prisma wave
#

๐Ÿคข

#

no thank you sir!

onyx loom
#

extra chars for no reason!

ocean quartz
#

Elara "No parentheses" Lisps "All parenthesis"

prisma wave
old wyvern
#

hmm

prisma wave
#

|> then ?

old wyvern
#

Alrighty

prisma wave
#

sick

#

we gotta have custom operators too

cinder flare
#

bro wtf is the maven publish plugin

prisma wave
#

for publishing to maven

old wyvern
#

Yea, |> can just be defined in the language

prisma wave
#

mhm

cinder flare
#

compileOnly files("tne.tne:TheNewEconomy:4.9.2") says no

prisma wave
#

let (|>) a fn = fn a

cinder flare
#

like all of the compileonly files things

#

is that groovy syntax?

prisma wave
old wyvern
prisma wave
#

should work in both

#

oh

lunar cypress
#

but also you should use maven local

prisma wave
#

meh

cinder flare
#

that link you sent to me did not make sense

#

im not gonna lie

lunar cypress
#

what about it did not make sense

gusty glen
#

i already show'd you how to compile with local jars starmism

cinder flare
#

i have to run like maven build commands?

gusty glen
#

just copy and paste man

prisma wave
#

gradle supports file dependencies so there's no reason to not use them

lunar cypress
#

You run a command and the jar is in your local maven repo

cinder flare
gusty glen
#

what

cinder flare
lunar cypress
prisma wave
cinder flare
#

they're already there bro

cinder flare
gusty glen
#

u put that on your dependency stuff

#

are you using gradle.kts?

cinder flare
#

it is bro

#

yes

gusty glen
#

oh

prisma wave
#

file dependencies mean you can publish the dependencies that arent in a repo along with your project, maven local means additional setup

gusty glen
#

just a sec

cinder flare
#

i like gradle but its so much harder to use :(

gusty glen
#

compileOnly(fileTree("libs"))

#

this is for gradle.kts

cinder flare
#

ah now that's nice

prisma wave
#

ez

cinder flare
#

does each maven repository have to be its own open and closed curly brackets?

gusty glen
#

create folder libs on the root dir

cinder flare
#

or can you do like a lot

ocean quartz
cinder flare
#

can i shorten that bad boy

prisma wave
#

maven(url = blah) iirc

lunar cypress
#

maven("url")

ocean quartz
#

^

cinder flare
#

oh I see

ocean quartz
#

For kts

cinder flare
#

can't put more than one url in the same thing?

prisma wave
#

dont think so

cinder flare
#

sad

old wyvern
#

I* have successfully managed to break IntelliJ's kotlin parser again

#

Wonderful

prisma wave
#

you could do ```kt
listOf(url1, url2).forEach { maven(it) }

lunar cypress
#

::maven ๐Ÿ˜Ž

gusty glen
#

hehe

cinder flare
#

wait what

#

can you really do code in the build.gradle

gusty glen
#

yes

#

for

prisma wave
#

yes

gusty glen
#

listof

cinder flare
#

holy shit

gusty glen
#

map

lunar cypress
#

that's the point sort of

gusty glen
#

filter

prisma wave
#

gradle scripts are just code

gusty glen
#

etc

cinder flare
#

im used to xml okay dont hurt me

prisma wave
#

mapM_ maven ["url1", "url2"] ๐Ÿ™‚

old wyvern
#

๐Ÿ˜ฎ

#

Haskell gradle dsl??

prisma wave
#

YES

old wyvern
prisma wave
#

make gradle pure again

gusty glen
#

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

cinder flare
#
plugins {
    java
    "com.github.johnrengelman.shadow"
}```
#

that doesn't look right

prisma wave
#

๐Ÿฅฒ

#

you are correct

#

it's not right

#

id(blah)

cinder flare
#

okay whats the right way

prisma wave
#

u need version too iirc

ocean quartz
#

I prefer this:

tasks {
  withType<ShadowJar> {
  }

  // etc
}
static zealot
#

id 'com.github.johnrengelman.shadow' version '6.1.0'

prisma wave
#

kt blitz

ocean quartz
gusty glen
#

starmism, look up there

cinder flare
#

okay someone really needs to make a gradle copy paste thing and ill be like 900% more likely to use it

static zealot
#

ah

#

didn't see that

jovial warren
gusty glen
cinder flare
#

it still doesn't like the version number!

gusty glen
prisma wave
#

double quotes?

cinder flare
jovial warren
#

id("com.github.johnrengelman.shadow") version "6.1.0"

ocean quartz
lunar cypress
cinder flare
#

oh double quotes

gusty glen
cinder flare
#

weird

gusty glen
jovial warren
#

this is basically Gradle written in Kotlin Starmism

prisma wave
#

nauseated face

jovial warren
#

Kotlin's single quotes are the same as Java's

lunar cypress
jovial warren
#

they're used for single characters

lunar cypress
#

you're wasting incremental builds

cinder flare
#

all im saying

#

is if someone made a default template for gradle

#

it'd see a lot more usage

gusty glen
#

idk, but normal clean task did not removed the old jar

jovial warren
#

Groovy on the other hand does support single quotes

lunar cypress
#

the normal clean task should delete the entire build directory

jovial warren
#

also, is it just me or is the Kotlin DSL more widely used

cinder flare
#

i mean it should be

gusty glen
#

ok then starmism

jovial warren
#

I literally see it everywhere

gusty glen
#

what a sec

cinder flare
#

kotlin is the best

prisma wave
jovial warren
#

Groovy DSL > Kotlin DSL

cinder flare
#

language of its tyle*

#

wait wdym

#

what's wrong with kotlin

prisma wave
jovial warren
#

it's over verbose in this situation