#dev-general
1 messages ยท Page 131 of 1
but you should always ask for the source code especially when you paid for it
What are generally people's solutions for constructing PreparedStatements and avoiding a bunch of try catches? I'm currently using a sort of builder to do it but was interested in alternatives. https://i.imgur.com/9PxMe2l.png
You need 1 try catch
^
Honestly... I've googled a few things (I know I should properly learn java, before anything - but lazy).
I've ended up with this;
My main class: https://paste.helpch.at/uhisubifaw.java
OnChat Class: https://paste.helpch.at/kiluvobawu.java
..and it's still complaining that shit needs to be static, but then more complains that shit shouldn't be static.
I'm trying to access settingsManager in the main class, from the OnChat class
@cerulean idol yours looks interesting, can I see the whole class/do you have a repo I can grab it from to test?
1 try catch everytime I have to make a SQL statement
Well yes. What did you expect?
That was exactly what I was expecting, I was making a solution that removed the need of redundant code
Mackensie, you main class has a local variable and a global variable with the same name
You need a getter method and an instance of your main class using dependancy injection
mind spoon feeding me?
eh no but I can feed you psuedo
spoonfeed urself by learning java
How does it work with EventHandlers?
actually
nrm
I meant, my OnChat Class doesn't have a main.
@cerulean idol yours looks interesting, can I see the whole class/do you have a repo I can grab it from to test?
oop didn't see the ping
You need a final Main instance with null in your event class. You also need a constructor in it to assign the variable. When you call your OnChat you need to feed the construcotr
yeah sure I can put it in a paste ril quick
some of it uses code from other SQL management classes I have but it's relatively straightforward
?java-dependency
Dependency Injection
Dependency injection is when we pass a class through other class constructors to access that specific class in those other classes.
public class Main extends JavaPlugin {
@Override
public void onEnable() {
Other other = new Other(this);
other.method();
}
public void myMethod() {
/* Some code goes in here */
}
}
public class Other {
private final Main main;
public Other(final Main main) {
this.main = main;
}
public void method() {
main.myMethod();
}
}```
is that what mackenzies tryna do idek
?kotlin-dependency
Dependency Injection
Dependency injection is when we pass a class through other class constructors to access that specific class in those other classes.
class Main : JavaPlugin() {
override fun onEnable() {
val other = Other(this)
other.method()
}
fun myMethod() {
/* Some code goes in here */
}
}
class Other(private val main: Main) {
fun method() {
main.myMethod()
}
}
For the real pros
๐
well idk lol
sending updated code...
SwearFilter: https://paste.helpch.at/kemojuracu.java
You need to add an instance of Main in the arguements of OnChat( );
umm... which lines am I removing?
Nvm forget I said that
?
When you register your event, you create a new OnChat object. In your arguement you need to give it an instance of main
new OnChat(this)
@cerulean idol I actually quite like that, is it a library or just a collection of some classes in one of your projects for now?
part of my core, currently working on overhauling the SQL part
Fair enough
No, you dont need to create two instances of OnChat
Shall I remove the 2nd?
latter?
The one with the capital This
oh yeah
I fixed that
but I since delete that whole line, since it was a double instance
How to I get settingsManager from the onChat class?
Create a final settingsmanager of global scope in your main class
make the getter
@topaz bay A getter would be...
public void method() {
//code
return getter;
}```
right?
more or less
Not void
static?
It would be the type of what you want to get
SettingsManager settingsManager = SettingsManagerBuilder
.withYamlFile(new File(getDataFolder(), "config.yml"))
.configurationData(Config.class)
.useDefaultMigrationService()
.create();
That is what Im wanting to return
public SettingsManager getSettings() {
return settingsManager;
}
And make sure that field is both private, and final
where would I put the code I send above?
Its already a field in your main class isn't it?
in the onEnable, or ?
My main class, doesn't have a main field currently.
it just has an onEnable
what...
Holy fuck no
So... I've done this : https://paste.helpch.at/usuganejam.java @topaz bay
@lavish notch
Thats a field
It is in your main class
Make it private and final
Then add the getter I gave you, to the bottom of your main class
https://discordapp.com/channels/164280494874165248/695431668944732270/733775896070324356
so I'd be putting this in my onEnable, or do I make a main field?
Im gonna punch you in the neck
I swear it
Look at the recent quote I did of you
Do that
Done
Now add the method I gave you
k
Now send what you have
private final class SwearFilter extends JavaPlugin {}?
kmn what am I making private? - SettingsManager?
Do you understand what a field is?
Not really...
So you know what a class is right?
oh yes
Ok
Classes can contain literally only 3 things
fields, methods, and other classes
class ThisIsAClass {
private final Object thisIsAField;
private void thisIsAMethod() {
}
private static class ThisIsAnotherClass {
}
}
Done
Now send what you have
Beautiful.
Now inside your OnChat class, you have a field that holds your main class right?
Well yes
Look at your class, and look at the example I gave you
What in your class matches what I said a field is?
private final SwearFilter main;
Exactly
Now to access the settings manager, you would call the method you defined in your main class
main.getSettings()
Ah... ok
Can you go to your Config class please?
Put your mouse on words
And hit SHIFT + F6
Which enables rename refactoring
Change it to WORDS
done
Can you send that class?
Can I become developer?
Nice
@errant geyser so I havent written everything but the concept though
Now that particular mixture of modifiers public static final or private static final makes those fields special
Fields with those modifiers are known as "constants"
So while they are still technically fields, they will almost always be referred to as constants
Right.
@steel heart Thats fine, is it usable yet?
yeah
Wait can you add so I can simply push?
Idk if my pull req was goingf through
nvm
I will make a new one
Oh wait I dont have permission @errant geyser
Can I become developer?
@untold prairie do you know how to learn?
how do i learn?
can you learn to learn to learn?
depends
Can you learn to learn how to learn to learn?
perhaps
On today's episode of "Guess the build time"
What build times do you guys think i'm going to have today 
4:20:69 M:S:MS
its getting close that honestly
13minutes
trash comp
Buy me a new one then bitch
Absolutely fucking not
rat
4m 
๐
it was so close 
LMAO
....
dont be surprised if it was tho
whatโs the difference?
horny people
Im teen of this generation so that may be why
@remote goblet willpower
Anything can be a dildo if you try hard enough 
Paige no!
๐ฌ
speaking of which, how's your cat gaby
@steel heart you can't make a PR or you don't have permission to push?
LMAO
I should never say that ever again
i hate myself
for even considering that to be funny
you right
why do we think such negatively for such a beautiful cat
@distant sun im sorry. nice cat
when you use pdm but the kotlin error still exists because you forgot something
@prisma wave he called pdm extra bullshit
well you didnt spoonfeed me solutions
i would not stand for this
Wow
You created your problem for yourself
Rude
All you had to do was just do it the normal way
Where's the fun in that

The fun is that you dont create an environment where you dont know how literally anything works
who has the time for that
Everyone
i'd rather be confused about fucking everything than understand what im doing 
Literally everyone
I could of easily put implementation and the issue would be fixed but i didnt like having a 1.64mb jar file 
fuck ur jar size
bold of sxtanna to assume anyone here has a brain

just because we have 2 braincells and u have 3 ๐

๐
And its struggling to keep going

please elucidate
It's okay kaliber, You have 2/8th of a braincell 
@steel heart whats ur GH?
Same as discord
I would imagine because your plugin is literally written in Kotlin
This you? Mr @steel heart
well yes it is
Invited
Yes.
pushed katsu
Cheers, so that's it then right?
This is on Forge wtf
https://i.imgur.com/8P48HPW.png
Well, Forge is Forge for a reason
Actually I think that's in Minecraft not Forge
oof
@hot hull Conclure rewrote it, it's on the GH repo, not tested yet so lmk if something goes wrong
yoo anyone got an nice idea what plugin to code?
Code a server jar that utilizes more than 1 core

recode Minecraft in a plugin
๐ฎ
๐คจ
MinecraftServer already utilises more than 1 thread
who cares
Rude
recode this current simulation
Recode windows to be a linux distro
or just make a very nice ban plugin
Litebans
That's free
AdVaNcEdBaN
That doesnt have a dumb name
EpicBans**.sk**
๐คข
ProBansHD.kt ๐
XxX_EpicMinecraftProExtremeDeluxeEnlightedGucciSupremeBans_XxX
[MUST HAVE โ ]
Only reflection
Wait wtf is wrong with advanced ban
mi.setCommandExecutor("advancedban");
mi.setCommandExecutor("change-reason");
mi.setCommandExecutor("ban");
mi.setCommandExecutor("tempban");
mi.setCommandExecutor("ipban");
mi.setCommandExecutor("ban-ip");
mi.setCommandExecutor("banip");
mi.setCommandExecutor("tempipban");
mi.setCommandExecutor("tipban");
mi.setCommandExecutor("banip");
mi.setCommandExecutor("kick");
mi.setCommandExecutor("warn");
mi.setCommandExecutor("tempwarn");
mi.setCommandExecutor("mute");
mi.setCommandExecutor("tempmute");
mi.setCommandExecutor("unmute");
mi.setCommandExecutor("unwarn");
mi.setCommandExecutor("unban");
mi.setCommandExecutor("banlist");
mi.setCommandExecutor("history");
mi.setCommandExecutor("warns");
mi.setCommandExecutor("check");
mi.setCommandExecutor("systemprefs");
mi.setCommandExecutor("unpunish");
this maybe
The fact its written in java or this plethora of shit?
lol java is fine
Jesus
Tf is that
lol java is fine
@steel heart debatable ๐
dont talk to me u bobo
but that is disgusting wtf
Kaliber is a kotlin karen
k a r e n
java isnt rly
While conclure is a java jeff
Question: I am trying to create my first spigot plugin, should I go with 1.12.2, or 1.16.1?
Ok sorry that was kinda rude calling you Karen lmao
I say 1.12.2, most would say 1.16.1
Yeah, I'm leaning towards 1.12.2
Yeah Iโm sorry Jeff was kinda weird too
has the gui thing been fixed yet?
idk
the italic thing in 1.16
but 1.15.2 is most stable rn
yea
Also, are there any good tutorials in 1.12.2 about detecting when someone places a block, and summon an entity there?
I want to place a block when someone places a specific head
i mean depending on what ur doing it might just work on all versions anyways
BlockPlaceEvent
nice
You could even just do slot ->
But isn't that getting the same item each time from the config?
Or use it instead

Or at least to look rich
$ is for string interpolation?
As 'it'?
example?
Thats ugly though xd
void method(Consumer<String> t) {
}
{
method($ -> );
}``` does this work lol
Basically { guiScreen.addItemStackAt(it, getItem("border-item")) }
ive never seen it being used in that way conclure
i thought its only use was string interpolation
Conclure is a php boy
๐ณ
well idk if it's accepted as a single variable assignment but it can be used in a variable name
Gson or guava have a class that contains $ in it's name, idk why though
or like java String me$string = "test";
๐ค
Im waiting for you to say 'just kidding'
u gotta stop meme me
Or take you serious
yes pls
u bobo
Hey @steel heart, thanks for rewriting it, it works much better than the jank I had. Anyway, I've pushed a few more events, can you have a quick look? I'm fairly sure I'm doing it right but I want to make sure: https://github.com/katsumag/ItemActionsLib/tree/master/src/main/java/me/katsumag/itemactionslib/conclure
@topaz bay Brister mitten has introduced me to type inference 'var' in Java
pretty much kotlin
what
var keyword
what about mutability
there is no explicit val or var to define mutability like kotlin
its more like c# with just inference
val 
But you can still do
final var
Exactly, i.e, not the same meaning as using var in kotlin
spring security really trying to annoy me
but... Isn't var pretty much identical in both languages?
@errant geyser yeah katsu that should be it. One thing I forgot was to implement a way to remove an action as I expect that might be handy
I can do that if you want
In terms of inference, yes. But due to syntax var correlates to a mutable field/reference in kotlin. While Java 10's var makes no such assurance by itself. Which is why I think its more relatable to languages like C#'s var keyword. To further show similarities: variable definitions in kotlin require var/val whether or not the Type is specified which is not the case in Java or C#, it serves the sole purpose of not having to specify the type in the LHS when its clear with just the RHS.
Yeah I mean var in Java is only for local variables
But they still do the same thing
Their purpose is different in a sense
@steel heart It should just be removing the action from the map right? I can probably do that
More of - you still need that keyword even when type inference is not required
Rn itโs a list
Make it a map ig but then youโd need something like a string key or id for each item
Donโt use PersistentDataHolders
Itโs untrackable
Wait where's the list? ๐
The AbstractListener contains a List
Of the Actions or the Consumers
There is also an #addAction
@errant geyser
Though you should use a multimap for it then
@steel heart What should the value be for the Multimap?
Action<T>
Key should probably be the Item
Or perhaps an id
I can see what you changed and if something seems a bit lost I can make a pr
Fair enough. I'll just use a random UUID assigned to the item, but how would I like, get that?
Ignore that photo
I'm an idiot
Happy now Barry?
Multimap<UUID, Action<T>> actions = HashMultimap.create();
You need to give each item a uuid field now
Which is initialized at ItemActionManager#newItem
Then when adding actions you might have to change some stuff
Yeah
General case here would be when we call a method like Item#removeAction
It would remove all actions corresponding to the uuid for that type
Oh, I assumed it was like a key: list of values thing
So what exactly is it?
It can store more values against a single key inform of a collection
It handles the creation and management of the collection itself
So get will give you a collection of actions
And put will not override anything
But you should go with removeall iirc
So #removeAll(uuid)
Thats cool
As we want to clear all actions for that Item
And its from Guava right?
Yeah
noice
If anything is struggling lmk
I've just pushed it, see what you think. I'm fairly sure I didn't mess anything up.
Hmm almost
Though I have a method through the manager which makes me now which ActionType to modify
You can look how I implemented the addAction
Also
Make removeAction take an Item instead
And then in removeAction call #getUuid
Or make both
Probably best
Is there a way to clear only actions of one ActionType?
Yeah I see that
But the map stores a UUID and an Action<T>, so how would I tell which ones to remove by type?
type as in T?
As in ActionType<T>
T extends ListenableEvent
katsu
Through the manager
The manager has a map with each type as key and storing values of AbstractListener
Pretty sure you might have to cast
Well ik generics is messed up
Don't buuuly, but how do I do this? Also is this right? No errors but doesn't seem like it. ```java
public void clearActions(Item item) {actions.removeAll(item.getId());}
public void removeActions(ActionType<T> type, Item item) {actions.entries().removeIf(uuidActionEntry -> uuidActionEntry.getValue().getClass().isInstance(type));}```
Where are finals damn
Frosty u bobo
OoF
class Main{
public static void main(String[] args) {
Test<Integer> testOne = new Test<>(5);
testOne.doStuff();
}
}
class Test<T>{
private final T generic;
public Test(T gen) {
this.generic = gen;
}
public void doStuff(){
System.out.println(generic.getClass().getName());
}
}``` So, im tryna learn how generics work, this is where im at rn, I just dont get where this would be useful lol, I get that if I extend something for `T`, then I can only give it subclasses of that, but I dont get where that would be useful ๐ค
AbstractContext
Okay so katsu
In AbstractListener make a method same as the one removeActions
But it takes an item
And then it gets the uuid of the item in that function and removes it
Can be handy
Don't I already have that?
So, im tryna learn how generics work, this is where im at rn, I just dont get where this would be useful lol, I get that if I extend something for
T, then I can only give it subclasses of that, but I dont get where that would be useful
@obtuse gale
You already use generics a lot probably. Collections all use Generics to work with all object type.
You use it when you need that specific class to work with a specific set of Types
Yeah why not
@obtuse gale a great example is List - you only want to allow certain types to be added and removed
now make a new method
Is there anything I could try and make that uses this? Thats how I learn best lol
ofc after compilation its just an Object being used and being casted everywhere as implied
In ItemActionManager
Make your own LinkedList or something
This will be our removeAction
mhm
Make it package private
I dont even know what a normal linked list is 
@errant geyser and declare the generic type parameter T extends ListenableEvent
Yep
Linked List is a data structure where each Node in the list stores the current item and the next node*
Not home
@hot hull whered u go on holiday anyway
Yep, done
Then call the remove
Thats in the ItemActionManager tho, didn't you want it to be in the AbstractListener?
ok
So how would the one with just the UUID work then?
There is no context โ ๏ธ
Make a public remove function
well thatโs the original one
The item is the one where you call the original one and just get the uuid of the item
However in the Item class
Make a single remove function only taking an ActionType
Since we already know the uuid of that item
And that should be it
Are generics used in spigot plugins much or is it mainly outside just in general java?
Alright, done Conclure
It can be applied anywhere, just depends on what you are trying to do
I dont see any cases in which id use this lol
Like actually making my own class, not talking about lists and stuff
Still though, how would I do this? Since it doesn't take a type. Its in the ItemActionManager
You would use it when a specific class you create should work with diff types. Lists was the just the easiest example
Ive just never been in the situation where im like, damn I wish this class worked with different types
it's not necessarily for a class
in the case of kotlin you could use a reified type parameter to make a simple event listener
reified
eg kotlin listen<PlayerJoinEvent> { message = "Welcome" }
:what:
it's a keyword
I mean Aj you gotta love functional interfaces though
inline fun <reified T : PlayerEvent> listen(body: T.() -> Unit) { blah }
yeah
https://github.com/knightzmc/fluency/blob/master/src/main/java/me/bristermitten/fluency/FluentBuilder.java @obtuse gale this code is a mess but I use generics here
there's nothing spigot specific about it, they are often used in library design
It can be more flexible to use generics
type erasure
riight
@steel heart But I wanna be able to clear all actions for an Item, so surely I shouldn't pass that a type?
I mean maybe just for a specific type
I still have never wanted/needed to do that but I guess maybe one day I will lol
But you can make one that clears all actions as well
Would be through looping all AbstractListener
Oh, so like this? java void clearActions(Item item) { manager.forEach((actionType, abstractListener) -> abstractListener.clearActions(item)); }
Yeah
Something like that
But make one that only clears for specific ActionType
Will be handy I promise
we uh, already have that?
Make a shortcut one
I don't think we have one to remove a specific action but idk how we'd even do that
In the Item class
Though I wish x instanceof T would have worked
@steel heart
I mean you could ...
inline fun <reified T> isType(obj: Any): Boolean {
return obj is T;
}```
Already done Conclure
ok
(:
Pushed
@errant geyser you donโt need the ActionType parameter in AbstractListener
Yeah
You already know the type
Also clearActions in Item doesnโt need any params
Sleep
Oh true
Canโt you use test.replaceall(โtestโ, โ2โ)
Conclure how does it know the type tho?
The manager should handle that part
Ok but
public void removeActions(Item item) {actions.entries().removeIf(uuidActionEntry -> uuidActionEntry.getValue().getClass().isInstance(type));}``` I need the type here tho
Where is that
Abstract listene
You only need clearactions
Though you should have a method that takes a uuid instead of an item
In AbstractListener
When i reloaded the plugin it says "An internal error occurred while attempting to perform this command", done anyone know how to fix it?
whats the error
Send stacktrace
Ah yes we read minds here
which plugin
The plugin
What does the GoDead guy want to do?
THE plugin
ah i see now
I saw everyone going insane in the chat and I am curious
tried turning it on and off?
๐
@errant geyser I will make a pr if I see anything is booboo later
wrapper classes are used alot
easy as
MyUser user = myUserManager.get(player)
user.someCoolMethod()
@steel heart updated, and alright
(:
Nah, i purposely do that just not to let people confuse kotlin with smth else 
I do have jseval too, ya know
What's that keybind in IJ that copies the line your cursor is on to the one below it
Win + Shift + Down?
Crtl D copies line
Thats it, thanks Jolly
@prisma wave wanna play a small game? :)
maybe
For me MB that just pulls IJ out of full screen
Js or Kt
Lol
hm
brister
yeah?
Also yeah it's js ._.
but got bored
final MalformedURLException
@regal gale i'm 99% sure that would work with kotlin too though
why does that return 30.0 
Told ya it's too easy...
ยฏ_(ใ)_/ยฏ
I mean you can see the j in there
true lol
Breh
I will need to cross out w. next time, thanks for reminding
:)
Last one
Js or Kt
js
JS
It could be either
Get gud BM
Yeah it's kt
Fuck
Get gud Frosty
Get gud BM
this aged well
Certainly
God damnit me...
Kotlin doesn't have the ternary operator
Yeah..
Damn, sad
Thats the only thing from Java I kinda miss
But it was cool and I did use it sometimes
using if looks nicer
Its nice as it can be used almost anywhere
Yeah
Not really, when you have short returns, ternany is butiful
It would be useful but if they added it they should change the syntax
But I mean and if else thing doesnt take long to write
^
return if ๐
Its useful but not that useful
return try/catch is what all the cool kids use
Aye wish that was me
and me ๐ฆ
return require(someCondition) {
something
} catch (e: IllegalArgumentException) {
somethingElse
}```
ez readability
Idk if my kt eval can even run a try-catch lol
I don't see why not
for isn't an expression
Is foreach count?
can you use until in kotlin?
What are you expecting to happen?
Loop 5 times the word "Hi" in evaluation, isn't that already obvious 
Youre showing the returned value though...
forEach returns nothing
And you just have a string in it
lol
"Hi".repeat(5)
If youre catching console output, change it to forEach(::println)
that would print numbers
It's probably just the returned value
If youre using the script engine, it definitely is
Speaking of script engine
Spigot is so fucking trash
how so?
All their classloader bullshit completely breaks engine service resolution
script engines are resolved from the classpath
How am i suppose to loop the statement inside scope then ._.
kinda like how jdbc drivers are resolved
the short answer is that you can't @regal gale
Because the script engine only returns the last returned value
Welp
I had to directly access odin, because it would not resolve the engine from the classpath
You could return a List, and then have some custom functionality for that
But resolution works perfectly fine outside of spigot
do this @regal gale (0..5).map { "Hi" }.joinToString("\n")
Or like "Hi\n".repeat(5)
lol...
I am so amazed and furious of the amount of ways to iterate in kotlin...
$ git push -u origin master
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/org/repo.git'```
Pls halp ๐ฆ
Theres... literally 3?
fucking gitlab
Unless youre counting iterator itself, in which case 4
Doesn't foreach count?
just like Java
@distant sun why are you even using gitlab
cuz my client wants to
smh
I have tried this but it doesn't work for me https://stackoverflow.com/a/52092795/11496439
@prisma wave i believe theres a mistake in ur gradle readme ๐
artifactId should be -jdk8 i believe
idk if . works
@distant sun Tell the client to fuck off 
bullshit indeed
Get gud
))
gonna apply for staff just for reaction perms
and upload perms
fc doesnt wanna give the perms to tier 6 ๐ญ
To anybody*
Ye
Rip my vc perms :((
๐
Or you could make a fat PR
yay
and add loadAllDependencies to the readme
altho i wasnt able to get the Dependency thing to work for me
hm
addDependency method or whatever
what went wrong?
when i get back on pc ill show u what i put but idk
ok so im not stoopid ๐
you can if you want
alr sure
thank
Or #727778089697804288 cause some people are generous
@analog crater No ;(
๐ฆ
no one is generous ๐

otherwise someone wouldve made that core in #727778089697804288 by now
A (probally simple) edit vs a full core plugin with other modules
Noone is going to make that
The edit or the core
both
Both
guis, for IAL do I go with only supporting Paper servers (PlayerJumpEvent), or do I somehow have to make my own for spigot?
imagine not using paper
I wanna but I also want people to be able to use my lib for whatever
Don't tell me you're supporting 1.8
No
Its written on 1.15.2 but eh
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemStack.html#setDurability(short) this says durability is now handled by the ItemMeta, yet I can't see a getDamage or getDurability method in https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/ItemMeta.html
declaration: package: org.bukkit.inventory.meta, interface: ItemMeta
declaration: package: org.bukkit.inventory, class: ItemStack
You have to cast to Damageable afaik
Well thats retar d e d idiotic
Which do I cast?
Neither of them implement or extend it
i'm pretty sure it's the meta
the implementation probably implements Damagable
or not
based on if the item can actually be damaged
So, what do I do for the PlayerJumpEvent?
Do I just support paper and anyone who moans I can tell to fuck off or PR me a PlayerJumpEvent?
That seems fair
Alternatively make your own but with a bit of reflection to only use it if on spigot
Maybe fork paper spigot and see how they implemented the jump event?
I already saw how they did it
The best I can probably do in Spigot is listen for the statistic
And then call my own event
Kinda dumb they haven't added this yet tho
ยฏ_(ใ)_/ยฏ
gross
Oof
@prisma wave the fuck does this mean https://paste.helpch.at/ugiyeworam.bash
MF downloads and is put into the PluginLibraries folder, but still NoClassDefFoundError. kotlin stdlib doesnt dl โน๏ธ
weird, i restart server and now kotlin is downloaded, but still NCDFE with matts framework
ยฏ_(ใ)_/ยฏ
sm0l
34KB seems right to me but yea idk
Isn't it like 70kb or something like that?
cmds
I feel like that should be the right size then
can you check that the class is actually present in the jar?
if it is, then something's broke with the classloading
yea sure
send your onEnable btw
@onyx loom MF is 32kb
o da fuq
ah yeah
that's not gonna work
loadAllDependencies returns a CompletableFuture<Void>
because downloading and loading is async
o
you need to either block, or use thenRun to register stuff in a callback
which ever is easier
Which ever is more efficient 
blocking the main thread is pretty efficient
In kangarko's eyes, indeed
our lord and saviour
To be loved in kangarkoโs eyes?
A true honour
the man who teaches good coding
โImagine you have the power to code anything you desireโฆโ cues the steamy, suggestive music
"are you imagining? good, now give me all your money"
i kinda just fired in the dark here
and no idea if what i did was right, but it removed the error from MF but now i get a noclassdeffounderror in kotlin ๐
val dependencyManager = PluginDependencyManager(this)
dependencyManager.loadAllDependencies()
}
request.join()```
@prisma wave ive no idea if this is correct at all
why run?
ยฏ_(ใ)_/ยฏ
What is that latest #727778089857187861 kek
They get stranger every time
frosty u just know that its something gonna be harder than $50
and more like $1k kappa
Most likely yea
so bm, what do u recommend instead?
https://paste.helpch.at/isibobevub.cs thats the error now btw
just do it normally?
I think thatโs just someone whoโs lonely enough to pay $50 to someone just so they can interact with a real human being
@trim hare 
Sorcery
wdym without the run?
pls no booly
i cant remember what i was doing before but the join() wasnt working idk, got it to build now
oh shit it works
yay
no more 1.6mb jar 
nice
thanks bm โฅ๏ธ
np
my hunch was right
run probably generates some stuff behind the scenes that uses the Intrinsics class, and since kotlin wasn't loaded then it threw an error
Pdm is nice
ty
ok but now let me try get rid of the pluginlibrary and install the jar fresh
