#dev-general
1 messages ยท Page 457 of 1
that doesn't work in java bm smh
LOVE IT
cute
Anyone wanna type this stuff out for me? ๐
what stuff
wtuff
you're doing something wrong
repetition = bad
DRY
WET
time to break DRY ๐
Wet ass code
Can you suggest a way to do it? I'm honestly curious
BM
I wanna do something every 4 ints.
oui
#RoadTo1MillXP :o
:O
What
?
Elaborate
You know the pmines?
Every 4 /rankup's I want them to get new block but I wanna specify what blocks they get at that level
ok so what's the issue
I can't work out the most optimised way to do it. The only way I can think of doing it will likely break DRY.
what do you have currently
Have a configurable thing for this and just write a dynamic executor for it?
I mean how would you do it dynamically?
public static LevelRange getRangeForLevel(final int level) {
LevelRange[] results = {ONE,TWO,THREE};
return results[level/4];
}
pretty sure that's all you need

May or may not have got permission to add bStats metrics to Krypton
actually wait
i dont think you need the +1
simple as just results[level/4]
so if your level is 3
you return results[3/4] = results[0] = ONE
if your level is 4 you return results[4/4] = results[1] = TWO
I think I understand what you mean. I'm not dumb in saying this is complex, right?
@old wyvern What is the exclusions on the relocation rule?
well it's not terribly complex, just gotta give it a bit of thought
https://github.com/knightzmc/DevDenBot/blob/master/Dockerfile can someone make this fast and then PR please
Thanks
free kiss to anyone that can stop it taking 2-3 minutes to build
Kinky
just dont break it bm
why do you need it to build fast?
lol
because its annoying having to wait 3 minutes for a 1 line change to update
Packages that should be excluded from relocation
Any subpackages of the earlier pattern
-Dsuper.duper.fast.cache.that.does.things=true ez
bm i wish i could help you but i'm dumb sorry
Inclusions is if you dont want to match patterns and only relocate a single package
you are all USELESS
Whats wrong?
Uh?
Build it normally?
if you can, mix the order up so the thing you're changing is as close to the end as possible
Probably because no gradle cache
Yea probably
?download-ram
Hmm that might be tricky to implement because of shadow
wat
Shadow has that too
did bm call us useless? call in Karen.
I think
Could work, but that kinda defeats the point of docker lol
Ooh it does yeah!
when you build it anew, the steps that don't need to be changed are saved and not re-done, aren't they?
so everything before the first change is not redone
ew
Awesome
๐
Reposilite seems to have a minor issue but that should be fine, we can fix that later
But it's a new docker image so nothing is saved
Ill make an issue tonight
I think there's a way of caching gradle stuff but idk how
ty for helping btw guys!!
yeah thanks for the help!!!!!!!!!!!!!
idk, whenever i re-build my image from the makefile without changing anything it's instant
That's not with docker right
i use docker build ...
Use this @prisma wave
https://github.com/GoogleContainerTools/jib
o
are you deleting the old docker image before you build the new one
anyone done vector art before
if you are, that might be why
Cube ๐ฅฒ
by hand tho
Possibly, idk, it's automated
That looks good ty yugi, will look when I get back
Vector art by hand?
wait a second.... with numbers in the 4 times table or whatever it is it always in 0, 2, 4 or 6 right?
Lit
i have to design art using mathematical curves by hand
what
Ahh
4, 8, 12, 16, 20
no fancy illustrator or inkscape
Uh
just graphics calculator
I see, you could probably use desmos for help
i am using desmos
๐
Ah
do you have experience with desmos?
why not just use my formula i gave earlier
I have used it a bit
so for instance
what the LevelRange one?
level = 23
rank(?) = (level/4) + 1 = 6
this?
a very slightly modified version of that yes
just integer divide by 4, add one
then you have your ONE/TWO/THREE in integer form
then have an array
where index 1 is stone
index 2 is cobble
etc etc
or was that what you were asking originally?
Is it easier if i explain what i'm trying to make in the end?
probably
like end goal
hit me with it
so, you know the pmines plugin i got right
give me a 10 word summary
You start with Stone, every 4 /rankup you get new block
okay
that was 10 exactly by accident haha
I mean, I have a system what allows for multiple blocks to be put in a mine but i can sort that out because it acts in same way as single blocks
Those would've been how I would've worked out what blocks they'd have in a way. If they're at TWO they'd get the different blocks
I mean, I just wanna change what blocks they have every 4 rankups
okay
now when they change, do they keep all previous blocks as well
or is it only the new one
actually idk if that's in the scope of what you're asking right now
It'll mainly fill it with the set list of blocks if that makes sense
lemme get some imgs to show example
every player can have a "block level" , which is what the ONE/TWO/THREE were before
it'll just be an integer and it starts at 0
when you fill your mine, you'll use a random number between the range of 0 and block_level, and use the result of that as the index for your big list of all blocks
whenever a player does /rankup, you can update the block level to be num_rankups/4
So, each image from here is the progress change every 4 /rankup's if that makes any sense? https://i.imgur.com/unnOjcp.jpeg -> https://i.imgur.com/bRQwL8s.jpg -> https://i.imgur.com/GhoudvB.jpeg
yeah that's what i assumed was happening
I can handle the blocks changing but it's just the part of working out what stage they were at you know?
yep so again for the 'stage' all you need to do is divide their current level by 4
integer divison always rounds down
so a player level 2 = stage 0, player level 8 = stage 2, etc.
so
public static LevelRange getRangeForLevel(final int level) {
LevelRange[] results = {ONE, TWO, THREE};
return results[level / 4];
}
right
yep
so for your code, i don't think you need the LevelRange enum at all anymore
just work with the int produced by level/4
i just included it so it'd be similar to your original code
So it's not needed to have that class anymore?
unless you have a reason to, i don't think it's needed
what are you using it for now / were planning on using it for?
Mainly so I can work out what stage they're at
Then I just make a bunch of lists saying what blocks go at what stage?
sure
that'll work well if you plan on having later stages not contain certain blocks from earlier ones
yeah
for example if you have a stage with diamond and emerald blocks, maybe you don't want coal ore to show up
that's what I was after tbh
then yeah
Is this configurable?
It'll likely be a set thing in the code.
That's dumb
How so?
It's for personal use only.
Doesn't change the fact
Wasnt it for privatemines?
I'm going through privatemines's API.
@ocean quartz Haven't asked in a while, where Triumph Chat
Haven't done in a while either, had to pause it for the gui update and slimjar
I love writing gradle plugins ๐
๐ฅฒ
How's slimjar going?
How are the finals going :kek:
man, when you want to work on something but it requires changes from a PR you have open to be merged lol
anyone else ever had that before?
The plugin portion should be done today ;p
Then it's just joining everything together
Finals are eh. Coming soon. Had an exam the other day, waiting to hear what I got on it.
Nice work.
That is, if I can find out wtf is wrong in here lmao
imagine not also asking how Krypton's doing xD
oof
Figured you weren't working on it atm since you were busy fine-tuning your Waterfall PR.
nah I'm still working on it lol
added BungeeCord support yesterday because I got bored and couldn't work on block breaking because I'm waiting for the placing PR to get reviewed so I can merge it
managed to do that in like 83 additions and 17 deletions somehow
Nice.
Got to learn how to do some Azure deployment stuff yesterday. It's pretty cool how easy they make it.
yeah Azure is great, just expensive
do you have a link?
Wrong channel. Stick to #general-plugins
I guess Java isn't allowed 
Made a wrapper for it in Kotlin and it works
Oh for the gradle plugin?
Yeah
Was giving me a dumb error when passing a Java class to gradle, changed to a Kotlin one and it works
Odd
why has pasting yaml got to be so shit
im actually about to hurt someone
the indentation
wat
Yaml is a bitch, that's all I have to say
yaml is alright
Just lint it 4head.
no it's not
with should be the same indentation as uses
etc
oh yeah
bm
its actually vile
ij probably doesnt have this problem
Any mediocre text editor will continue the current indentation
even if i remove all the indentation it still messes it up
That isnt a text editor i think
maybe it's githubs fault
just githubs actions ui
still horseshit
@old wyvern :pog:
"relocations": [
{
"originalPackagePattern": "original.package",
"relocatedPackagePattern": "relocated.package",
"exclusions": [
"test.exclusion"
],
"inclusions": [
"test.inclusion"
]
}
]
ayyyy
lit
we have pretty much everything ready I think
resolver is almost done as well locally
Interesting. What's the use for inclusions and exclusions? Just what gets relocated and what doesn't?
Yes if specificity is required
Like you dont want to relocate the entire pattern
alrighty ๐
And we're allowed to specify our own mirrors too, right?
Yup
Yeah I am adding that right now
Awesome!
Ayy this part is basically done, now let me add the option for the mirror
Wahoo.
when the random mention is not enough https://i.imgur.com/z82AlqD.png https://i.imgur.com/n6c4q5U.png ๐ข
And that is when you go tell the person to go cliff jumping
cliff jumping sounds pretty fun ngl
I think I'm going to be the one jumping
I'm gonna be the one going to the cliff
can i join the two drums and the cymbal
yep that sounds like me :D
Wow wow, don't be rude to my boy Turing
Tbh he pretty much got hell in the last few years of his life ๐ข
mutability ๐
unpopular opinion
https://bstats.org/plugin/server-implementation/Krypton/11197 that took a bit of time to do lol
looks about right lol
for the past few weeks I was always able to use my small vps from OVH as a test server and now it can barely start the server ๐ข
why? :/
I assume you're using the VPS for something else too? Cause I think there's some host that has a dev package plan for like $5 / month that's pretty decent.
if only i could automate this part of the coding, lol.
yeah. not going to need it anymore since I'll just probably move it on my dedi but its just strange it used to handle it just fine until yesterday
yaayyyy my domain got approved for ossrh
thats the plan
everything
no more smelly repo.lucyy.me
by any chance does anyone know where each server's settings in pterodactyl are saved? And I don't mean server files but the startup flags, build configuration etc.
I don't think so? You specify the snapshot repo and a release repo
lemme help
Maven makes it really easy to publish, I actually never tinkered with gradle on that area
It's a PITA the first time but once everything is set up it's pretty smooth
there's quite a few requirements to meet
oh shit i forgot about them
- everything must be signed
- you must include both sources and javadocs
- you must include the name, description, URL, packaging, license, developer and SCM information for the project
How I normally merge PRs
https://github.com/BomBardyGamer/komponent/blob/master/build.gradle#L53 this is an example of my first configuration
I wish I could get away with that
i use maven ๐ฅฒ
๐ฅฒ
https://github.com/lucyy-mc/LucyCommonLib/tree/gradle actually thats a lie
Rythm be boning me rn
name = 'Whatever' becomes <name>Whatever</name> for example
then the blocks are just nested XML keys
e.g. the licenses block in my example becomes: ```xml
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
</license>
</licenses>
alright lets see if i can figure out gradle :D
these go at top-level btw, same level as <groupId>
I can help with that
converted enough people by now lol
lmao yeah
i got halfway
i do some funky stuff with the build that took me a while to get going
lmao There's a few times it does this for some random songs in your playlist
also, was reading up on a Gradle article earlier thinking about Gradle that just proves that Gradle is not only subjectively superior, but also objectively superior, to Maven
but only sometimes
gradle do be speedy
Need to check all those out, only issue I had was with Spirits cause it's forbidden in some countries for some reason
proven to be around 7-85x faster than Maven, depending on the project
like it feels dangerously quick
lol
part of that is that it caches what it did last time so it doesn't have to do that again
because Gradle be like:
no 16 support is kinda sad
you what?
gradle 7.0
yeah I was gonna say, there's no way Gradle would've let that slide for this long
upgrade Gradle with ./gradlew wrapper --gradle-version=7.0
i think so anyway
(or gradlew.bat, or even just gradlew, if you're on Windows)
kek
yes
like Arch Linux?
oh yes
what else could it be lmao
B)
no theming?!!!
nope, just plain old i3 lol
my eyes hurt
lol
half the fun of using i3 is making it pretty
bardy pc > lucy pc
I've never really bothered, my only requirement for DE/WM is that it works pretty much
https://i.imgur.com/PvUlJ1u.png this is one of my favourite features that i3 has
Spotify | packages to update | main drive free | expansion free | wifi status | RAM usage | CPU usage | CPU temperature | date and time
that's my layout
I'll give you a +1 there
yeah blame py3status for that one
I think that bug's been fixed now, not 100% sure though
ur pcs temps are so high they cannot be read properly
made a PR for it once, never got merged because it broke Intel CPUs (the maintainer uses an Intel CPU)
ur pc gonna be explode
root@vesta:~# sftp -i key root@a
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "key": bad permissions
root@a: Permission denied (publickey).```
I love linux
that's it telling you that you're a moron and you should be protecting your keys from write access outside of your user
nothing wrong with using root on a server if you secure it properly
and you are the only user
aight, how do I secure the keys
create ur own encryption algorithm
@Vision ๐คก
fr though
Set the permission for the pem file to be for only root
chmod 400 key?
Speak of the devil ๐ฅฒ #off-topic message
eeeek
Should probably had asked someone to remove that
why matt? theres absolutely NOTHING wrong with it
True
This is why Java needs type aliasing ๐ฉ
public class MyCoolTypeAlias extends MyComplexType<A, OtherComplexType<B>>
so does haskell
outdated language
And Kotlin
literally what I said right after lol
Just in case he didn't see xD
@half harness
yes i see
nighty
u pinged me twice ;-;
ok
@half harness Sorry
@heady birch
Rust
oh ffs why is my default JRE 8
luckily, archlinux-java makes it really easy to switch between the Java version that can be found in PATH
im trying to add a custom stylesheet to my javadocs, how do i do it?
i've got this far
tasks {
...
withType<Javadoc> {
}
}```
Is there a setylesheet file option?
options is giving me a MinimalJavadocOptions but thats not got the properties i need
somehow i need to get a StandardJavadocDocletOptions but i dont have a clue what im doing
yeah cast it to that
I can guarantee it's safe :^)
ay that worked
you're meant to create a custom task @boreal needle
oh
how do it do that
lemme show you my task for this
I mean the default task works fine lol
when it actually works, sure
when does it not
is that not for kotlin
yeah but it works for Java too
Hey devs out there I have a question
it turns documentation into a tree of nodes
?help
ยป Give the helpers some details
ยป Ask suitable questions
ยป Be polite
ยป Wait
๐ฅฒ
lets see if i can figure this one out
go for it
we never mentioned any plugin lol
lol
How do you get the greyed out areas on scoreboards let me show an example
(they at the start of each line)
&7 for the grey and &b for the bold
e.g. &7&b| &rRank
(&r makes sure the formatting doesn't also apply to the word "Rank")
does anybody have a jar for lambdaattack?
Could not find artifact com.github.games647:lambdaattack-version-1-16:pom:2.4.0 in central (https://repo1.maven.org/maven2)
I was never a fan of building it
This is why I don't do recursion, it's always stack overflow ๐ฅฒ
sooo
lol that ain't on central
yup
is not on central cuz it is a module
I need it for 1.16
https://github.com/Kotlin/binary-compatibility-validator okay this is actually pretty cool ngl
withType<Javadoc> {
val opts = (options as StandardJavadocDocletOptions)
opts.stylesheetFile = File("${project.rootDir}/src/main/javadoc/resources/javadoc.css")
opts.addBooleanOption("-allow-script-in-comments", true)
opts.footer = "<script src=\"{@docRoot}/resources/prism.js\" type=\"text/javascript\"></script>"
doLast {
copy {
from("${project.rootDir}/src/main/javadoc/resources")
into("${buildDir}/docs/javadoc/resources")
include("prism.js", "prism.css")
}
}
}```
is this how im supposed to do it
looks about right
no need to bracket the as cast there
can just be val opts = options as StandardJavadocDocletOptions
actually you don't even need that
which is always a bonus
just cast
just remove the val
just type options as StandardJavadocDocletOptions and then use options instead of opts
Kotlin will handle the smart cast for you there
sadly not
am i a friend? :D
ยฏ_(ใ)_/ยฏ
krypton ETA?
what exactly do you want?
ETA
I mean like when will the offical release be
ya bet
I mean, help would be much appreciated
i would contribute if i knew how to kotlin
tbh I'd love to but considering my kt code is probably crap (I know kt, I don't know good kt) and I don't have much time to spend on other things.. yeah sad
fair
me too
yo pog
we break up on the 27th May
y11?
you bet
same here
oh nice
we get like at least 4 days of nothing lol
there's no assessments in the last week
and I don't think any of our teachers are gonna make us do anything
also, https://github.com/KryptonMC/Krypton/pull/22 someone please explain how tf this cannot be merged
I just merged it locally and it was fine
wtf GitHub
how the hell do gpg keys work
first of all, let me get my grammar police stuff out of the way and say that GPG is the name of the tool you can use to manage the keys (stands for GNU Privacy Guard), the name of the standard is OpenPGP
second, it's just public and private keys
up to you
I would recommend you use different keys though
for both security and ease of use
good
Devs basically how would you make your leaderboard slimmer? Because its very thick and it dosent need to be
wdym?
Basically lemme quickly ss it
also if this is a plugin question then #general-plugins or #general-plugins-2
?imgur
You won't be able to upload images here directly to avoid spam, so please use https://imgur.com/ to upload images/screenshots.
You can also use a screenshot service like gyazo or jinx and post those links here.
Ik ik
thi(c)^2
i broke ossrh
br br brrrrrr
is gradle supposed to be generating hashes of the asc files
like thats a lot of files for 3 artifacts and a pom
https://i.imgur.com/AiEfG5y.png is it just me or is kinda funny how md_5 shows up as just "5" in IntelliJ's Git Blame lol
no clue
hey, what was that series
Umbrella Academy
looks fine?
To make it smaller
pray
probably want #off-topic for that
hahahahahahahahahahahaahah imagine going to secondary school yikes ๐ฅถ ๐คฃ
i dont get how some servers are able to get the rank prefixes on leaderboards
like it boggles mind
i want to do it too lol
but idk how
hmm?

hey @old wyvern, remember ages ago when we were designing the ticking stuff for Krypton? remember you said something about a way to deal with the Thread.sleep wake up overhead? do you by any chance remember what exactly you said?
working on replacing the tick scheduler with a while loop on the main because it's easier to get a thread reference to
and easier to watchdog
Yes, measure actual sleep time and reduce its difference with the expected sleep time from the next sleep time
anyone know what IntelliJ wants me to use instead?
Sysout.printf?
ew
That's what I was thinking but does that append a newline?
I believe so
turns out it does append a newline
System.out.format and System.out.printf do the exact same thing
format? Never heard of that one there before
Lmao
didnt we literally have this conversation
yesterday
lmao
I'm not advertising it smh
Just expressing my excitement
Sorry but I'm excited that a 3 month project is finally ready for an alpha release
It's a big deal for me since I've never taken a project like this on before
@forest pecan
It's an ultimate conglomeration of everything I've learned about java
And bukkit
Well the majority anyway
Sorry I have pride in my work
That's the dumbest thing I have ever seen a trucker do
weren't you here yesterday?
Does anyone have a working gradle with spigot I can. see? I got back from vacation and now it doesnโt work.
We donโt like pride here
What
Build.gradle
Thank you
Pride โ
@sweet cipher Help me
No
Ok
Are you here to help me?
Did you just talk to yourself?
When?
Welp no help for me lol
I mean you can just google "spigotmc gradle" lol
Please use a paste service to share configs, errors, code and long logs.
โข HelpChat Paste
this dev help channel right?
You want #general-plugins
Oops
I guess it fixed itself
I spent an hour trying to figure it out yesterday, came back today, and it worked again lol
@pine dirge or #development
Would you rather be called Fefo or Emily @obtuse gale
Femily or Emifo
Yikes lol
They want help with a message plugin
Fefily
Emily please
Alright
@sweet cipher not with development but configuration?
where can I ask my shitty quation pro?
just help me with this
Dm me
oh ok
Thank you for the help
Yw
chest, hopper, etc
containers, spawners I believe as well
omg you don't know what a tile entity is?
now called a block entity btw
@Volatile var mainThread: Thread? = null; internal set if (WatchdogProcess.mainThread == null) WatchdogProcess.mainThread = Thread.currentThread() is it just me or is this some mad hackery
anyone know if there's an easier way to retrieve the single thread for a single thread scheduled executor?
actually I got an idea lol
lateinit var mainThread: Thread private set
private val tickScheduler = Executors.newSingleThreadScheduledExecutor { Thread(it, "Tick Scheduler").apply { mainThread = this } }
or I could just become a sane human and use a while loop over an SES
should I add main thread execution to Krypton btw?
Yeah like bukkits BukkitScheduler#runTask or smtng?
more like server.scheduler.sync().run() maybe but yeah
CoroutineContext
remember this has to be Java compatible BM
well, I mean, launching coroutines is technically kinda Java compatible I guess
maybe the scheduler could just have the addition of runSync and scheduleSync functions
there won't be any unnecessarily long function names like scheduleSyncDelayedTask or runTaskTimerAsynchronously though
When you're pea brain so you deprecate scheduleAsyncTask because people keep thinking it says A sync
๐คก
why does it have to be java compatible
this is why some people defect to snake case
because I want at least some people to use this lol
scheme compatible?
Yes lol
Go read the deprecation message
then people can learn kotlin
yes.
the way i see it - its a server written in kotlin, so its api should be as idiomatic for kotlin as possible
hmm thats a fair point
the way i see it - its a server written in kotlin, so its api should be a skript implementation
๐
yes
man just use lua
this is literally what lua is for
thinking about Skript, I did come up with the idea of making a custom domain-specific scripting language
it's the best language for the job
KTS
dw though, I want it to be compiled and use code generation rather than use runtime interpretation
yeah that might work actually
kill thyself?
yes

KTS = Kotlin Script
because yes, Kotlin has a JetBrains-made compiler plugin for scripting support
lua's purpose, is to be used as an embedded language
it should do
then again, should doesn't mean does
my brain still doesn't get LaTeX tho
I'm too used to WYSIWYG
what's that?
"What You See Is What You Get"
lol
LaTeX is used to render mathematical equations and such, not to interpret them, so I doubt desmos is using it
same thing with tex
what's the format called then? With the {} and backslashes and shit
I would assume they use their own
damn
do you know of a latex convertor?
a place where I can input my plain old math expression
and it converts it into the format
And apparently you need to double up the backslashes
what's the expression
1/6(-221+1/(2sqrt(3/(-62408+(1934006903193088-8294400sqrt(54368280633789597))^(1/3)+8(3777357232799+16200sqrt(54368280633789597))^(1/3))))-1/2sqrt(-124816/3-1/3(1934006903193088-8294400sqrt(54368280633789597))^(1/3)-8/3(3777357232799+16200sqrt(54368280633789597))^(1/3)+23270400sqrt(3/(-62408+(1934006903193088-8294400sqrt(54368280633789597))^(1/3)+8(3777357232799+16200sqrt(54368280633789597))^(1/3)))))```
wolfram alpha outputted it
christ
ok, there's not much to do here
for fractions, use \frac{1}{6}
for powers, use ^{...}
sqrt is \sqrt{...}
but double backslash right?
For desmos it said so on some stackexchange post
ok
seems to work
thanks, finally got it working
hey anyone here up for reviewing the contribution guide I've came up with for Krypton?
I wanna get some feedback
Looks fine, do you have a code of conduct also?
what would I need that for?
Just from GitHub: A code of conduct defines standards for how to engage in a community. It signals an inclusive environment that respects all contributions. It also outlines procedures for addressing problems between members of your project's community. For more information on why a code of conduct defines standards and expectations for how to engage in a community
Iโve seen it in some other open sources so was just curious
might not be a bad idea I suppose
if someone knows kotlin chances are they also know enough about git
true I guess
You sure?
wdym?
oh nvm im just bad at reading
slimjar
๐
hmmmmm
if it wasn't for #announcements i probably wouldn't have known for a lot longer
lol

@prisma wave excuse me sir
may I ask that you review a PR for me?
maybe I should get a bot that can check stuff lol
since relying on human beings is annoying
The server has stopped responding! This is (probably) not a Krypton issue.
ofc
lol
ahh
I mean, it probably isn't a Krypton issue tbh
Did you switch to thread sleep ?
I wasn't multiplying the timeout time properly (the one in the config is in seconds, and we need to use it in milliseconds)
ah
I still got a few improvements to make to plugin loading at some point
namely, a good reloading system (if possible, may need pig's help here lol), and support for dependencies
reload?
yes
but
like built-in support for reloading your plugin
what if u just make a onReload method
in the plugin
isn't that how sponge does it
maybe I should just throw it at the wall instead
what do you think I'm going to do
So NSYNC were right all along!
heeeeeeeeeeeeeelp
quick, yeet your pc
im implementing a system for something else that disposes of the plugin instance and creates a new one
that works quite well
use osgi
that took a while ๐ฉ
someone help me ๐ข I can't get nms to work anymore with paper
?help
ยป Give the helpers some details
ยป Ask suitable questions
ยป Be polite
ยป Wait
Smh
lol
Support nowadays
and it said it installed in my local maven repo
oh wait
I only use maven central
not local
fuck
Lol I had the same issue before I genuinely didn't notice I went ask in the paper discord xD so embarrassed when they told me
They already scheduled the terminals to be in 10 days

wgnoegn3ignpwgj3pg
you know what day the 4th May is don't you lol
yeah I was pretty sure I did it before so I didn't even have to install bcz it was installed I just completely forgot I have to use mavenLocal ... xD
May the odds be in your favor in your upcoming suffering
When the fuck do they expect us to study
hey do you guys think that creating a security manager to stop plugins stopping the JVM is a good idea or not?
oh boy help me ๐ข
Stopping the jvm?
exitProcess or System.exit
dkim u are a genius
System.exit
I ask for latest log he gives me oldest ... ๐ข
also, it won't be called onReload, it'll be called reload lol
I say its in a .txt file he gives me a .gz file
I say put it in a paste he dms me the txt file
/krypton plugin PluginName reload lol
u gotta understand
these ppl
osgi it bitch
osgi?
yes
.
/krypton plugin reload <name> ???
or that
Makes a whole lot more sense
Or ofc, you can manually do it by isolating plugins and providing interfaces for interaction from another classloader
not if you consider there may also be other sub commands there
he tried putting the zipped file in a paste bin ...
Zipped file inn a pastabin
e.g. /krypton plugin PluginName shutdown, /krypton plugin PluginName initialize
oh and I'm glad... he's getting banned lmao
so built-in plugman? 
he's leaking shit
lol
kinda but actually good
@old wyvern what exactly is OSGi and how is it applicable here?
its a dynamic module system that lets you install (enable) and uninstall (disable) modules at runtime
In this case you would structure your plugins as an osgi module
also this looks kinda big
Might be, havent really used it yet, only heard of it from piggy
I dont think it would be unreasonably large
I mean, surely the way you'd do unloading is to try your hardest to force the JVM to remove the classes before reloading them
The only way to do that is to make sure no references to your class loader is held
so essentially
.
there's no way OSGi can possibly do it another way
Read up on it bard
also, how tf does Bukkit handle this then?
maybe there's a good reason for that
And why is that?
because of the hackery it requires
removing all references to a class and hoping that the GC yeets it is a hack and a half
The OSGi Alliance, formerly known as the Open Services Gateway initiative, is an open standards organization founded in March 1999 that originally specified and continues to maintain the OSGi standard.
The OSGi specification describes a modular system and a service platform for the Java programming language that implements a complete and dynamic...
You dont remove all references
You ensure no leaking of references outside of the same classloader in the first place
ah
im just now starting off learning java and im so confused lmao
what the heck is a public class main
or a public static void
it sounds like you should start from the beginning and not by reading other's code
?learn-java
Oracle Docs:
You should start with this, breeze through this(skipping stuff that doesn't seem relevant like bitwise operators), then hit this.
They're the first three from this larger thing which you should definitely go through overall. But those three should be enough for slightly better understanding of what is happening here without feeling like a huge time sink.
That one is a small part of this larger site wherein "Essential Java Classes" and "Collections" also have good useful stuff
Online Courses:
If you want some free online courses, you can find them on Coursera. Yes they are paid but you can chose to take them for free with the only disadvantage being the fact that you don't get a certificate at the end. Some of the best courses can be found Here.
You can also take a look at Udemy but from what I've seen most of those courses are paid.
Other services:
Some other cool services that will help you learn java are SoloLearn, W3Schools and JetBrains Academy.
As you can see there are plenty of good ways to learn as long as you're willing to invest the time. Have fun learning!
the JVM (the virtual machine running your code) needs somewhere to call to start execution of your code
this is called the entry point
nah i am starting from the beggining, im using a linkedinlearning course, its just confusing lmao
surely that course should explain to you how it works
its an absolute begginers course
they just said "you can ignore this is here for now, as its out of the scope of this course"
yo @old wyvern what was that website you gave me the haskell course on named again? xD
how tf is that out of the scope of the course lol
should probably add it here