#dev-general
1 messages · Page 107 of 1
I can't follow a thing in that guide
help i am actual 3head 
it's just codes above codes
command prompt
I cant
that's for a package manager
Elevated permissions are required to run DISM.
I dunt have that
@remote goblet you are a 9head for not telling me the problem
@normal talon you're supposed to make it lol
I need to restart
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Deployment Image Servicing and Management tool
Version: 10.0.18362.900
Image Version: 10.0.18362.900
Enabling feature(s)
[==========================100.0%==========================]
The operation completed successfully.
basically in LavaPlayer whenever i make it start a song and then use the ```java
public void setLooping(boolean looping) {
this.looping = looping;
}
just go into your C:\ folder, add the folder "Gradle" and upload this in it
then add bin/ to your PATH
just go into your C:\ folder, add the folder "Gradle" and upload this in it
so I need to add another file
named gradel-6.5
i like how BomBardyGamer goes around in JDA's discord server telling people to switch to kotlin lmao
lmao
The hero we need, but not the one we deserve
i still need to learn kotlin 
I'm paying 3KMKoins for every person he converts
Can't say why, but you'll see
hmmmmmm
@distant sun I was pinged
I don't like the sound of that
What is this suppose to mean lmao
you are right @ocean quartz
Process terminated.
The process was terminated
wow you guys fr told him how to install gradle, instead of linking to my guide https://wiki.helpch.at/piggys-barn
process terminated
What am I doing wrong lmao
means you should use gradle
True
no I want maven
Stop bullying this 4head
@distant sun What's up? xD
Also Kotlin is 1.3MB not 5
Ok boys, start the circlejerk
gradle good maven bad
https://paste.helpch.at/nukorasuwa.xml root pom.xml
Piggy let's make a HelpChat yt channel and post coding/plugin guides
yes
ok
I will do skript tutorials
Make sure to chuck the slides in the about section
only if we use the cool intro i made awhile ago
that would be an absolute genius idea
Give everyone above tier 3 the password
include t3 for me?
Or all the developer role
:(
Just the actual trusted people
(Trusted as in trusted, not Trusted role)
Cause yknow, Lemmo is a rando
Trusted as in Trusted not Trusted lol
KM am I trusted to you yet or do I have to send you the earrape first?
@distant sun Do it
Trusted Trusted not Trusted Trusted
@errant geyser I will trust you until you send it
well when i go to the piggy guide
I will but I need help Matt xd
where
KM why have you put me in this position 😦
guys only admins would have access to the yt channel lol
:(
Scam
I mean, you can just send the clip to someone and they will upload it
you’d submit videos to us and we’d upload them
ye but all admins suck
Unfair and unbalanced
wat
:)
i’m the coolest dude u know don’t lie
glare is nice 
why don't i trust that
Hey Piggy re upload my first spigot video thing. It uses Maven so its dogshit but still. It recommends your guide 🙂
First video should be a code review of ori's skyblock class
kek
LMAO
Gaby's timer thing*
@quiet depot but you guys have bad internet speed xd
both
@distant sun I can help yeah
lol
Gotta start with the bad things, and then improve them amirite BM?
probably
"Today we're going to look at this class, Island.java, From the start we can already see this needs to be deleted instantly"
I mean it’s pretty much just cube with the bad upload
i have average upload, clips and glares uploads are probably above average
mkay
Now to take that out of context
Sx has god tier internet speed
o
though, let's not wait after clip
whats ur upload piggy?
Glare's speed is insane iirc
I get like 30 up, how average is that
better than mine
average
pig u on the nbn?
nbn sucks
I don’t think so
I want 1gb but I need to buy an internet card and change some wires 😦
anyone else use termius ssh client?
I use BitVise
lol cube its great
Cube thats sick
fr
omg i remember using bitvise
I got a solid 12 mbps upload
on pc I don’t use a fancy client, just raw cli ssh
I once had 20Mbps 😢
for other devices tho, termius is awesome

it has a dark theme frosty
wait what
it’s on phone, pc, etc, student license, look into it
I mean termius has a dark theme
sorry

Bro my speeds have gone to shit holy
On my phone, but works
frosty
Matt ISP name, now
It was at 60 last week
All you flexing with ur >1 up

Been absolute trash this one
It's called Meo
lmao
Oh its Portuguese Matt?
What's sad is, I'm paying over 100$ monthly for this shit..
Yeah

ur paying?
Jesus, I pay 44€ for mine
Well you know what I mean
stop paying for internet and buy a pc
🙂
then pay for internet again
kaliber trash
Support role irrelevant
100$ lmao
thats why it trash
I don't actually help people anymore
bad internet squad 
Support role irrelevant
@hot hull just like you
o
I followed everything
Support role irrelevant
Strike him down into the depths of hell
Gaby, why so rude
It's not installing stuff
remove his role @quiet depot ty
nah
nah?
maybe it’s time for a promotion
Yeetus Frostius
o

Of me 👀
niall wants
Yeetus Frostius
@ocean quartz Rood
support role
hey glare
I think
Damn, Matt beat me in download.
funnycube deserves to be promoted to wizard
Glare I demand more Waffle Pics™️
100+ dl gang
fake, speed test dont have whole numbers
I really gotta get a better provider
They do on mobile.
But lost on upload 😢
i use optus
o i got optus
All u AUS cretins xd
Lmao
Eh.. discord act up again and force me to watch at a msg where someone told jda community to switch to kotlin
I mean.. sure 👀
just wait until starlink, itll be better than any aus connection
But is it quite annoying tho
Kaliber I'm so getting Starlink
whens it coming?
BT shite
yeah “use kotlin” is the new “learn java”
Kali, I mean that'd be nice if it was actually good and affordable
:))
use kotlin
Piggy we need a circlejerk FAQ that has all the classics
Kotlin is good and affordable @hot hull
Well.. anyone remembered the old days from FredBoat bot?
:)
bro im trying but like no time u kno
I mean if it's got 1tb/s sure
Piggy is too busy focusing on rpf
lol
can someone do it for me or something please ?
ngl, would be easier to just make your own spigot piggy
that’s basically what i’m doing
Hey Piggy if you gave me staff I'd make the FAQ for you 👀
Sad that people move to Rhythm bot than now ;p
once rpf is done that’s like 2 thirds of a spigot remake
Idk it's 2017 or 2018
I still haven't finished the command thingy conversion :kek:
and i still haven’t finished rpf, welcome to the team
Indeed
Guys I need lib ideas
ooooh
doityourself
Once rpf is done we can do papi 3
So Soon™️
2029, coming near you!
all these subjects are shit lol
Papi 3 2023
idk what to do
I am pretty lazy yeah 
PAPI V3 whennnn
im already doing a distance education
Snipping professors from 600m 😏
They stand in a circle practicing social distancing
distancing 
Ok Frosty you sold me, ItemActionsLib coming soon to a build.gradle near you
"programming"
I don't get the term "distancing" on that
😮
expand on that
Like, a butt load
Just add everything related to actions triggered when using an item
Useful things or just 1m lines of comments?
both
So left and right click actions
whos ready for my pc to die 
And shift, jump etc
Yes.
I'm coming back Frosty
@remote goblet i hope ur pc blows up hahahahahahaahhhaahaahahahahahahahhahahahaahahahahahahahahaahahahahahah
@onyx loom ur drunk
LMAO
@obtuse gale When you get this on 1.15, you can complain TPS from last 1m, 5m, 15m: 20.0, 20.0, 20.0
i am not even going to risk loading up mc with this
We need a drunk Kaliber compilation
Fuck ethics
and moral values
i am not running minecraft with 400mb remaining
Money is money
I am not putting my pc thorugh that
You have no excuse
Ori vRAM, its fine
@hot hull I literally have never seen my 1.15 server go lower than 20 lol
Matt, only 1 user tho
hold my lag machines
1.15 isn't that bad in performance though
So I did everything in the guide of Piggy and the other ones.
Download everything
created a new path for gradle.
and when I run the gradle -v
command in command prompt it says there is no command to run.
Ori, you're overthinking it, if it blows up, atleast it's nice outside rn
@normal talon make sure it's in a new command prompt and you've added the bin/ directory to the path

C:\gradle\gradle-6.5\bin
Can't really join a chat right now lol
Mid store stream
bro brister
oh
ez
Get some coke for me BM
get me some weetabix
get me a brain
Wait KM is British? I never knew.... KM, this changes everything
yes
just jk
Is that a CO-OP or tesco KM?
whats with your store names
no good nicknames
like we got woolies over here
those are both 2 syllables
like what the fuck
Y'all got your vegimite
classic woollies
classic
or the classic servo
Coop @errant geyser
woolies servo or regular?
can someone atleast help me ?
@hot hull no Coke for you
me irl
ya know the ones you can use ur rewards card @
dw, already got a glass 😏
Gotta save that 2c
Imagine your currency using cents
cents are nice
imagine having 1 cent coins
For a second i thought this is #off-topic ._.
Euro the supreme currency
@prisma wave I knew it. They always have the alcohol in the windows.
Y'all and your pounds can ew off
Please either stick to the topic or move over to #off-topic
shut the heck up barry
Happy now Gaby 👀
Spigot too?
spigot 1.16 no idea
Ok
prob a day or two after
I have a lot of work to do when it does launch lmao
I actually used what is in hangman js to convert to Java without asking anything (unlike aj asking a lot of stuffs)
pls don't kill me for using Java
I have a lot of Football related shit on Wednesday, Thursday I probably got work
Java bad kotlin good
No
java bad kotlin good
java bad kotlin bad
Frosty bad
Happy now Gaby 👀
@regal gale hmm?
frigga best language
The letters are fixed from Words (8) to Word (8 letters)
it's still Words
Oh
Should've removed the -s ;p
Also one question
Can .java and .kt be associated together on a jar file?
Yes
they both compile to Java bytecode
All jvm languages can
Raw strings and string interpolation
Imagine using StringBuilder
Oh you do use it for a small thing but not for the big one xD
Matt
btw, String.join(wrongs, ", ");
you do know that every time you concat string you create new objects right
strinbuilder doesn't do that
I think he was ironic
he's not that noob (I hope)
sorry matt
i mean StringJoiner is also a thing, but yeah, String.join is probs better in that situation
doesn't String.join use StringJoiner?
¯_(ツ)_/¯
Also, thien, you can use appendDescription()
after all description it's already a StringBuilder iirc
https://downgit.github.io/#/home?url= Can someone test if this works? WHen I try downloading a package from github it says some error for me
Create GitHub Directory Download Link
higher
xD
Weaklings
I never did anything here before
note: scamming is allowed
nono
yeye
helpchat takes a 99% fee
ew
lol
of both the cash and the xp
@prisma wave You ever used Datatables?
never even heard of them lol
Do you know how to fix it?
I mean I wouldn't have switched to packages if I had :p
Do you know how to fix it or still nehh
nehh
Wdym "starts up as module one"?
The name shown there is just the name from your plugin.yml
What exactly do you want to change?
idk, I just added modules and selected Paper plugin from the Mc dev intellij plugin
XD
You only need 1 module from the mc dev if you are doing it that way
Others can be normal maven projects
aight
You can just clean up ur invidual poms and remove the plugin.yml from the resources of the extra ones
r/cursedimages
If thats the only plugin.yml you have, then ofc its starting module two, thats the main and name you specify
the screenshot where is says name: Module-Two is the de decompiled version
the second one is in my ide
oooooooooo
Cause maven modules ew
U added gradle to your PATH?
@topaz bay You know what to do with my modules?
?
U added gradle to your PATH?
yes
https://media.discordapp.net/attachments/695431668944732270/723190246438862888/unknown.png
Where is this one from?
Show us the pom of your Module-Two
Please use a paste service to share configs, errors, code and long logs.
• HelpChat Paste
What exactly is the issue?
He had plugin.yml in all modules earlier
Got him to delete them
but he still gets one of those in his final jar apparently
yea they arent I think
thats an odd way to phrase that
wdym?
I'm just testing atm, but what I want is making a skyblock jar with multiple modules for stuff like Vouchers, Crates etc
So it a module will be a seperate plugin eventually
gradle*
XD
Yugi, okay idk what i did, I restarted my intellij and did mvn clean a couple times, and it worked I thnk
mvn clean more like mvn bad
lmao
shoulda used gradle
i'm not gonna use gradle
gradle*
yea that xd
i'm not gonna use any kind of build tool
good for you 4head
finally i have gradle setup
we don't have platform agnostic building, and it's all your fault
you should learn how coding works
Are you on drugs?
bruh
are u talking to me or ?
should've played mercy?
I love Mercy
Shawn mendes ?
lmao what
Yes Cozy
i'm gonna stop talking
Yes what
you were just too DUMB to get it
that hurt my feelings
dw i meant sx
You can, or you can't?
Imagine not putting a full stop (period) at the end of your sentences.
Yugi sauce required
Everyone knows what a full stop it
you never know
Damn imperial english people
imperial?!?!
🙄
we only use the imperial system sometimes
Idk what you mean katsu @errant geyser
Disguisting
ofc
@old wyvern video link
:)
¯_(ツ)_/¯
o
Invalid Gradle JDK configuration found. Open Gradle Settings
Do what it says
why tf do you have 2 jdk 14s
So wich one xd
where do I need to find gradle-wrapper.prop
Could not open cp_init remapped class cache for eukpbaxn2ckfne57i9hrgj9e (C:\Users\youfi\.gradle\caches\6.1.1\scripts-remapped\wrapper_init_7fgi58xomwxu0vbkobq8niq6n\eukpbaxn2ckfne57i9hrgj9e\cp_init3607aee355f62839c5e6f549478ccc87).
> Could not open cp_init generic class cache for initialization script
'C:\Users\youfi\AppData\Local\Temp\wrapper_init.gradle'
(C:\Users\youfi\.gradle\caches\6.1.1\scripts\eukpbaxn2ckfne57i9hrgj9e\cp_init\cp_init3607aee355f62839c5e6f549478ccc87).
> Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
as I said that problem is because you're using jdk 14 with an older gradle version
you need to update gradle
IJ always does that
oh
so can I create a wrapper somewhere ?
gradlew wrapper --gradle-version 6.5
in terminal
or just like... update the wrapper properties file
command prompt ?
Yeah, just update the file
gradlew wrapper --gradle-version 6.5
doesn't work in command promopt
power shell
- You have to be in the project folder
where the gradlew file is
if youre outside of IJ, you have to target it with ./gradlew
I don't speak that language 😬
I don't understand the half of what you just said
./ = this directory, gradlew is the Gradle wrapper batch file
./gradlew executes it
@old wyvern Just do you know, I got it all working now :)))
Scam
can someone help me with it ?
new Item(new ItemStack(Material.COAL)).addAction(ActionType.LEFT_CLICK, event -> {
});``` @hot hull simple enough for you?
Yes
The event is my ItemActionUseEvent, with these, so you can cancel it if you want to
👌
Matt thx for making MF-GUI open source, kinda copied how you handle those events ngl
:kek:
Yw xD
Matt, you should go merge the thingy
"a lot of work" ah yes those 3 lines I changed
Yes lol i need to test it on 1.8, 1.12 and 1.15
Frosty why are there like 400 commits for 3 lines?
I tested it on 1.8
All slowly getting worse and worse
katsu, cause I was losing my mind
loosing
It's called neatness bish
I mean its clean but why
read the implementation
U making some Roulette/obscure minigames plugin?
I know people 😎
smhmh
Damn so close to getting it working properly first attempt ;C
;C
UnsupportedOperationException
@ocean quartz how do you handle the actual events? Like how do I make the action provided fire, if the ActionType is ActionType.LEFT_CLICK java @EventHandler public void onLeftClick(PlayerInteractEvent e) { if (e.getAction() == Action.LEFT_CLICK_AIR && e.getAction() == Action.LEFT_CLICK_BLOCK)?
It doesnt btw
yay thanks
So I've got this
final List<GameRunnable> removal = new ArrayList<>();
(defined outside my runnable)
removal.add(runnable);
(when a condition is met inside it (inside a loop of runnables))
removal.forEach(it -> removeRunnable(it));
(outside my loop, still inside the runnable)
And I keep getting UnsupportedOperationException when I try to remove it
Also that if will never be true lol
You can't click air and block at the same time
No ik
@hot hull You cant remove from somethign while iterating over it like that
Yugi had the same thing when I tried that

wdym?
oh you cant
tried what?
Add it to something else and remove after iteration is complete
return new BukkitRunnable() {
final List<GameRunnable> removal = new ArrayList<>();
int time = 0;
@Override
public void run() {
for (GameRunnable runnable : runnables) {
if (time == 0) {
runnable.start();
}
if (time == runnable.getDuration()) {
runnable.finish();
removal.add(runnable);
continue;
}
if (time != 0 && time % runnable.getInterval() == 0) {
runnable.interval();
}
}
removal.forEach(it -> removeRunnable(it));
time++;
}
}.runTaskTimer(plugin, 20L, 20L);
I mean yea
Or iterate with an iterator
or interate with a normal for loop?(you will have to change index back 1 aftre removal)
That's what I'm doing, am I not?
Use a ListIterator
KM, still getting the same exception
Hey bois is this the correct code to detect if a player jumps? Guessing I'll have to detect it from a PlayerMoveEvent, taken from https://github.com/PaperMC/Paper/blob/master/Spigot-Server-Patches/0173-Add-PlayerJumpEvent.patch
+ // Paper start - Add player jump event
+ Player player = this.getPlayer();
+ Location from = new Location(player.getWorld(), lastPosX, lastPosY, lastPosZ, lastYaw, lastPitch); // Get the Players previous Event location.
+ Location to = player.getLocation().clone(); // Start off the To location as the Players current location.
+
+ // If the packet contains movement information then we update the To location with the correct XYZ.
+ if (packetplayinflying.hasPos) {
+ to.setX(packetplayinflying.x);
+ to.setY(packetplayinflying.y);
+ to.setZ(packetplayinflying.z);
+ }
+
+ // If the packet contains look information then we update the To location with the correct Yaw & Pitch.
+ if (packetplayinflying.hasLook) {
+ to.setYaw(packetplayinflying.yaw);
+ to.setPitch(packetplayinflying.pitch);
+ }```
while (removal.hasNext()) {
final GameRunnable runnable = removal.next();
removeRunnable(runnable);
}
---------
for (int i = 0; i < removal.size(); i++) {
removeRunnable(removal.get(i));
}
private void removeRunnable(final GameRunnable runnable) {
this.runnables.remove(runnable);
}
The above two things is what I tried
And also a for loop
Yea
Send the full stack trace
A member of staff has requested I move your message to a paste,
Most likely beacause it contains a config/error/code snippet.
currently like a so
private final List<GameRunnable> runnables = Arrays.asList(new Roulette());
ah smh
begone devil
looks a lot cleaner imo
Not a thing tho 
It's not a story the Java developers would teach you
:))
[17:22:41 INFO]: Test Task has started!
[17:22:41 INFO]: Task has started!
[17:22:43 INFO]: Test Task interval!
[17:22:45 INFO]: Test Task interval!
[17:22:47 INFO]: Test Task interval!
[17:22:49 INFO]: Test Task interval!
[17:22:51 INFO]: Test Task interval!
[17:22:51 INFO]: Task interval!
[17:22:53 INFO]: Test Task interval!
[17:22:55 INFO]: Test Task interval!
[17:22:56 INFO]: Test Task has finished!
[17:23:01 INFO]: Task interval!
[17:23:11 INFO]: Task has finished!
Kotlin was a Dark Lord of the JVM Languages, so powerful and so wise he could use the JVM to pause the execution of functions... He had such knowledge of the JVM he could make a mutable list with just 1 function call...
nice though
KM u got any idea about https://discordapp.com/channels/164280494874165248/695431668944732270/723223249894244472 ?
Yeah move event is probably the way to go
Check if their y coordinate is higher I guess
I just need a way to detect if a player jumps + make my own event for it ¯_(ツ)_/¯
idc how its done
and I botched it
[17:27:58 INFO]: Task Runnable Has Started!
[17:28:08 INFO]: Task interval!
[17:28:18 INFO]: Task interval!
[17:28:28 INFO]: Task has started!
[17:28:28 INFO]: Task has finished!
I mean I could just use Paper's PlayerJumpEvent but that would mean I'd only support Paper servers, and if Frosty and whoever want to use it, they'd have to do the same
So I wanna make my own
I mean just copy theirs?
It's not a story the Java developers would teach youWait what?
The code I pasted here is theirs Frosty
I was referencing the tragedy of darth plageuis the wise @old wyvern
I have no idea what that means so i assume its a game or movie reference
So KM what do you think would be the best way to do this?
A story that the Jedi would not tell you.
@errant geyser probably listening to move event and either checking velocity or Y
alternatively just use paper
it has something like a 54% market share
and everyone should be using paper
tuinity?
idk much about that
Its performing even better than paper on 1.15.2 atleast
it is a paper fork so I guess it still counts as paper
yeah
I need to somehow implement start delays to this, but every way I can think of would involve multiple time trackers
wait
@prisma wave how can I check if they have Y velocity? smth like ```java
if (e.getTo().subtract(e.getFrom()).getDirection().getY() > 0) {
}``` ?
Player#getDirection#getY I imagine will do it
getVelocity()*
^
oh wait nvm wrong context xD he meant that vector, yes km is right
great lol
@errant geyser you should probably do some trial and error testing for the value to compare - things can cause Y velocity that aren't jumping
Im pretty sure the way I used to create a jump event was literally just to.y > from.y
yeah that was my initial thought
but I was also thinking that slime blocks or something could make false positives
How so?
if you fall onto one you bounce
They would in fact be jumping on a slime block
bounce
Yeah... and?
Not a jump..
could be considered a false positive
It's a bounce
^
Its still technically jumping
not really
ladder, levitation
teleport
You're a 4head Sx
so velocity is probably the better way to go
How...
🤦
[17:45:07 INFO]: Task Runnable Has Started! (0)
[17:45:07 INFO]: Task Timer Passed Another 30 Sec! (0)
[17:45:37 INFO]: Task Timer Passed Another 30 Sec! (-870)
[17:46:07 INFO]: Task Timer Passed Another 30 Sec! (-1740)```
I would consider that a jump
That's exactly how this is supposed to work yes
but it's not?
You could measure the magnitude of the velocity change to constrain what kind of jump
if you fall onto a slime block, you gain y velocity without having pressed the jump button at all
therefore not a jump
so velocity is probably the better way to go
yes that's what I suggested
listen to PlayerStatisticIncrementEvent and check if the statistic is the jump one?
but it's not
welp xD
@old wyvern that could actually work lol
Jump and Bounce are technically synonyms
😂
¯_(ツ)_/¯
would be a lot less work than checking MoveEvent
yea I guess
Sx no
as yugi said, teleporting, ladders, and levitation would also do a false positive
player move doesnt get called for teleporting
swimming
Imagine if we had a key press event 😮
ez lag
There are a number of things you can do to avoid false positives
👏
swimming, ladder, and levitation are all avoided by an on ground check
and teleporting would also be avoided with the initial threshold check that I said I used
Ah
public class JumpListener implements Listener {
@EventHandler
public void onJump(PlayerStatisticIncrementEvent e) {
if (e.getStatistic() != Statistic.JUMP) {
return;
}
//on jump
}
}```
ew e
non final class, tsk tsk
shut Sx
No u
Wow.... I took the time to not only identify the bug, but also provide the solution, and they just kept that open
@old wyvern is that an actual thing
I'm so doing that if it is
Holy crap it is
thx
anyone know of something I can use to make a music queue with?
Discord.js?
should I just use Queue<E>
Maybe Deque
sorry my wording was bad
but yes
Oh, then yeah
jackson, more like badson
☹️
because channels definitely aren't a good option
Niall didn't you go off on one about how jackson returned "null" rather than null yesterday?
lol
also, which one of Queue<E>'s many implementations should I use?
never used queues before
LinkedList perhaps
that's probably the most simple
LinkedList is a queue?
yes
😮
it's a Deque as well
how does a deque work?
although probably not necessary in this case
I just wanna add things to the end
¿
how does PriorityQueue<E> or BlockingQueue<E> work?
BlockingQueue blocks if there's no element until one gets added
Dude...
PriorityQueue is sorted afaik
That issue is 2 years old
okay
LOL
priority queues are ASS
I am very experienced with queues, very experienced
Probably the most experienced in this room
@topaz bay would a namespace (my equivalent of packages) be classed as a Scope internally do you think? Or is it a separate entity
I literally just need something that I can add to the end of
A scope for what
Infact, no one knows better about queues than me
@jovial warren list??
I love how trump talks
actually yeah that might work
A Scope as in https://img.bristermitten.me/19-10-17-18-06-20.png
whereas a namespace would be more like a Multimap<String, FriggaScope> I guess
idk
i'm unsure where namespaces would fit in here
no me neither
but I'm genuinely unsure where they'd fit in
maybe a Multimap<String, FriggaScope>?
but that doesn't sound right
¯_(ツ)_/¯
wow look at that
that is WAY too close to korm
I should sue
They have a decent logo tho.
Shots fired
cube.... made the korm logo...
This framework looks cool.

