#dev-general
1 messages Β· Page 174 of 1
Editing methods are ussually reloaded. To add methods you need dcevm or something afaik. But yea changes inside a method should be fine
Are you sure that isnt active?
ive got dcevm
jesus christ lol
hmm
followed that exactly
I see
Have you checked if your lines are added with the debugger?
Try adding a breakpoint to that line, Intellij wont show it as a breakpoint if its not reloaded the class yet
@heady birch I think you missed two at the bottom of that xD
yeah
dependencies.ext.spigot = { final String version ->
dependencies.compileOnly "org.spigotmc:spigot-api:$version-SNAPSHOT"
}
How does this translate to kotlin?
There is no dependencies.ext in that dsl. Is that extra or extensions?
in to Kotlin?
yes
just ext {} I believe
there is no ext {}
According to Piggy you can and he does aparently
apply from: "https://cdn.piggypiglet.me/gradle/spigot.gradle"
dependencies {
spigot "1.16.2-R0.1"
}
check out the link
I want to replicate that in kotlin dsl
what does the .ext stand for though?
val dependencies.ext.spigot = { version ->
dependencies.compileOnly("org.spigotmc:spigot-api:$version-SNAPSHOT")
}
```?
not sure
ext is supposed to mean external
@prisma wave how much do you know about the DSL?
dependencies.compileOnly(...) doesn't exist
oh yeah of course it doesn't
the gradle fuckery starts again
umm wait
oh yeah of course it doesn't
@jovial warren why of course?
somebody help me out, I don't know DSL well enough for this lol
me either, please help
ext is from ExtensionAware
is it?
yeah so in kotlin dsl that's extra
now just how do I get the compileOnly from dependencies?
All extension aware objects have a special βextβ extension of type ExtraPropertiesExtension```
dependencies.extra.apply {
set("spigot", {
group: String, version: String -> "org.spigotmc:$group:${spigotData.bukkitForVersion[version]}"
})
}
this compiles
but it returns the string, not the dependency handler called CompileOnly
I guess this works...
Does it?
it compiles
I just don't know how piggy invoked that lambda using
dependencies {
spigot "1.16.2-R0.1"
}
I havent used kotlin for gradle yet but I assume you can just have an infix extension or something?\
Gimme a minute lemme try creating a test proj with kotlin dsl
Now I know why they all said gradle with groovy dsl was so much cleaner
I think I have to switch after all
it's just so messy if I don't
π€·ββοΈ
Gimme a minute lemme try creating a test proj with kotlin dsl
@old wyvern Did you get anywhere?
good pc π
it took me this long to remember that setting source roots exists lol
seems to work borz @empty flint
what does?
infix fun DependencyHandlerScope.spigot(version: String) {
compileOnly("org.spigotmc:spigot-api:$version-SNAPSHOT")
}
?
lol
ty for trying it out
but I feel like the kotlin dsl isn't near as ready to use as groovy
I see
hey @heady birch can I see your module/project hierachy please? (and your parent pom if you'll let me since that's the only one not put in manifest xD)
afternoon Matt (saw you typing lol)
Heyo, was gonna make a joke but decided not to xD
might aswell just ask for the source through GPL kek
I did
take him to court then π
yes
:bruh:
Join us in the suing fest
slim shady
my name is
all the poms are wrong
lol
ah okay
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2015 - 2020, KiteSoftware
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.kitesoftware.board</groupId>
<artifactId>kiteboard</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>kiteboard-core</module>
<module>nms</module>
<module>kiteboard-dist</module>
<module>kiteboard-api</module>
</modules>
</project>
You legit going to ask him for the entire source?
I did before lol
but I don't want the entire source, deobfuscating this has been a fun challenge
what's the groovy equivalent of kotlin's fold(...) method?
don't think that's something that Groovy has
The terms are synonyms
^ although the 2 functions do slightly different things in kotlin
Β―_(γ)_/Β―
ok apparently what kotlin calls fold is called inject in groovy
for whatever damn reason
well inject makes sense if you think about injecting values into an accumulating object
no...
it doesn't
When I sum elements I don't inject anything anywhere
it almost sounds like it's for side effects, even though the whole point of it is to avoid those
def bukkitForNms = [
"1_12_R1" : ["1.12-R0.1-SNAPSHOT", "1.12.1-R0.1-SNAPSHOT", "1.12.2-R0.1-SNAPSHOT"],
"1_13_R1" : ["1.13-R0.1-SNAPSHOT"],
"1_13_R2" : ["1.13.1-R0.1-SNAPSHOT", "1.13.2-R0.1-SNAPSHOT"],
"1_14_R1" : ["1.14-R0.1-SNAPSHOT", "1.14.1-R0.1-SNAPSHOT", "1.14.2-R0.1-SNAPSHOT", "1.14.3-R0.1-SNAPSHOT", "1.14.4-R0.1-SNAPSHOT"],
"1_15_R1" : ["1.15-R0.1-SNAPSHOT", "1.15.1-R0.1-SNAPSHOT", "1.15.2-R0.1-SNAPSHOT"],
"1_16_R1" : ["1.16.1-R0.1-SNAPSHOT"],
"1_16_R2" : ["1.16.2-R0.1-SNAPSHOT"]
]
def nmsForBukkit = bukkitForNms.inject( [:] ) {map, key, values -> values.each { map[it] = key } }
@prisma wave Can you help me figure out why inject doesn't work here like this?
I'm pretty sure it has to do with some groovy syntax
'inject' in 'org.codehaus.groovy.runtime.DefaultGroovyMethods' cannot be applied to '([:], groovy.lang.Closure<java.util.List<java.lang.String>>)'
fold is named fold because it's folding the elements in a list in to one
that was not the question
the question was why they used both fold and reduce, which again, are synonyms and have no connection to their different parameters
So how do I reverse the map and flatten the keys
How do I register a dir as a module?
in gradle?
yus
O no
lmao
In case anybody is wondering, this would be the syntax instead of using inject:
def nmsForBukkit = bukkitForNms.collectEntries {key, values -> values.forEach(value -> [value, key])}
@heady birch been a while, wondering what the method at line ~65 in the Colour class does lol
looks like it takes a string and does some wacky bit shifting, writes the results to a char array and constructs a string from that char array
It converts something like #ABC to #AABBCC
then the bit shift is just getting the RGB seperate values out of the int
ah okay
please don't tell me that's that method name I saw from you the other day
"convert3To6"
or something like that lol
yeah it is
lol
I'm just separating the API from the core at the moment
also trying to put your animation API in to the API if I can lol
Anyone know a more performant version of String.split(",")
what's Interpolation's elements btw @heady birch
@heady birch this might help ya: https://stackoverflow.com/questions/11001330/java-split-string-performances
Lol gasper im reading that part now
XDDD
Interpolation HSB and RGB
okay
Yeah what's wrong with split? @heady birch
It is a hotspot during my profiling
Basically splitting thousands of lines per second
Csv format
live radar data
noice
What's apache spark used for?
I read the description but can't imagine anything from that
@prisma wave could you help me out with gradle a little?
so I have this folder structure in my root project. the gradle folder is the in the root folder
blockyData.gradle contains this map:
def blockyData = [:]
version.kotlinVersion = '1.4.0'
version.serverVersion = '1.16.2'
version.jvmVersion = '11'
Hello, does someone know how i can change my build version on Intellij?
@heady birch what are the String[] and List<String> methods for in Animation?
I'd like to use the blockyData map in other gradle scripts.
And I can't seem to get it working
Hello, does someone know how i can change my build version on Intellij?
@tiny crest build version for what? IJ's build version? Gradle version? Maven version?
List<String> returns the created animation
String[] is the aliases
like command alises
ah okay
I'm not too familiar with using multiple .gradle files but can you not do apply from: 'blockyData.gradle'?
Oooh almost there π
https://hacktoberfest.digitalocean.com/
@tiny crest build version for what? IJ's build version? Gradle version? Maven version?
@jovial warren Like the name of the plugin
The jar name
@ocean quartz thanks for putting that link here, that's something I want to attend now lol
It's awesome
@tiny crest what build automation tool are you using? (e.g. Maven, Gradle, etc.)
Maven
there's a field for that
I'm not too familiar with using multiple .gradle files but can you not do
apply from: 'blockyData.gradle'?
@prisma wave Yes, but how do I access that map then?
<version>THE_VERSION</version> @tiny crest
Ohh
because this doesn't work
Thanks!
like it doesn't know what blockyData is
I also tried with ext.set('blockyData', blockyData)
but I don't know how to access it
also @heady birch wouldn't be surprised if you've already answered this before, but what are the AnimationTypes again?
static = placeholders set after , dynamic = placeholder set before
also @heady birch , line 114 in AnimationOptions, what is that method called? is it copy or is it combine?
the one that returns AnimationOptions, and takes AnimationOptions, and creates a new instance of AnimationOptions and then takes the values from the parameter and puts them in the new AnimationOptions, then takes the values of the current AnimationOptions instance and puts them in the new AnimationOptions, and then returns the new AnimationOptions
if that makes any sense at all haha
apply from: "https://cdn.piggypiglet.me/gradle/spigot.gradle"
dependencies {
spigot "1.16.2-R0.1"
}```
@mental stag
@quiet depot does this work for you guys? I can't seem to get it working...
@jovial warren merge
okay
oh its public AnimationOptions getMergedFromDefault(final AnimationOptions defaults) {
ah okay
also can I show my current API module?
like the structure with all the classes (I mean classes, interfaces, enums, etc. lol) in it
@heady birch π (sorry about the constant pings but you don't see my messages otherwise lol)
@prisma wave any idea why this could be considered an ambiguous method call?
also @heady birch , where did you get the craftbukkit dependencies from?
@empty flint which one?
@empty flint which one?
@jovial warren The whole thing, it's all underlined
surely it tells you which method specifically is ambiguous
ambiguous methods occurs when you have multiple methods that could all be called with the arguments you supply
I think
I mean sure, but what could those be?
afaik this is the way you define subproject dependencies in gradle
yeah it is
also @heady birch , where did you get the
craftbukkitdependencies from?
@jovial warren Do you mean net.minecraft.setver... classes?
you can use the same repo as the spigotapi, just use spigot instead of spigot-api.
"org.spigotmc:spigot:<bukkit version>"
okay
are they just supposed to be in Maven Local?
@jovial warren They get installed to maven local when you run build tools
here's a neat little map of NMS versions mapping to bukkit versions:
bukkitForNms.'1_12_R1' = ['1.12-R0.1-SNAPSHOT', '1.12.1-R0.1-SNAPSHOT', '1.12.2-R0.1-SNAPSHOT']
bukkitForNms.'1_13_R1' = ['1.13-R0.1-SNAPSHOT']
bukkitForNms.'1_13_R2' = ['1.13.1-R0.1-SNAPSHOT', '1.13.2-R0.1-SNAPSHOT']
bukkitForNms.'1_14_R1' = ['1.14-R0.1-SNAPSHOT', '1.14.1-R0.1-SNAPSHOT', '1.14.2-R0.1-SNAPSHOT', '1.14.3-R0.1-SNAPSHOT', '1.14.4-R0.1-SNAPSHOT']
bukkitForNms.'1_15_R1' = ['1.15-R0.1-SNAPSHOT', '1.15.1-R0.1-SNAPSHOT', '1.15.2-R0.1-SNAPSHOT']
bukkitForNms.'1_16_R1' = ['1.16.1-R0.1-SNAPSHOT']
bukkitForNms.'1_16_R2' = ['1.16.2-R0.1-SNAPSHOT']
so I need to run BuildTools then?
@jovial warren yes
I'm using Maven (not my project, I'm decompiling Niall's KiteBoard)
It's the same for maven and gradle
is it? haven't used Maven in ages lol
dependencies {
implementation project(':BlockyNmsLib')
}
like... gradle is seriously pissing me off
it's not even worth learning imo
also, what about NMS 1.7?
nothing but problems when you just repeat stuff that previously worked
#minecraft did we just get botted?
@jovial warren I think it only goes back to 1.8...
https://www.spigotmc.org/wiki/spigot-nms-and-minecraft-versions-legacy/
The home of Spigot a high performance, no lag customized CraftBukkit Minecraft server API, and BungeeCord, the cloud server proxy.
Got pinged 400 times :))
also wonder why it selected my name
I got pinged ~130 times
yeah they tried to ping me but forgot >
I got pinged 30 ish times, but I don't see any messages mentioning me lol
Deleted by bass
welp...
@frail glade sorry for the ping, but what the hell is going on in #minecraft ? are we getting botted?
No, we're being kidnapped by armed Barry's


I'm intrigued to know what initiated it.
so am I
how are they typing
^
if the channel is muted
They aren't
oh the messages are just taking time?
Why you specifically, though?
they're still sending messages every so often
Y'alls discord is slow
ah lol
ah okay
It's not typing it's being deleted
do we not have @loud gyro in here?
rofl the bots all got levelups
Dyno would sort this out in like 1 command
Dyno is trash
it's alright
He tried at the end
Dyno does a good job sometimes
also @empty flint if it's not available in BuildTools, guess I gotta download the CB JAR and manually install it to maven local right?
Not really sure what that was, but we should be good now.
It was quite comical.
My mommy doesn't like me, you happy now? π€£
Literally sitting here in a lecture and I look over and I see I have 150 pings a minute.
I got 14 π
i hope ur phone was on silent π¬
Lmao imagine being in a lecture and your phone legit on loud exploding
Yeah
Oh hmm i actually don't know, never tried that xD
and this is why we don't use Java lol
hes using kotlin
It turns out
yeah I've ran in to NPEs using Kotlin before
You can't actually do what im trying to do
because opening a book and quill is client side
not server side
https://i.gyazo.com/f45988c921d314a899fd133b8029f06a.gif also me and intellij are gonna fight, why the fuck is it doing this
you'll get an NPE if you put your init block and call a method that uses a variable declared underneath the init block
(don't ask how I know that lol)
@remote goblet you see that faint line all the way over to the right? that's the maximum length a single line can be before it'll wrap the line
you can increase it in settings if you want
I think the default is 80 chars
but I have mine set to like 120 chars because I write way too many one-liners
implementation project(':BlockyNmsLib:v1_12_R1')
implementation project(':BlockyNmsLib:v1_13_R1')
implementation project(':BlockyNmsLib:v1_13_R2')
implementation project(':BlockyNmsLib:v1_14_R1')
implementation project(':BlockyNmsLib:v1_15_R1')
implementation project(':BlockyNmsLib:v1_16_R1')
implementation project(':BlockyNmsLib:v1_16_R2')
Any idea how to add implementations dynamically?
Something like project(':BlockyNmsLib').subprojects().forEach...
ah lol almost had it
project(':BlockyNmsLib').getSubprojects().forEach({ implementation it })
noice
project(β:lolβ).getSubprojects().each{ project-> dependencies { implementation project}} 
what kinda rubbish is that
also why is your name Conclure<?>? it should be Conclure<*> xD
because my name is King Circle (Jerk) II
pff imagine having generics
wdym
the default is 80 chars for a reason ._.
paper mc on #150 rel, have they managed to fix the latest dupe or nah ?
which as the piglin one does not work on paper only spigot
i haven't watched how they do it i just know i didn't want to update just yet bc of that
if it is that one then it has never worked on paper
nvm just checked dupe fixes plugin, it was patched yesterday already
it just works
@prisma wave boi generics is so fucked up ngl
But it has its functionality
static typing is so 2003

no need for generics
doesn't compile
π¦
yes
this is why you start with dynamically typed languages when you make your own ones typically
but on the other hand constraint solvers like haskell's type checker are incredibly impressive
it is
that's the real, pure, mathematical functional programming
clojure is vulgar
gotta learn that
@prisma wave new circlejerk? π³
absolutely
haskell mitten
haskell and rust are the most circlejerky languages
anyone can give me a link to a tutorial or something where I could start learning how to use sql? I'm trying to not use yaml files to save data xD
omg the thought of this server going all the way from java through kotlin and clojure to haskell circlejerk is so unbelievably funny to me
I mean it's basically impossible because this is still mostly about mc and haskell is very hard and bound to a lot of theory but still
sounds brilliant
this has got to be the worst thing
anythings possible
trying to do OOP in a pure hardcore functional language
jni isn't oop fortunately
π
oh well i am wrong
I'll tell you, if you start doing this now, you won't get useful results done for another 3 years
first haskell plugin
Imagine what kind of cool stuff we could all do if spigot didn't exist
π¦ π¦ π¦
:haskellmoon:
> Internal compiler error. See log for more details
uh oh there's a paper called "bridging the gap between haskell and java" from an uni here
oh no
How do I revert IntelliJ version lol
they're like polar opposites lmao
imagine if spigot didn't exist
@prisma wave What's wrong with spigot?
:monkaS:

and won't work with haskell
@prisma wave How many more fucking languages do you need it to work with?
all of them
Like, chill out man and just choose one already
i choose haskell
Next thing you're gonna try is create a plugin in html
π€£
hmmmmmmmm
expanding ur knowledge of languages is nice
i choose haskell
@prisma wave not an option. pick something else π
LMAO
make an html interpreter that converts to java or something
π³
expanding ur knowledge of languages is nice
@onyx loom True, doesn't mean spigot is bad if it's not the tool to use in order to expand that knowledge. That's not its purpose
bm is pretty solid at java and kotlin I'd say so "stick to one language" doesn't really make sense as an argument
spigot is bad tho
make an html interpreter that converts to java or something
@prisma wave Why not make a natural speech interpreter that makes plugins? Then we're all fucked.
choco on its own doesn't do that
if you don't already have it you'll need to work with linux
hold on
=haste
Please use a paste service to share configs, errors, code and long logs.
β’ HelpChat Paste
or wait does chocolatey actually work if you don't touch anything else?
idk
the official guide just says to use chocolatey
I just can't find where it installed to lmao
ghci is the repl
haskell is not giving a good first impression
@lunar cypress what about the stack executable? IJ wants it
haskell is not beginner friendly in terms of tools
Does anybody know what to do about an internal gradle compiler error?
make sure you're on latest version
does it recognise it as a command?
no
well rip
I also used choco but I had to do a bunch of other stuff first
:/
C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.10.1\bin\ghci.exe
here is my installation
wow
the fun thing about haskell is that 80% of its resources and docs are from 1997
I'll be learning it in uni but until then lord knows how
It's quite old and an academic language
It is used in practice as well but it's rather made with the maths and purity in mind than actual practical usage
which differentiates it from lisps for example
yeah im getting that impression
and I know haskell fans would hang me for saying this
don't get me wrong it is definitely usable, it's not a purely academic language
it's used in server backends mostly
I also want to pick up learning it again, but last time I simply got frustrated by the high entry barrier and I couldn't figure out the simplest things
hm does your gradle --version also output
Gradle 6.6.1
------------------------------------------------------------
Build time: 2020-08-25 16:29:12 UTC
Revision: f2d1fb54a951d8b11d25748e4711bec8d128d7e3
Kotlin: 1.3.72
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020
Kotlin version 1.3.72 ?!
okay @heady birch were you drunk when you wrote this code: ```java
list.add(a.substring(0, Math.min(Math.max(j, 0), a.length())) + "Β§7" + a.substring(Math.max(0, Math.min(j, a.length())), Math.min(a.length(), Math.max(0, j + 1))) + "Β§8" + a.substring(Math.max(0, Math.min(j + 1, a.length())), Math.min(a.length(), Math.max(0, j + 2))) + "Β§0" + a.substring(Math.max(0, Math.min(j + 2, a.length())), Math.min(a.length(), Math.max(0, j + 3))));
niall is never drunk π
No he only takes lsd
Beautiful code though. Not that I'll even start thinking about what it does, but simply artistic
You know all the famous musicians also took drugs before they wrote their masterpieces
have you ever coded while high?
maybe
@empty flint nope lol
@lunar cypress you realise that's not all of it right?
he didn't just write code like that once
he wrote code like that three times
I mean, he did say something like "wait until you get to the animations" earlier, and I am on the animations now so, I guess I was warned
Lol
have you ever coded while high?
@empty flint yeah actually. Was not very productive
also, just for a bit of context if you don't know, Niall gave me permission to deobfuscate and decompile KiteBoard
so that's what I've been doing all day
Sounds like fun
@empty flint yeah actually. Was not very productive
@lunar cypress Really? I made some of my best work while high π No idea how it works but it is faster than any of my previous attempts and has not failed yet
I'm sure I could figure out what I did
but I'm not touching that
Then again I did have very unproductive sessions as well I guess
Yeah, did nothing for me
I also tried finishing a project after coming home drunk once but as you may expect it was worse
uh yeah hard pass on drunk coding
@lunar cypress yeah it is, I actually had no idea that deobfuscation was this fun lol
and I'm actually improving KiteBoard's API and other stuff whilst I'm at it as well, so 2 in 1
Oh really? I was being kinda sarcastic
no, it is actually kinda fun, once you get past all the copy and paste crap
it's really exciting just seeing a broken apart project just come together
Man, you must be everybody's darling. Enjoying making sense of other people's messes
haha lol
you do get good satisfaction from seeing something you put loads of effort in to start to pay off
anyway, it's bed time now lol, good night all
Hey all, just joined, I came here with a question, has anyone looked into making a plugin or adding a feature to a plugin that would generate an item non-destroyable in lava/fire, like netherite tools, ingots, blocks, etc.
I was thinking of a nice feature but not sure if its actually possible, has anyone else came across this or tried to recreate it? And as far as I know netherite doesn't have any weird or new NBT tags. Would love to hear some thoughts on this, mention me your opinions π
IIRC, Choco wanted to expose that to the Bukkit API
But it had some strange behaviors, like entities "dying" client-side but they were still on the server perfectly intact.
Or something like that
Could be done with the damage event though, i think
Just won't look as good as netherite
I just went through the ordeal of having to remove all traces of kotlin from my PC and clean install the kotlin compiler π
@obtuse gale You could just assign an nbt to an item and then on lava burn event and shit check if the item has the nbt and cancel it
Can somebody look over this build scan and tell me how to fix this kotlin compiler error?
https://scans.gradle.com/s/dze6oihjetth4
I literally have no idea what to do anymore
im so friking confused now
http://images.virtusdevelops.eu/shareX/ptmyn8bw.png
returns count of 50 but ingame i get like 20 chars..
im so confused
like wtf?
Is there a max amount of chars on whatever your putting it on? Maybe that holographic can only have so many chars
nop
tested
i dont belive length is an issue
i guess i'll have to do more debuging
thats why im confused
I should open source my gradient stuff
Hehe
Guys is SQLite similar to MySQL?
if i print entire text to console:
Count: 48 Text: οΏ½xοΏ½οΏ½xlοΏ½xHοΏ½xoοΏ½xlοΏ½xoοΏ½xgοΏ½xrοΏ½xaοΏ½xpοΏ½xhοΏ½xiοΏ½xcοΏ½xPοΏ½xlοΏ½xaοΏ½xcοΏ½xeοΏ½xhοΏ½xoοΏ½xlοΏ½xdοΏ½xeοΏ½xrοΏ½xsοΏ½x οΏ½xeοΏ½xxοΏ½xaοΏ½xmοΏ½xpοΏ½xlοΏ½xeοΏ½x.οΏ½x οΏ½x%οΏ½xpοΏ½xlοΏ½xaοΏ½xyοΏ½xeοΏ½xrοΏ½x_οΏ½xnοΏ½xaοΏ½xmοΏ½xeοΏ½x%
its right there but no idk where it dissappears
pretty much yeah
SQLite is local,
there are some syntax differences
Oh then if I have figured out MySQL I won't have many issues with SQLite
pretty much ye.
Trying to make gradients in 1.16?
Figured it out about a month ago, took me several days
Not easy at all
And it is also very buggy
How even π
I never experienced that issue myself
Where are you trying to make the gradients work?
In holograms? Do they support hex colors?
They should right
Since entity names support hex colors
if you make extension yes
@heady birch if you're gonna open-source anything, open-source KiteBoard's API
Also I think my old messages got lost in the oblivion lol
I asked if I could show what I've currently got in the kiteboard-api module
could somebody give me a working build.gradle root and subproject file so I could take a look at how to set this shit up?
What you struggling with?
kotlin compiler errors and shit
whenever I add my lib project
it just fucks up the kotlin compiler
e: java.lang.AssertionError: Recursion detected on input: equals under LockBasedStorageManager@7432de87 (TopDownAnalyzer for JVM)
All you need is this: ```groovy
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.4.0'
}
allprojects {
repositories {
mavenCentral()
}
}
subprojects {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib'
}
}
fuck it idk if you know gradle and kotlin very well but here's the gradle build scan: https://scans.gradle.com/s/dze6oihjetth4
if you wanna take a look
Show me your parent build
bruh
I think that was it
lemme try something
I think the stdlib was missing
hooooooooly

dude
try figuring this out when you have no idea how gradle works and the internet tells you the stdlib is included by default
when you include the plugin
fucking hell man
I looked up how to include the stdlib, all the results said it's included if I add the kotlin jvm plugin
like
Ah since 1.4
which has caused numerous problems for pdm
it is included
@prisma wave aparently not
I'm not sure it will be for subprojects
but it might have something to do with gradle using kotlin 1.3.7 to compile for wahtever reason
but if you add the 1.4 plugin, it gets added to that project
I did add that plugin
but yeah maybe not for subprojects, idk
I still don't 100% trust it works
gotta uncomment all the stuff I removed to see if it was the culprit
Β―\_(γ)_/Β―
Please use a paste service to share configs, errors, code and long logs.
β’ HelpChat Paste
@jovial warren https://paste.helpch.at/ebijulifax.cs
this is my root build file
note that spigotApi(latest) is just a function I made that returns the appropriate spigot api implementation, just in case ur wondering.
LOl
ok so it very likely has to do with my code
I removed the src folder and it didn't fuck up the compiler
Ok I found it
why does this work:
object Server : Server by Bukkit.getServer()
but this doesn't:
object PluginManager : PluginManager by Bukkit.getPluginManager()
Any ideas?
@pallid gale why doesn't the HC paste have line numbers smh
Probably either an outdated version or a setting, or both
@empty flint what are you doing lol
just use typealias, no?
@empty flint 2 classes with the same name
it's extending itself
I did actually point this out a while ago
it's like class Server : Server
how does by work?
compiler generated delegation
I understand that completely....
it will override all of the Server methods with a call to the Bukkit.getServer
eg kotlin object BukkitServer : Server { override fun getOnlinePlayers() = Bukkit.getServer().getOnlinePlayers() //etc }
@prisma wave what's typealias?
can you give an example of how it works?
eg typealias PlayerProvider = () -> Player
not sure that's the right syntax
might be a :
but you could then use PlayerProvider instead of () -> Player everywhere
aaah
cool
How does processResources work?
cuz right now it just removes my plugin.yml from the jar
processResources {
include 'src/main/resources/plugin.yml'
filter(ReplaceTokens, tokens: ['name': name, 'main': "$group.$name", 'version': version])
}
most people around here use filter though yeah
you forgot from() I think
@prisma wave
yea you need a from
does it have to have a from() even if I use include?
found this format online as well
i believe so
processResources {
from 'src/main/resources' {
include 'plugin.yml'
filter(ReplaceTokens, tokens: ['name': name, 'main': "$group.$name", 'version': version])
}
}
or something like that
that's how I like to do it anyway
> No signature of method: build_7vjmkwww1pehxex7cyok1owdl.tasks() is applicable for argument types: (build_7vjmkwww1pehxex7cyok1owdl$_run_closure2) values: [build_7vjmkwww1pehxex7cyok1owdl$_run_closure2@526a8b66] Possible solutions: tap(groovy.lang.Closure), wait(), any(), wait(long), files([Ljava.lang.Object;), use([Ljava.lang.Object;)
no closure for the from method
org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String
from(sourceSets.main.resources.srcDirs)
from(sourceSets.main.resources.srcDirs) {
filter ReplaceTokens, tokens: [version: version]
}```
can I specify certain files there?
because I will have more than just the plugin.yml in the resources folder
Circular dependency between the following tasks:
:BlockyDebug:processResources
\--- :BlockyDebug:processResources (*)
eh... what?!
processResources {
from sourceSets.main.resources.srcDirs {
include 'plugin.yml'
filter(ReplaceTokens, tokens: ['name': name, 'main': "$group.$name", 'version': version])
}
}
is it just me who ever since they started using Kotlin, they now write Java code using very strict nullability rules lol
like I'm using @NotNull and @Nullable everywhere now, even when I don't need to
is it just me who ever since they started using Kotlin, they now write Java code using very strict nullability rules lol
yeah not me
I just dont write java code at all
I'm deobfuscating KiteBoard, which is written in Java
@prisma wave nah still getting > org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String error
if @heady birch open-sources KiteBoard, I'm probably gonna rewrite it all in Kotlin lol
the filter method doesn't like it
'filter(ReplaceTokens, tokens: ['name': name, 'main': main, 'version': version])'
ayyy
it worked
finally
first time my plugin jar built
fucking gradle
fucking kotlin
fucking IJ
lol
I swear this was so much faster in Eclipse + Maven xD
Then again, I think this will be more robust
once it works
You trynna start a crusade?
^
And what if I was?
Gradle + Kotlin + IJ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Maven + Java + Eclipse ew
Ur in Slovenia, right?
oof
hey @heady birch, what are the built-in interpolation strategies btw?
nvm I think I figured it out
I'm 30 min away Blocky, better watch out
bitch I dare you, got some beer in the fridge if you wanna just chill
lol
My hotswapping still isnt working :((
Bardy, you're not old enough 
@quiet depot if youve got a sec are you able to help me out with this please? https://www.spigotmc.org/threads/guide-windows-extremely-productive-development-environment.394754/
Im reloading the changed classes but the lil thing saying x classes have been changed isnt showing, and the thing isnt changing on the server
show me ur setup aj
take a screenshot of ur server run config in ij
and make sure hotswapagent is enabled in settings
if ur using dcevm
also ensure youβre running the server in debug mode
@obtuse gale
Piggy, so I think I might rewritte FJ from scratch again ,-,
with java?
Hell no
idc then
I am gonna need help when it comes to modules tho
why tf would fj need modules
I mean I wasnt running the server in debug mode but it didnt seem to change anything when I just tried it then
Bungee
Also where would I look for the hotswapagent in settings?\
gonna make a bungee version, and yes, just the common, spigot, and bungee bs
pls tell me Z:\MapMinigames is ur project dir
o lol
u donβt have the plugin
did u follow the guide exactly?
well obviously not
too much text smh
itβs even in a little box, itβs impossible to miss

yeah that ploogin
was already installed
I think ive done this before
I didnt...
everytime*
alright
So I want to have a handler which handles motds and formats, but not sure what to name it, any suggestions?
formats?
formats yes..
We've got frozenjoin when are we getting frozenleave?
What a comedian
idk what u mean by that, Iβve never used frozenjoin
Have u used dchat?
You need to make a frozenThing for each event
ye
Whatβs the similarity between formats and motds?
its tsill not working lol
and what does the handler do? Is it setting the motd/format on the actual game, or just storing their deserialized forms?
how r u running it aj?
the server
the run config
yeah, how r u starting it
There is none, just both are gonna be objects, should I have them split up? It's going to be like 20 lines per each so didn't want to split them up
It'll load them from config into objects Piggy, and have a method to call them from the events
the run config?
Not really Piggy
Yeah I wouldnβt group them
So I want to have a handler which handles motds and formats, but not sure what to name it, any suggestions?
@hot hullFormatterMessengerTextLord
Just have them as objects, and call them manually in the motd & format handlers
Well yes but I still need something to actually load them, so should I call it a FormatLoader or what?
or just FormatManager
a what
snakeyaml should handle deserializing your yaml into your objects
That'll be a util class yes, but I still need a storage for them
Don't wanna call them from config all the time
Gosh darn cheater
I don't even need a filemanager so kek
well u will if u use snakeyaml/gson
If ur interested, I can point u to the relevant code in papi 3
Yes please
what shokuld i be pushing to run the server lol, neither the debug icon or the play icon works
u use the debug icon (shift + f9)
if it aint working
then Β―_(γ)_/Β―
frosty
so like we deserialize the yaml into a map via snakeyaml
then we convert that to a gson tree
then map that to our object
if i click the reload classes buttons manually it tells me this
which sounds complicated but is done in a single line
well then u havenβt changed any classes 4head
Hey @ocean quartz, what markdown standard does your MSG framework follow?
or
I have changed classes tho
maybe itβs something todo with output dir
u exporting the jar directly to the plugins folder?
jar.destinationDir(file("$rootDir/server/plugins")) mhm
dude Iβve got no clue sorry
alright all good ill keep looking, thanks
This is what I have rn @quiet depot, thoughts? https://paste.helpch.at/afasugobaq.shell
In the ExpansionUtils in Javascript-Expansion, I've made 2 utils to convert from Nashorn JSON -> Map & YAML -> Map. No idea if you can use them as reference π€·
(This is the general structure, not considering what will be in what module)
Looks (somewhat) messy on the code, but it's my only choice to make it work
@hot hull not a bad structure
as long as you don't include any disgusting Java code in the project we should be good π
Well I have to 1 class
we can find a way around that
Hopefully :((
thou shalt not publish thy software with a mixed codebase
rule ~5 in the Laws of Programming xD
my text dissapears
Is there a way you can specify a latest version for the gradle version?
I swear, having to pick apart all of KiteBoard's Java code has given me a new-found respect for what the JetBrains team have pulled off with Kotlin
So i don't have to change it for every update cause I'm lazy
Is there a way you can specify a latest version for the gradle version?
where are you even specifying the Gradle version?
gradle-wrapper.properties
you can't just have it auto-update the wrapper for you lol
Well I mean
it's literally just gradle wrapper --gradle-version GRADLE_VERSION --distribution-type DISTRIBUTION_TYPE
and it's not like Gradle updates that often anyway
so stop being a lazy shitbag and just do it manually like normal people xD
;((
@empty flint Discord's
What would be the equivalent of this in gradle
<modules>
<module>bootstrap</module>
<module>common</module>
<module>connector</module>
</modules>
I tried pasting in but it doesn't convert it
k
@quiet depot can we get a multi spinerino pleaserino 
include (
"bootstrap",
"common",
"connector"
)```
@empty flint Discord's
@ocean quartz Any chance of using your framework in JS for web development?
Yea papi3 doesn't have that
ah settings.gradle
@empty flint the commands one?
yeah
iirc mf isnβt abstracted, so short answer no
hm
Wait commands one? I thought we were talking about the markdown xD
no sorry the msg one, yeah
because you canβt abstract strings (command args) & web requests into the same object
Also piggy I started the rewrite to make it abstract
sure
So when it's abstracted you can use it in JavaScript as well?
no
ah well
i mean
So here's what I wanna do
And Blocky it uses CommonMark java, which i modified to be like discord, it actually turns it into HTML, if you search well you'll prolly find CommonMark js too
Oh really?
so you interpret the html that gets parsed into color codes?
or am I thinking of someone else
or sorry the markdown gets parsed into html and you convert that to color codes?
Yeah xD
Then bungee gave me headache so i made it with packets
Though i made it in a way that i can add adventure support pretty easily
Does IJ have an option to hide certain dirs?
oo
@empty flint No, it normally parses to HTML i made it parse to MC
matt youβre shooting yourself in the foot by not using adventure now
it has multi platform abstractions (like for commandsender)
you really should use it
it doesnβt make sense not to
yes
great :3
Yeah, like i said i can easily do it now, so i might add tomorrow or something

I made it pretty abstract this time just for that
@empty flint No, it normally parses to HTML i made it parse to MC
@ocean quartz Ah got it. I kinda need it the reverse way anyhow. I want to make a website where if I enter a valid MC color coded string (and here I want to support your markdown stuff as well), it gets displayed like it would in Minecraft
For customization purposes
And so I need to parse the color code with JavaScript and output html that gets formatted accordingly
anyone ever looked into Niall's animations for holographicextension, i cant seem to get text to work properly like my text just cuts off: code: http://images.virtusdevelops.eu/shareX/zne9dtgu.png
text: HolographicPlaceholders example. %player_name%
what i get: http://images.virtusdevelops.eu/shareX/il7hjop3.png
but that shouldn't be an issue I don't think

