#dev-general
1 messages ยท Page 579 of 1
Yeah that's the wrong channel my dude. Try contacting the author of Skywars?
where exactly
I don't know the guy, find out what discords he is on or check out his spigotmc page for clues on how to contact him
sry, no ๐
What't the proper way to prevent code duplication when using an interface?
I have two abstract classes that both implement an interface and both do it in the same way. What's the best way to handle this when I want those implementations to be final?
depending on the case, you can make one abstract class extend another that implements the interface
I can't put the implementation in the interface because it does not allow final methods and I can't make the interface abstract either.
or why not just use an abstract class instead of an interface?
because both abstract classes already implement another class that I cannot change
Lmao
๐
From what i heard it's buggy
SlimJar isn't though ๐
Is SlimJar that project of Brister Mitten's ?
Thats PDM, SlimJar is made by Yugi with Matt's help
Gotcha
Yeah, slimjar won't work for me I don't think
at least not for kotlin, right?
Because
// this needs to be ran before you reference your dependencies
ApplicationBuilder.appending("MyApplicationName").build()
Hmm
Oh do you guys know how to pass a common function from the root project to all its subprojects in Kotlin DSL?
for ex my Bedwars plugin, which is 8131 lines of code (since i dont think comments affect jar size), which shades in a scoreboard lib due to it not having a maven repo, shading my own lib since I need it the same time I run ApplicationBuilder.appending("MyApplicationName").build(), and also kotlin, which is only 2.5mb
kotlin appears to take 1.5mb
What's the spigot limit?
"Kotlin" isn't shaded, it's compiled to bytecode what you shade is the std lib
So if you do it in the begging without using std functions it's fine
It works the same way as spigot's feature but we actually proxy things like you're supposed to
ye
but theres also the intrinsics thingy that always throws the errors
idk the exact name
Intrinsics is part of the std lib
@old wyvern Do you happen to know how passing functions to subprojects works in Kotlin DSL? There's tons of examples in Groovy but I can't find anything for Kotlin
cant u just use a property or ext or whatever its called
ye
or else maybe a companion object
Yep, I made it all myself
I'm very proud of it
yeah poor pdm made by yugi
Yeah PDM is dog
๐ฅฒ
plugin derp malfunctioner
I need to pass parameters, don't know how to do that with properties/ext :/
SlimJar
JarSlim
What was that config management api called again?
Turns out I do need it, Bungee doesn't seem to use YamlConfiguration ๐ฆ
yep thanks
With placeholder API, should I not use database queries if the data is unloaded?
Oh wait nvm
project#extraProperties#set
guys, how to do falling blocks in java plugin?
Yeah I got that far but how do I access that function?
How is it called from the subproject?
.
Then use myProperty or whatever you named it
@empty flint
I'm trying to upload a 1.19 MB Gif, and it still says the file is too large, do you know why?
What you're saying doesn't make sense. I want to pass a function, not a val
also, project.extraProperties.set doesn't exist either
Upload to imgur, and then embed the imgur on spigot
How do I embed it?
[IMG]url[/IMG]
send me the gif link
Capture the function type lol
Dm or here?
Here
Yeah I guess I'm just too stupid for that
What's that?
A gif of a gif
Your gif .. on the spigot page?
Also seems it was project.extra.set
and to set in rootProject, I can just go extra.set("someFunction", ::someFunction)?
On my page?
Yes
the spigot page not yours, how would I access yours? lol
direct link
Spigot's wysiwyg editor has an image option, just use that, it inserts the image for you
That's a link to the album containing the gif, not the gif url
^
@old wyvern
Am I doing this right then?
fun deployToPluginsFolders(proj: Project, serversLocation: String) {
val deployToServers: (Project, String, String) -> Unit by proj.extra
val isBukkitPlugin: Boolean by proj.extra
val isBungeePlugin: Boolean by proj.extra
if(isBukkitPlugin) deployToServers(proj, serversLocation, "bukkitServers")
if(isBungeePlugin) deployToServers(proj, serversLocation, "bungeeServer")
}
I am declaring the deployToPluginsFolders function in rootProject and adding it to extra, then in the subproject, I have properties called isBukkitPlugin and isBungeePlugin and such, so to get those from the rootProject function, I need to pass the project in the proj parameter.
Is there a better way to do this?
Can I tell the root project that these properties exist in every subproject, so I don't have to pass the project object as a paramter?
@obtuse gale im willing to try the plugin that you are requesting in #882530561141375026 but you will need to add me, i cant send you messages or even sending a friend request
please dm me when you are available
@half harness Do you know if theres a way to publish multiple modules from one project? Like if i have a gradle api and base module can i publish those both from one project?
nope, im stuck on it too ๐ (an api separate from my plugin)
the main issue was the nexus publish plugin
but without the plugin, I have to release & close it manually
oh dang, its not that easy?
ยฏ_(ใ)_/ยฏ
btw this is what im talking aobut
ya i got it from context ๐
alr
it throws an error when applied in a module
which means it only works in the base module
but that means that you need to run the gradle tasks in the base module
so unless you can find out how to set the jar being built while publishing, it won't be posisble
but again, u can also just do it manually
ugh
via the dashboard and 2 clicks
mhm โน๏ธ
https://stackoverflow.com/questions/58205687/maven-publish-plugin-gradle-only-publish-specific-module I found this but has no answers D:
since (i think) there's two possible solutions to this problem:
- Make https://github.com/gradle-nexus/publish-plugin work for submodules
- Only build a certain module while running the publish tasks on the base module
but I can't find out how to change the artifacts being published :/
hm
@humble silo ๐
altho im still confused
lol
publishing {
publications {
maven(MavenPublication) {
artifact sourceJar // Publish the output of the sourceJar task
artifact 'my-file-name.jar' // Publish a file created outside of the build
artifact source: sourceJar, classifier: 'src', extension: 'zip'
}
}
}
i have no idea what you'd put for artifact sourceJar and the line below the line below that line
oh cool! ok ill try that in a bit
alr lol
Made a project this week with the Kotlin DSL instead of Groovy. It's actually kinda cool.
I love it, no more random warnings like groovy
oh god, ya its so much better
Idk how you do it in groovy, but i may have gotten it in the kotlin dsl, pretty sure its just about getting the right source component thingy
๐ฅฒ
whats it in kotlin?
honestly some dynamic typing is kind of nice when its just a build script
Very funny
I dont think its particularly better, but at some points kdsl seems like a bit of a hassle
gradle python soon??
gradle xml soon
That's just Maven with extra steps
gradle lua ๐
gradle elara
graskell
no.
ok i spoke too soon evidentally
dependencies = [ implementation "abc" "2.5.6"
, compileOnly "efg" "46.7"
, compileOnly "wefwef" "46.7"
]
Oh god
oh my
๐
Thats looks kinda nice tbh
Now then, how does one implement a language suppourt in gradle
@half harness Might worth reading https://github.com/gradle-nexus/publish-plugin/issues/81
o
ok well the issue is(i think) i cant access the java component of the subprojects, which in the kotlin dsl is what you publish, so if i could get the publication into the sub module i could get it to work(i think), but that seems to be what theyare talking about in the issue matt posted
mhm
lol can you create like abstract tasks in gradle?
that would be weird but could work
how do you call tasks in gradle? can you do it like methods?
like if i wanted to call task "a" from task "b"
can you do that?
You cant call it exactly
But you can depend on another task
can i get a value back from that task?
I kinda got something to work but its pretty terrible design-wise
Uh, tasks arent supposed to return values afaik
Are you sure you dont just want a normal function?
Dang, im kinda just spit balling at this point, i dont think a normal function will work though because i need to be able to access it in subprojects
brb
You can set it up as extra functions in your subprojects
Or access the function from the rootProject itself
oh ok cool, ya ill try that
I migrated my account today, so do we get a cape or nah
ye
but u have to enable it
online
what's the preferred yml lib for configs
it's annoying that bukkit won't keep comments around when saving
well I personally use Matt's stuff, this will also not store the comments. That might be a yaml problem. Also apparently people say that Configurate is a lot more better. so maybe try that? Never used it tho.
here's the link https://github.com/SpongePowered/Configurate
oo thanks, i'll take a look at it
It won't store comments? 
when you set something it doesn't
it only parses values
not comments
you'd have to specifically go out of your way to read the entire file
Wait which one are we talking? Mine keeps all comments, Configurate also keeps all comments
wait what? I could swear it didn't. I might be going crazy
ohhh. it might be when there are missing values from the file
and it needs to add them
like when I add a new value in the code but don't add it in the file
With which one? Mine?
yeah. let me test
It always adds new values to files, if the new value has comments it'll also add the comments
you might've missunderstood the issue
the problem is the edited/added comments
that are added manually
by the user
as you can see I added 2 comments up there and commented a value
and it basically set the default values and comments
so my #this is a test comment and the other 2 are gone
Oh yeah manually added comments disappear only programmed ones stay
โน๏ธ
yeah. that's what he's looking for
I don't think it is, Bukkit if you save a value through code it'll also remove all comments
Also I think configurate works the same way and won't keep manually added comments either (could be wrong)
Yes, every comment
yeah. Matt's also removes them but reads them I guess.
Mine doesn't remove default comments
that might be good enough for me
๐
Neither does Configurate
gimme a link to yours matt
there's no wiki for it
There is no documentation for it, just use Configurate
no wiki tho
its a fork of ConfigMe tho
;o
tho it has quite a bit changed to it
repositories {
maven("https://repo.mattstudios.me/artifactory/public")
}
dependencies {
implementation("me.mattstudios:triumph-config:1.0.5-SNAPSHOT")
}```
"https://repo.triumphteam.dev/artifactory/public" ๐
Just a proxy, both work
oh. so same shit. alr. thought you're only updating them there now.
Nah they are the same repo
Cap
iirc spigot bumped snakeyaml
so supports comments on nodes also
snakeyaml may support that
but the bukkit config system will yeet them because it doesn't, it hasn't been updated in literally ages
Oh crap
essentially you would have to either extend the bukkit config system to support it or make your own lol
or use a lib :^)
Or hard code everything
configurate 
๐
๐
Emily did you ever get a chance to test the fabric mod? I think you said you made it
Not yet, I got home a couple hours ago and I'm doing stuff yet

Also feel free to @ me ๐
@obtuse gale Okay
๐ฅฐ
hello??
Hello and, again, welcome to the Aperture Science computer-aided enrichment center
ASCAEC
Good morning, and welcome to the Black Mesa transit system
This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel
The time is
8:47 AM
Current topside temperature is 93 degrees with an estimated high of 105. The Black Mesa compound is maintained at a pleasant 68 degrees at all times
how i can install 3 java (16-11-8) in a VPS?
1:10am
This train is inbound from level 3 dormitories to sector C test labs and control facilities. If your intended destination is a high security area beyond sector C, you will need to return to the central transit hub in area 9 and board a high security train
okok but answer
.
sdkman
ty
@ocean quartz i managed to get the plugin working with slimjar, thanks for the help.
There seems to be some delay however when slimjar initiates. It doesn't seem to be too long. Hopefully your pr helps with that for next release
Hey im trying to serialize/deserialize packets
I looked at the way ProtocolLib clones packet, and came up with this
public static byte[] packetToByteArray(PacketContainer p){
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
ObjectOutputStream oout = new ObjectOutputStream(out);
oout.writeObject(p);
return out.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static PacketContainer byteArrayToPacket(byte[] p) throws IOException, ClassNotFoundException {
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(p));
return (PacketContainer) in.readObject();
}
However this doesnt seem to work with PacketPlayOutLightUpdate and a few others
throwing this exception while deserializing
serializing seems to work fine
Is there any inbuild PacketSerializer in ProtocolLib / is there a obvious error in my code?
My PR fixes only compile time resolution
I can try PRing one for faster download time but idk how i'd do that
did you already try parallel?
i think its better in the long stretch
even tho bandwidth is limited
im soryr
GGGS
ok
ok ok
did you get it?
or no
idk if it works for central
but it should
as its about the same i think
ohh
wel
well see
all i did was apply the maven publish plugin to sub projects and then put all the publishing stuff in there
i havent done anything with the signing or nexus yet, so idk if that part will work
but it publishes to local just fine
I think it is, idk though i need to go check it
resource packs will be the end of me ๐ฆ
ye, #dev-general message it should work, just that one plugin won't
๐
ok @half harness whats the command to publish to maven central again?
with or without the nexus plugin?
with
gradle publishToSonatype closeAndReleaseSonatypeStagingRepository
oh cool
great thanks
well its not throwing an exception immediately
uhhhh
did it do it?
lol
E N T E R P R I S E software
how do i check if it went up again?
wheres the staging place thing?
lol
U GOT IT?
I THINK
NO Way
HOW
I dont think it published the actual jar
got the sources and javadoc stuff though
oh
still though
it got most of it
well the sources are here
Im actually seeing everything that should be here
idk
but is it in maven central?
or do i have to go to the sonatype website and hit a release button
or smth
if its staging, then no
i think its close & release
drop = cancel/remove
where here?
uh
is that not the page?
are you in the repositories or staging repositories tab?
o
Hmm
no repositories in tehre
weird
Well it obviously did something because part of it is there
but its not in the staging repositories
lol wheres that?
no like on the sidebar ;-;
the search thing?
this
Ok well i see it up there, so something got published, but idk whats happened now
o
p
t
u
v
w
ima just wait and see if it pops up in mvn search in a couple hours, it probably wont, but i need to take a break lol
what artifact r u looking for?
Excuse me we were in the middle of a conversation
^
^
my bad
Mind your manners
rip
Just don't let it happen again please
alr gn
It might actually be the case that the -SNAPSHOT on the end of the version is causing it to publish to snapshots instead of staging... ill try it again i guess
Yeah you can't publish a snapshot version to the main one iirc
well lets see if this works, i really hate stuff like that though, where the version name determines where it goes... seems like someone could just break all conventions and screw stuff up but idk
like i could probably do SNAPSHOT-1.1 and it would work
or something
are instanced worlds possible with multiverse?
@half harness hope this doesnt wake you, but i got it working... ima push my project to github and send it here if you want to look at it...
ok heres the project: https://github.com/yakclient/mixins
What i did was apply all the default plugins to the root project, then the signing, maven publish and kdocca to the sub project i want to publish. All of the publication stuff goes in the module you want to publish(with signing and the sources stuff) and then the nexus publishing info goes in the root project build.gradle.kts....
To then publish you would run "jar clean <MODULE>:publishToSonatype closeAndReleaseSonatypeStagingRepository
I think thats it, not so different but kinda annoying
Might be luckier asking in #general-plugins
Hmmm.
clearly
Sooooo. I have a custom enchant, I am overriding the setDisplayName(int level) method and yet my enchanted item has no custom lore or anything for the enchant. Am I supposed to manually add the lore when I enchant?
override fun displayName(level: Int) = "&3EName ${convert(level)}".toComponent()```
I used the ItemStack#addEnchantment method to add the enchantment btw.
the enchantment is there btw. I used the /minecraft:data command to check. also it glows.
ok
Blitz go sleep
I'm afraid that is not an option
An order that I have to disobey
Yes, you have to add it to lore @static zealot
Imagine allowing plugins to add their own enchantments but not display them to the client smh
I mean, it's not allowed to begin with lol
is it not? ๐ค
Is either that or bukkit doing it, kinda sad that we have to use fucking lore
Nope
That's why you have to use reflection to register enchantments
great
Yes, you need to add it yourself
Has anybody used the mojang-mappings with gradle before?
With paperweight and fabric and forge yes
Is there any plugin that overwrites this? https://prnt.sc/1s1s1j1
I wan't it to be somthing different
i have a question . I want to refund my nitro and i submit a request and discord automatically sent me a email to which I must respond
. I respond but they didnt sent me nothing . That was yesterday. If anyone know please respond (sorry if my english is bad but i dont speak english).
I thought they were supposed to be used as an alternative to using the versioned Craftbukkit shit but it's literally the same, just with readable names. How is that supposed to help write an API that is not versioned?
But it doesn't do anything for not packaging your plugins for different versions if you want to support different versions :/
Yeah
Well
I think thereโs a gradle plugin that would reobf
And then youโd use a multiproject setup ofc
well f me, I hate having to re-do all my nms methods when a new spigot version comes out...
The trick is not using nms 
Yeah, well, despite what md_5 claims about APIs and all that other 'never use nms' bullshit, some things can't be achieved without NMS...
pr to paper 
SpigotMC doesn't allow Paper-only plugins, I don't think
and I am not getting around NMS by using Paper and still having to do NMS...
well pr to spigot then?
good joke
does that mean it also won't work in enchantment tables?
I think I just figured out how to do my NMS without multimodule projects...
does it start with r and end with eflection?
Kotlin objects seem to only get loaded when they are accessed, right?
So before that, they don't have to align with the classpath
which means I could call the appropriate NMS implementation object using reflection, and don't have to reflect the actual versioned methods and classes
Let's try ๐
And do what with it?!
Indeed
welp. fuck.
You can make that work yourself though ofc
yeah. it is just more work I Don't want to do
and research. I spent my past few days just reading hundreds of posts and watching a ton of videos (those were just for custom resource packs and how to make them)
I mean nms itself is not versioned and not all of the game is changed between major versions so some code will be intact when changing versions
Not all of it of course, but depending on what you use exactly some things don't change for years
CraftBukkit is still versioned ๐ฎ
would listening to this event PrepareItemEnchantEvent be a good way of adding custom enchantments to enchantment tables?
Sure
oh cool : https://search.maven.org/artifact/net.yakclient/mixins-base/1.1/jar, doesnt actually show up if i just type in my domain though... weird...
oh yeah. got like 6 or 7 hours of sleep.
I'm not tired. I just want to die in general. xD
Damn, I still have not started with the competition
Smh
I started but ain't even got 1 feature fully functional yet. and am working on 2 at the same time. and it is pain.
a lot of stuff I never had to deal with until now. I've probably read over 100 spigot posts and other stuff for resource packs
so it looks like I can't actually add more enchantments but rather I have to override an offered one. now time to see which, why and how to override.
??
Ah
isn't like spigot events n shit based on nms?
basically
spigot mods the server and adds some lines to dispatch bukkit events here and there
hello
like my server is currently vanilla and has been like 1 month old with lot of progress
i want to change it to spigot
will it affect anything
uhmm
probably not, but better make a backup
better safe than sorry
in any case, it should not break anything
well it is like a lot of gb
around approx like 3 gb of world file
umm ok
cus in google it says that some farms of mc mechanicism and mc physics dosent work in spigot
or paper
man I be getting 1hr of sleep after coding for like 15 hrs and then I be no tired for like the next 24 hrs
what
me here who dosent knows how to even download a plugin and where to put it in the folder thinking to code plugins f me
coding does not make you cool
if you get enough practice, you'll get there, eventually
how many yrs experience do u have ?
I was lied to!
Speak for yourself
๐ง
well, in general, about 2-3 years, Java on the other hand, probably around 1
I made a plugin once and everyone clapped, including the bus driver
lmaooo
Sorry I can't see it
Holy mother of... I just talked to a colleague of mine at work who recently got into Kotlin.
He says he's coding all of his classes with only members and no methods, and adds the methods in as extensions separately
Nice
nah.
Okay pewdiepie
It's not a joke for non-legal reasons ๐
Actually .. some of Kotlin's official code does that too, to some extent
I forgot what the convention says though
Just throw the idea of conventions out the window
Yeah
Do what makes you happy, not what others deem convetional
I think it's good to keep conventions in mind but not follow them religiously
That's why I use static every chance I get
Even in kotlin, I just pop that Jvmstatic annotation, for funsies
Oh my. I want to die
The past 3 hours of my life is the reason why you debug your code and test hypothesis my friends.
I've just wasted 3 hours working with an event thinking it does what I wanted when it actually did something else
L
is it possible that I cannot add multiple versions of the same dependency into a project?
That's how maven/gradle works, yes
well damn there goes my idea for a non-multi-module project build...
you can always put the dependency jar files in a folder and add the folder instead
since those will inherently not be maven modules
but it's ugly
Why would you even want that tho
Not sure what you mean... How does it make any difference if I add a jar file from a repository or from a file? Doesn't gradle still look up the pom.xml in the jar file?
ew
and a jar file may not even have any pom xml
Does that work with a compileOnly jar file as well?
I guess I should make submodules then. Frick.
the proper way
Personally I use dommodules
what are dommodules?
I am creating vehicle plugin, the current stage I am at is handling collisions with blocks
the way I am steering the vehicle is through velocity
what I need is somehow detect when my vehicle collide with wall of blocks
so for example I can damage it/ slow down its speed
custom collision class?
wdym
There's tons of resources on how to do collision checks properly, chances are, there is an API for that already out there
yeah
but shouldnt it return false?
because nms is probably already preventing from hitbox collision no?
??
bass gets triggered at his link ^
ty ๐
also do I need the jar 
Well thats what i do, guess you could use build or smth though
Well its clean the jar right?
wdym?
Idk try taking it out, thatd just what works for me
alr
What r u publishing again?
Oh cool,
(โฏยฐโกยฐ๏ผโฏ๏ธต โปโโป
โฌโโฌ๏ปฟ ใ( ใ-ใใ)
Why does the client save the server list as NBT 
I think the only way to check if entity collides with block is through that method?```java
public List<AxisAlignedBB> getCubes(@Nullable Entity entity, AxisAlignedBB axisalignedbb) {
ArrayList arraylist = Lists.newArrayList();
this.a(entity, axisalignedbb, false, arraylist);
if (entity != null) {
if (entity instanceof EntityArmorStand && !entity.world.paperConfig.armorStandEntityLookups) {
return arraylist;
}
List list = this.getEntities(entity, axisalignedbb.g(0.25D));
for(int i = 0; i < list.size(); ++i) {
Entity entity1 = (Entity)list.get(i);
if (!entity.x(entity1)) {
AxisAlignedBB axisalignedbb1 = entity1.al();
if (axisalignedbb1 != null && axisalignedbb1.c(axisalignedbb)) {
arraylist.add(axisalignedbb1);
}
axisalignedbb1 = entity.j(entity1);
if (axisalignedbb1 != null && axisalignedbb1.c(axisalignedbb)) {
arraylist.add(axisalignedbb1);
}
}
}
}
return arraylist;
}
but not sure how to use it
that rather looks like collision with other entities
any idea
how to check if entity is colliding with block
and the result of that would be change in velocity
They removed simon again :(
Who's they and who's simon?
simon something something these nuts / mah dick / etc
cough
for (Entity ent : list) {
}
cough

I mean I want to get the block the entity is currently colliding with if it is
well thats just an improvement of ur for loop there
why loop through entities though
thats what ur doing
do you want to just check all the blocks the entity overlaps with?
what exactly are you trying to do lol
i am very confused
what
lets say you have armorstand
you are applying velocity 3 3 3
to it
so it is starting to move in direction
ainโt no way
Dark mode
๐คข
eclipse's dark mode is like the worst dark mode
lmao
every IDE in existence does exactly what's listed there in the pros
they did say pro: compiles code
๐
i hate this class so much
jesus man
A lot of schools typically teach to use Eclipse.
Is that like intro to CS or something
yes itโs like a CS tools class
a git class is teaching you about.. eclipse?
not git class just cs tools in general
and if it will face the obstacle on its way it will stop(collision moment)
o ok
but itโs a joke
I want to hook into that moment
i was taught html in windows notepad
are you teleporting the entity instead of applying a velocity or something?
and those computers had notepad++ on them
lmao
we were just taught to use plain notepad
if you just use the velocity it'll automatically handle collisions and everything
I am applying velocity
Yeah I know
but I need to keep track of the moment it hits the wall
if the velocity on an axis suddenly hits 0 it has hit a wall
lol what, jank game
remain constant
sometimes i think my code is bad, then i see spigot plugins with 5000 lines in their main class
even if an armor stand were pushed directly up against a wall it technically wouldn't be colliding with it since the game nudges it out of the wall, so I don't think there's really a reliable way to check that
thats what's the issue I am struggling with
you'd have to get its current position, add the velocity yourself and see if the position between the current and destination has a block between it
I'm guessing you're launching a custom projectile or something using an armor stand to display it and you want it to do something when it hits the wall
I don't think simply checking what blocks it's "colliding" with would work
@tranquil crane What Am I doing is vehicle plugin, I am listening for Steer packets and based on that apply velocity to armorstand player is riding, why I need to know hwne it hits the wall is that I need to decrement the velocity and damage the car
ah
it is necessary
@tranquil crane HI
to make shit look good
hello mittens
Nicoole
I FINALLY DID FAREWELL
:D
gg
Yeah ๐
get the armor stand's current position, add the velocity, if there's a block between the current position and the calculated position it has hit a wall
Btw if you don't want to be interrupted all the time #development is the support channel, this is the meme channel most of the times
COOL PEOPLE CHANNEL
if this doesn't work I'm kind of out of ideas for now
the heck
any idea how final location after applying velocity is calculated?
I'm not entirely sure how the velocity is measured
I'd assume it's either a velocity of 1 is 1 block per second or 1 block per tick, though that could be entirely wrong
The STUPID last level took me about a million attempts because I would always mess up right at the end and it was hard to practice because the respawn point was so far away
So um
hmm
I might have used debug mode to set the respawn a bit closer BUT then I completed it legit
YEAG
AND THE MUSIC
MMGMHMFMSMA
However it was quite frustrating having to do a minute of pain until I could practice the actually hard bit
it do be like that
also I have completed every C side except 6 7 and 8 :D
the first room is the only hard part of it lol
I did it really well, then choked right before the heart and then it took me another 500 tries
Nah the last one sucked imo
oh and the last couple dashes
I'm gonna go play all the c sides rn
you have inspired me
can still use external emojis, unlimited power 
let's gooo
I haven't done 3C/8C in a long while
tfw when gradle decides to ignore the kotlin build options in the build file. f you gradle.
btw anyone knows if its possible to make gradle not run every task when reloading it?
why
not too big of a deal, but i have a task that removes the jar from the server so if i reload gradle while the server is running it breaks things ยฏ_(ใ)_/ยฏ
and i reload it since intellij sometimes just decides to pretend that all my dependencies are gone
why do you need that task even?
saves 5 seconds ๐
of what?
why do you need to remove the jar in the first place?
so that if i make a new version

so that I can put the new one
or if i don't need to test it anymore
it does for me
task copyFile(type: Copy) {
if (!new File("../.TestServers/${server}/plugins/").exists()) {
return
}
new File("../.TestServers/${server}/plugins/${fileName}").delete()
from("build/libs/${fileName}")
into("../.TestServers/${server}/plugins")
include("*.jar")
}
```this is what i use
its been a while since i made that
so
I do the same but I only run my 'delete on server' task before my jar task, so it only deletes right before it builds again
https://paste.helpch.at/gemamemaze.cs i also have this
shadowJar {
archiveBaseName.set(project.name)
archiveClassifier.set("")
archiveVersion.set(currentVersion)
if(project.hasProperty("deploy")) {
val relocationPrefix = hubPluginProject.group
println("Relocating packages to group $relocationPrefix...")
relocate("dev.jorel.commandapi", "$relocationPrefix.command.api")
relocate("me.mattstudios.mfmsg", "$relocationPrefix.mattstudios.mfmsg")
relocate("me.blocky.lib", "$relocationPrefix.lib")
}
if(!isBukkitPlugin) exclude(bukkitGroup)
if(!isBungeePlugin) exclude(bungeecordGroup)
//minimize() //maybe do not minimize lib and klib?
doLast {
copy {
from("build/libs/${project.name}-${currentVersion}.jar")
into("build/final")
}
println("Created artifact ${project.name}-${currentVersion} in ${project.buildDir}\\final\\\n")
val deployToPluginsFolders: (Project, String) -> Unit by rootProject.extra
if(project.hasProperty("serversLocation")) {
if(File(project.property("serversLocation").toString()).exists()) {
deployToPluginsFolders(project, project.property("serversLocation").toString())
} else {
println("Server location ${project.property("serversLocation")} not found! Could not deploy artifact.")
}
}
}
}
o
holy shit
here's my shadowJar task, just add a doLast where you replace the built jar in the plugins folder
https://i.imgur.com/INzJpum.png idk what the second line does but the first and third are redundant
right?
second removes the -all
oh
I mean
tasks.build { finalizedBy(tasks.named("copyToServer") }
task<Copy>("copyToServer") {
dependsOn(tasks.shadowJar)
findProperty("plugins-dir")?.let { dest ->
tasks.shadowJar.orNull?.archiveFile?.let { src ->
from(src)
destinationDir = file(dest)
}
}
}
they are redundant because they match the project version
or tasks.jar if you're not using shadowjar
sooo why do u have it if its redundant 
because the currentVersion and plugin.name properties can be changed
doesn't gradle already have a version property
yes
and project.name is already default iirc
it does, but it doesn't auto-version it
auto-version?
I have a task that increases the version of my build automatically
so I don't have to think about it
what if you test 5 times
oh god
bros doing ci/cd locally
those are build versions. that's fine
๐ฅฒ
patches get a patch version increment, minor updates a minor version increment and major releases get a major version increment
Set the version to the project.version instead?
that too
yea?
then you donโt need an auto increment thing
just increment the version once itโs tested properly
I just don't want to think about the version, when I build a patch, it increments the patch version portion of the version string
so 1.2.3 becomes 1.2.4 for example
oh boy my bedwars would be at like patch 2000 by now
literally luckperms 
o
how often do you think I release shit?!
bedwars v1.0.1582-SNAPSHOT ๐
it's like 2 or 3 patches between minor versions
yea but they like never increment major minor so it makes sense
well
im not good enough to be able to get things working the first time i code it ๐ฅฒ
everyoneโs works differently but normally if you have an auto increment build number you see it like 1.0.3-b2819 or somethjng
but you just said you have it automatically inc the patch when u build or smth?
wath
but the b1282 is usually the jenkins build number not
oh boy
it doesn't increment every time I create a jar lol
separate prod and dev build tasks?
thatโs like eliminating the point of gradle, reproducible builds
well no, just a flag in a build configuration where the same task runs the increment or not as necessary
ยฏ_(ใ)_/ยฏ
That's not my point of gradle. I don't publish my sourcecode. Nobody has to reproduce it.
itโs the point of using build tools in general
closed source ๐คข
Literally the only reason I use it is shadowJar and project organisation. Idgaf about reproducability
Why the hell would I want to publish my code?
It's just for fun anyway
and ugly as fuck
then other people can reproduce your builds /s
so that
- other people can help you fix bugs or add stuff
- so that other people can tell you how to improve your code
- so that other people can learn from your code
I don't care about other people ๐
/s means sarcasm
That's just not in line with my motivations to do this in the first place, idk what else to tell you
it's not supposed to be a learning tool for anybody, nor do I want other people's opinions about my code unless I ask for it
And the entitlement of strangers that goes with providing somethign for free just isn't worth it
if I had a โฌ for every time somebody asked me when I'd be updating my plugins, I would not be making them anymore
No thanks, I'd rather close my code, go about this hobby in peace and be left alone
if you go open source then people can update it for you

I don't want them to touch it, though
it's not theirs to update
the goal is not to provide a plugin or sourcecode or whatever, I'm doing this because it's fun figuring out how stuff works and how to get minecraft to do stuff
now everybody has different motivation and I do understand the appeal of open source software, it's just that in this particular case, I don't share it.
heck I couldn't do this without a lot of open source software, pretty much all of it is.
@prisma wave core c side is hard
What game is that?
Does anyone know if there is an event that clicks on the recipe book?
No, but I think it sends a packet, not sure
I think so too, I want to code a execute a command feature when the player clicks on the recipe book
man did you guys know that plain C has union types?
cause I didn't until today when I was in class looking at the list of keywords
DKIMMMMMMMMMMMMM, My thing is in maven central yet gradle cant find it... HELP
And it exists in search.mvn(https://search.maven.org/artifact/net.yakclient/mixins-base/1.1/jar) but you gotta type in the url directly, it doesnt actually show up in the search thing
how long ago did you publish that?
It's kinda weird, it doesn't show the version here
i think that's where the version goes
should it?
huh
https://s01.oss.sonatype.org/content/repositories/releases/net/yakclient/mixins-base/ its here though, isnt this where it realy matters?
https://s01.oss.sonatype.org/#nexus-search;quick~net.yakclient this looks fine
i think so
and it doest show up here https://search.maven.org/artifact/net.yakclient/mixins-base
why is this so weird
i mean, i dont need it on central rn, so i can just do it locally
but sitll
still*
it would make life easier
oh dang, well thanks for trying! Ill restart IJ and see what happens ๐ค
./gradlew --refresh-dependencies
I have no idea but its still not able to find the stuff
ima just delete everything
The funny number ๐
Celeste
Ah nice
Lol
Hmmm are gradle dependencies inherited from projects if you add the project as a dependency?
If the dependencies are transitive, yes
how do I declare the dependencies as transitive?
for example,
with the api configuration, yes
with the implementation configuration, no
are there any other differences between api and implementation?
You wont be able to access the dependencies of project A in a project B,
where project B depends on project A with implementation configuration
But the dependencies will still get shaded if you use shadow
You just wont be able to call any of those dependencies directly from B
so if PluginLib is my api project, does this make the dependencies of PluginLib usable in the project?
or do I have to declare the dependencies in PluginLib as api?
Yes
so that makes the compileOnly dependency transitive but does not include them in the final jar, did I understand that correctly?
mhm
Anyone know why my empty lines didnt work in deluxemenus?
i try with '' and ""
but still nothing
Wrong channel.
Hm so how does that work when shading?
Specifically with minimizing the shaded jar
Can I specify to minimize the jar with transitive dependencies in mind, @old wyvern ?
If I minimize a project A jar that utilizes the API, does the project that depends on the compiled project A being present just get fucked?
what?
No
Minimize is part of the shadow plugin
Nothing directly to do with dependency management
It only happens on the jar generated by shadowJar task
Time to figure out how to get java on college computers so I can work on plugins instead of actually doing my work 
EZ
I am trying to do this: https://imperceptiblethoughts.com/shadow/multi-project/
But I don't quite understand what the shadow configuration of a project is.
Do you know by any chance?
yeah i got it borzan
Yeah I understand what it's supposed to do but I don't quite understand how to tell it what the shaded configuration of my project actually is.
dependencies {
compileOnly(BlockyCoreSHADED)
}
results in the error
Project :Modules:Minecraft:Plugins:Blocky Debug declares a dependency from configuration 'implementation' to configuration 'shaded' which is not declared in the descriptor for project :Modules:Minecraft:Plugins:Blocky Core.
how do I declare what the implementation with shaded configuration for BlockyCore is?
(BlockyCoreSHADED is val BlockyCoreSHADED: ProjectDependency by extra(dependencies.project(":Modules:Minecraft:Plugins:Blocky Core", "shaded")))
BlockyCore and BlockyDebug are subprojects of the same rootProject and on the same level, yeah
Does BlockyCore have the shadow plugin applied?
yep
