#dev-general
1 messages ยท Page 142 of 1
fuck1.8 is 500kb?
and mine is supposed to be as small as possible
Probably not lol
shade papi and packetlistenerapi
thats 480kb 
he's already shaded PAPI
o
because for that 6.9mb
I think the image idea is the best one, you can control it better
And if someone decompiles it then have a nice 69 image
stupid yea
there's gonna be that one guy who decompiles an open-source plugin
One of my libraries might be about 500kb
Get the best deals while shopping online โธ http://joinhoney.com/jack
Honey is FREE and finds coupons with the click of a button. Thanks Honey for sponsoring! I tricked Youtube into giving me a DIAMOND PLAY BUTTON ๐ Subscribe w/ notifications so you don't miss videos! Probably ...
Yo who designed that webpage ๐
๐
Changes "silver" to "diamond", award shipped ๐
@onyx loom It is time to finally finish FJ 
ew
Okay :c
is it just me or is it really DAMN ANNOYING when IntelliJ and literally every other JetBrains IDE just forces itself in to focus when you're trying to do something else
As in the hover over app?
I have literally never had that happen
no, when you start it up, these windows pop up that grab your focus
if you're not focused on IntelliJ when it starts up it'll grab your focus
otherwise it won't
yeah those are pretty annoying
WHOS RAPH
CRUSADE
WOW

I mean
๐
nah im just downvoting for the sake of it
๐ฆ
check again
I mean the difference isn't really that big
๐
it's a great subreddit
some would say the best
I was talking to some people, and they said what a great subreddit it was
I'm still in need for a proper programming circlejerk subreddit
yeah, r/programmingcirclejerk is kinda dead
I want gamingcirclejerk
it's just "rust good"
But with programming

You see the issue is that there aren't enough programmers that aren't part of the circlejerk but also know what they're talking about
yeah
xD
there's also not that much irony unlike GCJ
programmerhumor is pretty boring
how does reddit work oof
^
so true
it's the only sub you need
So I was minding my own business when some STINKY Java user had the NERVE to tell me that kotlin was bad. My blood was boiling, I had never encountered such a RUDE person in my life.
And it gets worse.
They showed me their GitHub profile. You wouldn't believe it.
ALL PINNED REPOSITORIES WRITTEN IN 100% JAVA
I couldn't handle it. I felt sick. How did they plan to easily maintain a growing code base with this much boilerplate? And the repos had hundreds of stars. Are you seriously telling me that there are hundreds of SICK, DELUDED people in this world???
This needs to stop one way or another.
As a member of the Kotlin Klub i propose we declare war on the FILTHY Java users and eradicate them once and for all. They have gone too far this time.
Thank you for coming to my Ted Talk
Damn we should use this when there's a multi
it's quite a good copypasta if I do say so myself
ALL PINNED REPOSITORIES WRITTEN IN 100% JAVA
this gets me every time
I hate that my JNI project shows Java instead of Rust because od the javadocs
uh oh
lmao
atleast pdm has an excuse ๐
๐คฎ ๐คฎ ๐คฎ
@lunar cypress Hi
i feel SO SORRY for the pain that u had to go through making it
๐ @heady birch
CompletableFutures high-key suck
coroutines on the other hand 
My condolences
I'm literally too dumb for rust
It's not even low level
And you rarely have to deal with pointers
Compared to JVM
Well yes relatively
In terms of the runtime
But the language itself is very high level
You tried it?
Yeah
Wait until you get to the infamous fights with the borrow checker
Yes it's terrifying
"Hey you can't use that variable here because you don't own it anymore"
B*tch
I think so
References are safe pointers
& is just the syntax for getting the pointer of an object afaik
Basically
Wut
object > pointer
Actually I remember something like that
Dereferencing you mean? That's the opposite
I see
yeah its annoying
My main issue with rust is its incredibly complex type system though
I am so lost there
All those traits that shift between language and user space and some of which implicitely declare other traits, lifetimes, generics
I simply realised that Rust is definitely not my cup of tea
I like GC
I like functional programming
I like solution-oriented abstractions
is it convention to put a space before the : in the function return type?
e.g fun canRegister(): Boolean {
or fun canRegister() : Boolean {
No
You use the space for extended classes/interfaces in class declarations usually
But everywhere else no
Basically IJ follows kotlin conventions unless told otherwise
So
Just format if you're unsure
o ive never used that
Ctrl Alt L?
correct
Imagine not having it in muscle memory
You need to press it at least every 3 seconds
Or your code will be LITERALLY unreadable
dont need to when u already follow the convention ๐
its muscle memory for me to already do this
There is no time to wait! Ask your question @obtuse gale!
There is no time to wait! Ask your question @obtuse gale!
There is no time to wait! Ask your question @obtuse gale!
wrong channel lol
absolutely not
I don't think that's even possible?
not easily anyway
there's no script engine for java that I know of
and everything would have to be inside a class
Depends on what you need
But a public eval command is a terrible idea in almost every way imaginable
You should only do this if you know exactly what you're doing, have put the right security measures in place and use a containerised environment
So short answer no you should probably not
@prisma wave What kind of data size is that?
5 Ultra 0 KB
๐ฎ
Unsigned 0 KB?
? @topaz bay
Here is the reason for his comment:
If you're using 24h style there is no point in adding AM/PM
You have 14:56 PM, 14 already implies afternoon so the PM is redundant
For those times when you want to make sure the reader knows it's after noon
@lunar cypress even if i did that, i just do it privately for myself 
Ooh wait, Kotlin 1.4.0-rc is a release version?
24h clock best clock, change my mind
^
@ocean quartz rc = release candidate
Oh okay, converting a project to Kotlin and IJ suggested that version
thats strange
helluva candidate
cocaine is a helluva drug
140 lines to 90 after converting
Most of it are comments and empty lines
@golden gust That's not a developer, that's a configurator 
Caused by: java.lang.NoSuchMethodError: net.md_5.bungee.UserConnection.getDimension()I
at com.mcmylx.quickswitch.bungee.lIIlIlIlIIllIlI.IlIIllIIlIIllIl(e:129)
at com.mcmylx.quickswitch.bungee.lIIlIlIlIIllIlI.encode(e:104)
Incorrect version I'm assuming
Iiiilllllliiii
Could anyone let me know if you think it would be possible to create a 3rd party relational PAPI placeholder extension for Towny (https://github.com/TownyAdvanced/Towny/wiki/TownyAPI / https://townyadvanced.github.io/Towny/). Basically a placeholder that outputs different colours for the viewer depending on if the viewer's towny nation is an enemy or ally to the target player's towny nation (how it works for the faction relation placeholders). I don't want to make a paid request if it isn't possible. Feel free to ping, happy with any help.
Should be possible yea
Is anybody versed in graph theory here?
what kind of graph
What do you call a node in a directed graph that you can't reach anymore?
Say you have the following simple directed graph
A
/
B C
\ /
D
with kotlin since == becomes .equals should I be using === for enums?
With the direction going from top to bottom
Doesn't matter @obtuse gale
if you are at B, you can't reach C anymore
Well you technically can 
So I call A a passed node, D is a reachable node but I need a name from C
Unreachable node?
I had that as well but technically A is an unreachable node as well
why cant you get back to C?
so I don't want any ambiguity
because the arrows are directed to B
Because of the direction
ok
linking node?
@heady birch because it's a directed graph from top to bottom, I just didn't want to google the utf-8 symbols for the slanted arrows
You can only ever pass one node in a layer
Well not really Blocky, since it follows the direction it's reachable
If you are on B, A is not reachable anymore
I mean yea
but I need to distinguish nodes that you already went through to get to B from nodes that you did not go through and can't ever reach anymore
one-way node, linking node?
Any naming ideas besides "unreachable"?
how does linking node fit?
they are all one-way nodes
maybe disconnected node?
Fuck sometimes it sucks not to be a native speaker
This is terminology, this has nothing to do with being a native speaker
You just need to know the subject
I'm p sure you just call it unreachable
This is terminology, this has nothing to do with being a native speaker
@lunar cypress Well yeah but if the terminology doesn't exist or I can't find any reference to it, then I get to invent my own
I think I'll go with isolated node
whats the difference between sources and generated sources
redacted I was mistaken by a different generated sources
What?
Generated sources are mostly for annotation processors
So if you're using some annotation processor that generates source code that goes in there
@jovial warren So where's that pr 
er... yeah... about that...
I may or may not have just kinda er... got bored after a bit and just went and did my own thing lol
@prisma wave Counting on you now 
I've got a custom world border plugin to make now that I'm getting paid for, otherwise I'd be right on it
Yea no worries, gotta get that moola
mate, first time I'm getting paid for actual work I've done lol
What you working on?
well, not really actually, though I suppose helping your 69 year old (yes, she's 69) grandmother out in the garden doesn't quite count
What you working on?
just said, custom border
gotta basically make a GUI-based system that allows any player on a server to upgrade the world's border
it's really easy, but it's gotta be fully configurable which is slightly annoying lol
Not really hard, make sure you're using Matt's gui framework 
yeye
you know, I still remember when you hated Kotlin lol
in fact, I still remember when I thought Java + Lombok > Kotlin
Lombok doodoo
yeah ik
it defeats the point of using Java
but I hated, and still hate, boilerplate
Time to test out pdm 
yeah it's not bad
Muhahaha i finally made something to my bot
what?
Ignore him, he just randomly says things from time to time
yeah, I've seen that
@hot hull yo
yeah it didn't make sense why you said "I finally made something to my bot"
BeanShell helps
Or Java Compiler 6, but i don't want to waste files on my discord app
KM,
PR
how do you parse that sort of code btw @regal gale ?
like how do you parse text as code?
and then get the output from the console and format that
That was too easy tbh
All you have to do is use Interpreter and then eval the entire code
@obtuse gale What's your github
@hot hull gimme a sec, what do you actually need me to do?
usually when I look for people's GitHub I look up their Discord username (unless of course their name is Alex Wood, who likes to have a different username for absolutely no reason)
Move the actions from old one to new one, then overall cleanup
I was worried that the method declaration doesn't work on Interpreter tbh
Ok
the one with the schlong profile pic
Apparently I gotta change shit myself, since you too lazy smh Aj
ive just fucked my version of it lol
And I can't be fucked with changing to latest gradle and cleaning it up cause this mcdev shit outdated af
tryna fix something else and it broke something else
why is your username different from your discord Alex? @prisma wave
because clojure is the best language
Yes
never used it
Wait Aj, so what's the current status of it?
neither
the one on that repo should work, however sometimes it doesnt add the kotlin plugin
it's a lisp dialect on the jvm, that's all you need to know
well, I mean, just about every JVM language other than Java is better than Java lol
i love java
I mean, they have Java as an example of what not to do I suppose
java's really not that bad
there's plenty of languages that suit your description far better than java
@prisma wave what operation do you want me to test if it work on this BeanShell? 
Ternary works. Nice
try this: ```kotlin
val myNumber = 10
val myOtherNumber = 20
println("The total is: ${myNumber + myOtherNumber}")
bet that won't parse
Hey, no fair ;p
also btw @ocean quartz why do the MF guides say you have to relocate the package?
surely relocation should be optional
Stop complaining about people relocating shit sheesh
I'm just curious lol
Because you don't want your plugin using classes from a different plugin with an outdated version of the same lib, making your plugin break
Always relocate the libs
wait that can happen?
since when could plugins share the same dependencies like that?
They share the same class loader don't they?
How does .any{ } work?
Yes
The plugin that loads first will load the classes of the lib
Since your plugin will have the same path to the lib it'll use the loaded one instead
also @ocean quartz compile smh
private fun getClosableBlockByName(element: PsiElement, name: String) =
element.children.asSequence()
.filter {
// We want to find the child which has a GrReferenceExpression with the right name
it.children.any { child -> child is GrReferenceExpression && child.text == name }
}.map {
// We want to find the grandchild which is a GrClosable block
it.children.mapNotNull { child -> child as? GrClosableBlock }.firstOrNull()
}.filterNotNull()
.firstOrNull()``` in this context
@obtuse gale any returns true if any elements match the predicate
aight
@regal gale idk, does var work?
@jovial warren
Because not everyone can appreciate Clojure
@regal gale idk, does var work?
@prisma wave ?
var
Java 11? I think it is, has var
Introduced in Java 10
Close enough
If so, yep it worked
Same as kotlin AND js
Cool
Although var only works for local variables which kinda sucks
val doesn't exist
Yeah xD
it's final var
disgusting
Frosty's favorite final :)
It still feels weird that I still have to use semicolon after each line, or else it won't work
If var works on this eval then I think it support lambda too, i guess
wait you still have to use semicolons? In a scripting language??
stupid beanshell
The scripting still think the entire script is 1 line if you don't use semicolon
why would this return null
private fun getClosableBlockByName(element: PsiElement, name: String): GrClosableBlock? {
println(element.text)
println(name)
return element.children.asSequence()
.filter {
// We want to find the child which has a GrReferenceExpression with the right name
it.children.any { child ->
println("child.text = ${child.text} - Name: $name")
child is GrReferenceExpression && child.text == name
}
}.map {
// We want to find the grandchild which is a GrClosable block
it.children.mapNotNull { child -> child as? GrClosableBlock }.firstOrNull()
}.filterNotNull()
.firstOrNull()
}```
There are loads of different reasons
stupid beanshell
@prisma wave well uh.. i'm speechless xD
only returns null if I give that bad boy the name parameter plugins
Well there are no elements with the text "plugins"?
Yea
dead version
Eat my a$$
ok
<idea-version since-build="183" until-build="183.*"/>
I assumed this is all I needed to change, but doesn't look like it
I keep getting a gradle error saying 2019.3 not found or some shit, so not sure
But I can't find any version specific shit anywhere else
maybe try 183.*
imma test some stuff once my intertnet manages to download this lol
Cannot find builtin plugin repository-search for IDE: C:\Users\Frosty.gradle\caches\modules-2\files-2.1\com.jetbrains.intellij.idea\ideaIC\2019.3\5a74bbe98a814d61e6069abd0902b46668f1278c\ideaIC-2019.3
for (players in Bukkit.getOnlinePlayers()) {
players.playSound((Location) players.getWorld(), Sound.ENTITY_ENDERMEN_SCREAM, 1.0)```
How to fix it?
thats not java?
it's kotlin
It also runs Class, cool
@tacit cave what is the problem?
?imgur
You won't be able to upload images here directly to avoid spam, so please use https://imgur.com/ to upload images/screenshots.
I mean
ffs this build.gradle.kts is 300 lines long
can you even cast like that in kotlin?
also btw i dont think casing a world to a location will work but idk
just use Player#getLoc ation
Bukkit.getOnlinePlayers().forEach{
it.playSound(it.location, Sound.ENTITY_ENDERMAN_SCREAM, 1F, 1F)
}```
Bukkit.getOnlinePlayers().forEach{
it.playSound(it.location, Sound.ENTITY_ENDERMAN_SCREAM, 1F, 1F)
}```
@obtuse gale that's code from java?
@prisma wave 4 of the old actions haven't been converted from the java version yet, can you look at those?
no
That's kotlin Epic
thats kotlin RedEpic
@hot hull alright
eh nvm wrong read lol
It's uses reflection, and it's messy af so didn't even know where to start
Anyhow Aj, lemme know if you figure anything out
ill go check out what the normal mc dev plugin for that version uses
Prolly won't take too long, it's already on RC
@obtuse gale Any luck?
4PM
got double science tommorow so i should be able to do it during that lol
Wait you got school?
mmmm
rip
So stuck on mobile data rn
Plus like my school is in NSW and everyone comes from VIC so it kinda defeats the purpose of them blocking off the borders 
@ocean quartz The inventory types are included in the latest mf gui ver right?
Yeah

tf is VoxMc Sx
He was just showing clip an example for managing repository with github
hello clever people, I've got a bit of a code structure question:
I'm parsing an XML document, but the parsing should be in different stages (different stages extract different bits of data).
A stage might need to use data from a previous stage
At the end, all of the stage's data should be collected up into a final object representation
Currently I've defined ```java
public interface ParseStage<T>
{
@NotNull
T parse(@NotNull Document document);
}
but I'm conscious of the fact that this would require a central class to execute all the stages sequentially (and therefore the stages would need hard coding, breaking the open-closed principle).
Any ideas?
XML ๐คข
I also considered having an ArtifactBuilder that gets parsed to each stage (the final object created from the parsed data is an Artifact) but the mutability seems like it could cause problems, and also I'd need to have fields for each bit of data being extracted (going back to effectively hardcoding)
XML ๐คข
parsing data from a maven repository, I have no choice ๐ฆ
gotta keep the PDM runtime small ยฏ_(ใ)_/ยฏ
PDM is written in Kotlin though isn't it?
bit of both
the runtime is Java, as is the common library (that the runtime and Gradle plugin use, it handles querying maven repositories and things), but the gradle plugin is in Kotlin
and the Unit tests for every module will be in kotlin
@prisma wave why are you manually parsing xml?
the built in parsing??
No, I'm not manually parsing
I'm using Document and stuff, I just want to split the extraction of the parsed data into different stages
possibly bad wording
You want me to learn/try out Clojure, yet you don't even make PDM in Kotlin
making it in Kotlin would add ~2MB onto every single plugin using it, that ain't gonna work out
@topaz bay Speaking a bit more specifically, here's what actually needs to happen:
Extract all the elements from <properties> and load into a memory representation
Extract everything from <dependencies>, using data from the properties if necessary.
Having everything in the same class seemed like a bad idea, so how would you lay it out?
this is still my favourite code to exist
class CoolPlugin {
override fun onEnable() {
Thread.sleep(String.MAX_VALUE)
}
val String.Companion.MAX_VALUE: Long
get() = Long.MAX_VALUE
}
Lol
That is an accurate representation of the power of Kotlin
can't do that in Java 
Well you kinda could, but it'd only cosmetically be a string
it changes nothing
I mean you could have your own String class 
Noone
having classes with the same name as built-in classes is an antipattern
@topaz bay You've just made my life easier with that expansion, danke
What expansion?
gradient
@hallow crane https://semver.org
If I was to make something where people can bid on slots in a menu, how might I structure that? So it can be expanded on? I originally thought nested maps e.g Map<Integer<Player, Integer>> for <Slot<Player Who Bid, Amount Bid>> but I'm not sure if that's the best way.
I think you could make an object for that, for example Map<Integer, Bids> and in Bids you'd have a Map with players who big and their amount
But I'm not sure if that's the best way either
xD
I'll give it a shot, that menu in the image is a plugin I actually made but its internals are poor as i didn't know how to structure it
^ Encapsulation is way better than nested maps
Looks like that's the best way then so far, I'll give it a go and see how we do ;p
I mean we don't really care about performance, right?
I mean we are spigot devs so yeah, we dont care
The spigot jar is dragging us down anyway
Is there a better / easier to use way? But also I'm not too fussed about microsecond performance increases just ease of use and future adaptations
Okay, thanks
Objects good 
And I OOP
And I oop yes
Oooh this is cool, using 1.4-rc
functional interfaces are cool

.\gradlew wrapper --gradle-version 6.5.1
What is the point of making a function open on an enum?
Code converted from Java became open
I think it's so a value could theoretically override it
Although IJ seems to open a lot of Java functions
Just means you can override it for particular enums
Hmm don't think that's what i want here then
Hm what do you guys think of LuckPerms' method of storing the config data in mysql as opposed to making config files for it?
Much better than storing data in config files
Config should be read only and the user should input configuration settings
I mean it's not data per se, is it? it's config. It gets configured once and it's never touched again usually. I am talking about the structure of the permission nodes and such
Thats data not config. E.g group abc with permission node x.y.z
how is that not config? data would be which player belongs to which group. the groups themselves are config.
They are the data of the the groups
Such as group xyz has permission a.b.c with player $uuid who had permission t.u.c
But you can say that about every configuration. Like if you have mysql config you can say they are the data of the mysql connection and should not be in a config file...
No. Becuase they are user settings
Plus its better to store in a database becuase they have better schemas than yaml files
but the permission groups are user settings in the exact same sense then.
they do not change (usually)
as opposed to the data itself
They do change
And why have them in seperate storage systems when they are so closely linked
And you can make use of ORM aswell as backend for a website using that data
Hm do you know how LuckPerms is doing that whole webserver thing where you can access that data via the browser?
and the server itself is a remote server set up by the plugin dev?
How does it communicate with the mc server? or rather the plugin running on the mc server?
When you run the editor it converts your data to a string and posts it to the hastebin
Then it gives you a web editor link that loads the haste bin data
afaik it puts the data into another hastebin and the command loads from that
When you run the apply edits it does a get request
hm hm interesting
do you think it would be possible to run a webserver from within the plugin?
or is that too straining on the server resources?
hm hm... might be worth looking into...
I remember dynmap causing lag a lot...
dunno if it still does
Dynmap causes lag while it renders, yeah
For the record, i will never add Clojure scripting on my eval cmd ever again..
Well he said again, so he won't add it because he already did :^)
yo anyone knows a good mysql "tutorial"
never worked with mysql
and before learning how to use it in plugins
I wanna learn how to actually use it
.-.
https://www.youtube.com/watch?v=2bW3HuaAUcY watching this one
This tutorial provides and introduction to Databases, SQL and the open source relational database- MySQL
** Expand for some additional INFO and LINKS **
00:12 Introduction to Databases
04:56 Introduction to SQL
06:53 Introduction to MySQL
LINK TO SOME OTHER INTERESTING/RELAT...
xd
Say I want to create all possible alphanumeric string with any case which is >=1 and <=11. I know that there is 62 characters, so I have 62^11 which gives me the total amount of possible strings. However, from this info how would I get the amount of bits it requires (excluding language overhead. Just the bits for the characters)
In a 8bit encoding format
nice comment
62^11 * 11 * 2 * 8
Oh. Is it actually that simple?
Yea I guess so
@topaz bay I require your wisdom, going to try making a JSON message with a syntax that looks similar to markdown, will be nice to learn new things
Example:
[<#e74c3c>**Testing Message**](hover: "<#3498db>*Hover message*")
Will turn into the image under
Any suggestion on how to approach this? Regex probably?
Oh.
62^11 possibilities (assuming 11 characters) * 11 (characters per possibility) * 2(no. of bytes in a char) * 8
I thought about a lexer as well, sounds fun
Oh its VERY fun
I was planning on writing my own grammar syntax, and having that be used as an input to a generic lexer system
gonna do it ๐
As soon as I can figure out why gradle javadoc generation is fucking bugged
Does anyone know how to make NPC from Citizen to Hostile Mob, like they attacks player?
Sx your lexer scares me
@tacit cave you can try Sentinel
Plugin or Some other Codes?
Now thats a clean API if I've ever seen one
@ocean quartz Thank you
Which one though?
Theres like at least 4 different ones on my gh xD
Oh, was looking at this one https://github.com/Sxtanna/odin/blob/master/src/main/kotlin/com/sxtanna/odin/compile/Lexer.kt
Ah yes...
The giga lexer
Relatively small, but extremely powerful
Its bounds are unknown to the mightiest of programmers
What scares you about it?
Everything
I understand about almost nothing xD
oh no
Oh god
@tacit cave plugin
Bruh
@ocean quartz Did you want me to actually explain it to you? Or were you just commenting on it?
Just commenting on it, trying to understand how a lexer works so I can see where to start
I'll try to not disappoint xD
That's a start
I admire your token type names
I wonder if i should use regex for parts of it, i feel like this way it'll be a bit harder xD
Which parts though?
Parts of mine were regex at one point, but the increase in speed far outweighs the alternative
Was thinking about using to get like content between [] etc
But hey I'll keep going this way at least I'll learn something new
That's actually not bad
But then you introduce recursion
Well I guess there would be recursion anyway, due to your syntax
Well this is slightly better
How come those values are separated?
Printing them in each line instead of the list
Right now I just took an example from stackoverflow so bare with me xD
Just adds each value to a list based on the found token nothing more
Same, trust me
Nah, just detects something and puts it on a list nothing more
got it
Where do I make a ticket if i need support
you dont
you go to either #general-plugins / #general-plugins-2 and you may get an answer 
There is no tickets
If you need plugin help head over to #general-plugins or #general-plugins-2
If it's a premium plugin you can #spigot-linking and go to the channel for the plugin you need help with ;p
okay
It's awful

im support team on PlayerWarp's devs discord server
and everytime someone makes a ticket
the bot mentions @ everyone
so i get a notification
every single goddamn time
Just don't support that discord ๐
i like bullying the developer
so ima deal with the pings
hi olzie
you suck
if you're reading this lmao

Can i bully you with Java
@frail glade https://www.youtube.com/watch?v=ran_yU65Xmg
I've rebuilt the polaroid effect using mesh slicing so it can handle collisions and multiple photos.
YO
Look at this shit
Thats fire
This dude got even crazier with this, let me see if i can re find his tweeter, he has way more
Yeah that one!
The level loading one is fucking beautiful
Could imagine if this happened in Minecraft?
The little preview image shown on the worlds screen?
Just expanded?!?!?
And it was world?!??!?!?!
Ya know.... I think I might make a mod...
Who knew a mod that lets you skip the loading time for portals could be so mind-bending???
This Non-Euclidean Mod is the Immersive Portals Mod if you didn't know, it gives of the non-euclidean geometry feeling, it was really trippy and weird!
๐๐ฆ๐๐ค๐๐ฃ๐ ๐๐๐ ๐๐๐ฅ๐
โฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌ...
This is pretty cool too
They are awesome, would love to try something like that one day
oooooo
its the zelda theme in the background
Took me a while to notice that
Or some song that uses the motifs of zelda at least
Aight my brain hurts from this lexer stuff imma head out to bed
Oi it's 4am, imma do more tomorrow!
Still not sure how i wanna do it though
Because for example [#000](/guild/164280494874165248/channel/000/)Some text [Some more text](hover: Hover text) *italic test* this will be a valid syntax
I might search for any markdown element, handle it then after parse the colors
Would it just all be black?
Not sure, it's either keep the colors throughout or reset once a markdown is found
The resetting sounds easier to do
90% of the lexer examples and videos are in Phyton
That makes sense
Yeah seems pretty simple to do with it
I have a simple lexer if you wanna have a look @ocean quartz
@obtuse gale
ree
Tough talk for a fella within crusading distance.
Good testing environment
cute
Why does one even need actual programming
When you can use the power of finite state machines
regex bad
because finite state machines do have limits
Anyone got any cool hologram libs I could use for 1.8 
I bet aj does
He's gonna be dissapointed that I'm on 1.8 again
What would be the best way to store business objects in a database? I have a proprietary sql handler but I'd like to not have to maintain it and use something pre-existing. I was thinking of hibernate but I thought i'd ask if you guys know of something better
I am disgusted
It's a commission Aj :c
idc
Pay me the amount I get for this, and I won't make it 
how much?
DMs 
interesting price
69 pesos
See he get's annoyed, but doesn't want to resolve me of my missery
yes
Hello
Hola
Let me introduce you to Spring
What does the Spring framework do?
Everything
Never used it, don't know anything about it
You can model your business objects as java objects
Then it set's up databases and everything based on it
That looks interesting enough
How much fine control do you have though? Can you specify custom queries as well?
Interesting
BUT
What normal person uses light theme on anything that has dark theme??
@heady birch That looks like SQL. Any particular flavor? MySQL? Postgre? Oracle SQL?
Oh yeah
What normal person uses light theme on anything that has dark theme??
@distant sun Light theme by day, Dark theme by night
no
Dark theme anytime
I will check it out, looks interesting enough. Thank you!
Do I have to compile Spring into the Plugin jar if I want to use it?
Or does the spigot jar already support spring by any chance?
It probably doesn't knowing spigot 
I figured out why my plugin is 18MB btw
@heady birch you sure you can use Spring on Spigot projects?
Because I decided to use ANTLR as we discussed before. Gotta compile all the necessary shit into the plugin ๐
@heady birch you sure you can use Spring on Spigot projects?
@jovial warren Why shouldn't you be able to?
why wouldnt you?
Your plugin will be larger than 18MB with Spring ๐
lol
because of the way it works
how big is sprinbg
I mean is the size really an issue?
with Spring, most things have to kinda be managed by it
But couldn't register the server as a been or anything
@Override
public void onEnable() {
getLogger().info("Initializing the application context...");
DefaultListableBeanFactory defaultListableBeanFactory = new DefaultListableBeanFactory();
defaultListableBeanFactory.registerSingleton("logger", getLogger());
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(defaultListableBeanFactory);
applicationContext.scan("net.kitesoftware",
"net.kitesoftware.clearchat",
"net.kitesoftware.clearchat.service");
applicationContext.refresh();
EnterpriseClearChatApplication enterpriseClearChatApplication =
applicationContext.getBean(EnterpriseClearChatApplication.class);
enterpriseClearChatApplication.startApplication();
}
Never got it working
I'll ask in the spring discord
spigot discord shite
whatever, as long as they answer my question...
@heady birch why would you even lol
I have never spoken in spigot server actually
Well shit Niall. Here you introduce me to the Spring framework and then you tell me it's not suitable
What is a suitable alternative then?
The Rwandan Patriotic Front?
Or the Patriotic Front of Rwanda?
yeah Reflection Project Framework
rpf isnโt ready for prod
god damnit ^^
Are you willing to accept the risks of using an in-development build? (Y)es/(N)o
It does work afaik
what u making?
it's just not that stable
Patriotic Front of Rwanda? Sounds interesting
and that is well documented with lots of examples to find on google
I am looking for a way to avoid writing my own sql handler
so I'm looking for a way to store business objects
preferably automatically via annotations
like Hibernate or Spring
What is your goal
then use hibernate or spring?
Does it need to be a plugin?
Yes it's a plugin, @heady birch
then use hibernate or spring?
@quiet depot I was thinking of hibernate then Niall mentioned Spring and then he said it's not suitable for plugins and now I'm back at Hibernate
spring works fine for plugins
Yes
spring works fine for plugins
@quiet depot Have you used it before?
You do have a 5mb limit upload on spigot
no
But if its personal use then should be fine
You do have a 5mb limit upload on spigot
@heady birch I don't upload to spigot anyway so that's not an issue
But if its personal use then should be fine
@heady birch It's not
niall you can add an external download
Oh yeah
I think I'll go with hibernate
Hibernate is just ORM
afaik
nvm apparently, like Spring, it does more
(most people know Spring as a web framework, that's what I'm referring to)
also @heady birch you're saying with Spring it'll take your project only to 18 MB?
idk what kinda Spring you been using but Spring Boot takes me to at least 35
return within lambda acts same as continue in a for loop or?
bruh
just realised the Fuck1.8 jitpack thing doesnt work lol
implementation 'com.github.Aj3douglas:Fuck1.8:master-SNAPSHOT'```
maven { url 'https://jitpack.io' }```
Could not find com.github.Aj3douglas:Fuck1.8:master-SNAPSHOT.
o
ive gotta add something to the gradle?
return within lambda acts same as continue in a for loop or?
@hot hullbreakandcontinueare for iterator scope, so probably not the same
Seems to be the same so 
hmmm how would you model a one-to-many relationship in a database where the order is important? create a separate table with each element being an entry and store the index/order?
Aj, send ur gradle
@obtuse gale -.-
?
oh right I forgot some people support using versions from 6 YEARS AGO
@steel heart when I try and run gradlew build on the project it fails
I think I read that jitpack uses it
Would that cause it to not import right?
Is it really stupid of me to create Kotlin-Expansion for PAPI ._.
I already prepared the scripting engine, ofc
That would be me
Course ๐
@obtuse gale wdym nobody should use 1.8?
I mean nobody should use 1.8
1.8 should be used for things like lobbies because it's really lightweight and doesn't take up RAM
Its 6 years old
and...?
at very minimum 1.12
modpacks are still built in 1.7.10 and that's even older
1.8 still has its uses
that's a fact
1.6 is where I draw the line
and also 1.8 is better for PvP since 1.9 until about 1.14 or so PvP is dog shit
and also 1.8 runs so much more smoothly than the later versions
Its 6 years old
@old wyvern Sure thing!
@topaz bay Nice yeah, I might just do that, use regex to get the tokens
1.6 is where I draw the line
@jovial warren i don't get that line
You can't store data in a placed block correct?
anything older than 1.13 is icky
Try it and see ๐
extend block 
I'm on 1.8 :c
Gotta add a spawner stacking system, first thought of storing locations but that's disgusting
extend Block and add your own fields
Wha
Storing locations is about the best you're going to get
Crap

