#dev-general

1 messages · Page 189 of 1

onyx loom
#

i read that wrong

#

uhhhmmmmmmmm

#

idk 😛

foggy pond
#

Yeah figured I can't ugh

empty tangle
#

Damn. @quiet depot that Preview features are not enabled just started appearing again out of nowhere. I tried reverting my changes, recreating launch.json, etc. but nothing is fixing it. Any clue why it came back?

ocean quartz
prisma wave
#

generic "java.lang bad" joke

ocean quartz
#

generic "i wish i could make it in Kotlin" response

onyx loom
#

should try elara

prisma wave
#

Yeah

#

The language that works

ocean quartz
#

MF wrapper for Elara thonking

prisma wave
old wyvern
#

Yee

ocean quartz
#

Man, i am stupid

#

The first if is not needed lol

#

If it doesn't have # it won't be in the registered list anyways

#

This is also now possible, not sure why anyone would use it, but it's possible

#

i miss data classes cryingblob

onyx loom
#

come back to us matt sadrain

ocean quartz
#

soon enough

astral quiver
#

testing here @prisma wave

#

Hey Matt, lets build a multiplatform KT command library focus on DSL?

#

in brigadier?

#

I never use it but I have a good idea for it

#

KotlinBukkitAPI currently have the best command dsl library for Kotlin

ocean quartz
#

Brigadier is a nightmare, my lib will be multiplatform and hopefully will have brigadier too
But it's java unfortunately cryingblob

onyx loom
#

boys im sleeping well tonight

#

just fixed a bug thats been aggravating me 🙂

#

goodnight.

frail glade
#

Was it PDM relocations?

onyx loom
#

maybe

#

but its a great feeling knowing u can go to sleep happily 🙂

hot hull
#

@foggy pond Could just do the old switchero where you make the wiko a new repo

astral quiver
#

I fix the Kotlin stuff in PDM 0.27.0 @onyx loom

#

I open a pull request

#

And I'm opening now PR for the Gradle transitive dendencies exclusion

#

Currently, my projects excludes Kotlin from dependencies to prevent wrong versions

#

so I got a OH MOMENT with PDM

#

But, I already made a PR to supports this 😄

prisma wave
#

Looks great 👍

obtuse gale
#

wait is java 14s records just a kotlin data class?

prisma wave
#

pretty much

empty flint
#

Did Kotlin do it first?

obtuse gale
#

Doesnt mean java cant

empty flint
#

Or is Kotlin's data class just a Java 14 record?

obtuse gale
#

The closer java gets to kotlin the better right?

prisma wave
#

Indeed

#

I think there are a few small differences

old wyvern
#

records are immutable

empty flint
#

Doesnt mean java cant
@obtuse gale No no of course not

prisma wave
#

Everything is immutable in records

#

Yeah

old wyvern
#

data classes arent assured to be

prisma wave
#

And they don't have a copy method

obtuse gale
old wyvern
#

mhm

prisma wave
#

Some of the new Java stuff looks pretty cool

obtuse gale
#

yeah

#

that npe thing on that site looked pretty nice

prisma wave
#

Yeah

#

Pattern matching for instanceof

obtuse gale
#

"""

"""

old wyvern
#

Thats cool but the amount of people still on 8 tho xD

empty flint
#

Yeah I feel like people might just skip J11 and go to J14 with such a fast dev cycle now

prisma wave
#

hopefully

old wyvern
#

or everyone can move to EVM

prisma wave
#

There's the new GC in 14 too right?

old wyvern
#

oh?

#

I think it was just CMS being removed

prisma wave
#

¯\_(ツ)_/¯

foggy pond
#

If I make a public repisitory private when it has a wiki, will the wiki be lost?

wanton sentinel
#

How would i make a plugin for my server that communicates with my store?

#

Idk how to do that

obtuse gale
#

what software is your store running?

heady birch
#

HTTP most likely

prisma wave
heady birch
#

Cursed

prisma wave
#

It's so ominous

heady birch
#

showcase

obtuse gale
#

e

prisma wave
#

showcas🇪

obtuse gale
prisma wave
#

where is it

#

where did it go

#

kidnap??

heady birch
#

We have an anti clojuer somewhere

prisma wave
#

I am not happy

empty flint
#

tfw you re-install all java jdk versions so you can test shit for all of them...

obtuse gale
#

bruh I definitely blindly copy + pasted this

#
        } catch (ex: IOException) {
            throw ex```
vast ore
#

Oh godness I can't fix it

#

anyone please know?

#
    
    local stats = Instance.new("IntValue", player)
    stats.Name = "leaderstats"
    
    local xp = Instance.new("IntValue", stats)
    xp.Name = "Exp"
    xp.Value = 0
    
    local maxexp = Instance.new("IntValue", stats)
    maxexp.Name = "MaxExp"
    maxexp.Value = 100
    
    local level = Instance.new("IntValue", stats)
    level.Name = "Level"
    level.Value = 1
    
    
    game.Workspace.Leaderstats.Changed:Connect(function()
        if xp >= maxexp then
            player["leaderstats"]["Exp"].Value = 0
            player["leaderstats"]["Level"].Value = level.Value + 1
            player["leaderstats"]["MaxExp"].Value = maxexp * 1.25
        end
    end)
end)```
obtuse gale
#

whats broken? Also what language is that btw

regal gale
#

Lua

#

Also, any error in console output @vast ore ?

vast ore
#

Nope

#

There is no error in the output ._.

#

that's why I'm confused

#

The leaderstats working great

#

The problem is with the level system

#
        if xp >= maxexp then
            player["leaderstats"]["Exp"].Value = 0
            player["leaderstats"]["Level"].Value = level.Value + 1
            player["leaderstats"]["MaxExp"].Value = maxexp * 1.25
        end
    end)
end)```
regal gale
#

The problem is that you did not define "player" anywhere

vast ore
#

So I just gotta do player = game.players.localplayer?

regal gale
#

Depends

#

Variable will be at the first line of the local script

vast ore
#

Ik Ik

#

I can also make local variable inside the function

#

but I will make it firstline outside

regal gale
#

If you want to, I guess

vast ore
#

I started to learn 1 week ago so kinda new xD

regal gale
#

And I didn't even know how to make a leaderboard on roblox...

vast ore
#

What? Oh u gotta watch Peasfactory

#

xD

regal gale
#

I'm fine reading docs instead

#

Also, the documentation in Roblox studio may be lacking infos

#

For example, the full tuple doesn't actually describe on the object whose name I forgot

vast ore
#

Oh okay gotcha

#

also I changed the code a bit and got output message to my issue

#

wait

#

That's the current code

#
player = game.Players.LocalPlayer

game.Players.PlayerAdded:Connect(function(player)
    
    local stats = Instance.new("IntValue", player)
    stats.Name = "leaderstats"
    
    local xp = Instance.new("IntValue", stats)
    xp.Name = "Exp"
    xp.Value = 0
    
    repeat wait() until player.Character
    
    local maxexp = Instance.new("IntValue", stats)
    maxexp.Name = "MaxExp"
    maxexp.Value = 100
    
    local level = Instance.new("IntValue", stats)
    level.Name = "Level"
    level.Value = 1
    
    xp.Changed:connect(function(player)
        if xp >= maxexp then
            player["leaderstats"]["Exp"].Value = 1
        end
    end)
end)
    ```
regal gale
#

Which line is 24?

vast ore
#

if xp >= maxexp then

#

Always the same error

#

...

#

oh GOD

#

xp.Value >= maxexp.Value

#

I'm so stupid hell god

#

Thanks man!

#

And I forgot a Parameter but thanks to you i fixed it❤️

regal gale
#

Np

little nova
#

is deluxechat updated to 1.16.2 currently?

#

or like a dev version

foggy pond
#

How strict are Spigot devs when going through premium plugins? I mean if there is one noob mistake which I may have done by mistake will they reject it cause it's bad quality

quiet depot
#

they’re super lax

#

you have to write extremely bad code to be denied

foggy pond
#

Like idk let's say that I have not followed the DRY principle, I repeated the same 4 lines of code twice or something

#

Okay thank god, I spent most of the time writing the plugin just making sure it all basic principles and it did not have any newbie mistakes

astral quiver
#

If this is the case and they decompile, Dry will be a problem because of the Kotlin inline operator

lunar cypress
#

meh

#

There are some premium plugins out there that are so incredibly bad

#

I can't imagine what it takes to be denied

oak coyote
#

They are so lax I saw one which broke every single convention their was and had 99% of the code in the main class for a main class size of around 10k lines but it was still allowed 😂

empty flint
#

How come mcVersionRange can be null here?

#

The getHighestBelow method returns a key of the map or null, but if it's null the fail(...) method throws an exception

#

So compatibilityVersion has to be a valid key of the map which means the value can't be null, right?

#

compatibilityVersion is correctly recognised as not nullable

#

Is it safe to use !! here?

prisma wave
#

does fail return Nothing?

#

Oh wait

empty flint
#

Yes

#

fail returns nothing

#

fun fail(message: String): Nothing = throw UsageError(message, option)

prisma wave
#

Yeah you'll have to use !!

#

I don't think you can use the contract DSL here

empty flint
#

Ah so even though compatibilityVersion can't be null, it can't know whether the key is present in the map?

#

Is that the gist of it?

prisma wave
#

Yeah

#

It would be impossible to assert that at compile time

empty flint
#

Oof maintaining the BuildTools versioning will be a pain in the butt...

#

Maybe I should just let BT handle that part

#

Has anybody had any luck running BuildTools with Java 12 or newer? The latest version I could get to work was Java 11

foggy pond
#

GOD what do I do if I have submit my premium resource for review

#

And I found out now I forgot one important thing

quiet depot
#

post an update

foggy pond
#

It's not plugin breaking important, but it is very important

distant sun
#

it wont be reviewed anytime soon so you got time

foggy pond
#

In my plugin there is 9 default alignments created from YAML files for server owners to use and play around with... To create all of them I copy pasted one of them 9 times and was supposed to change the values for each manually

#

And I forgot to change the values

#

So now there is 9 yaml files which have exactly the same contents but different names

obtuse gale
foggy pond
#

Yeah but what should I do? God

obtuse gale
quiet depot
#

klyser I told you exactly what to do

foggy pond
#

After the plugin gets approved?

quiet depot
#

before

foggy pond
#

But they might not approve it if they see that

#

I don't think I can

quiet depot
#

have you tried?

foggy pond
#

There is no Post Resource Update button

quiet depot
#

welp

foggy pond
#

It's just the YAML files I need to change

quiet depot
#

ask in spigot server

empty flint
#

Is there a way to get the Java Major version from the Java Runtime Environment version or vice versa without hardcoding it?

What I mean is this mapping:

Java SE 14 = 58 (0x3A hex),
Java SE 13 = 57 (0x39 hex),
Java SE 12 = 56 (0x38 hex),
Java SE 11 = 55 (0x37 hex),
Java SE 10 = 54 (0x36 hex),[3]
Java SE 9 = 53 (0x35 hex),[4]
Java SE 8 = 52 (0x34 hex),
Java SE 7 = 51 (0x33 hex),
Java SE 6.0 = 50 (0x32 hex),
Java SE 5.0 = 49 (0x31 hex),
JDK 1.4 = 48 (0x30 hex),
JDK 1.3 = 47 (0x2F hex),
JDK 1.2 = 46 (0x2E hex),
JDK 1.1 = 45 (0x2D hex).
quiet depot
#

what for?

#

what's your end goal?

#

is this an xy problem?

#

@empty flint beepy boopy

empty flint
#

How do you mean xy problem?

quiet depot
empty flint
#

what's your end goal?
@quiet depot Trying to prevent users from starting buildtools with an invalid java version

#

I can get the Runtime version using environment variables, that's not a problem

quiet depot
#

you can get the runtime java version via a system property

#

oh

empty flint
#

So for example --rev 1.16.2 would check this json file and find the "javaVersions": [52, 58] value

#

so 52 is the min java version, 58 the max

#

I just need a mapping from my java env (say 1.8) to this number (52 or 58 or whatever and theck check if the mapped number is between 52 and 58

quiet depot
#

I see

#

I'm not aware of such a mapping which already exists in the jdk, I recommend you just make your own

empty flint
#

Yeah I want to avoid having to maintain the software as much as possible

#

I could make my own but that's just lazy now and means I have to do some work every time a new spigot version or a new java version is released

#

and I just can't be bothered, honestly

quiet depot
#

well, since 1.2, every major java update has had a class file version increment of 1 unit, so I'd say it's fairly safe to assume this will continue to be the case

#

you could base your logic off that

empty flint
#

I noticed that as well, I don't know if that's actually the case though

#

I could read the version from the class file, but I would need a class file to compile in order to do that

#

and idk how to do that

quiet depot
#

two straightforward ways I can think of

#

you can either generate a dummy class via the instrumentation api

#

or, execute a compile command

#

I'd hope there's a better way than either of those, I'm just not aware of one sorry

empty flint
#

instrumentation api seems appropriate. lemme google that real quick

quiet depot
#

I believe asm is what you want

#

if you want to go with the instrumentation route

#

or bytebuddy

empty flint
quiet depot
#

uh

#

yes

#

but I've got no clue what that repo is

#

is it an example of using asm?

#

that's the official site

#

again, also might be worth looking into bytebuddy

#

I'm not sure which tool is better suited towards your needs

#

I've got limited experience with instrumentation

empty flint
#

Oh I found something:

#
public class Demo {
  public static void main(String[] args) throws IOException {
    ClassLoader loader = Demo.class.getClassLoader();
    try (InputStream in = loader.getResourceAsStream("Demo.class");
        DataInputStream data = new DataInputStream(in)) {
      if (0xCAFEBABE != data.readInt()) {
        throw new IOException("invalid header");
      }
      int minor = data.readUnsignedShort();
      int major = data.readUnsignedShort();
      System.out.println(major + "." + minor);
    }
  }
}
quiet depot
#

Demo.class still has to be compiled on the user's jdk

#

so yeah, you'll need that code eventually

#

but it doesn't solve the problem

empty flint
#

StackOverflow and Piggy be praised. Would have never found that if you had not brought up what to google...

#

Yeah but he's calling the class loader inside the class. when the code gets executed the class has to be compiled already by definition

#

otherwise it won't execute

#

so this is perfect

quiet depot
#

it's not?

empty flint
#

hm? how so?

quiet depot
#

it'll return the version of whatever jdk Demo.class was compiled on

#

not the user's jdk version

empty flint
#

oh, hm

#

crap I did not think of that

obtuse gale
#

Will something thats compiled on the latest Java version work on an older java version(11) (Discord bot) if its in kotlin?

prisma wave
#

Unlikely

quiet depot
#

i'm confused

#

how do u compile kotlin, on the latest java version

prisma wave
#

Actually wait

#

Yeah

quiet depot
#

kotlin is java 1.6+ afaik

#

you compile kotlin with the kotlin compiler

obtuse gale
#

ive just got the latest jdk selected in project settings, idk if that effects stuff

prisma wave
#

Doesn't the kotlin compiler target Java 8 by default

#

But supports 6

#

I guess try it and see

obtuse gale
#

also

#

with gradle can I make a task that builds, then auto uploads to an ftp site?

prisma wave
#

yes

#

Although it has potential to be a bit messy

#

I just made a task that executed the curl command

#

But it's super hacky

quiet depot
#

cant u do that shit through github now?

prisma wave
#

Pretty sure there is a plugin for it

obtuse gale
#

hm?

quiet depot
#

can't you make a gh action to do that aj?

obtuse gale
#

er

#

idk never done that before

quiet depot
#

neither

#

pretty sure it's possible tho

prisma wave
#

Gh actions kinda suck

obtuse gale
#

I mean I dont really currently use gh for this project

quiet depot
#

D:

#

should use github for everything

#

or any non-selfhosted git

prisma wave
#

What's wrong with self hosted

#

I was gonna self host a gitlab instance for commissions

obtuse gale
#

I used to use it so I could work on one project on multiple pc's, now i use dropbox for that

empty flint
#

I think I found something to make it work nice and clean

prisma wave
#

Dropbox

#

Smh

quiet depot
#

well, the main issue is that it doesn't get backed up to a frozen mine a few streets away from the seed vault

prisma wave
#

first world problems

empty flint
#

But I got an appointment 😦

#

So gonna try it later today

quiet depot
#

nah honestly just reliability

#

github probably won't lose your code

obtuse gale
#

dropbox good bm

quiet depot
#

I have a self hosted git too

#

got gitea on my home server

#

which I definitely recommend btw

#

but it syncs to github

prisma wave
#

yea github seems the most reliable

empty flint
#

Somebody actually made a runtime compiler library

prisma wave
#

Hmm

quiet depot
#

based on gogs

#

if you ever used of heard of that

onyx loom
#

@prisma wave have u uploaded / tested the new pr?

prisma wave
#

The pdm one?

onyx loom
#

ye

prisma wave
#

made in go
👏

#

I've merged them

#

But not triggered a release yet

onyx loom
#

😕

prisma wave
#

Wanna have a proper look through when I get home

dusky drum
#

yo @ocean quartz you said you made chat plugin using your message library?

ocean quartz
#

Haven't made it yet, but will

dusky drum
#

nice any ETA?

ocean quartz
#

Hmm not really sorry

dusky drum
#

oh, gotta make it then myself

#

kinda need it soon

ocean quartz
#

Shouldn't take long though since i'll use it on a server i'm making

dusky drum
#

nice nice.

ocean quartz
#

@prisma wave Yo PDM boy, how do you test your gradle plugin?
Trying to play around with it but can't seem to get my test to work on a different module
Like one for the plugin and one for testing

hot hull
#

Shouldn't take long though since i'll use it on a server i'm making
@ocean quartz 👀

dusky drum
#

ahgjaw im brain lagged, how can i like i have list of objects and i want to change this to get like list of objects.getname or something

ocean quartz
prisma wave
#

@ocean quartz with immense pain

#

What I usually do is deploy it to maven local and just go from there with some sort of test project

ocean quartz
#

Suffering right now
Can't seem to be able to get it to local

prisma wave
#

Hmm

#

What task are you using?

ocean quartz
#

Was doing publishToMavenLocal, don't think this will do it though kek

prisma wave
#

that should do it

#

it might be that you need to change the version

#

or the one on gradle will be resolved instead

ocean quartz
#

I get this

Unable to load class 'me.mattstudios.gradle.MfGradle'.
Possible causes for this unexpected error include:
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)

The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)

Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.

In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
prisma wave
#

interesting

ocean quartz
#

Oh Caused by: java.lang.ClassNotFoundException

prisma wave
#

probably a shading problem then?

#

or just packaging in general

ocean quartz
#

Doesn't seem to be creating a jar

prisma wave
#

send your buildscript

#

I believe you need this plugin
id 'java-gradle-plugin'

#

if you haven't got it already

ocean quartz
#

I think i found the problem

tranquil crane
#

fyi matt I modified my gradient code to fix a bug and added gradient looping 👀

#

in case you wanted that

ocean quartz
#

Oh? What was the bug?
And gradient looping? blurryeyes

tranquil crane
#

The last two characters of a gradient usually had the same color

prisma wave
#

imagine having bugs

tranquil crane
#

I need to learn how tf regex pattern matchers and groups work in java for string replacements because what I'm doing is so horrible

ocean quartz
#

Oh! I think i had that fixed on mine since i remade your regex

tranquil crane
#

The character bug was with the gradient generation and not the regex

#

I just completely rewrote the gradient class because it was kind of.. not great

ocean quartz
#

Oh interesting, okay I'll definitely take a look then blurryeyes
My color regex is pretty small
(?<!\\\\)[<&](?<hex>#[A-Fa-f0-9]{3,6})[>]?|(?<!\\\\)&(?<char>[a-fA-F0-9rR])|<(?:g|gradient):(?<gradient>.+?)>|<(?<r>r|rainbow)(?<sat>:\\d*\\.\\d*)?(?<lig>:\\d*\\.\\d*)?>

tranquil crane
#

that looks like magic to me

#

are the ?<hex> and such group tags?

ocean quartz
#

Yeah

tranquil crane
#

does that just mark everything else in the () with that group name?

ocean quartz
#

Yeah everything in the same parenthesis have the name

#

It matches [#000](/guild/164280494874165248/channel/000/) [#000000](/guild/164280494874165248/channel/000000/) &#000 &#000000 &a-r/0-9 <g:#000:#000000> <r> <r:0.5> <r:0.5:0.5>

tranquil crane
#

oo ok

#

I added a :loop parameter to the end of <g> and <r>

#

which can be :loop :l or :L

ocean quartz
#

What does it do to the text?

tranquil crane
#

After 30 characters it restarts the gradient in the reverse direction

ocean quartz
#

Ooh that's pretty cool!

#

@prisma wave Ayy got it working, this was painful

prisma wave
#

nice

hot hull
ocean quartz
winter iron
#
WHERE `build_type` in (?)
#

imagine this

#

how can i make ? multiple values

#

depending on a diffferent number of arguments each time

#

so sometimes

#

i want to select where build_type is 3 different things

#

other times i wanna do where build_type is 5 different things

hot hull
#

uhh

winter iron
#

i would have to just add it into the string right

#

and not use query.setString(1, stuff)

prisma wave
#

you could do some clever string joining tricks

#

repeat ?, n times where n is the size of the collection

winter iron
#

true

prisma wave
#

and then use a for loop + setString

winter iron
#

alrighty ty

hot hull
#

wow I'm dissapointed @ocean quartz

[16:18:18 WARN]: io.alerium.supportercodes.libs.mf-utils.exceptions.MfException: Method onCommand in class io.alerium.supportercodes.command.SupportHandle contains unregistered parameter types!

public void onCommand(final CommandSender sender, final OfflinePlayer target) {

#

Why is OfflinePlayer not a valid one :((

ocean quartz
#

Just register it

hot hull
#

ugly

onyx loom
#

ur ugly

hot hull
#

I know

prisma wave
#

you know what isn't ugly?

onyx loom
#

eLaRa

ocean quartz
#

Why is IJ wanting me to select android sdk, it isn't even an android project

onyx loom
#

intellij bad

#

time to go back to eclipse

prisma wave
#

eclipse... good?

onyx loom
#

yes

hot hull
#

sad_fingerguns

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.

onyx loom
#

make the connection available

prisma wave
#

hard to believe that people in this day and age are really living with not available connections

onyx loom
#

😕

#

sucks to be them!

hot hull
#
if (connection is unavailable) {
  dont()
}
#

Should work ye?

onyx loom
#

yup

#

although i must complain about that semi colon

#

and misspelled word

prisma wave
#

fun fact

#

elara does not have semicolons

#

but semicolons are a valid identifier

#
let ; => print "Hello"
;()
#

:)

hot hull
#

:bruh:

prisma wave
#

What

#

It's good

#

It means you can replicate the Elvis operator without it being a language feature

#

Ez

#

Elara good kotlin bad

remote goblet
#

i hate the ;()

prisma wave
#

;(

ocean quartz
#

Hey BM do you know how to create custom tasks?
Something like

task {
  name = "test"
  hello {
    // do more here
  }
}

Can't find any decent guide

prisma wave
#

it's just taskName { Blah }

#

Afaik

ocean quartz
#

I mean the example i have is valid too

prisma wave
#

oh do you mean with the API?

ocean quartz
#

Yeah, i think xD
Actually gonna copy fabric's plugin

prisma wave
dusky drum
#

am i doing this wrong:

return hologramRegistry.getTemplates().filter { it.name.contains(arg) }.map { it.name }.toMutableList()
ocean quartz
#

Why mutable?

dusky drum
#

kotlin

ocean quartz
#

I mean i know

#

Why though

prisma wave
#

List better

dusky drum
#

idk it just requests me to do mutable

prisma wave
#

Mutability bad

dusky drum
#

gotta check my java core

hot hull
#

ew mutable

prisma wave
#

but yes that's fine

#

You may want to use a Function reference and / or a Sequence

hot hull
#

You return a name list, why would you make that mutable thonking

prisma wave
#

^

dusky drum
#

protected abstract List<String> onTab(CommandSender sender, String... args);

#

idk

prisma wave
#

?

dusky drum
#

why i added muttable

#

im just yes

#

very yes

prisma wave
#

Don't use mutable unless you know you need it

#

Ew

#

Passing mutable lists around

#

Very bad

dusky drum
#

its list in java

#

idk why kotlin requires mutable

prisma wave
#

Hm

#

It shouldn't do

dusky drum
#

^^

ocean quartz
#

Probably because java's list is always mutable

dusky drum
#

aha

hot hull
#

Cause java doodoo

dusky drum
#

hm

hot hull
#

:what:

dusky drum
#

yes

#

kotlin wierd

prisma wave
#

Bruh

dusky drum
#

frik i found the issue

#

apparently kotlin decided to change my function

prisma wave
#

TIL external is a keyword in kotlin

hot hull
prisma wave
#

String.format for a prepared statement

#

smh

#

fully qualified name for Connection

hot hull
#

Now you're gonna say setString and shit smh

prisma wave
#

yes i am

#

setString and shit

hot hull
#

smh, kk, this looks nicer tho :((

#

But is the CompletableFuture aight or?

prisma wave
#

I guess

#

apart from being a bit big

hot hull
#

Well I mean I could make a util class which takes a resultset and returns the wrappers, but since I only use them there, kind of a meh

prisma wave
#

yeah there are times where it's impractical to refactor

hot hull
#

Gotta think of something clean for the String.format replacement

prisma wave
#

String.prepare fingerguns

hot hull
#

Not kotlin tho GWsetmyxPeepoSad

empty flint
#

Do you guys maybe know why the System class in Kotlin does not have a System.javaClass property?

prisma wave
#

because javaClass is for variables not types

#

use System::class.java for a bounded class reference

dusky drum
#

string.class is final in java so basicly you can't add your own functions to it sadly.

#

that does something like:

private String someMethod(String s)
{
   return s.substring(0,1);

}

void main(String[] args)
{
   String s1 = "hello";
   String s2 = s1.someMethod();
   System.out.println(s2);

}
#

@hot hull

#

if that interests you

prisma wave
#

kotlin 👀

hot hull
#

Nah lol, I just made it Statement#prepare

#

Good enough

onyx loom
#

@prisma wave any chance u looked at the pr fingerguns

prisma wave
#

no

#

but what could go wrong?

#

0.0.28 on its way

onyx loom
#

what could go wrong thonkness

prisma wave
#

the rate of failure is quite low

onyx loom
#

clearly

prisma wave
#

and if it does fail it's not my fault

#

aight it's published

onyx loom
#

i shall try it out

ocean quartz
#

Damn making a gradle plugin is giving me a good beating

prisma wave
#

it's painful

ocean quartz
#

Can't figure how to make it look the way i want

#

I don't understand the properties stuff

prisma wave
#

properties stuff?

onyx loom
#

omg it works 😄

#

no more 1.7mb jar fingerguns

prisma wave
#

pdm moment

onyx loom
#

pdm good

ocean quartz
#

Like

task {
  name = "test"
}

Name apparently is a property

prisma wave
#

yeah

#

isn't that just groovy?

ocean quartz
#

Yeah but i want a plugin that'll create something like that in the gradle though

prisma wave
#

did you see what I sent you?

#
project.tasks("name").doLast {
    blah
}``` will add a task called name
ocean quartz
#

Basically what I want is to make a plugin for plugin.yml (i know there is already one but i wanna try my own)

bukkit {
  name = "Name"
  main = "main.class.Here"
  // etc
}

Not yet ended up forgetting xD

prisma wave
#

Ah I see

#

Have a look around the pdm code

#

It does similar stuff

ocean quartz
#

Gotcha

prisma wave
#

Actually I think these are called "extensions"

ocean quartz
#

Yeah the extensions is where i got lost

prisma wave
#

val extension = project.extensions.create("pdm", PDMExtension::class.java) is how pdm does it

#

And then the PDMExtension is just an open class with all of the fields

#

And the buildscript just changes the value of those fields

#

Which you then read on-build or whatever

ocean quartz
#

Cannot set the value of read-only property 'name' for task ':testing:bukkit' Even though it's a var 😫
Aight imma look what you have

prisma wave
#

Ok ima head to bed so @ me if you have any questions

ocean quartz
#

Sure thing

old wyvern
#

test

empty flint
#

I did it!

The BuildTools build encountered a problem: Spigot version 1.12.1 is incompatible with the current Java version (Java 11). It requires Java versions between 1.8 and 9.0.

#

The BuildTools build encountered a problem: Spigot version 1.14.1 is incompatible with the current Java version (Java 14). It requires Java versions between 1.8 and 12.0.

#

1 step closer to the mc plugin testing IntelliJ plugin 😄

astral quiver
#

omg it works 😄
@onyx loom excluding kotling fingerguns

#

also, now, exclude rules in pdm() works

#

I'm using it because I have library that have Kotlin with differents versions

#

to prevent bugs, I'm excluding

#

plugin-yml is a great Gradle plugin, I use it also

#

Gradle plugins is awesome, pdm is the best

ocean quartz
#

BM do the relocations

obtuse gale
#

What should I learn for backend if I want to be able to use most hosting?

#

Since with spring it pretty much has to be a vps since most hosts dont support java

ocean quartz
#

I guess .. php

obtuse gale
#

ew

#

I guess I could use that framework thingo for it

#

but still ew

#

node.js is commonly supported isnt it? Is it worth learning js for that? Or could I use kotlin js

ocean quartz
#

Oh actually, Vue

#

I'm not sure if Vue is a back end thing or not, but could do it

old wyvern
#

8 seconds for assignment to close

#

lmao

obtuse gale
#

Is kotlin JS a viable option for website stuff?

#

Also how do you get good at something like html/css? Ive tried watching tutorials and all I can find is stuff thats like 'And you can open a tag by typing <p>',, which i already know the basics, its just i always somehow end up making shit really messy, espsecially with css

errant geyser
#

I'm not exactly great, but I just played around and looked on W3. I can make decent sites now, but still nothing too fancy

frigid badge
#

you should use libraries/frameworks

#

makes it a ton asier

obtuse gale
#

mm yeah, ive heard of bootstrap, its just my css always ends up getting really messy, should i start looking into bootstrap?

old wyvern
#

Yes

static zealot
#

I'm not exactly great, but I just played around and looked on W3. I can make decent sites now, but still nothing too fancy
I used to make some nice websites (only html, css and js) but they looked pretty good. I'd probably need to go thru w3schools again to learn how to do it bcz I forgot xD

empty flint
#

How would the following work in Kotlin?

when(file)
{
  !exists() -> ...
  parentFile... -> ...
  else -> 
}
#

The problem is that file.!exists() is not a valid construct

#

so how do I negate a boolean method call with an object as the receiver?

#

I actually don't think I can even use the when(file) call like that... Can't check if a file exists using a when as far as I can tell

prisma wave
#

Yeah you can't use file inside the when expression

#

Just use it in each individual branch

empty flint
#

I just did but it looks uglier

#

Maybe they'll add something in 1.5

heady birch
#

match file {
Some => {
},
None => {
}
}

empty flint
#

That's not Kotlin though, is it?

heady birch
#

No its rust

shrewd patio
#

Hello
can someone help me with an ubuntu problem? I want to upload programs but it says I don't have permission
please

prisma wave
#

get permission

shrewd patio
#

get permission
@prisma wave but how do i do it?

lunar cypress
#

You haven't specified anything

#

From where you want to upload, what exactly you want to upload, where you want to upload to

#

The means you use to upload

shrewd patio
#

From where you want to upload, what exactly you want to upload, where you want to upload to
@lunar cypress I try to upload a folder with my server from my pc. through the Bitvise program to a VPS that you rent.

#

I have commands that I used previously with other servers. but now it turns out that I can't upload files because I need permission

#

ubuntu@vps-7beb1ef1:~$ cd /home
ubuntu@vps-7beb1ef1:/home$ mkdir prison
mkdir: cannot create directory ‘prison’: Permission denied
ubuntu@vps-7beb1ef1:/home$

frigid badge
#

why are you making a folder in /home anyway

#

make a user for that or put it in your user's home folder

shrewd patio
#

make a user for that or put it in your user's home folder
@frigid badge how can i upload files? when uploading them tells me that I failed

empty flint
#

Hm I don't understand this Kotlin syntax. Could somebody explain what construct this is?

typealias CallsTransformer<EachT, AllT> = OptionTransformContext.(List<EachT>) -> AllT

Specifically the OptionTransformContext.(List<EachT>) is confusing. Is that a constructor reference? There's no method name in front of (List<EachT>) is anything...

#

What am I looking at here? (not my code, reading a library to try and understand what it does)

prisma wave
#

It's extension function syntax

hot hull
#

@prisma wave Issue with Hibernate, it's xml 🤢

lost forge
#

Quick Question:

If my plugin creates a custom Item and I don't want players using said item to craft with. (i.e crafting table etc..) would I just use the CraftItemEvent and check for the item and cancel the event? Never really looked into this specific event before

hot hull
#

Yes

lost forge
#

Okay thanks, just wanted to double check

hot hull
#

There's also a precraft one iirc

empty flint
#

It's extension function syntax
@prisma wave I thought so as well but what does it mean? Like how would you describe what that code does? What does it extend? A constructor?

lost forge
#

The PrepareItemCraftEvent does not have a setCancelled method. So the CraftItemEvent might be the one to use.

distant sun
#

You get the matrix and set the result to null/air

astral quiver
#

@prisma wave I thought so as well but what does it mean? Like how would you describe what that code does? What does it extend? A constructor?
@empty flint is a extension function type, simple, you have a "lambda" with the context of a class, like you have with simple extension function

#
fun Player.hey(message: String) {
  sendMessage("Hey $name, $message")
}

typealias HeyFunction = Player.(String) -> Unit

val myFunction: HeyFucntion = {
  sendMessage("Hey $name, $it")
}
#

this two is the same thing

ocean quartz
#

i need winter in my life, can someone please turn of the sun?

hot hull
#

Figured it out, I'm big dumbo

obtuse gale
#

Do you guys know if there is a way to get the size of a unicode?

prisma wave
#

@astral quiver it would be $this instead of $it no?

#

@prisma wave Issue with Hibernate, it's xml 🤢
@hot hull not necessarily

#

I've used it before without any XML

astral quiver
#

no, $name is from the Player.getName()

#

and $it is the String message

prisma wave
#

Oh yeah

heady birch
#

This photo was uploaded to SARS

prisma wave
#

1973

frail glade
#

PDM 1.16.3 when

prisma wave
#

¯\_(ツ)_/¯

dusky drum
#

here we go i boosted server 2 times 🙂

prisma wave
#

1.0 will probably be after a rewrite

dusky drum
#

owo xpbar on command =xp isnt centered! hmm

astral quiver
#

Currently, I do not have any issues with PDM

#

it supports all things that I want

#

The only thing is relocation, but its okay

ocean quartz
#

relocations

prisma wave
#

Yeah relocation isn't a problem until other plugins get their dirty hands on things

ocean quartz
#

i need coroutines

astral quiver
#

So, I was reading 1.4.10 release, and I guess I found the issue with the Bukkript

#

that was not working

prisma wave
#

kotlin being evil again probably

astral quiver
prisma wave
#

Happens much too often for my liking

ocean quartz
astral quiver
#

Still can't send image here

#

you are a GOD ❤️

prisma wave
#

Get to tier 2

#

or tier 6

#

Either is fine

astral quiver
#

I'm was having this issue but with the Relocation

#

95% to tier 2

dusky drum
#

interesting

ocean quartz
#

Better talk now, 6x multi xp

dusky drum
#

indeed

prisma wave
#

just write really long messages like this and you should get an adequate amount of experience with ease

astral quiver
#

GG

ocean quartz
#

You should be able to get 2lvls pretty fast

dusky drum
#

i kinda wish java had like options to extend classes like kotlin so you could have String#format like Frosty did in his plugin for coloritizn or something

astral quiver
#

So I need to write a really long message like this one here to get more XPs because it is 6x xp now? I guess it will work

#

F

prisma wave
#

@dusky drum just use Kotlin

#

Or scala

#

Or elara

dusky drum
#

i mean

#

java is still native to mc

astral quiver
#

"native to mc", for me, this is bullshit that people says to not use a language

dusky drum
#

i still use kotlin lel

prisma wave
#

It doesn't mean anything

astral quiver
#

Good that mc is native java, this will allow more languages to be use

dusky drum
#

but i want something like that in java to.

astral quiver
#

Yehhhh tier 2

prisma wave
#

Probably not gonna happen for a while

dusky drum
#

true

ocean quartz
#

Almost there

dusky drum
#

where=

astral quiver
#

No wait

#

I was wrong 😮

#

Level 9

dusky drum
#

haha

#

rip

prisma wave
#

Would anyone be interested in hearing about the word of Elara

#

For XP

astral quiver
#

I like things built on Java, if you will be done with the full pontetion of Kotlin, should be write in Java

#

Like, a minecraft server writin in Kotlin without using Coroutines

#

is bullshit

#

I know a project that writes a new server IMPL but the goals is to have Interop com Java

#

No sense

#

Just write in Java, will have more developer to help with the project

prisma wave
#

MineKraft would never do such a thing

astral quiver
#

Their all my friends but they do not listen to me

dusky drum
#

packet based holograms muahaha

#

works

astral quiver
#

Is just a fucking Java like server implementation writen in Kotlin

#

MineKraft >>>

prisma wave
#

^^

ocean quartz
#

MineKraft will always sound weird af

prisma wave
#

All my projects are fully operational and working so you should use them

astral quiver
#

Me and my friend was writing a minecraft server for Kotlin MPP

#

In JVM runs with Netty, in JS, Nodejs

ocean quartz
#

Make a cross platform minecraft server in kotlin fingerguns

dusky drum
#

make

prisma wave
#

Wouldn't be that hard

dusky drum
#

server in c#

prisma wave
#

But JVM is easier

ocean quartz
#

Yeah

dusky drum
#

make it in c++ or c#

ocean quartz
#

Or lets wait for Sx's GO server

astral quiver
#

Is something that is possible

ocean quartz
#

That one will be speedy

astral quiver
#

and is very cool to see this be possible

prisma wave
#

Go is a great language

dusky drum
#

Go Lang

astral quiver
#

We start but never continue it

ocean quartz
#

Starting to love GO

prisma wave
#

One of the greatest I would say, many fine people use Go

dusky drum
#

true

#

its fast

#

and has good syntax

astral quiver
#

We use kt-mc-packet, this is why is multiplatform

prisma wave
#

Fun fact Elara is going to be written in Go

#

I have probably said that before

astral quiver
#

I never got time to learn Go

prisma wave
#

But Go is really a very nice language which I think is cool and good and cool

dusky drum
#

kt-mc-packet i made my own packet handler hehe

prisma wave
#

give me xp

dusky drum
#

no

#

cry

astral quiver
#

But I don't know the key points of Go

prisma wave
#

Fast

astral quiver
#

Comparing like to Rust

prisma wave
#

Clean

#

High level but still the speed of native

#

And manual control when necessary

#

Also good multithreading features

dusky drum
#

i mean snytax is realy clean if you ask me.

astral quiver
#

All this things Rust does have, or no?

#

But there is not GENERIC TYPES

#

🤢

prisma wave
#

Rust doesn't have a very mature concurrency model afaik

#

And it's nowhere near as simple as Goroutines

dusky drum
#

🙂

prisma wave
#

Also generics are fairly unnecessary

astral quiver
#

Goroutines is the same model as Coroutines?

prisma wave
#

I don't think so

#

Well kind of

#

But not as complicated

dusky drum
#

how does even xp work here is like per message with random number?

prisma wave
#

And on the language level

#

@dusky drum based on length I think

astral quiver
#

There is two types of concurrency stuff that I know

#

I guess the coroutines aproach is called "red functions"

#

something liek that

dusky drum
#

length

#

okay so if i make this message realy long i get more xp?

astral quiver
#

Here, from Elizarov

prisma wave
#

yeah Goroutines avoid that

dusky drum
#

gotta make actions for my plugin, any idea how i would listen to packets?

prisma wave
#

Protocollib ?

dusky drum
#

i dont want to use protocollib

prisma wave
#

Why not

astral quiver
#

I mean, if you have a BIG API, based all in coroutines

#

you could have the same aproach as Go, right?

dusky drum
#

cause i already handle sending the packets myself

prisma wave
#

Yeah I suppose so

dusky drum
#

so its basicly useless that i made packet sender myself then

prisma wave
#

Goroutines don't handle returning though or suspending

astral quiver
#

Different from JS, Dart or C#

prisma wave
#

They are just for running functions

heady birch
#

goroutines

prisma wave
#

Ok

astral quiver
#

I guess like, Ktor you will mostly have suspend scope everywhere

#

because everything is suspend on it

prisma wave
#

No suspending functions in go

#

No coloured functions fingerguns

astral quiver
#

Yes, but Go is a closed ecosystem, Kotlin is not

ocean quartz
#

How do you like my lovely startup message for the plugin i am making?

prisma wave
#

lovely

astral quiver
#

And if you look at the aproach from Kotlin, is like Goroutines, but, with the support for the JVM Ecosystem

prisma wave
#

eh

#

To a degree

#

Coroutines are much more complicated than Go's approach

dusky drum
#

so anyone has any idea how to listen for packets or no?

astral quiver
#

I really like the Kotlin aproach

#

the Dart is really bad

prisma wave
#

EntityPlayer has something to do with that iirc

astral quiver
#

JS also

#

Promise and Future

ocean quartz
#

You'd need a ChannelDuplexHandler

hot hull
#

@ocean quartz Console messages = cancer, atleast if you can't turn them off

astral quiver
#

When you do async

heady birch
#

why Duplex

hot hull
#

That non paper message is butiful tho

ocean quartz
#

@hot hull Why lol?

dusky drum
#

oh niall im sure you can help me

astral quiver
#

I should write a blog post about Jetpack Compose vs Flutter, and Kotlin vs Dart

hot hull
#

Last thing anyone wants is more console spam Matt

dusky drum
#

how would i listen to packets?

astral quiver
#

but in portuguese

hot hull
#

It gets annoying real quick

astral quiver
#

I want to get GDE here on brazil

heady birch
astral quiver
#

or Jetbrains Advocate here too

ocean quartz
astral quiver
#

Yehhhh i'm tier 2

dusky drum
#

ufff matt already started working on chat plugin 🙂

ocean quartz
#

Yeah ;p

astral quiver
heady birch
#

@dusky drum Protocol lib

dusky drum
#

would tinyprotocol work?=

heady birch
#

Idk

#

Or do it directly add your own channel handler thing

dusky drum
#

ye but how?

#

never worked with this stuff

heady birch
#

Insert it somewhere in the pipeline

dusky drum
prisma wave
#

Ehh

ocean quartz
#

Thanks i just went blind

prisma wave
#

Synchronized?

heady birch
#

I dont think you make your own ChannelInitializer do you?

dusky drum
#

well thats on tinyprotocol

#

so idk

heady birch
#

No idea

dusky drum
#

well i'll play around with it

#

to get stuff

#

cause like i made all nms for packet senind

#

sending*

#

so idk

hot hull
#

Gasper

#

Why, just why

dusky drum
#

wat?

#

i got some wierd like cpu usages with procoolliub

#

so i mae my own

prisma wave
#

reinventing the wheel is an essential part of programming

dusky drum
#

?

prisma wave
#

reinventing the wheel

#

Making something that already exists

dusky drum
#

i mean := protocollib was slow

prisma wave
#

:=

dusky drum
#

so i made my own nms handler

prisma wave
#

Go moment

dusky drum
#

?

prisma wave
#

Go

#

:=

dusky drum
#

i dont want like

prisma wave
#

walrus

dusky drum
#

friking 70ms per tick

#

tps dropped to 18

#

from 20

#

like ;:M=PO?

prisma wave
#

sounds like a you problem

dusky drum
#

my nms does 0 ms

prisma wave
#

Protocollib is fine

#

Although GotocolLib is better

#

And don't get me started on ElaracolLib

dusky drum
#

i mean most users that use my plugin complain that it doesnt work guess what NOONE has procoollib installed.

prisma wave
#

?

dusky drum
#

like

prisma wave
#

Doesn't literally everyone have protocollib

dusky drum
#

80% of users dont have procoollib yet

#

so i get complains all along

prisma wave
#

I thought protocollib and vault were something literally everyone has

dusky drum
#

vault yes, idk about procoollib

#

i mean i only use it so i can like edit packets 🙂

heady birch
#

:=

#

Wtf

dusky drum
#

?

prisma wave
#

:= go moment

dusky drum
#

and i dont understand why change "a,b,c,d" to "0,1,2,3=

#

how da frik do you know which number to use

prisma wave
#

just read the docs

#

Read them bro

dusky drum
#

which docs??

prisma wave
#

They exist

heady birch
#

:=

prisma wave
#

:=

#

Elara should have :=

#

that would be good I think

heady birch
#

let mut

dusky drum
#

i dont like java docs they damage my brainž

heady birch
#

match

=> {}

prisma wave
#

Elara good

#

It's basically rust

#

Mixed with F#

#

Mixed with kotlin

#

Ez

ocean quartz
#

Kotlin# when

dusky drum
#

ug..

#

if i wanted to use protocollib i still kinda need nms since their chatcomponent is slow as frik

prisma wave
#

chatcomponent

#

niall moment

dusky drum
#

what?

prisma wave
#

Packet serializers

#

Speedy

dusky drum
#

i mean Chatserializer but yes same stuff its slow in protocollib

#

and all i need to do is check for place hit packet

#

so

prisma wave
#

Yo I'm almost level 60

dusky drum
#

kinda looking into tinyprotocol

prisma wave
#

The purple name is almost over :(

dusky drum
#

hehe

#

bad

prisma wave
#

Anyway I'm gonna monologue about Elara's type system for a bit to grind xp

dusky drum
#

lel

#

you just want xp dont you

prisma wave
#

So the type system is primarily contract based, meaning type B can be used in place of type A if B has the same contract as A

dusky drum
#

you really want to beat top 2?

prisma wave
#

Absolutely

#

In practice this refers to properties in a struct: a struct is considered to share a contract if it has all the properties with the same name and type

#

What this allows is inheritance that isn't truly inheritance. If the Person struct has a String name and mut Int age, any other struct can be used that defines those properties too

#

As such "inheritance" just copies the properties into a different struct

#

However elara also has the concept of "composite types", popularised in purely functional academic languages

#

These are types made up of unions / intersections of other types

#

For example:
type Result<T> => Some<T> | None defines a type Result<T> that will accept either Some<T> OR None

dusky drum
#

.,.

prisma wave
#

Since there are 2 "possibilities" in this example, Elara will also provide implicit Boolean conversion, with Some being truthy and None being falsey

dusky drum
#

bom

prisma wave
#

This lets us do super clean stuff like ```
let result = blah()
if result => {
result.value.blah-blah()
} else => {
print "No value!"
}

#

Result can implicitly be cast to Some via the Boolean conversion

#

These composite types also support intersections instead of unions:

type NamedEntity => Named & Entity

This will accept any type that is assignable to both Named and Entity

#

It's like inheritance but not really

#

Very powerful I think

#

Bruh only 600xp from that

#

Scam

hot hull
#

ew, an else

prisma wave
#

shut up you

dusky drum
#

ahaha

prisma wave
#

else good

#

Elara good

dusky drum
#

frosty is salty heheh isnt he

#

whats the packet called when player hits the entity?

heady birch
#

Lol

#

All chat serializers slow

prisma wave
#

you're slow

hot hull
#

I'm so confused, why does it keep timing out the connection

[16:03:39 WARN]: [SupporterCodes] Tried saving data, but database connection was unreachable!
[16:03:39 WARN]: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.

dusky drum
#

then show yours if you blame them all Niall we wouldn't mind 🙂

#

okay so i found PacketPlayInUseEntity but cant find anything like that on wiki.bg

#

vg*

heady birch
#

i still use the serializer

dusky drum
#

?

heady birch
#

but i dont do that stupid stuff all the tutorials say

#

ChatSerializer.a("<json>")

dusky drum
#

=?

prisma wave
#

:=

dusky drum
#

what do you do then niAll?

frail glade
#

New Kotlin update out 👀

onyx loom
#

O

prisma wave
#

1.4.1?

onyx loom
#

yup

frail glade
#

1.4.10

ocean quartz
#

Pretty cool

#

Starting with 1.4, a property can delegate its getter and setter to another property. To rename a property in a backward-compatible way, introduce a new property, annotate the old one with a
@Deprecated
annotation, and delegate its implementation.

#

I learn a lot of things from Kotlin's twitter actually xD

hot hull
#

That's cool

prisma wave
#

Hmm

#

Looks like "Andrey" is finally making the right decisions at last

#

Although not a moment too soon I must say

dusky drum
#

anyone has idea why i get
Caused by: java.lang.IllegalStateException: Unable to find method null ([class net.minecraft.server.v1_16_R2.ServerConnection]).

#

protocol = object : TinyProtocol(plugin)

#

at this line

prisma wave
#

can't find method null

#

Classic

dusky drum
#

which one?

prisma wave
#

null

dusky drum
#

and hbow can i fix this?

prisma wave
#

I am not sure but I can recommend a workaround

prisma wave
#

Use a language that doesn't have null such as clojure

#

That way your error will say nil instead of null

#

which might be nicer

dusky drum
#

ffs

onyx loom
#

:clojuremoon:

prisma wave
#

Ah actually I know this

#

If a methods name is null it's a constructor I think

#

So it's a TinyProtocol issue probably

#

Not supporting 1.16.2?

dusky drum
#

.,.

frail glade
#

Anyone know the Java version of apply in Kotlin off the top of their head?

prisma wave
#

There isn't one?

#

Or do you mean the actual class name for interop

dusky drum
#

found the issue, serverconnection is initialized after all plugins load.

#

wait

#

how can i run some task when server is fully started?

ocean quartz
#

Need 4k xp to pass clip blurryeyes

#

=multi

compact perchBOT
#
Your XP Multiplier:
dusky drum
#

xd

#

so

hot hull
#

Gasper, delay fingerguns

dusky drum
#

how big should the delay be?

hot hull
#

couple of seconds

dusky drum
#

10?

hot hull
#

Sure

dusky drum
#

or

#

i could run it when first player joins right?

hot hull
#

Well what are you running

ocean quartz
#

Just run it on a task, tasks only run once the server is fully enabled

dusky drum
#

for some reason it doesnt

ocean quartz
#

Interesting