#dev-general

1 messages ยท Page 178 of 1

jovial warren
#

you're not rank 4

#

actually what am I on

tranquil crane
#

My other link got parsed

jovial warren
#

you need to be rank 4 for links to embed afaik

#

except in certain channels

tranquil crane
#

I wrapped it in <> so it wouldn't embed and it still did that ;-;

jovial warren
#

lol

#

does that actually work?

#

also deobfuscating is kinda hard work sometimes lol

tranquil crane
#

Also I'm level 6

old wyvern
#

Embeds work from tier 2

tranquil crane
#

oh tier

old wyvern
#

Level 10-20

jovial warren
#

yeah I meant tier lol

tranquil crane
#

feelsbad

jovial warren
#

me and Yugi are Tier 4 because we're boomers lol

tranquil crane
#

developer role doesn't bypass it either huh

jovial warren
#

@prisma wave is like tier 6 or something because he's a proper boomer

prisma wave
#

๐Ÿ™„

jovial warren
#

YamlWritingTest thonk

#

xD

#

I thought testing YAML writing would be up to the library you're using

prisma wave
#

it is

#

i'm forking a yaml library

jovial warren
#

wow look at you getting your name on more projects lol

#

I mean, my contributions kinda keep going up as well

prisma wave
#

meh

#

it's nothing special lol

#

a few lines changes

#

but necessary for a project

jovial warren
#

I contributed the Gradle section of the README to Paper, a late initialiser for JDA in Lavalink-Client, I updated the staff applications thingy in the FredBoat baymax model, and I contributed to some other stuff as well lol

#

expanding my "sphere of influence" xD

empty flint
#

@jovial warren hey bud, still wanna try out my spigot build tools and server bootstrapper?

#

see how it runs on linux?

jovial warren
#

yeah sure

#

as long as you don't hand me an EXE or a TAR we should be fine lol

prisma wave
#

what's wrong with tars

jovial warren
#

TARs are good, but package managers exist for a reason

#

and package managers handle TARs for you anyway

#

what I mean is I don't wanna have to run pacman -U on this bitch lol

prisma wave
#

i mean i doubt it's gonna be on a package manager

jovial warren
#

yeah ik

#

I'll probably just get a JAR lol

#

make sure to include the manifest though

empty flint
#

here's the command line arguments to run it with. There is no help section yet.
-v <version> (eg "1.16.2", will take latest if left out)
-o <output/server directory> (eg "server", the directory where the server jar will be created and copied to)
--verbose (prints build tools and spigot server output to console if set)
--temporary-buildtools (deletes the BuildTools folder after creating the server jar and copying it to the output dir)
-t <server jar name> (eg "server.jar", target server jar name)
--overwrite-existing (re-downloads BuildTools and the server jar if they exist already, probably don't mess with this yet, haven't tested it much)

#

so run it with
java -jar MinecraftServerLoader-0.3.2.jar -v 1.16.2 -o testing/1.16.2 --verbose --temporary-buildtools -t server --overwrite-existing for example

#

let me know if and how it works, if you encounter any errors etc

prisma wave
#

interesting

empty flint
#

What is?

prisma wave
#

just the concept

#

not tried it yet

empty flint
#

oh

#

yeah

#

The goal is to make a spigot plugin testing plugin for IntelliJ

#

where you specify the version you want your plugin to be tested on

prisma wave
#

looks pretty good

empty flint
#

and it downloads it if it can't find it in the specified location

prisma wave
#

that sounds handy

empty flint
#

and then copies your plugin and runs the server from within IntelliJ so you can debug right away

#

for now

prisma wave
#

seems to work perfectly

empty flint
#

it just stops the server after downloading, signing the eula and creating all necessary files

#

yeah I figure the process of getting the latest build tools, figuring out which commands to run it with, copying the server to where you want it, running it twice (once to sign the eula) and stopping it to then copy the plugin file and start it is such a painfully tedious and boring process

#

coding a thing to make it do that and forcing you do go through that process many times in order to test the code is much more fun ๐Ÿ˜„

#

Eager to know if it posed any problems on Linux

jovial warren
#
public Object b(final Event obj) {
    final String[] split = this.a.split("\\.");
    Object obj2 = obj;
    for (int i = 0; i < split.length; ++i) {
        final Method method = ((Event)obj2).getClass().getMethod(split[i], (Class<?>[])new Class[0]);
        this.b.add(method);
        if (i == 0) {
            obj2 = method.invoke(obj, new Object[0]);
        } else {
            method.setAccessible(true);
            obj2 = method.invoke(obj2, new Object[0]);
        }
    }
    return obj2;
}
```apparently luyten thinks that doesn't need a try catch, or it just didn't have one somehow
prisma wave
#

Definitely could be useful

#

testing on linux rn, seems to work fine

#

for me anyway

empty flint
#

oh

#

cool

#

great!

prisma wave
#

although I will mention that there's already something which kind of does this

empty flint
#

what linux dist (and version mayb?) are you running?

jovial warren
#

he's running Manjaro

prisma wave
#

Arch atm

#

actually

jovial warren
#

wait you're on Arch?

prisma wave
#

wait no

#

manjaro

#

my bad

#

i was on arch a few weeks ago

#

then got bored

jovial warren
#

Arch is really nice

prisma wave
#

meh

#

if you don't value your sanity

jovial warren
#

also @heady birch can you give me the code for the method that takes an Event and returns Object in EventPlaceholderCache please?

#

because I think luyten's been taking drugs or some shit

empty flint
#

although I will mention that there's already something which kind of does this
@prisma wave ๐Ÿ˜ฎ surprised pikachu

#

What is it?

prisma wave
#

@empty flint doubt any of this is actually important but

OS: Manjaro Linux x86_64
Kernel: 5.8.3-2-MANJARO
Java Version: openjdk version "11.0.8" 2020-07-14
#

the spigradle gradle plugin

empty flint
#

oh

#

Java 11

prisma wave
#

that a problem?

jovial warren
#

@prisma wave how did you get that info? uname?

empty flint
#

I tried to run BuildTools with J11 and it wouldn't start

#

interesting

prisma wave
#

@jovial warren just copied from neofetch lol

jovial warren
#

ah okay

prisma wave
#

i was gonna use uname but it's not very pretty

#

@empty flint it only does that for versions pre-1.12.2 I think

jovial warren
prisma wave
#

also a few suggestions

#

my good pc

jovial warren
#

nice A8-7650K lol

empty flint
#

@prisma wave Mitten I am pretty sure your BuildTools could not have run then

#

I added a java version check

jovial warren
#

"@Mitten" xD

prisma wave
#

@empty flint suggestions:

Add support for Aikar's flags (ideally with custom jvm flags specifable)
you don't need to run the server twice, you can just write the eula=true and start it

#

@jovial warren in my defence this isn't my main pc

jovial warren
#

fair enough

#

also defence*

#

you're British, Alex

prisma wave
#

whoops

#

soz

jovial warren
#

xD

prisma wave
#

in my defence i was typing fast

#

and there are too many americans here

#

anyway

empty flint
#

@empty flint suggestions:

Add support for Aikar's flags (ideally with custom jvm flags specifable)
you don't need to run the server twice, you can just write the eula=true and start it
@prisma wave Idk what Aikar's flags is but I will take a look

As for the eula, can you just do java -jar spigot-1.16.2.jar eula=true?

prisma wave
#

@empty flint what's the version checker checking?

#

hm

jovial warren
#

don't think you can do

#

that would really piss Mojang off

empty flint
#
  val javaVersion = getJavaVersionFromConsoleCOmmand()
  println("\nJava version: $javaVersion")
  if (!javaVersion.matchesAny(*JAVA_VERSIONS.toTypedArray()))
  {
    System.err.println("Invalid java version. BuildTools will not run.")
    return
  }
jovial warren
#

well, if I was Mojang, it'd piss me off lol

#

lol

#

that's BuildTools for ya

quiet sierra
#

Do you need to agree to the eula if you didn't write the jar ๐Ÿค”

empty flint
#

@empty flint what's the version checker checking?
@prisma wave can you try doing "java -version" and making sure it's J8?

jovial warren
#

cough md_5 lazy coding cough

prisma wave
#

@empty flint yeah eula = true doesn't work

#

i did do java -version

quiet sierra
#

With no code but the client

jovial warren
#

wdym?

prisma wave
empty flint
#

@empty flint yeah eula = true doesn't work
@prisma wave Then what did you mean by running it with eula=true?

jovial warren
#

I don't think BuildTools will run with Java 11

prisma wave
#

just writing to the eula.txt file

#

it will on newer versions

jovial warren
#

I downloaded the latest BuildTools version the other day and it said "I'll only run on Java 7 or 8" pretty much

empty flint
#

it doesn't match the regex

#

How could your build tools execute?!

#

what the hell

jovial warren
#

that's not a Java regular expression...?

prisma wave
#

ยฏ_(ใƒ„)_/ยฏ

jovial warren
#

actually yes it is

empty flint
#

lol

prisma wave
#

incidentally forcing java 8 when buildtools already does that is kinda dumb

jovial warren
#

it's just a very weird looking one lol

prisma wave
#

buildtools will work fine on newer java versions for newer MC versiosn

#

so there's no need to restrict it

empty flint
#

incidentally forcing java 8 when buildtools already does that is kinda dumb
@prisma wave I was getting errors with BuildTools on Java 11

#

hmm

#

I guess I have to try again then

jovial warren
#

it doesn't force Java 8, it forces either Java 7 or Java 8 xD

#

because my name is King Nitpick I

empty flint
#

Still interested in that eula=true thing you mentioned

#

was that just a guess or how does that work?

prisma wave
#

it's not an argument

#

i literally mean

#

just make the file and write to that

empty flint
#

ah

#

yeah I probably could actually

prisma wave
#

my usual initial setup process is just ```bash
echo eula=true > eula.txt
java -jar server.jar

#

saves running the server twice

#

especially with jvm startup times on a shitty pc

empty flint
#

true

#

good idea

#

ty

prisma wave
#

anyway, trying to build mc 1.8 definitely fails, 1.16.2 is fine

empty flint
#

Can you run this thing again, this time without --verbose and wait for the java version check printout, please

#

the program should tell you which java version it detected

prisma wave
#

With which MC version?

#

I guess it doesn't matter

empty flint
#

doesn't matter

prisma wave
#

Kk 1 sex

#

Sec*

#

Lol

normal talon
#

oh god

empty flint
#

I'm trying with 1.8.8 and it seems to work though, which 1.8 did you try?

prisma wave
#

1.8.8

normal talon
#

mitten are u gonna help me later if u done here

prisma wave
#

On Java 11

#

@normal talon yes

empty flint
#

I think build tools only supports 1.8, 1.8.3 and 1.8.8

prisma wave
#

probably

empty flint
#

Ah

#

lol

#

found the bug

#

it returns from the method and doesn't handle the version check error. But I guess if it works for you, it should work for others on Java 11 as well?

#

I'll try again, maybe I don't have to Java versioncheck it

#

But

prisma wave
#

it does actually detect correctly

empty flint
#

1.8.8 works fine for me so far

prisma wave
#

just the System.exit obviously doesn't happen for some reason

empty flint
#

just the System.exit obviously doesn't happen for some reason
@prisma wave Yep, found out why and fixed it, though idk if I should fix it

prisma wave
#

I would say no

#

Use an actual logging framework and just have it be a warning

empty flint
#

Ah yeah nvm, build tools doesn't build 1.8.8 anymore aparently

prisma wave
#

yeah it won't on 11

#

one of these days I'll remember the markdown named hyperlink syntax and not have to google it

#

eventually...

empty flint
#

yeah it won't on 11
@prisma wave It won't on Java 8 either

prisma wave
#

worked fine for me

empty flint
#

oh really?

#

interesting

prisma wave
#

wait

#

or did it

#

idk

#

maybe

empty flint
#

mind trying again on java 8 for me?

prisma wave
#

not sure i actually have 8 installed

#

1 sec

fluid walrus
#

Idk where to put this

#

But you know the YAML parser

#

You have to go to the Helpchat Parser webstie right?

#

Becuasue if so I can make a script that let's you use the YAML parser straight here in Discord from the bot

prisma wave
#

you can do =yaml [link-to-paste]

fluid walrus
#

Dang it

#

Worth a shot at trying to do something cause im bored

#

XD

prisma wave
#

you could still do it lol

fluid walrus
#

No point if you already have it

jovial warren
#

hey why's IJ throwing a hissy fit about me trying to use Comparator.comparing(Group::getName) where getName is a non-static method in Group, and this method is being called from a non-static context?

prisma wave
#

what's the error

jovial warren
#

non-static method cannot be referenced from static context

prisma wave
#

send the full code

jovial warren
#
final List<Object> list = new ArrayList<>(manager.getRegisteredGroups());
list.sort(Comparator.comparing(Group::getName));
```that's literally it
prisma wave
#

why are you using List<Object>?

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

prisma wave
#

that's your problem

jovial warren
#

ah yes it is

prisma wave
#

you're trying to compare a List<Object> with a method that compares Groups

jovial warren
#

I think it's a bit too late at night for me to be thinking straight lol

#

I kinda just forgot how Comparator.comparing worked I think

#

also the word "criterion" comes in really handy when iterating over criteria lol

empty flint
#

So Java 11 doesn't seem to compile 1.12.2, but aparently works with 1.13.2. I guess that's the cutoff point for J11.

jovial warren
#

yeah probably

empty flint
#

@prisma wave Did Java 8 build your 1.8.8 and could you try building 1.12.2 with J11?

jovial warren
#

first person to tell me what "criterion" means gets a cookie

#

(without Googling ya cheats)

old wyvern
#

Singular of criteria

#

๐Ÿค”

empty flint
#

A criterion is a specific trait upon which something can be judged or evaluated

#

idk if that's proper English

#

But I tried to translate from my mothertongue

jovial warren
#

@old wyvern wow 2000 IQ

#

๐Ÿช

#

there's your cookie, as promised

old wyvern
#

Mail me one

jovial warren
#

lol

old wyvern
#

Im actually hungry atm

#

And its only 4:30am

#

Oof

jovial warren
#

you'd have to send me your shipping address for that

#

or I could ship it to a local post office lol

old wyvern
#

You can probably find that pretty easily

prisma wave
#

@empty flint my PATH was interfering for java 8, lemme give it another go

jovial warren
#

also @heady birch , you used the wrong your in LanguageSettings in fields TOGGLE_OFF, TOGGLE_ON, SET_GROUP and RESET_GROUP btw if you wanna fix that xD

empty flint
#

So aparently 1.8 can be built with the newest build tools

#

the flags "--generate-source --generate-docs" fucked it all up

#

without them it works

#

imagine how long it took to figure that out ^^

dusky drum
#

hi niall

heady birch
#

Hi

dusky drum
#

what do you use to send the packets or is it a secret?

heady birch
#

Nms

dusky drum
#

okay so i need to make nms handler huh ๐Ÿ˜ญ

heady birch
#

similar to how mine works

dusky drum
#

interesting

hot hull
#

Or just don't use any other libs, and have everything handled yourself fingerguns

dusky drum
#

indeed

#

Niall do you handle packets on your own?

heady birch
#

Yes

dusky drum
#

interesting

hot hull
#

You should probably handle the packet nullability

#

Since that'll probably throw an exception if you try to invoke a null packet

dusky drum
#

well i just copy pasted it from somewhere XD

hot hull
#

yea just check if the packet is null and don't send it

dusky drum
#

so basicly if(packet == null) return ?

hot hull
#

yes

#

{} tho

dusky drum
#

okay.

#

why {}?

hot hull
#

cause one liners, ew

#

Atleast for that

dusky drum
#

now lets go rework my entire hologram handler yey!

hot hull
#

also, there should be a space after the if ;((

dusky drum
#

cry

hot hull
#

I will

dusky drum
#

yay

#

so this way i could probably have like 2-3 files for packets and everything huh

#

since i dont have to make one for each mc version

#

but i could make one for each mc version

#

but that way i need to add each spigot.jar to my dependenc

hot hull
#

reflection fingerguns

dusky drum
#

reflection = less files?P

hot hull
#

@quiet depot U alive?

#

Or anyone who's familiar with modules cause I'm once again confused,

I tried adding this at the end of my root build.gradle, however it just shat itself

dependencies {
    implementation project(":common")
    implementation project(":spigot")
    implementation project(":bungee")
    implementation project(":api")
}

Assuming it's due to the fact that I'm not applying kotlin on my root (since that breaks the entire thing)

my build.gradle: https://paste.helpch.at/azizaliril.bash

#

oop I think I figured it out

quiet depot
#

@hot hull why tf are you putting everything in one jar

#

thatโ€™s stupid af

#

just ship separate jars

hot hull
#

:bruh:

quiet depot
#

sorry just realised that was kinda rude

#

pls note, no offence to u in particular, loads of people do the same thing

#

i just donโ€™t understand why

distant sun
#

^

#

even lp has different jars

hot hull
#

Okay so I've seperated them now

#

Why does this break for no goddamn reason -..-

#

@quiet depot You on PC and got 5min? Honestly so confused, I reimport it, and it works, I reimport, and it breaks, :the-heck:

quiet depot
#

on phone sorry

empty flint
#

Why does this break for no goddamn reason -..-
@hot hull What's the error? I have my plugins in one root project with multiple jars, maybe I can help

quiet depot
#

push it and I might take a look later

hot hull
#

Lemme push to GH and you can clone and you'll see, it'll be easier than if I try to explain it

empty flint
#

ah can't right now then, im at work so no github cloning unfortunately

hot hull
#

Okay so I've changed nothing from yesterday, and now modules just aren't recognized. It works sometimes, but then I reimport and it breaks again

empty flint
#

gradle ๐Ÿ’ฉ

hot hull
#

Don't let Niall see that fingerguns

empty flint
#

do you get any errors in console?

hot hull
#

Only the unrecognized field shit since it can't find the classes from other modules

empty flint
#

@heady birch what they don't want you to know: ||gradle ๐Ÿ’ฉ||

#

Also, sorry for the spamping

hot hull
#

Now i'm assuming it's due to the fact that api is a runtime dependency since it's inherited by the common module

#

Would that be the case?

empty flint
#

But I felt like it was time someone told you

heady birch
#

I mean I've only used gradle 1. in spring initializr (worked fine). Second converting a maven project. It obviously didnt like converting a multi module maven project to gradle

empty flint
#

Would that be the case?
@hot hull How did you define that dependency?

#

And is there a reason it's a runtime dependency?

hot hull
#

my spigot build.gradle

repositories {
    maven { url = "https://maven.enginehub.org/repo/" }
}

dependencies {
    implementation project(":common")
    
    compileOnly "com.sk89q.worldguard:worldguard-bukkit:7.0.3"
}

my common build.gradle

dependencies {
   implementation project(":api")
}
#

Well I mean I assume it sets it as that by default since it's defined in the common?

empty flint
#

What IJ version are you on? My gradle tool window looks different

hot hull
#

Cause like shit from common works fine, just the api shit doesn't

#

I'm on 2018.3

empty flint
#

try updating IJ then

#

it's 2020, silly

hot hull
#

Can't

empty flint
#

why's that?

hot hull
#

Didn't I tell you that already?

#

Potato PC

empty flint
#

Didn't I tell you that already?
@hot hull Maybe I forgot

#

I just set up a bunch of submodules as dependency to my lib (I suppose similar to how your API works) and it looks like this:

#

so it should be a runtime dependency if only the common stuff has access to it

hot hull
dusky drum
#

potato pc Frosty upgrade your potato pc

hot hull
#

Gasper, gimme $$ fingerguns

empty flint
#

but you can't call the api methods from where you import common

dusky drum
#

no you gimmee $

hot hull
#

Meaning I should implement the api as well Blocky?

#

(in my spigot one)

empty flint
#

well depends

#

if you want to use the api in spigot directly you have to

dusky drum
empty flint
#

if you use the api in common and just call these common methods in spigot you shouldn't add api to spigot

hot hull
#

I call the api events in spigot

empty flint
#

then import the api in spigot as well

#

and if common doesn't use your api, remove the import

hot hull
#

It does use it

heady birch
#

events shouldnt be in api

empty flint
#

then leave it and just add it to spigot

heady birch
#

if they are spigot dependenent

dusky drum
#

you niall since youre so good with nms how can i transform what i sent up above to datawatcher?

empty flint
#

but usually api is not something you use in your own project ๐Ÿค”

heady birch
#

Dont know datawatcher is

dusky drum
#

oh

#

its metadata for entity

heady birch
#

yeah usually you build your project implementation on top of the API

dusky drum
#

in PacketPlayOutEntityMetadata

hot hull
#

My events are in the api, since the point is other people can listen to them and access them

#

They get called from the spigot/bungee, and listened to in the common

regal gale
#

DataWatcher is probably the most obfuscated thing for me

heady birch
#

i dont make a datawatcher

#

in protocol lib i re use it

empty flint
#

My events are in the api, since the point is other people can listen to them and access them
@hot hull I don't know if I would do it like that. I have separate project classes and then custom api wrapper classes for whatever object i want to expose to others via the api.

dusky drum
#

wait so you use protocollib in kiteboard???

empty flint
#

So I don't depend on my own API and the API doesn't know stuff it shouldn't be allowed to know.

#

remember that an API is just an interface to your program. Not part of your program itself.

hot hull
#

Well yea, but I can't really make the events abstract can I?

empty flint
#

So the API can change behavior, but it's not a vital part of the core behavior to begin with

#

Well yea, but I can't really make the events abstract can I?
@hot hull Depends on what you want the API to be able to do. If the event is read-only information that others can react to then you should make a wrapper. If they can cancel the event etc etc, then I guess you have no other choice than to expose API events and have your plugin listen to those same events as well

hot hull
#

The events are cancellable yes

empty flint
#

Yeah I guess you have no choice then than to expose those events.

heady birch
#

wait so you use protocollib in kiteboard???
@dusky drum no but the packets I use dont have the DataWatcher object

empty flint
#

Did the import work?

hot hull
#

No it didn't

dusky drum
#

okay niall

empty flint
#

what do your dependencies look like now?

heady birch
#

because frosty

hot hull
#

If you say gradle Imma be mad

heady birch
#

If you had your event classes in the api, they are depending on the HandlerList and Event class e.g

#

So one wanting to write an API for frozen join + bungeecord would still have the bukkit dependency

hot hull
#

Well yea but no way to avoid that, unless I have two seperate API's

#

Which wouldn't really make sense

heady birch
#

yeah

#

I dont know how you would do that actually

empty flint
#

@hot hull how does your dependency tools window look like now?

dusky drum
#

HOWLY yes! i made it work!

#

now i gotta make it for every single version of mc 1.8 - 1.16 with all Rstuff

hot hull
empty flint
#

That looks like it should work though

#

What's the error in IJ?

heady birch
#

Yeah thats the problem with the NMS way. you end up with lots of very similar classes just because they changed the package name between versions

empty flint
#

when you build the project

hot hull
#

A shit ton of unresolved references for all the api events

empty flint
#

lol

#

imports missing?

hot hull
#

Imports are there and resolved, just the actual objects aren't

#

I'll try restarting IJ again, might be having a stroke again

#

Still the same bullshit

dusky drum
#

lel

hot hull
#

Okay so now api shit doesn't work in common as well

#

Progress fingerguns

#

Okay so I deleted .idea and opened the project again and now it magically works

jovial warren
#

.idea is what tells IJ how your project is structured so yeah not surprised that worked

hot hull
#

Well yea but why the hell does this shit keep breaking?

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

#

never broke for me

#

also is FrozenJoin evolving?

hot hull
#

Yes

jovial warren
#

is it gonna do more than it has ever done?

hot hull
#

If it works, yes fingerguns

jovial warren
#

like are you actually adding anything or just making it cross-platform?

hot hull
#

Adding a ton of shit, as well as making it more extendable

jovial warren
#

and everything in your project is Kotlin right?

hot hull
#

Yes

jovial warren
#

noice

hot hull
#

Well we'll see if I can manage to access the lib in kotlin

jovial warren
#

we'll make it work lol

hot hull
#

Otherwise imma just copy the lib into it

jovial warren
#

idfc what it takes, we making this a Kotlin-only project

#

lol

quaint isle
jovial warren
#

nojava there we go lol

#

just made that myself lol

#

@quaint isle PHP library for Minecraft RCON?

#

@hot hull your project's gonna be this right:

#

xD

silk kite
#

@jovial warren Just made this....

jovial warren
#

oof

hot hull
#

Progress fingerguns

[11:51:42 INFO]: [FrozenJoin] Enabling FrozenJoin v3.0.0
[11:51:42 INFO]: Registering Registerable: command
[11:51:42 INFO]: Registering Registerable: message
jovial warren
#

noice

#

"Registering Registerable"

quaint isle
hot hull
#

yeye shush, just debug

jovial warren
#

@quaint isle literally just google "php minecraft rcon" and you find loads

#

@hot hull is that debug level?

hot hull
#

nono just personal debug, I gotta add a complete debug system at some point

quaint isle
#

That's what I did but I only found old stuff. Thought maybe I was searching for the wrong thing ๐Ÿ˜„

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

hot hull
#

Ayy, the event bus functions properly, meaning I can start actually doing shit

[12:02:27 INFO]: Triggered PlayerJoinEvent
[12:02:27 INFO]: Executed @FrozenJoinEvent
silk kite
jovial warren
#

(first result for /tenor executed lol)

hot hull
#

Poor elmo

dusky drum
hot hull
#

Reflection

dusky drum
#

nah

hot hull
#

Then you'll a module system

dusky drum
#

problem with reflection is not al NMS versions have same fuctions a/b/c/d/e/f

#

just gotta import all NMS

hot hull
#

ew

dusky drum
#

cry

hot hull
#

I've being crying for the whole day already

dusky drum
#

why?

hot hull
#

Cause you told me to..

dusky drum
#

YES!

jovial warren
#

hey @heady birch , what's the third ToggleState (the enum in ToggleCommand)? I figured out the first two are ON and OFF but I can't figure out what the third is

hot hull
#

ONOFF fingerguns

jovial warren
#

there's three toggle states lol

#

maybe UNSET?

hot hull
#

Probably Default

jovial warren
#

but if it was UNSET, it wouldn't make sense why ToggleOffCommand would use it

#

maybe the first one is UNSET, and the second and third are ON and OFF

#

ยฏ_(ใƒ„)_/ยฏ

#

time to wait a good 7 hours for Niall to get back to me lol

hot hull
#

Bardy, is having all join/connection bungee events an overkill or nah?

dusky drum
jovial warren
#

@hot hull wdym by that?

#

I'd make join/leave events work for both bungee and bukkit

hot hull
#

Not what I'm asking, there's like 10 different events bungee has which handle join, connection, post login and shit

#

I'm asking if listening to all those (basically making them available to execute actions) is overkill or nah

jovial warren
#

nothing's overkill when you're making an API lol

#

if you want your API to be extensive then I say go for it

onyx loom
#

dont do it !!!!!!

remote goblet
#

shoot it

#

YES

onyx loom
#

nooooo!!!!!!

hot hull
#

Bardy, I'm ofc going to allow people to register their own events through the api, so it has full extendability, you could even make a gamemode with it in the end if you wanted to

jovial warren
#

lol

dusky drum
#

anyone has solution for git bash:
jar: command not found

prisma wave
#

what command are you running

dusky drum
#

jar

#

jar xf <file>

#

fixed

#

apparently jdk wasnt added to windows paths

#

so i manually added it

hallow horizon
#

Hey y'all

hot hull
#

Thoughts on something like this for the format definition?

formats:
  example:
    priority: 1
    permission: frozenjoin.format.example
    execution:
      FrozenJoinEvent:
        - '[MESSAGE] Hey %player_name%'
      FrozenQuitEvent:
        - '[MESSAGE] Goodbye %player_name%'
      FrozenSwitchWorldEvent:
        - '[BROADCAST] %player_name% has changed worlds, and is now in %player_world%'
jovial warren
#

@hot hull yeah that looks good

hot hull
#

Fuck is this sorcery, discord is showing I have a ping, yet it doesn't show up anywhere -.-

prisma wave
#

Check calls from group dms if you're on mobile

hot hull
#

On PC, it's gone away now

#

btw KM, I had to add a normal plugin check for WG, since ya know it trows an CNFE since it's not there otherwise fingerguns

dusky drum
#

uff 1.16 and 1.15 packets done

remote goblet
#

@prisma wave i need help peepoSad

#
class ExampleClass : Command(String), Listener {
  private val smeltList = mutableListOf<UUID>()

  fun onCommand(player: Player) {
    // Command stuff adds/remove Player from smeltList, that works fine
  }

  @EventHandler
  fun onEvent(event: Event) {
    if (smeltList.contains(event.player.uniqueId)) {
      // Do something with it
    }
  }
}
``` doesn't work because smeltList is always empty in the onEvent function ![EmiThink](https://cdn.discordapp.com/emojis/716083044938678352.webp?size=128 "EmiThink")
hot hull
#

That is disgusting

remote goblet
#

is there something like

#

im aware but like

jovial warren
#

why are you inheriting from Command btw?

remote goblet
#

am i like missing something really obvious or what

#

That's not the point is it

jovial warren
#

and also where does Command come from?

wheat plume
#

omg kotlin

jovial warren
#

^ yeah, good language

remote goblet
#

That is not relevant to the question pepefeet

jovial warren
#

so it's always empty?

remote goblet
#

Would probably be the exact same had i of done

class ExampleClass : CommandExecutor() {
  // Do something
}
jovial warren
#

remove brackets xD

remote goblet
#

Brady you hurt my brain

hot hull
#

If it's all the same class there's no reason it should be empty if you're adding onto it

remote goblet
#

Yeah i know

#

it's wack

hot hull
#

Do some debugging

jovial warren
#

^

#

it's always something stupid with things like this

hot hull
#

And then clean and rebuild the project if debugging doesn't work

#

If that fixes it, Imma kek

remote goblet
jovial warren
#

you'll need to add the Spigot server JAR as a configuration to debug properly

remote goblet
#

The second it passes through th event

#

insta bonk and clear

jovial warren
#

debugger

#

add your Spigot server JAR as a configuration within IntelliJ and run it from within IntelliJ, then you can set break points and evaluate thingys

hot hull
#

Nah you don't need a debugger, printing is just fine kek, either you have multiple instances of the classes, or it's some compile shenanigans

jovial warren
#

^ that first point is wrong

remote goblet
#

that's it EmiCool

#

i'm dumb

jovial warren
#

discouraging debuggers is not a good thing frosty

hot hull
#

Bardy, you're checking if a list contains a value, overkill to go debugging everything

jovial warren
#

you should just set up debugging for every project

hot hull
#

Effort

jovial warren
#

because you're gonna need it anyway

hot hull
#

Just don't make mistakes fingerguns

remote goblet
#

the issue is im creating new instances everytime peepoSad

hot hull
#

big brain fingerguns

remote goblet
#

cus i am big fuckin brain

hot hull
#

Would checking a class name to find the right class be viable or should I have a class identifier?

jovial warren
remote goblet
#

brady

#

kindly fuck off

jovial warren
#

lol

#

make me xD

prisma wave
#

@remote goblet you have 2 instances

#

And use a Set not a List pls

remote goblet
#

okay pepefeet

hot hull
#

KM, when adding to a set I should use .plus or?

prisma wave
#

doesn't really matter

jovial warren
#

+= to add to a set

prisma wave
#

.plus is usually for the operator

#

So either use += or .add

jovial warren
#

.plus is the same as +, .add is for +=

hot hull
#

ah so that's why it wasn't working earlier, k

old wyvern
#

No

#

its plusAssign

#

for +=

jovial warren
#

^ yeah you're right

prisma wave
#

@remote goblet basically unless you actually need the contract of a List it's probably better to use a Set everywhere

old wyvern
#

and if you dont overload += but did overload +, it unfolds it to the proper assignemnt as well. Like x += y would become x = x + y

jovial warren
#

because Kotlin's compiler is smart lol

prisma wave
#

It's probably a pretty common tactic

#

Rather than adding an extra instruction to the parser you can just expand it

hot hull
#

How does one exlude shit from a project implementation?
Tried this but it doesn't work

    implementation project(":common") {
        exlude group "com.github.frcsty"
    }
dusky drum
hot hull
#

You need jesus

dusky drum
#

?

obtuse gale
#

Anybody have a way to develop the plugins in VS code?

#

I just love their interface way better than eclipse.

dusky drum
#

no eww

#

install Intelij Idea

inner umbra
#

Don't

dusky drum
#

??

obtuse gale
#

That looks ugly as well though..

dusky drum
#

VS code isnt made for java:?

onyx loom
#

this man tryna start a crusade ๐Ÿ™ƒ

obtuse gale
#

I was just wondering if someone found a way lmao

old wyvern
#

VS code isnt made for java:?
wha

obtuse gale
#

Actually you can use VS code for anything

old wyvern
#

I was just wondering if someone found a way lmao
@obtuse gale
You could use just about anything if you want to I guess

#

Even notepad if you're brave enough

obtuse gale
#

T_T

#

no

regal gale
#

Nothing is as better as IntelliJ

obtuse gale
#

That's the devils work

#

I haven't ever setup IntelliJ to code

#

so

#

I guess I'll try

heady birch
#

Nice @dusky drum I generally leave out some of the less used versions, so I usually only end up with the latest major versions. e.g 1.8.8, 1.12.2, 1.13.2, e.g

dusky drum
#

well

#

i added all of them just for yeh

#

thats why i havent added 1.8 R1 and R2

#

pretty much R3 has a lot of crash (hack) clients fixes

#

i guess i should change this:
return DataWatcher.Item<Optional<IChatBaseComponent>>(DataWatcherObject(2, DataWatcherRegistry.f), Optional.of(ChatComponentText(name)))

heady birch
#

oh god

#

lol

dusky drum
#

thats for 1.15

heady birch
#

you need to parse the hex colours into seperate chat components

dusky drum
#

ye which ones

#

havent tuched 1.16 packets

heady birch
#

each individual colour and text segment has its own chat component

dusky drum
#

wtfa?*ลก+

heady birch
#

so

#
                |              |               |
#

Each segment is its own chat component

dusky drum
#

ye i saw how json is builded

#

like each text that has different color is seperate object in json

heady birch
#

You can use Bungee to do it I believe

#

TextComponent.fromLegacyText or something

#

Then convert the TextComponent into json

dusky drum
#

but text i sent is already hex parsed

heady birch
#

What do you mean already parsed

prisma wave
#

@obtuse gale intellij with Material UI theme is best, but if you're determined to use VSC you can just use a tool like Gradle to build and run your projects

heady birch
#

One sec

obtuse gale
#

k

#

Material Ui theme? I'll check it out. Thanks

#

This whole server is meant for coding _____ ?

heady birch
#
IChatBaseComponent.ChatSerializer.a(ComponentSerializer.toString(TextComponent.fromLegacyText(legacyText)));
prisma wave
#

not entirely

obtuse gale
#

There was a unfilled space

#

lol

#

Is this all for spigot

#

or bukkit

prisma wave
#

Technically the server is for papi support first and foremost

#

But the development channels are for anything

dusky drum
#

how do i know if text is legacy niall?

obtuse gale
#

k

prisma wave
#

Mostly spigot / bukkit

obtuse gale
#

aha ok

heady birch
#

legacy just means its using ยง

#

so

dusky drum
#

but its using hex

heady birch
#

ยงxยงFยงFยงFยงFยงFยงF

#

Is still legacy

ocean quartz
dusky drum
#

oh so for any 1.16+ i need to convert from legacy?

heady birch
#

yes

dusky drum
#

ugh

obtuse gale
#

ooo....

#

I love it.

ocean quartz
#

Gasper on my lib, you don't blurryeyes

prisma wave
#

atom one dark best theme

ocean quartz
#

^

dusky drum
#

niall another problem

#

it requires
IChatBaseComponent
but i get
IChatMutableComponent - or something

ocean quartz
#

IChatMutableComponent should be an IChatBaseComponent

prisma wave
#

You can do asMutableCopy I think if not

#

๐Ÿ™„

heady birch
#

So wack

#

I may or may not have written my own IChatBaseComponent

dusky drum
#

DataWatcherRegistry doesnt have mutable

heady birch
#

Oh

#

You can use the NMS directly

dusky drum
#

.,.,

#

and that is

heady birch
#

yeah you can actually do .mutableCopy as Brister said

dusky drum
#

where

prisma wave
#

Wow

#

They called my methods bad until they needed them

#

Classic

heady birch
#

Lol

dusky drum
#

lel

heady birch
#

All that serialising get's slow if your doing it intensely

dusky drum
#

which?

#

the one im doing it?

prisma wave
dusky drum
#

wat

prisma wave
#

this is unacceptable

heady birch
#

Sir you have received a complaint

dusky drum
#

okay

#

thats java to koltin

#

sory ok

prisma wave
#

either do val items = mutableListOf<DataWatcher.Item<*>>() or val items: MutableList<DataWatcher.Item<*>> = mutableListOf()

#

no excuses

heady birch
#

By the way the Chat component stuff is nms based

prisma wave
#

based

heady birch
#

So protocol lib is no use

empty flint
#

@prisma wave release 0.4.0. I fixed the java version check. Did you have any luck with Java 11?
As far as I can tell, J8 can build 1.8+ and J11 can only build 1.13+

dusky drum
#

thats why i dropped protocollib niall :3

prisma wave
#

As far as I can tell, J8 can build 1.8+ and J11 can only build 1.13+
that is correct I think

#

Java 11 worked fine for new versions

dusky drum
#

groovy i fixed the issue you had complains about :3

prisma wave
#

java 8 also seemed to work fine for lower versions (although BuildTools failed for an unrelated error)

#

@dusky drum fingerguns

dusky drum
#

now lets see if rainbow works

prisma wave
#

@empty flint what am I looking to test in the new version?

heady birch
#

It should do Gasper

empty flint
#

I honestly forgot what it was that didn't work last time

pastel imp
empty flint
#

oh yeah, old versions

dusky drum
empty flint
#

But I think you had PATH problems

obtuse gale
#

Hey @old wyvern

dusky drum
#

now lets run jprofiler

prisma wave
#

@empty flint I did, not anymore

obtuse gale
#

How does The Intelijji community vs ultimate matter.

empty flint
#

oh yeah and I implemented your eula trick

prisma wave
#

nice

#

@obtuse gale not a whole lot unless you're using enterprise frameworks and things

obtuse gale
#

But like its not like. No commercial use

empty flint
#

How does The Intelijji community vs ultimate matter.
@obtuse gale It does to jetbrains

obtuse gale
#

Like I can sell whatever I make in it basically. its not stupid like that right

prisma wave
#

Ultimate adds duplicate checking, support for things like Spring, and all the features of other Jetbrains IDEs

obtuse gale
#

ah

prisma wave
#

it's fine

obtuse gale
#

k tysm

ocean quartz
#

Uuh @pastel imp no, it's only like 30kb

pastel imp
#

oof so wth is doing it be that big

ocean quartz
#

Can you show me your gradle/pom?

pastel imp
#

ye 1s

dusky drum
#

gotta love how when i run jprofiler my server tps drops to 2.0

prisma wave
#

speedy

dusky drum
#

yes

#

howly frik is plugin faster than with protocollib gotta love that!

prisma wave
dusky drum
#

haha when i detached mobs went flying fast XDDD

ocean quartz
#

@pastel imp Hmm not sure, try opening the jar on winrar or something and check the files see what else is being shaded

dusky drum
#

just ah my join even uses 900ms wtfcidawฤld'*

pastel imp
#

ye will do

#

It may be cause I am running paper 1.8.8

#

and the plugin is made in 1.12.2

#

?

#

but it should work anyways

ocean quartz
#

getItemInMainHand doesn't exist in 1.8

pastel imp
#

welp that is true

#

but I can't use the getItemInHand

#

when I build the plugin

#

it doesn't let me build it

#

oh wait

#

ok it's just a note

#

it did build

#

about the size of the plugin

#

honestly didn't find much

#

that could cause that much difference

#

ok wait

#

why is kotlin also building with it?

obtuse gale
#

The only options in inte

pastel imp
obtuse gale
#

Cant send image

ocean quartz
#

Would it be because you're using kts instead of groovy?
Idk

obtuse gale
#

There is no option for material UI

ocean quartz
#

?imgur

compact perchBOT
#
FAQ Answer:

You won't be able to upload images here directly to avoid spam, so please use https://imgur.com/ to upload images/screenshots.

ocean quartz
#

Material UI is a plugin

pastel imp
#

welp besides that p.getItemInHand(); is also returning the same error

#

and I don't rlly wanna use spigot 1.8.8 to make the plugin cause of gameprofile errors etc

ocean quartz
#

You probably need to use a deprecated method for it

#

I don't remember the name

pastel imp
#

it's the one above

#

hmm welp gonna try to redo the project cause of the size of the jar

empty flint
#

hm

#

do you say "the folder where the jar will be run from" or "the folder where the jar will be ran from"?

#

my English is rusty

#

leaning towards ran but not sure

hot hull
#

Matt, seems like your framework doesn't like empty lines

#

It also cucks initial spaces

dusky drum
#

i made mistake

#

now i cant start old servers

#

ffs

ocean quartz
#

You need to change the system path

dusky drum
#

where

ocean quartz
#

It's currently pointing to 14, need to point to 8
Hmm on my pc > properties > advanced system settings > environment variables > path

dusky drum
#

changed

#

and it still shows 14

ocean quartz
#

Might need to restart the pc

heady birch
#

If ecloud was still using Spring and thymeleaf I have no doubt it would be finished by now

dusky drum
#

ow noice java doesnt even exist anymore

#

okay fixed

jovial warren
#

@heady birch what's it using now?

#

did you see any of my messages by the way?

dusky drum
#

i realized my packets take quite a lot of procesing power..

jovial warren
#

what are you sending?

dusky drum
#

metadata

jovial warren
#

entity metadata?

dusky drum
#

yes

jovial warren
#

ah okay

dusky drum
#

and i realized my nms is bad

#

eh

#

i see

jovial warren
#

PacketPlayOutSpawnEntity doesn't have any metadata fields

dusky drum
#

thats

#

to spawn armorstand

jovial warren
#

you need to instantiate it with an Entity

dusky drum
#

aftert that i send meta

#

wait

#

did spigot 1.13 not have Configuration.getLocation?

#

does*

#

java.lang.NoSuchMethodError: org.bukkit.configuration.ConfigurationSection.getLocation(Ljava/lang/String;)Lorg/bukkit/Location;

heady birch
#

Javascript Vue and Json:api

jovial warren
#

wtf?

#

to both lol

dusky drum
#

omg getLocation was added in 1.14

jovial warren
#

oof

dusky drum
#

wtfff

#

why

#

now i have to rework hologram storage

#

....,.,..,.,ลพ

jovial warren
#

@heady birch the backend should still be in Spring lol

heady birch
#

Oh yeah it is but with json:api its a whole rest api thing

jovial warren
#

what's wrong with a REST API?

#

they're easy

#

also JSON is the best way to send messages with REST APIs imo

heady birch
#

Good and all but I think only lemmo knows how

#

Service layer is pretty much completed through

dusky drum
#

okay changed to config..#get as location

heady birch
jovial warren
#

also what is the last parameter of sendScoreUpdate btw?

#

is it by any chance score?

#

and is the last method in Adapter sendTeamAddPlayer?

#

@heady birch

#

and what's the last parameter of the last method in Adapter?

heady birch
#

Yeah its score

jovial warren
#

what about the rest of those? lol

#

also is it just me or is it kinda annoying sometimes how when you declare a parameter as final, there's no way (as far as I'm aware) to carry that immutability down to subclasses (when using automatic override generation)

heady birch
#

perhaps

jovial warren
#

which one is perhaps?

old wyvern
#

@heady birch Any idea how much size ORMlite would add to the jar?

jovial warren
#

it doesn't add that much at all afaik

old wyvern
#

Less than 0.5MB?

jovial warren
#

lemme download it

#

the JAR is 69.8 KB apparently

old wyvern
#

ah, I assume thats fine then

jovial warren
#

go suck on that Mr. "ORM is really large" xD

old wyvern
#

Um?

heady birch
#

Interesting

jovial warren
#

@old wyvern I said to Niall the other day "would it be cool if I added more support for databases using ORM?" and he said something like "ORM is large"

old wyvern
#

oh ok

pastel imp
#

wtf seems every plugin I am using is building with kotlin

#

lol

#

wtf

dusky drum
#

eh, my placeholder managment is kinda wierd i have to redo it i guess, also i guess i'll change some other stuff o.

jovial warren
#

@pastel imp that's because Kotlin is better

#

also @heady birch , what's the constant IChatBaseComponent in any adapter for 1.13+ for btw? because from what I can see, it's always an empty string and never gets updated

hot hull
#

Anyone got any suggestions as to how one would make a completelly customizable listener system, I assume you'd just classpath scan to find the right class, but I wanna here any better ideas if anyone has them

heady birch
#

its an empty chat component im pretty sure

jovial warren
#

yeah ik but what's it for?

heady birch
#

when nothing needs sending

jovial warren
#

ah okay

#

because it seems to update the field b

#

which according to Mini's Mapping Viewer, is displayName

dusky drum
#

i mean

#

open class

#

and see whats inside

jovial warren
#

so according to the code I have infront of me, on team create and team update, the displayName is set to an empty string

heady birch
#

yeah correct

jovial warren
#

@dusky drum it's not that easy when there's three different IChatBaseComponents all with the same initialiser value

dusky drum
#

i know right XD

jovial warren
#

(which are displayName, teamPrefix and teamSuffix respectively)

dusky drum
#

hehe

#

i was joking

jovial warren
#

lol

hot hull
#

Anyone got any suggestions as to how one would make a completelly customizable listener system, I assume you'd just classpath scan to find the right class, but I wanna here any better ideas if anyone has them

heady birch
#

interfaces

#

you get the plugins to register interfaces with your plugin

#

and you call their methods

jovial warren
#

also what are the methods in Adapter_1_16_R1KiteChatComponent? @heady birch

hot hull
#

In my plugin Niall, I was thinking of having a file which registers events, but then I'd have to have every event in the game so it'd be cancellable, and they'd just specify it in the format where they wanna use it

ie.
I'd register let's say PlayerWorldSwitchEvent through the config which would call FrozenPlayerWorldSwitchEvent (basically allowing others to only cancel that if they wanna modify it), and then the user would specify the frozen event to be listened to and execute the format on

heady birch
#

bom bardy I prob wont comment on that because its quite unique to kiteboard

#

@hot hull something like this:

interface FrozenJoinListener {
void onSomeEvent(EventClass event);
}
#

JDA style

jovial warren
#

okay

#

well that's handy lol

#

so I'm on my own here then @heady birch

#

it's some pretty wacky arrow code ngl

heady birch
#

Indeed it is

jovial warren
#

it can't be that hard to figure out what this does

#

oh I know

#

this is your way of dealing with hex colours isn't it

heady birch
#

Yeah

jovial warren
#

why doesn't this use a regex?

#

I got one already

#

@heady birch can I share my regex with you?

heady birch
#

sure just post it here

jovial warren
#

(&|ยง)(#)(\w{6}|\w{3})

heady birch
#

And use while (matcher.find()) kind of thing?

jovial warren
#

first one matches either the character & or the character ยง
second one matches the character #
third one matches any word character either 6 times or 3 times

#

yeah

heady birch
#

Which would have the best performance, regex or the way I do it at the moment?

jovial warren
#

probably a regex

old wyvern
#

Or switch to mf-msg? reversed_fingerguns

heady birch
#

No need

jovial warren
#

Niall uses NMS for his hex stuff

old wyvern
#

xD

heady birch
#

Mf-msg was written a while after I wrote all this stuff

jovial warren
#

actually IJ just gave me an improvement

#

([&ยง])(#)(\w{6}|\w{3})

old wyvern
#

Why the unneccessary parenthesises?

heady birch
#

What abt legacy codes

#

Actually cant remember if the client handles them

jovial warren
#

it'll match them in the first capturing group

#

actually ik what you mean

empty flint
#

how do I specify the jvm target in gradle?

jovial warren
#

([&ยง])(#|[0-9a-f])(\w{6}|\w{3})? will match legacy codes as well as the new hex codes @heady birch

#

actually hold on

#

that'll also match &#

#

([&ยง])(#(\w{6}|\w{3})|[0-9a-f]) boom

#

perfect regex

#

first one matches a single character in the list &, ยง
second one matches either the character # (and third capturing group) or a character in the list 0-9, a-f
third one matches any word character either 3 (priority) or 6 times

#

wow I didn't know I was so good at regexes lol

heady birch
#

not sure if it would be faster than the pure processing though?

jovial warren
#

yeah I'm not sure about performance either, though it will clean up your horrendous arrow code a bit

#

now I gotta figure out how to convert the arrow code to use the regex lol

pastel imp
#

wtf can't find why my plugin is big af

#

lol

jovial warren
#

look through each one of the dependencies

pastel imp
#

I did

#

the ones who could be causing the issue

#

are both compileOnly

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

pastel imp
#

.-.

jovial warren
#

@heady birch you gonna use the regex btw or just keep the old code? because I need to know if I gotta figure out how to do this with a regex or not lol

heady birch
#

probably keep whats there

jovial warren
#

alright

pastel imp
#

yup it's building kotlin with it

#

that's why the big size

jovial warren
#

it has to

#

it's worth it though

pastel imp
#

?

#

wdym

#

you speaking with me?

jovial warren
#

yeah

jovial warren
#

also btw @heady birch , why do Adapter_1_16_R1 and Adapter_1_16_R2 not use EnumSet.allOf(AdapterCapability.class)?

#

unless they do and my decompiler is once again shite

ocean quartz
#

Damn, fabric is much easier to work with than forge

dusky drum
jovial warren
#

oof

rotund egret
#

Mixin makes code manipulation much better and safer, pretty sure Forge is including it with the launcher now IIRC? Something like that

tranquil crane
#

Has anyone made a server implementation that runs both fabric and spigot/paper yet? ๐Ÿค”

jovial warren
#

not afaik

ocean quartz
#

Had to spend like 2 hours setting up forge the first time, fabric took me 5 minutes

empty flint
#

Can I add a project from github to my dependencies without downloading and building the project myself?

prisma wave
#

jitpack

empty flint
#

jitpack doesn't recognise the current version

surreal quarry
#

you can use the latest commit hash

empty flint
#

ah that worked, ty

empty flint
#

What's the difference between List<out String> and List<String> in Kotlin? I don't quite get the explanation...

jovial warren
#

@empty flint check the docs on parameters

#

I believe out is used for when you only want a consumer or something

#

actually no it's the other way around

#

out ensures that it is only produced and is never consumed

#

it's to avoid ? extends X

ocean quartz
prisma wave
#

why thank you

onyx loom
#

lmao

empty flint
#

hm

#

Having trouble with Kotlin again

prisma wave
#

should've used Elara

empty flint
#

I have a List<List<List<String>>> and I need a List<List<String>>

#

How do I flatten a list but only once?