#dev-general
1 messages · Page 356 of 1
example?
Sure one moment
Nice @smoky forge 🙂
They lurking 👀
They typin in #off-topic lol
if I could, I would have event handling be able to return a result from the listener
couldnt be me
class MyListener {
@Listener
fun onLogin(event: LoginEvent): Result {
return Result(FAILED, text { content("u suck") })
}
}
is that a json?
but that would just end up messy
why it be like text { content("potato") }?
ah okay I was gonna say, looks pretty funky
especially since kashike is an idiot and didn't mark the functions with @DslMarker because "there's no official documentation saying it should be used on functions"
u suck
facts
Wowowo you don't call Kashike that
I definitely remember you saying exactly that a bit ago
Like, deja vu style
The result pattern probably works fine bard
People can use named constructor if they think its too messy
not sure how I would make it work in registration though
Or provide a default result with your event as well
How do you mean?
also, multiple listeners listening to the same event would cause issues
Combine the results prioritywise
remember these are initially registered
Yes, but whats the issue with that?
actually I guess you're right
ah yeah i was gonna say that looks like a pain when you want it to just work normally lol
I think I prefer the mutable method though, it's much easier than messy reflection hackery on the backend
I might implement results later though
You wouldnt need any messy reflection tho?
okay but what exactly is reflection
Is that a serious question or sarcasm?
Oh, alright
Java provides a reflection api to change stuff you might not have access to at runtime
like?
Like if you wanted to change the value of a private field
Or construct an object with a private constructor
until Java 9 modules come around and just say https://tenor.com/view/denied-lou-lignon-cynthia-gif-12525860
Does it completely stop you from using reflection on classes from a diff module after 9?
Also, holy shit Go's compile speed is just hot
Okay so what use would reflection have in like, minecraft plugins?
People usually use it to access nms without having to have like 5-6 modules for diff releases
okay I'm gonna have to stop you right there
wtf is NMS anywyas
just like spigot api?
but per release?
net.minecraft.server package
They change aprt of the package on every release
That does not help
Its the notchian server
Simple example, with reflection you can change a player's skin or send packets to a client
Oh so you can change stuff about the vanilla actual server that spigot doesn't let you do?
Both of which spigot doesn't expose
Because md5 is gae
One of many reasons yes
md5 gae and Paper bae
xD
oh shit does Paper let you do that?
Dont think so
oh
Not sure about newer versions tho
You can change the GameProfile of a player so that's 50% of what I said lol
But what if someone runs it on a normal Spigot server?
ClassDefNotFound 🥲
MethodNotFoundException Galore
o no
But yeah things like ProtocolLib are backed by a massive reflection system
dude ProtocolLib is what holds our society together im not even gonna lie
but okay that's really cool. I didn't even think of why so many things needed ProtocolLib but like, the plugin I'm working on uses packet items and it's so easy to use compared to what it could be
I think ProtocolLib just adds its own handler to the Netty pipeline
Lmao
are you gonna have all the cool features that spigot doesn't have without requiring protocollib?
in your server*
you know the server's gonna be publicly available to depend on right?
if you want to send packets yourself, just depend on the server and do something like this: ```kotlin
val session = (player as KryptonPlayer).session
session.sendPacket()
ez
now that's what I like to hear
is the name Player already taken?
why be KryptonPlayer
Player is the name of the API interface
KryptonPlayer is the name of the internal one
so you cast the API interface to the internal player so you can access its session
if you're depending on the server and want to send custom packets that is
ah I see I see
But bro ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); I don't see what's wrong with this
:^)
🤮
and packets are obfuscated mostly
whereas, in Krypton, they are all intuitive to construct
e.g. PacketOutChat(text { content("Hello World!") }, ChatPosition.SYSTEM_MESSAGE, SERVER_UUID)
i mean I feel like that kinda makes sense. That's a really java way of accessing stuff
You could do the same thing with Krypton
That's something the forge and fabric community excel at, their open mappings nature (cough md5 cough) allows everyone in their community to contribute to them
yeah
((CraftPlayer) player)
(player as KryptonPlayer)
but Mojang packets often require some whacky reflection to access some of the values
Krypton's don't
this is really easy for example
since PacketOutChat internally takes an Adventure Component
yeah I feel like the real gains will be in packet construction and shit
yeah
oh btw, can someone here who knows Bukkit whacky listener orderings tell me where monitor goes?
Last
^
right, so it's highest then?
It's for monitoring the end state of the event
and low goes 2nd right?
just wondering, since I'm looking at LuckPerms rn lol
because there's no pre-login in Krypton, it's a bit annoying
JoinEvent is fired very early though
Why no pre-login?
it's fired just after login success is sent
no real need
why does bukkit do it
because Mojang's login sequences is a bit whack
and it takes a bit longer to transition to the play state
the first thing Krypton does after sending login success is set the new packet state to play
so just after I do that, that's when I fire join event
whereas Bukkit fires join event way later
login event in Bukkit is fired about where I fire join event
and pre-login event is fired exactly where I fire login event
Well why does Bukkit have the delay?
that being just after authentication has been done
What does it do in the intervening time?
¯_(ツ)_/¯
ain't it open source?
well you're building off of vanilla too, no?
looks like it fires pre-login just after authentication
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/server/players/PlayerList.patch#124 fires join just before the first player info packet is sent (after player position and look and before chunk data)
gonna see if I've fixed backwards priorities now
just basically made the do while go from byte's max val and count down to its min val
instead of going from its min val and counting up to its max val
maybe
not sure yet
I definitely intend on working with Geyser to add Bedrock compatibility, might also add Velocity support at least
and maybe BungeeCord and LilyPad
Would be nice if you had an interface for each protocol
wdym?
JavaProtocol, BedrockProtocol implements Protocol
you know Krypton won't natively support the Bedrock protocol right?
that'll be up to Geyser to packet translate
unless I do choose to support Bedrock
but definitely not yet
I mean, it'd certainly make you stand out
I could probably get it to work
would mean an entire rework of all the assumptions I make in how packets are formatted though
and Bedrock uses UDP
Just gives you a huge leg up
and a huge headache too xD
You have flexibility, something a giant based on other stuff, like Paper, lacks
I'll definitely think about it
actually, Bedrock using UDP might play in my favour, since it means I can just run two separate listeners
Is there an emote for big brain? Cause I'd use it here
🧠
MAN
they're separate channels
so you have a datagram channel for UDP/IP and then server socket channel for TCP/IP
yeah I'm gonna try Bedrock support for this at some point
will make it a separate module I think
I mean, it'll still mostly be Java at its heart, and probably mostly do conversions, but it'll probably function better than Geyser
since it's native
https://i.imgur.com/nU335cH.png there we go
no more broken priorities
oh btw, @obtuse gale, you know LuckPerms at least decently well, when does LuckPerms want to listen to the login event btw? since with Bukkit, it has a LOW and a MONITOR
I'm guessing it wants one to be second and one to be last right?
also, is it just me or do bytes in Kotlin suck ass
there's no implicit conversion between bytes, and every time you declare a byte you gotta use toByte()
Bro because nobody uses bytes
I'm impressed they're even still a data type these days, they're nearly useless
they're useful for priorities
hey
so I don't end up with loads of integers allocated on the stack for no reason
i use bytes in docdex
oh hey pig
bytes r good for low memory
In comparison to your 20 million longs, I don't think going from a byte to an int will affect much 🙂
oh yeah, thinking about DocDex, I still haven't even started on KDocs yet lol
shhhhhh
bikeshedding is the best strategy
that's being fixed soon™️
bikeshedding?
yes
ah ok that confirmatory yes magically fixed my lack of understanding of the word
thanks
Law of triviality is C. Northcote Parkinson's 1957 argument that people within an organization commonly or typically give disproportionate weight to trivial issues. Parkinson provides the example of a fictional committee whose job was to approve the plans for a nuclear power plant spending the majority of its time on discussions about relatively...
nice nice
when I can figure out how to solve all the block states for all the chunks totalling 7 million longs
well how does spigot/bukkit do it?
no fucking clue
maybe look for some inspiration
I'd have to dig through Mojang code again
actually that's a shout, maybe I should ask on IRC
How can you improve if you don't know what the one you hated did?
yes bardy
they’ll tell you to do exactly what I told you to do
tf
but
Law of triviality is C. Northcote Parkinson's 1957 argument that people within an organization commonly or typically give disproportionate weight to trivial issues. Parkinson provides the example of a fictional committee whose job was to approve the plans for a nuclear power plant spending the majority of its time on discussions about relatively...
explains it fine
its worrying about the materials used for the bike shed, when ur building a nuclear plant.
oh lol
youtube having a stroke https://i.imgur.com/hUZxCct.png
that's the youtube subtitles
like two people were talking and he goes BlitzZzZzZzZ - take the latest build from here Thefluffypvper — me too? BlitzZzZzZzZ —no. you have to answer my question ...
is it bad I'm seriously considering how to write a lua parser for DM
do we?
what do you prefer?
$yes = true;
function doesBmLikePhp() {
return $yes;
}
true is a string? 
we don't like booleans here
Php probably infers it as a boolean anyway lol
Lua seems fairly similar to Julia
they could have atleast done is_set
And Julia is nice
Yeah but can you embed it in a webpage like <?php ?>?
its called real escape string because
get this
they made mysql_esape_string
but it didn't work
oh hey, Niall, would you be up for rewriting KiteBoard at some point to make it multiplatform?
Probably not
I'll happily give you a hand
Is this where people do like core bukkit bungee in maven
oh camel
might as well rewrite from scratch its a mess
good
can I help? 🙂
🙂
maybe if some clever soul comes up with RUST bindings for multiplatform minecraft plugins
I volunteer
Bindings must be able to do it!
it can work alongside the jvm
would be nice
IdioMatic rust
Clojure native interface
trump statue
JRust
Idol matic rust
Just
add me to repo 🙂
yes
why do we still compromise on performance when using the JVM
JRust guarantees faster performance while still running on the JVM
GoLangMC ☹️
each plugin has its own goroutine
probably not
🙁
iwanio do u frequent twitch?
yes
oh i see i see
;)
I love googling an issue and seeing like @desert horizon or someone solved my problem lol
Like I just googled how to negate a perm in LP, and his answer saved the day ❤️
set false
got that
or do you mean using code? xD
ah
dude i don't even remember the names of the old perms plugins
GroupManager
LP has just been injected into my smooth brain
Pex
funnily enough, ZML is still working on PEX 2
some still use GM tho ...
😦
even tho LP has a converter and all that
also someone is still working on GM
again, why man
LP is a miracle of code and honestly I feel privileged to be able to use it and have it open source and free for all
oh
Which answer to be exact?
scuzzi what gradle?
url =
nein be gone, ugly
imagine reworking permissions to make it tristate for LuckPerms lol
😢
some guy just DM'd me on discord saying "good plugin, can you rate mine" and sent a link
lol
wtf?
I kinda want to rate it, just 1 star
I didn't mean for you to give stars there
After the description here, you would rate me as dm
I'm just gonna casually block this guy
custom
just ignore that
happens sometimes
Groovy DSL in IntelliJ is really buggy
why ain't kotlin the default?
kotlin bad
>:(
the WorldGuard docs kinda fugly ngl
yellow and white do not make for a pleasing experience
Gradle Java DSL when?
ew wtf
One day I'm gonna lose my shit
Can someone tell md to go fix this goddamn annotation yet
nullable
Yugi is typing...
Yugi is typing...
Frosty is contemplating...
Frosty is contemplating...
contemplating what?
life
😦
ah ncie
PulseBeat_02 is shitting...
the dev life ain't making the big bucks?
the suislide, ofc
gonna have to go back to burger king? lmao
day and night
better than flippin patties
lmao lets go back to the fast food restaraunts
Considering I'm still a student, it ain't actually all that bad
dude saaaame! if I ever get a commission or something, that's gonna be a big win lol
I mean I have commissions, made a fair bit last year, hoping to break that this year
what do you do?
wdym
frosty ive heard u got smth cooking too 👀
gabys cat*
lmao
like you just make random plugins? do you work for a specific network or something?
huh Kali?
Set<RepoRecord> repositories = RepoRecord.with(Repository.MAVEN_CENTRAL, Repository.JCENTER);
AbstractDependencyFactory factory = DependencyFactories.createFor(repositories);
Set<Dependency> dependencies = factory.createDependencies(new DependencyTag("what.the.actual.shit.is.this","WTF", "4.5.2"), new DependencyTag("what.the.actual.shit.is.this","IS", "10.5.2"), new DependencyTag("what.the.actual.shit.is.this","THIS", "2.5.8"));
build(() -> {
for (Dependency dependency: dependencies) {
DependencyPackagingFactoryFromHell hellboi = DependencyPackagingFactory.of(dependency);
hellboi.package();
}
});;;;;;
Yugi is dying....
Pretty much random plugins yea, been trying to start working for a network so I'd have a steady income flow but it's harsh
did you write that all by hand in the discord chat window
Was it worth it?
i dont believe in networks
Yes 🥲
i really dont
Ah okay, well remember me when you're famous and working for a network (and recommend me ;))
Definitely
bro what the fuck, seriously lol

So I've got a
private static final Set<Registerable> REGISTERABLES = new HashSet<>(Arrays.asList(
new CommandRegisterable(), new EmoteRegisterable()
));
How do I cleanly retrieve a specific one now
registerable
REGISTERABLES.stream().filter(r -> // Your condition for the "specific" one here).findFirst()
yesn't
wdym?
😉
Is that not what you wanted frost? @hot hull
sec
aight
public ? getRegisterable(final ? type)
? ofc needing to be replaced with the correct thing, but idk what, if that's doable, idk I'm just playing around at this point
If you get what I'm trynna say 
What is the definition of Registerable?
interface
Show
public interface Registerable {
void enable(final EmotesPlugin plugin);
default void disable(final EmotesPlugin plugin) {}
}
there isn't, but there could be if that's what's needed
I mean what do the different implementations change?
And why do you need the underlying type?
neatness that's why I need it https://paste.helpch.at/azufeyenal.java
That looks fine
yea now I need to retrieve a specific one, and I don't wanna cast everytime
cause ew casting
Not much you can do there in that case
Its better to not depend on the underlying type when you're working with interfaces
Make it fully substitutable
english yugi
Design your interfaces so that you wouldnt need access to the implementing class
not really an option since they do completely different things
I'll figure something out
Ok let me just confirm, what would use in the CommandRegisterable after casting to it?
I need the emotes one, but I think I can do it differently
Alright
lol i finally got ssh to work
turned out the account was a microsoft account
so i needed to login through microsoft credentials
ssh into minecraft?
wat
i couldn't figure out how to set WSL up
no a different pc
ah dude sshing from windows sucks donkey dick
all I want in life is my precious bash
and instead I get PuTTY and powershell :(
i dont use putty :))
i dont like cli
im just using ssh for things like java -jar server.jar
Git bash is not bad for ssh
bad boy
ugly af
even though its slow
Agree
windows terminal w/ WSL though? that bad boy's lookin cute af
gui 😍
just wait until you have to manage a server and transfer files via FileZilla 🤮
or change permissions
hoo boy
I love the new windows terminal but it isn't fully released yet
or sync every single config file you want to edit instead of using vim
It isn't? I hadn't noticed, I've been using it 100% fine for months!
wot
command prompt?
Thought it was still in beta
Moba is awesome
I like moba, the terminal area looks nice but the rest is kinda ugly
it could look like that
Yes, but that doesnt come with ui ssh browsers, a text editor (ok this text editor sucks but still xD)
it has tabs on the top
and it comes with vim
which is all you need if you're a real sysadmin
What comes with vim?
Every linux machine has vim on it, and it's better than that text editor by a lot
So all you need is a pretty simple terminal
Oh I thought you meant some other application
And you can ssh into anything, have multiple tabs, and text edit with vim
Again, all you need and having more of a feature set is different
Plus you can bring your .bashrc and other files to keep the experience the same across every m achine!
Technically all you need to create java applications is a text editor and javac. But you use build tools and an ide
Plus im not much of a linux user
Well yes but I don't really think the debate of windows terminal vs mobaxterm and the debate of text editor vs ide are the same
so 🤷
Mobaxterm is basically windows terminal with a little more gui and a little more ugly
That's about it
They're nearly the same, they're both just terminal emulators lol
I dont find it too ugly
The white is very striking, to say the least
Or I guess the lack of contrast if you have dark theme on
Compared to the transparency you get with windows terminal, it'll never be the same in my eyes lol
Transparency?
Oh you were talking about thishttps://www.microsoft.com/en-us/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab
Oh god no
But really, I dont find moba bad at all
I guess it's not terrible lol
Just not as good as it could be
I'm very proud of Microsoft though, recently they've been pretty good about making quality software
VS Code, Windows Terminal, WSL2
all amazing things
I dont particularly care if it doesnt look too good as long as it does its job
and even winget, which is a solid attempt at a package manager
Mine does its job and looks hot af in the process :)
debatable
When your argument is "Its all you need, and it looks good " 🙂
Which again Im tracing back to this dilemma
Again not the same
Why not?
Windows Terminal and MobaXTerm have the same features
They're both terminal emulators
Only difference is performance and looks
Does it also provide a gui based scp client?
Does it keep track of passwords and sync it across accounts?
It adds no functionality
Again, gui is looks
Mate
All the gui does is call command line statements lol
You're contradicting yourself now
?
Yes, but it does indeed make life easier
I just said mine looks good in my opinion
Not for me
I find guis annoying to use and bloated
Id rather explore a visual gui than sped time typing commands
I wouldn't
I know the commands, I am much faster at typing commands and reusing them in scripts than using a gui
In fact, I made a shell script just to copy my shaded jar from my plugin to my test server plugins directory
Typing many letters vs 5-6 clicks
So as soon as I compile, I up arrow twice and press enter, then up arrow twice and press enter
You dont end up doing the same thing that many times tho
I dunno about you boss, but I type ~150wpm, which is much faster than I can click in a gui
Oh I don't?
Every single time I change something in my plugin I recompile and do that exact sequence
In my* case I have to change directories a lot due to this thing having its module its a completely separate directory
That's why I'll always prefer GiKraken over any cli
you as in "generally" here
I wasnt not refering to you specifically
I am faster at changing directories with the command line than I am at clicking lol
Autocomplete ftw
Nah I'll give you that one, I use IntelliJ for all my git stuff
I only barely scrape the surface of command line git stuff

?
Every single time I change something in my plugin I recompile and do that exact sequence
This wouldnt come up for all cases tho
While yet, tabbing completing through a few directories for a cd would be easy, I find it easy especially when it comes to file transfer
i cna just drag and drop something in if I want to move something in and out
I guess, but you also have to navigate through the ui all the way to where your file is and where you want it to go
Which we already agreed is faster on a keybaord
It can sync to your cd commands
?
okay?
.
well that doesn't change anything
all it means is you get to drag and drop after cd'ing instead of pressing enter lmao
🤷 I dont see any reason for using "windows terminal" over this till now other than its transparent
pressing enter?
I mean I didn't say there was
I'm just saying that it looks better in my opinion
As I said many times they're both terminal emulators, they do the same thing
🤷
Turns out this was all just a ploy to get more xp >:)
😌
Can you unregister listeners? I can't remember
yes
Wanna spoon feed me ❤️
depends
figured it out
classic
Man I feel asleep lol
How sad
lol
But yeah, it lets other plugins do their hackery witchcraft first (e.g. floodgate, auth plugins etc) to load the data properly and then it's last so if they got kicked out it doesn't load the data
anyone here know how you can disable projects loading on startup in IntelliJ without access to the IDE? I invalidated my caches and now it seems to crash on startup every time
projects loading on startup in IntelliJ without access to the IDE
wdym?
As in you want to switch to a different project without opening IJ?
no
I invalidated my caches with 3 projects open and now it just sits on loading components forever
Maybe its just taking a while
I ain't waiting over 10 minutes again for it to get nowhere
How much did you wait till now?
no clue
More than 10 mins?
Dkim be like "wOaH 10 MiNuTeS??? sO fAsT"
Probably something in the .iml or .idea
Yea ig you could try deleting the .idea folder
nah I found the setting to disable it somehow
Oh that you mean
there we go
I have that disabled lmao
lol
oh also, would any of you have any clue why Material reverts my theme back to the crappy atom onedark every time?
still didn't fix my fucking dependency issue FFS
what is it with this
literally, no matter what I do, it won't give me access to kotlinx.serialization HOCON
depending on it manually? nope
explicitly adding maven central? nope
depending on kotlin stdlib? nope
adding serialization plugin? nope
could it be conflicting with something?
does Gradle tell you about conflicts?
what is line 20? @dense dew
btw use int
not Integer
won't fix it, but int is better
trying making a nullcheck for world
it's a primitive
Integer is just the wrapper
for things like Integer.valueOf
etc
Cloning a repo on github just downloads the repository right?
Execution failed for task ':krypton:compileKotlin'.
> Could not resolve all files for configuration ':krypton:compileClasspath'.
> Could not resolve org.jetbrains.kotlinx:kotlinx-serialization-hocon:1.1.0.
Required by:
project :krypton > org.kryptonmc:krypton-api:0.13.7
> No matching variant of org.jetbrains.kotlinx:kotlinx-serialization-hocon:1.1.0 was found. The consumer was configured to find an API of a library compatible with Java 8, preferably in the form of cl
ass files, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm' but:
- Variant 'apiElements' capability org.jetbrains.kotlinx:kotlinx-serialization-hocon:1.1.0 declares an API of a library, packaged as a jar, and its dependencies declared externally, as well as att
ribute 'org.jetbrains.kotlin.platform.type' with value 'jvm':
- Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 8
- Variant 'runtimeElements' capability org.jetbrains.kotlinx:kotlinx-serialization-hocon:1.1.0 declares a runtime of a library, packaged as a jar, and its dependencies declared externally, as well
as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm':
- Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 8
``` @old wyvern any ideas?
omfg
all I had to do was set the source compatibility
fml
HAHAHAH
If I have a List<Something> where Something(id, name, other) and I wanna do some searches based on id, should i instead make a map Map<id, Something> instead of iterate and check
or does it matter much at all
im expecting said list to have about 10-100 elements
which i dont think is alot to iterate
Does it have to be ordered?
nu
You could use a Set
moment of truth lol
im not asking if i should use a set or list
yes you should use a map for that
you won't notice any performance differences between the two with such a low size
but it's best practice to use a map
Ok good, ive been using maps anyways but some other dude tryna say using a list is better :/
idk why hes tryna justify o(1) vs o(n) lookup times
:/
yeah no
arraylist iteration is o(n), hashset iteration is o(1), hashmap lookup is o(1)
hashmap is the way to go
hashset iteration is also O(n) unless ur a magician
piggy
u said o(n)
that makes sensen't
its O(n)
its called big O notation
u nerd
Someone a while ago told me to use a Set in a similar situation, I don't don't why
little o is its own form
yeah
its used for tiny optimizations like in actual steps
little o(n) is equal to O(1)
mhm
that's totally why I made that mistake before
ok where tf did I get O(1) from for hashset iteration
when comparing small steps like 1 operation compared to 4 little o is useful
I swear I've read that before, but I can't find anything now
maybe if you stop after the first element
lol
best time complexity
1am brain powers
Yes
this is rather different from what I learned
i think different profesors have a different view of it
I think other people use it as a strict upper bound
O(f) is the set of functions that grow asymptotically faster (or equally fast) as f
Ω(f) is the set of functions that grow asymptotically slower (or equally slow) as f
we are talking about small o tho
lol
Θ(f) is the set of functions that grow exactly as fast as f
Yes, as you'll notice, the definition of "little o" they give in that pdf is what I know as big o
wait
the pdf got cut off probably? lol
it only talks about big o
lmao
the title says Big O and Little o Notation
one is <= and another is <
thats all i know about them, one of them has a stricter upper bound than another
From my understanding their definition is O is same growth and o is less growth
which is a bit weird
Also my prof would kill us for this notation lol f(n) = O(1)
lol
dude my prof didn't even teach us about o(n)
we just started looking at problems and identifying the big oh
all at 7 am because that was when that class was, for some godforsaken reason
https://paste.helpch.at/uvaraqoquf.php can anyone tell me why literally none of those libs are shaded?
they're just like, in the sun man
i dislike the amount of symbols contained in that screenshot
I'm gonna stick with big oh and vague notions of algorithm speed
lol
Well if you have Big O for "bounded above", why not have something for "bounded below"?
And theta is just the intersection of the two
makes perfect sense
Ok, to put it another way: big o is worst, big theta is average, big omega is best case
"type1": [{
"modelData": 12345678,
"name": "This is the models name",
"author": "SenseiJu"
},
{
"modelData": 123456789,
"name": "This is the models name",
"author": "SenseiJu"
}
]
{
"models": [{
"modelData": 1,
"name": "This is the models name",
"author": "SenseiJu",
"modelType": "type1"
},
{
"modelData": 2,
"name": "This is the models name",
"author": "SenseiJu",
"modelType": "type1"
},
{
"modelData": 3,
"name": "This is the models name",
"author": "SenseiJu",
"modelType": "type2"
}
]
}
which would be better to use
ah I see it's a way to think about it okay
Um
Im not really sure what I'm looking at here
just whether to include modeltype in the modeldata field?
ye
or
as a key
i think it might be better as a field
easier to work with when deserializing
i mean it would be a hell of a lot easier to read with it being its own field
i think ill do that
and LuckPerms has just taught me that I can't just try and load every JAR in the plugins folder with walk
wdym
It's too slow, he might need to run
Maybe sprint
or if its still slow, he might need to sprint
it has a folder filled with JAR libs
and so Krypton walks through them, finds all these JAR libs, tries to load them, and fails
I need a shallow walk
dependencies?
yeah, dependencies
a new race, the LP marathon
LuckPerms basically uses its own PDM
whats wrong with your jar loader thing tho
cause i implemented one as well
for my lib
Whose in for a pdm remake?
I'll reserve the whiteboard in the library ;)
I would love that, I'm down to contribute
I have no idea what that means
Lit
Any chance you can simplify what you meant?
ya know how... there are public whiteboards... in the library... that you can reserve?
i would love that, im down to contribute except i wouldnt have a clue what would be going on
Not really, no idk xD
disgraceful
I've rarely had to use a library
Me neither xD
lets just say pdm is BUG FREE
xD
and it TOTALLY works
We'll get bm to join the new pdm
He shall be forced to remake this time
well yeah me neither, just at my uni its a good place to go to work with friends :)
ah
Working on it
Ours is pretty strict
Gotta annoy you sorry ❤️
nah pdm will download dependencies at runtime instead of having to shade @cinder flare
Using the virtual library is usually easier
Please do, actually need that
i love the dark
😩
File size
adventure itself is literally 800 kb
file size vs network size
5MB limit for premium plugins on spigot
taking minutes to download on first startup sounds less than ideal
hmmm okay I can see that one
wait its 5 now?
i thought it was 2
or smthing
when ur usign kotlin in plugins u gotta watch that file size 😦
Was always 5
why is there even a limit lmao
Applications can also share libraries on the rare occation that they use the same version of the dependencies
spigot trash
spigot hosts it
hmm I see
prolly cause wanna save storage
well at that point, we should just write a package manager for mc servers
I mean finally the download time is pretty much same
instead of downloading the jars yourself, you just type a command and it gets it from a repository
It could just be useful for like downloading different implementations of something as well I guess
that would actually kinda slap
Bm has that as well afaik
thats pretty easy to do
because spigot is a bitch and blocks wget for some reason, so you have to click manually
what's wrong with java 16
they block the jar loading hack
Atleast he has a channel for that in his discord
into the classloader
at current rates, it'll be like 15 years before anyone uses java 16 lmao
well why would they do that if its such a vital part of making stuff work
PDM could really be nice when with like sql drivers I guess, you could depend on and download the specific one to be used
to enforce encapsulation
is encapsulation really worth that much though?
question mark
im just saying guys, anyone ever used linux?
package managers kinda slap
we should get one going for plugins that can autoresolve dependencies
how nice would that be eh?
too hard
i tried it before
trust me
i tried to install vlc packages
they require sudo
then you have to have either two options
- use hacks and fake sudo root
or
- compile the binaries for every single version linux distro
then download those
or 3) use AppImage, which supports multiple linux distros into this one app, but it has its own binaries
and you have to somehow make it compatible
what the fuck are you talking about boss
thats why i made a huge ass json file just for vlc packages in linux distributions for each distribution, version
@obtuse gale would know
sudo pacman -S vlc
you don't need sudo to wget a file
im saying we make our own package manager
the only reason you need sudo at all is to put stuff in /bin or /usr/bin
helpchatman
wdym how is that not a good idea
spigot already exists
just instead of downloading your own jar, you type a command and it also gets dependencies for you
and can update shit universally
Well thats going to fuck up a ton of existing plugins
like what about relocation
and that shit
are plugins not self-contained jars?
whenever I download my plugins they all go in the /plugins folder and never leave
im just saying its a bad idea cause a lot of plugins that use stuff like pdm and custom dependency resolvers involving downloading it may mess up or its just bad design
to have multiple of those in the classpath
its inconsistent
i will say that
which isnt necessarily a bad thing, but idk
so moral of the story, plugins are poorly coded yes
that is one too
that's also how it is with windows apps
yet microsoft is still trying to push winget lol
i hope it becomes a big thing
Windows Package Manager
that sounds nasty with cmd prompt tho
still in beta, but very cool nonetheless
ngl
how come
powershell ain't too terrible
if the project is well designed that is not an issue
all you do is type winget vlc
terminal still superior
bash? I agree
referring to the plugin or package manager?
but you can't really winget stuff from bash lol
until microsoft scraps powershell and slaps in bash. that'd be a day to remember
