#dev-general

1 messages ยท Page 350 of 1

jovial warren
#

the

#

fuck

prisma wave
#

that is A tier shitposting

jovial warren
#

honestly, you are one strange human being Niall

heady birch
#

boolean to sgnifiy the event has been triggered lol

jovial warren
#

omfg

heady birch
#

But nah I like EventBus

jovial warren
#
class MyListener {

    @Listener(ListenerPriority.NORMAL)
    fun onJoin(event: JoinEvent) {
        event.isCancelled = true
    }
}
#

this is the current system

prisma wave
#

๐Ÿคข

heady birch
#

Yeah thats neat

prisma wave
#

not very pragmatic

jovial warren
#

oh also, yk what else copying the Bungee event bus gave me?

#

the fucked up priorities lol

prisma wave
#

why do users not have the option to compose their event handler functions

jovial warren
#

will have to fix those

#

hopefully as simple as just inverting the value to be Byte.MAX_VALUE and using value--

prisma wave
#

for plugin {
event_list = eventLists.get-or-put(plugin, new linked list<PlayerChatEvent>).add(event)
plugin.broadcast_chat_event(event_list)
}

#

๐Ÿ™‚

stuck harbor
jovial warren
#

what
the
fuck
is
that

stuck harbor
#

still ded sadge

#

gn bm

prisma wave
#

no

jovial warren
#

BM wdym gn

prisma wave
#

barry put you to sleep ๐Ÿ˜Š

jovial warren
#

u stay here

jovial warren
heady birch
stuck harbor
#

still seems ded

heady birch
#

Something about that $ -> syntax gets to me

stuck harbor
#

last commit june 2020

stuck harbor
jovial warren
#

oh btw, KiteBoard multiplatform when

heady birch
#

I wish java had structs

prisma wave
#

soon

jovial warren
#

me and you should abstract KiteBoard to be multiplatform so I can eventually make an impl for Krypton lol

#

I swear that's just an illegal word

#

every time I say KiteBoard, Niall just disappears

heady birch
#

Lol

prisma wave
#

let rec admins = bristermitten :: admins [piggy cube other guy]

jovial warren
#

oh you're still here?

#

surprising

heady birch
#

Abstraction ๐Ÿ˜ฆ

jovial warren
#

would mean KiteBoard for Krypton would be easier

#

so we wouldn't have to rewrite it from scratch lol

heady birch
#

What is your scoreboard api like again

#

I thinkyou showed me it

jovial warren
prisma wave
#

Bukkit::getPlayer

#

god i wish this was real

jovial warren
#

but I'll allow you to use packets with ease if you really want to lol

#

the server will be available as a dep

prisma wave
#

imagine

jovial warren
#

but you shouldn't need to anyway

prisma wave
#

auto player = bukkit::getPlayer ("player name");

#

(*char) player[10]

#

what will it do?

#

we do not know

heady birch
#

A server implementation with a packet api ๐Ÿ™

jovial warren
#

the API won't expose packets

heady birch
#

What if plugin developers want to make their own packets???

jovial warren
#

the backend's packet API is actually decent though

#

just implement Packet and then send it pretty much

prisma wave
jovial warren
#

its write function will get called if it's outbound

heady birch
#

packetHandlers->register(0x01, myPacketHandler) ๐Ÿ˜ฎ

prisma wave
#

might start c++ jerking

#

that would be fun and unique

obtuse gale
#

I'm in

heady birch
#

*char

prisma wave
#

ok

#

there is a small issue

#

i do not know c++

jovial warren
#

e.g. ```kotlin
class MyCustomPacket(private val myCustomParameter: String) : PlayPacket(0x82) { // fake ID lol

override fun write(buf: ByteBuf) {
    buf.writeString(myCustomParameter)
}

}

obtuse gale
#

doesn't matter

jovial warren
#

ez

prisma wave
#

ok

#

.h files are the future, functional programming is for OUTDATED losers

obtuse gale
#

just hate exceptions and all that

heady birch
#

doesC++ even have exceptions

prisma wave
#

safety obsessed LOSERS cant handle a bit of pointery pointery

jovial warren
#

Niall what do you think of the packets

heady birch
#

Do you have a read method as well

obtuse gale
#

it does and they need to be "activated" with a compiler flag lol but they are highly discouraged

#

like

jovial warren
obtuse gale
#

highly discouraged

jovial warren
#

you choose which one you override

heady birch
#

Yeah i think it is pretty good

obtuse gale
#

optionals should be used instead

stuck harbor
#

always use malloc() and free()

#

the best functions?

#

methods?

jovial warren
#

if you wanna make inbound packets though, you gotta register them with PacketState.PLAY.register(0x82, ::MyCustomPacket)

obtuse gale
#

operator new tho

heady birch
#

You could always have PacketEncoder<? extends Packet> PacketDecoder<? extends Packet> idk probably over the top

obtuse gale
#

imagine overriding operator delete[]

heady birch
jovial warren
#

actually lemme tweak

prisma wave
#

famous wrapper "kanye west" once said that c++ was more modern than haskell would ever be

jovial warren
#

InboundPacket and OutboundPacket superior

#

no need for encoders and decoders

obtuse gale
#

C++ is gonna get some compile time reflection added by C++23 :]

#

neat

heady birch
#

Let me guess, in 2023?

obtuse gale
#

uh

#

sweats

jovial warren
#

the only thing I think of when I hear the words "C++" is whatever tf kinda syntax cout >> "Hello World" is

prisma wave
#

<< *

heady birch
#

bit shift ๐Ÿ™ƒ

obtuse gale
#

lmao

#

yeah

jovial warren
#

wait does it actually bit shift that string into cout

prisma wave
#

cout is output stream, piping bytes to stream

#

i think

#

i have never used c++

obtuse gale
tranquil crane
#

huh

prisma wave
#

dear god

obtuse gale
#

I legit don't know who thought it was a good idea to overload << and >> for cin and cout lmao

jovial warren
#

why can't it just be printf, println, print, etc. like normal people

jovial warren
prisma wave
#

printfn ๐Ÿ™‚

obtuse gale
#

just std::printf

#

global functions and variables are also highly discouraged lmao

#

that's why the C standard library is under the std namespace

tranquil crane
#

what, you don't like your programming language full of magic functions? php not good enough for you??

obtuse gale
#

lmao

prisma wave
#

really makes you think

jovial warren
#

if programming was English:

Can you please declare me a main function with a value that prints the words "Hello World!"
tranquil crane
#

let's just write a minecraft server implementation in php

#

it's the perfect language

jovial warren
prisma wave
#

would php be more secure if popular functions such as mysql_query were in a different namespace? probably

jovial warren
#

I'd rather use Python than PHP

obtuse gale
jovial warren
#

though I can't really say shit, since I'm actually starting to like Python now

tranquil crane
obtuse gale
#

It's an MC:BE impl in PHP

tranquil crane
#

burn it

obtuse gale
prisma wave
#

i feel like python would be much less obscure if they adopted modern features such as arrays

obtuse gale
prisma wave
#

blursed

prisma wave
#

you're fine with python being "obscure" then lmao

obtuse gale
#

lol

prisma wave
#

but "modern arrays" are where you take issue

obtuse gale
#

if only there was something similar ever since the inception of computing...

#

oh wait

#

pointers

heady birch
#

Only rust has modern arrays

#

Out of bounds is impossible

prisma wave
#

scarily true

obtuse gale
#

y'all seen how to get an element at an index n from a tuple in c++?

#

std::get<n>(some_tuple);

#

(::::::

heady birch
#

Cool

prisma wave
#

how

heady birch
#

That is cool

obtuse gale
#

what's really cool is that it's all compile time crap

#

love that

#

and the fact you can pass values for template arguments

prisma wave
#

this represents everything wrong with the world today

obtuse gale
#

lmao have you all seen the sonatype ""helpful"" videos on publishing etc to central?

#

the music bro

prisma wave
#

lmfao

jovial warren
#

I thought that said dkim for a moment there haha

old wyvern
#

clash anyone?

static zealot
#

15k? What's that? Money for water ...

#

xD

#

water for the next few years

jovial warren
#

private static final Object ACTUALLY_NULL = new Object();

lunar cypress
#

I feel like they should have done it the other way around

static zealot
#

I mean budget doesn't mean they'll pay that much

#

also they pay hourly

jovial warren
#

more like private static final Object ACTUALLY_NOT_NULL = new Object(); amirite

lunar cypress
#

no I mean like they use their sentinel object to indicate that no value has been calculated yet

#

that would make more sense

jovial warren
#

oh also, we luckily don't need this in Kotlin ๐Ÿ˜Ž

#

delegates

obtuse gale
jovial warren
#

Bukkit

lunar cypress
#

it's not so dumb, really

#

I mean how would you do it

jovial warren
#

I wouldn't call it ACTUALLY_NULL lol

lunar cypress
#

other than what I described

jovial warren
#

because it's not actually null is it

lunar cypress
#

It's a marker for it being actually null

half harness
#

who ghost pinged me

#

๐Ÿ˜ฆ

jovial warren
static zealot
#

lmao xD

jovial warren
#

you're confusing me

#

it's not actually null, since it has a value

#

omg you missed the hint

jovial warren
half harness
#

uh

#

but

#

um

lunar cypress
jovial warren
#

oh btw, anyone know where the items are in Bukkit?

#

dw, got it

#

org.bukkit.material lol

#

seems legit

distant sun
#

Why ...

jovial warren
#

clashes with commands lol

static zealot
obtuse gale
jovial warren
#

so where are the items then ๐Ÿค”

#

OH Bukkit doesn't have items does it

#

it just has Item and ItemStack

obtuse gale
#

wdym?

#

I think you're looking in the wrong place...

#

whatever you're looking for

jovial warren
#

I'm looking for the item classes

obtuse gale
#

ItemMeta & subinterfaces?

jovial warren
#

I guess

obtuse gale
#

They are like the "BlockState" of an ItemStack

jovial warren
#

where are they

#

I found ItemMeta itself

#

it's in org.bukkit.inventory.meta

obtuse gale
#

yea

jovial warren
#

but where are the items

obtuse gale
#

what do you mean by that

jovial warren
#

the item interfaces

obtuse gale
#

??

jovial warren
#

like you have for blocks

#

or are they just item stacks

obtuse gale
#

an ItemStack represents an item yes...

#

ItemMeta would be the equivalent of BlockState (vanilla block data, the one that contains the NBT)

#

BlockData (vanilla block states, old MaterialData) have nothing to do with items

jovial warren
#

I swear Bukkit has an Item somewhere

forest pecan
#

they do

obtuse gale
#

for the item as entity type

#

yes

#

but it's an Entity

jovial warren
#

oh right

forest pecan
#

i remember i keep accidently importing it

#

lol

jovial warren
#

so entities and blocks are interface per type

#

and then items are just one for all

obtuse gale
#

Not necessarily

obtuse gale
jovial warren
#

I suppose it makes sense

obtuse gale
#

e.g. stone

jovial warren
#

interface per type of entity or block I mean

#

not type of data or state

obtuse gale
#

right... blocks have BlockData and BlockState

jovial warren
#

also, this is why Bukkit is a mess

obtuse gale
#

there is nothing extending just Block

jovial warren
#

why tf is ItemStack in org.bukkit.inventory

obtuse gale
#

Block is Block

lunar cypress
obtuse gale
#

and depending on the block it has a BlockData or a BlockState, or both

jovial warren
#

anyway, gn you lot

obtuse gale
#

night

jovial warren
obtuse gale
#

you seem to be misunderstanding how blocks work in bukkit

jovial warren
#

maybe

#

gn

#

I mean, idrc how Bukkit handles them, I just wanted to know so I can use it as a reference for Krypton's API

obtuse gale
#

That implies you do care if you're taking it as reference

jovial warren
#

I guess

#

Idk why I'm even using Bukkit as a reference, should just be building the API by abstracting the server

#

A.k.a building it around the server

#

But instead, I'm building the server around the API

#

Anyway, I really gotta be off now

#

Gn

cinder flare
obtuse gale
#

Man the LP discord gets the biggest dumbest braindeads when it comes to API help

#

Literally 0 programming knowledge

#

Entirely

cinder flare
obtuse gale
#

I know, I had some hiccups when I entered the LP API realm

#

But I'm not talking about the API specifically

#

I'm not even talking about Java specifically

cinder flare
#

Oh lol. Did you have to explain interfaces to them like yesterday? Haha

obtuse gale
#

I did but this is worse

#

I'm like "Did you give the lp variable a value?"

#

"I have this public LuckPerms lp;"

#

And asdjhkfasdhfaos

cinder flare
#

Lmaoooo

#

"But it's right there!"

obtuse gale
#

And Luck wants us to be nice and all but girl I just can't sometimes

#

That's why I rant here lmao

cinder flare
#

Well it makes for some quality entertainment, so keep it up! ๐Ÿ‘

obtuse gale
#

We do have a delightful #pebkac channel :P

#

The wiki clearly says how you should import the API, how you should get an instance of the API

#

I link it to them over and over again and they still get it all wrong

cinder flare
#

Ah the old "Not everyone should be a programmer" haha

obtuse gale
#

Defo no lmao

prisma wave
obtuse gale
#

And an archive one yeah lol

prisma wave
#

pebcac* ๐Ÿฅด

obtuse gale
#

lmao

prisma wave
#

Can't see it ๐Ÿฅฒ

obtuse gale
#

heh

ocean quartz
#

@distant sun What .. the .. fuck

sweet cipher
#

What would be the best way to store data in a database like SQL that might change in the future? Like if a field was added to an object.
Is it best to just add columns if I ever need to, or is there a better way? If you have links to anything that would be helpful too.

old wyvern
#

You'd have to have something store the database version and create migration handlers

#

Most ORMs do a lot of it for you if you wanna go that way

forest pecan
ocean quartz
#

Yes

forest pecan
#

no actual like

old wyvern
#

Whats wrong?

sweet cipher
forest pecan
#

base package name?

#

lmao

ocean quartz
#

Wdym?

forest pecan
#

ok whatever ic

#

like he got rid of the com.github domain part

#

thingy

ocean quartz
#

Still confused what you're trying to say, but no I pinged him because that's the most hideous thing i've ever seen in my life

sweet cipher
#

Okay thank you, I will look into that

forest pecan
#

you know how python and c++ and c have this thing were if an integer is set to 1 you could do something like

if (num) {

}
#

cause 0 = false, 1 = true

#

why didn't Java have this if its parent language was c?

prisma wave
#

Because booleans in C are literally just numbers afaik

cinder flare
#

Cause it was confusing and non-obvious

prisma wave
#

Whereas in java they're an actual type

cinder flare
#

^

forest pecan
#

ic

#

yea that makes more sense

obtuse gale
obtuse gale
forest pecan
#

weirdchamp

half harness
cinder flare
#

The herd mentalilty haha

forest pecan
distant sun
steel heart
#

thats clean

#

๐Ÿ˜„

ocean quartz
distant sun
#

-.-

steel heart
#

its not

#

its readable, minimal, maintainable, adaptable and configurable

distant sun
#

Go to sleep matt

ocean quartz
#

It's horrible, groovy sucks for that, it's like the worse thing i've ever seen

steel heart
#

yeah the chances are you wake up tmrw and feel great about what malloc did for you

forest pecan
#

Optional<Optional<Optional<Optional<?>>>>

cinder flare
#

mmm generics

#

go brrrrrr

steel heart
forest pecan
#

๐Ÿคก

forest pecan
#

"zip".split(" ") should just return a String array with just "zip" in it right

#

yea

cinder flare
#

yea you're just splitting a string literal

#

Can you do that in Java?

#

That seems like a Ruby think to do haha

#
5.times()
``` and all that
#

@steel heart

#
public class Person {
    private String name;
    private String email;
    private int age;

    public Person(String name, String email, int age) {
        this.name = name;
        this.email = email;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return name + " - " + email + " - " + age;
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + name.hashCode();
        result = 31 * result + email.hashCode();
        result = 31 * result + age;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj != null && obj.getClass() == this.getClass()) {
            Person castObj = (Person) obj;

            if (this.name.equals(castObj.getName())) return false;
            if (this.email.equals(castObj.getEmail())) return false;
            if (this.age != castObj.getAge()) return false;
        }
        return false;
    }
}```
#

compared to

half harness
#

oh

#

jeez

cinder flare
#
data class Person(val name: String, val email: String, val age: Int)
half harness
#

lmao

gusty glen
#

lol

steel heart
#

so?

cinder flare
#

as I said, beyond saving

gusty glen
#

you missed the copy method

cinder flare
#

If you can't see the impact that those lines would have, you will never like Kotlin

steel heart
#

I can generate all that with java in my ide within some seconds

gusty glen
#

and also optional parameters

cinder flare
#

Just cause you can generate doesn't mean it doesn't make code cleaner

steel heart
#

if you like infering then I accept your choice

cinder flare
#

You still have to look at that bad boy

ocean quartz
#

@obtuse gale The message I pinged you there was saying I'm coming for you to convert you into a Kotlin user

cinder flare
half harness
steel heart
#

cleaner hmm then I could just use lombok with java

half harness
#

f

#

no

cinder flare
#

LMAO

half harness
#

NOo

steel heart
#

you see

cinder flare
#

someone make the bot do the thing

half harness
obtuse gale
#

the thing

distant sun
cinder flare
#

=lombok

#

or somethin

obtuse gale
#

?plsnolombok

compact perchBOT
#
FAQ Answer:

Why is Lombok bad?

  • It's a compiler hack - the Java compiler isn't designed to modify code, so it can cause difficult to debug errors, or worse
  • It requires an IDE plugin, so unless you've properly configured Maven, Gradle and your IDE, you'll get hundreds of compilation errors. This process takes time too, it's not easy
  • Lombok'd code won't show in Javadocs
  • The code generation is often unpredictable and difficult to debug, and often you'll have to do it "the hard way" anyway
  • Java is supposed to be explicit, Lombok hides a lot of key functionality into a subtle annotation which can be easy to miss
  • While IDEs support it with a plugin, it's usually more difficult to find specific things, like usages of a getter because they don't exist in the source code
  • Finally, Lombok'd bytecode doesn't match the source code, so it causes a pretty annoying warning in IntelliJ
cinder flare
half harness
ocean quartz
#

Poor Conclure

distant sun
#

It has to be done, conclure

steel heart
#

if your point is to make it more consise and friendlier

cinder flare
#

But that throws away safety

half harness
#

public fields in java ๐Ÿคข

steel heart
#

safety?

#

public fields?

cinder flare
#

You know why getters and setters exist, right?

steel heart
#

so what? kotlin uses fields doesn't it?

#

like instead of getters and setters

ocean quartz
#

Properties

cinder flare
#

No, they just have automatic getters and setters that you can then override

ocean quartz
#

They have getters and setters

steel heart
#

yeah for that I recall

cinder flare
#

So if you don't care at first, you don't have to code anything

steel heart
#

but even so why would you override a getter

obtuse gale
#

Since when should you not care about your code

cinder flare
#

If you then want to change it and make it harder to access, you can do it without having to change the code

ocean quartz
#

That's why you can

var something: String
  set() = ..
  get() = ..
steel heart
#

most cases that wouldn't be necessary

distant sun
#

question, why cant kotlin sometimes use its getter/setter format on bukkit? Eg Server#getPluginManager

cinder flare
ocean quartz
distant sun
#

Hmm, I see.

steel heart
#
class A {
  public O o;
}
class B {
  {
    new A.o = new O();
  }
}```

if we change o in class A without refactor surely class B wouldnt compile

```kt
class A() {
  lateinit var o: O;
}

class B() {
  init {
    A().o = O()
  }
}

wouldn't this be the same case for kotlin starmism?

#

did I type the kotlin out right btw?

#

lol

ocean quartz
#

That isn't the same

cinder flare
#

Im not sure what you're trying to do lol

steel heart
#

ok there then

ocean quartz
#
data class A(var o: O)

Implies you're doing A(o)

steel heart
#

oh wait let me change

#

lol

cinder flare
#

I'm saying if you have a getter that returns like, I dunno, health of a character

ocean quartz
#

So in Java it'd need to be

class A {
  O o;
  public A(O o) {
    this.o = o;
  }
}
#

Verbose as it gets

steel heart
#

yeah I recognized

cinder flare
#

Then if you actually want to only ever return 0 even if they go negative health, you can setup an override getter in Kotlin and it wouldn't change its access

ocean quartz
#

The second example still wouldn't work because o is never initialized

steel heart
#

do I declare null?

#

no nvm

#

Null

ocean quartz
#

Could be lateinit

#

lateinit var o: O

steel heart
#

lets go with that

cinder flare
#

Yeah but this is a pretty funky example

#

I'm not saying for all cases, just ones like I said above

#

But in theory, as long as it doesn't return something different, you should be able to in-place override any getter without having to change the code using it

steel heart
#

Lets say that we're talking about regular POJOs nothing extraordinary

#

then technically an exposed java field would work equivalent to kotlins propertioes?

#

sort of

#

not 100% equivalent

cinder flare
#

Yes, but you'd run into a lot of problems if you ever wanted to control getting and setting it

#

That's why getters and setters exist and are common coding practice for defensive coding

#

To protect you from yourself

steel heart
#

though in principle if the getter and setter only acts like a vessel for the object it is somewhat meaningless

cinder flare
#

Yes, but in Java you'd still write out a getter and setter in case you'd want to change it later

steel heart
#

yup

cinder flare
#

And yes, I know you can generate them with your IDE, but it's still annoying boilerplate you have to read

#

And it's hell for watching students code with NotePad++ lol

steel heart
#

although we have refactor tools in ides

#

but lets assume other stuff depends on your project

cinder flare
#

Yup, but it's built into the language!

steel heart
#

then yes

cinder flare
#

And yeah, even better!

steel heart
cinder flare
steel heart
#

why

cinder flare
#

Then my Intellij goes brrrrr

obtuse gale
#

lmao

#

I remember having to write a whole Arduino program with pen an paper for an exam

#

It was like

#

3 frigging pages long

cinder flare
#

Dude wtf

obtuse gale
#

yeah idk either

remote goblet
#

Programming teachers genuinely suck

steel heart
#

Starmism you encouraged me to create a why not to use kotlin over java thread smiling_face_with_3_tears

obtuse gale
#

I got a 100 so ๐Ÿ˜Ž

cinder flare
#

VS Code exists man

cinder flare
steel heart
#

yup

#

actually no

cinder flare
#

I mean you can stick with java lol

steel heart
#

would rather

cinder flare
#

Eventually they'll most likely make that a thing because it's a smart thing to do and they're copying Kotlin haha

steel heart
#

yeah I feel that

obtuse gale
#

and they're copying Kotlin
I mean Conclure did mention that lmao

steel heart
#

I mean they did add more functional switches and sealed classes for instance

cinder flare
#

And it compiles to JavaScript too lol

#

So you can make a fullstack web application in Kotlin

steel heart
#

yeye thats a good reason to learn kotlin

#

think matt did something with react and kotlin

cinder flare
#

ooh have you seen string interpolation

steel heart
#

okay stop

cinder flare
#

that shit is nice, though I guess it doesn't save too many lines

#
val x = 4
val y = 7
print("sum of $x and $y is ${x + y}")  // sum of 4 and 7 is 11```
steel heart
#

String#concat works great duh

#

but I will take it as java might add it one day

#

so no worries

#

๐Ÿคก

cinder flare
#

Ooh, letting you override ==

#

Now that shit can be confusing to a new developer

obtuse gale
#

Overriding << to ostream things ๐ŸŒ

cinder flare
cinder flare
steel heart
#

yeah true but it's probably to make it more customizable if thats aword

obtuse gale
#

It's not really a "concatenation operator", it's more of a "you're shifting data out to the stream"

#

you can + strings just fine

cinder flare
#

Okay I did not know that ngl

#

I just thought it was a funky way to print to the console

obtuse gale
#

but the << for cout is dumb as fuck ngl

cinder flare
#

ya haha

obtuse gale
cinder flare
#

I bet someone's made a function that's just println then does

cout << inputString << endl```
obtuse gale
#

lmao

#

I mean printf is still untouched so yah

cinder flare
#

printf kinda lame tho

obtuse gale
#

and if I'm not mistaken << just calls .write under the hood lol

steel heart
#

so << is used cuz its shorter?

obtuse gale
#

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

steel heart
cinder flare
#

who knows what C++ be doing man

ocean quartz
#

I hear a lot of good things about newer versions of C++ though

obtuse gale
#

Ever since C++11 (so 11, 14, 17 and 20) they have been adding really cool and useful stuff

cinder flare
#

yeah but like every project still uses C++11

obtuse gale
#

lmao

#

17 is my way to go currently

steel heart
#

java did add some support for a newer C++ version in 16 ๐Ÿ˜ฎ

obtuse gale
#

for like the 2 projects I currently have in c++

steel heart
#

I think

cinder flare
#

or older ๐Ÿคฎ

cinder flare
#

like you can call C++ code easily in Java or somethin?

forest pecan
#

wasnt that always a thing

#

native keyword

ocean quartz
#

Java is also getting much better tbh

obtuse gale
#

It definitely is

cinder flare
#

ya i didn't know that ngl

obtuse gale
#

But C++ best waifu

steel heart
obtuse gale
#

Reflection TS ๐Ÿคค

steel heart
#

347

cinder flare
#

Fefo you should give me some example projects to do in C++ with about 2 days of experience and a lot of knowledge of Java and bit of C :)

obtuse gale
#

A BrainFuck interpreter lol

cinder flare
#

ah shit you're right

#

the Fefo Wayโ„ข

obtuse gale
#

I remember doing some mandelbrot thing..? I think?

forest pecan
cinder flare
#

my boy Wilfred being a hero

obtuse gale
#

OH YEAH

#

MENACE

cinder flare
#

it can cross-compile BF haha

half harness
cinder flare
#

I don't think so boss

#

Even Maven isn't that slow ๐Ÿคฃ

#

wot

half harness
#

idk

#

fefo

#

talk

#

plz

cinder flare
#

It seems to be Building the model...

half harness
#

ur typing

#

fefo

#

why are you taking

#

so long

#

to type

cinder flare
#

That looks like when it compiles Maven's thing to parse it

#

Also why is that progress bar so beautiful

half harness
#

um

half harness
#

๐Ÿคฎ

obtuse gale
#

I remember doing a whole tic tac toe thing in c++ and even made a whole thing for calculating unique boards (mirrors/rotations etc), all because I wanted to make MENACE
https://en.wikipedia.org/wiki/Matchbox_Educable_Noughts_and_Crosses_Engine
I still have the project finished and in theory it works and it learns from itself and previous games but I never played more than like 5 rounds so I never actually found out if it actually learns anything lmao

half harness
#

;-;

#

ok ima press cancel

#

and do it again

obtuse gale
#

Basically my first and only machine learning project hahah

cinder flare
obtuse gale
half harness
#

ok

obtuse gale
#

Not yet at least

half harness
cinder flare
#

I ain't Conclure out here, rejecting the future ๐Ÿคฃ

#

well what is it

half harness
#

uh nvm

#

๐Ÿ˜ฌ

#

oh lol

ocean quartz
#

Wtf Dkim

half harness
half harness
#

still happening

#

i hate this

#

ima restart intellij

remote goblet
#

what kinda

ocean quartz
#

Probably so slow because you don't have the Nyan cat progress bar

eternal compass
#

@half harness get a brtter pc

half harness
#

i want a brtter pc ๐Ÿ˜ฆ

eternal compass
half harness
eternal compass
#

I need that now.

half harness
#

its a plugin

half harness
obtuse gale
#

by waiting

#

more specifically by waiting 24 minutes and 10 seconds

half harness
#

ive already waited 24 minutes and 10 seconds

#

i went via browser

#

and its there

oblique heath
#

just download more internet

half harness
#

should i just manually import jar or smth

#

ok i just manually imported jar

half harness
#

?download-ram

compact perchBOT
cinder flare
#

I'm glad that's a bot command

eternal compass
#

Ah yes

ocean quartz
cinder flare
obtuse gale
#

nyan cat best

ocean quartz
#

^

cinder flare
#

oh it didn't embed, sad

obtuse gale
#

cuz lowling Tier I :kekw:

cinder flare
#

I'm trying okay!

#

I've gotten like 8 levels in 2 days

obtuse gale
#

8 already???

cinder flare
#

yeah boss

#

maybe 7 i forget

eternal compass
cinder flare
#

hell yeah that's what I'm talking about

eternal compass
#

:p Tier 3

cinder flare
#

im speedrunning alright!

#

There aren't enough noobs to help right now

eternal compass
#

I used to be a #cubes-pings tryhard, then I failed twice and gave up at tier 3

cinder flare
obtuse gale
#

used to be just like that

half harness
#

why is there red underline?

#

(on gradle tab on right)

obtuse gale
#

idk

half harness
#

no project errors

obtuse gale
#

invalidate caches and restart ๐Ÿ™‚

half harness
#

noooo

#

i have a billion dependencies

cinder flare
half harness
#

i have 19 dependencies

#

it'll take ages

eternal compass
#

Rip lol

#

Btw what is mvn clean?

cinder flare
#

bro try the plugin I was working on

cinder flare
half harness
eternal compass
half harness
eternal compass
half harness
#

gtg byeeeeeeee

cinder flare
half harness
cinder flare
#

I had to add a JSON thing's dependency lol

half harness
#

gson ftw

eternal compass
#

@obtuse gale whats your spigot relationship?

#

That sounds wierd lol

obtuse gale
#

I mean for someone who hasn't heard about Aikar's JVM flags on this community...

cinder flare
#

oh I see

eternal compass
#

Yeah, I see your point

cinder flare
#

I dunno man, I hadn't heard about Purpur until I read a thread on reddit

eternal compass
#

Lol

cinder flare
#

Though I have been running servers for basically 10 years so.. guess I'm just dog water :(

obtuse gale
#

lmao

eternal compass
#

Wait aikars flags are paper, not purpur

#

Big diff ^

obtuse gale
#

Paper has been a thing for ages, don't know about Aikar's research on the flags but still lol

cinder flare
#

I mean it doesn't say you can't use them on Purpur

#

It just says my boy recommends Paper

eternal compass
#

Oh, I use them on purpur, but they're not from purpur

cinder flare
#

???/

#

okay lmao

obtuse gale
eternal compass
#

Idk man, I'm tired lol

cinder flare
#

Fefo's too big brain for that github discussion

#

Also is that the new darkmode thingy? I like the blue accents

obtuse gale
#

Yeah

#

is dope

#

dude legit has userManager.searchAll(...).join()

#

and says "This problem can be solved by returning CompletableFuture"

#

well what do you think you're calling join on

cinder flare
#

Okay so this might be really dumb, but what's with the GroupManger#getMembers syntax vs GroupManger.getMembers?

#

Is it just a thing like you do on the docs?

obtuse gale
#

ah

#

I mean it's nothing legitimately official outside of this guild

#

but

#

Class#method() for instance/member methods

#

Class.method() for static methods

#

the # probably boils from javadoc

ocean quartz
obtuse gale
#

which is kind of stupid because when rendered it shows .

eternal compass
ocean quartz
#

Exactly

eternal compass
#

But its not a purpur recomendation, its aikar's, thats my point

#

Billy wouldent do that much research /s

cinder flare
#

Does paper officially recommend Aikar's stuff? lol

eternal compass
#

Paper is aikar

obtuse gale
#

Aikar is one of the lead devs from the Paper team

#

so yea

ocean quartz
#

Check paper's timings

cinder flare
#

Ah I see I see

#

I'm just on his blog lol

obtuse gale
#

"blog" lol

#

so 2002

eternal compass
#

Airplane has a blog wierdly enough

obtuse gale
#

forums

cinder flare
#

I think blogs are kinda cool man

#

Just to document stuff

obtuse gale
#

a public diary :p

cinder flare
#

Like I saw a blogpost about accurately simulating the way light reflects in water and makes weird lines on the bottom of the pool in Unity

#

it was kinda sick

obtuse gale
#

Snell's law

#

had to study that shit in high school

#

cuz

#

fiber optics

eternal compass
#

Imagine not dropping out in middle school, smh

#

Full time minecraft dev at the age of 12

#

Or whatever middle school is

#

I forget now honestly

ocean quartz
#

Just take the course at Mineacademy and learn how to become self reliable

cinder flare
#

It's like, around 14 I think

#

let's see

#

you graduate high school at 18

eternal compass
cinder flare
#

11, grade 17, 10th grade 16, 9th grade 15, 8th grade `14, 7th grade 13, 6th grade 12

#

I guess 12-14

eternal compass
#

Ah, ok

cinder flare
#

Or 13-15 if you live where I live and had middle school be 7-9th

obtuse gale
#

man I have no clue how anything of grades and stuff work outside my country, shit's confusing as fuck

dire gulch
#

Im new to this server were it the channel were someone can help me with a texter pack

cinder flare
obtuse gale
#

idk

obtuse gale
#

Argentina, all the way down south america

cinder flare
#

Oh woah, so you speak Spanish then?

obtuse gale
#

I guess I do

eternal compass
#

I'm in the US, and everything is stupid for no apparent reason lol

cinder flare
#

I guess I do hahah

cinder flare
eternal compass
#

:p

obtuse gale
#

lmao dyno pls

eternal compass
#

Smh

#

Is that irc mode?

cinder flare
#

What server is that in?

#

Do you have a private discord server ๐Ÿ‘€

obtuse gale
obtuse gale
#

Invite is hidden somewhere in the internet...

cinder flare
#

ah it's the LP channel hmmm

obtuse gale
ocean quartz
eternal compass
#

Huh? Is that the invite or smth?

cinder flare
#

bro imagine being unlucky

obtuse gale
cinder flare
#

oh no

eternal compass
#

F

#

Ok, I need to sleep. Cy'all

cinder flare
#

Night!

obtuse gale
#

uuh

#

GoPro bro

cinder flare
#

right!

#

it bends the wrong way

eternal compass
#

360 camera where?

cinder flare
#

haha

#

it bends in tho

remote goblet
#

i go past this all the time and i hate it

cinder flare
#

that's kinda cool, dunno if I'd use java as my language of choice (besides the pun)

obtuse gale
#

void
return ...

ocean quartz
#

Return on a void method thonking

remote goblet
#

no the java code is wrong

obtuse gale
#

epic

#

I mean it will complain

#

but it won't stop you

cinder flare
#

GCC

#

what a compiler

#

Clang gang all the way

obtuse gale
#

llvm ftw

cinder flare
#

I asked that same guy what directory the texture was in and he said "the one that I made"

#

im scared

eternal compass
#

๐Ÿ‘€

obtuse gale
#

you know what I'm talking about exactly...

cinder flare
#

ummmmm

#

mom come pick me up

#

that's either winrar or filezilla and the icons for a .jar are internet explorer

obtuse gale
#

that's probably fz yeah

#

but the fact they had IE set to open jars...

#

oh god

ocean quartz
#

@jovial warren Suggestion for Krypton
Add plugin load priority

obtuse gale
#

gotta love these people.......

#

proceeds to ping every single staff member in existence
"srry"

hot hull
#

Shoot me please

obtuse gale
#

no

#

I'm first in line

hot hull
#

It's 5 am

ocean quartz
#

Gets better, dms you "sorry to dm"

#

Why are you awake Frosty?

obtuse gale
hot hull
#

School

#

This week is hectic

#

I'm at school every day for 11 fucking hours

ocean quartz
#

Schools aren't closed there?

hot hull
#

Just reopened

#

We have a week of online, and then actual school, and it switches

hot hull
#

High school

cinder flare
#

Ah makes sense

#

My sister's high school did that too

hot hull
#

Kind of dumb but oh well

#

Atleast we're getting somewhere

cinder flare
#

Haha

#

Hopefully vaccine % goes up so everyone can live their lives again

ocean quartz
#

But the 5G ships!

cinder flare
#

oh ye u rite u rite

#

don't want my sailboat flying away with the power of 5g or anything

#

aw sheet my state is only at like 6.2% of adults vaccinated :(

#

I hate it here

hot hull
#

Lemme see if they released an approx of where we're at

ocean quartz
#

My country is going really slow too, 3.3% fully vaccinated

cinder flare
#

Well yeah but you also probably don't have the financial might of the US to order vaccines and stuff lol

hot hull
#

Ah you're US

#

Kek

ocean quartz
#

We have enough vaccines for the entire population already, they are just slow at distributing

cinder flare
#

oh what!@

cinder flare
hot hull
#

Yea y'all pretty much fucked

cinder flare
#

hey man, im tryin

#

best part about being a developer? remote work!

#

canada, here I come :)

hot hull
#

Hehe

obtuse gale
#

I want to move to canada so much

#

You can't get an idea

cinder flare
#

Argentina not good?

obtuse gale
ocean quartz
#

Lmao

#

Move to Brasil they are doing great there /s

obtuse gale
#

๐Ÿ™‚

cinder flare
#

yeah but then you have to speak dollar store spanish

hot hull
#

We're at 4.05% fully vaccinated

#

8.47% still waiting on the second dose

ocean quartz
#

They don't have pandemic

cinder flare
#

oh nice

#

look at how happy they look tho!

ocean quartz
#

Exactly!

obtuse gale
#

lol

oblique heath
#

what do yall think about the new /debug feature in 1.17

#

looking an awful lot like aikar's timings ey

obtuse gale
ocean quartz
#

Nice one JetBrains

obtuse gale
#

Hi, I have a question. How do I place the EZ-Prestige on a leaderheads plugin poster?

remote goblet
obtuse gale
#

Nobody answers me ๐Ÿ˜ฆ

#

๐Ÿ˜ญ

#

And no one will answer here either, this is the wrong channel

#

Wait in there patiently until someone who knows responds

#

๐Ÿ˜ญ

#

So I once took the terrible decision of making a public plugin, it's literally trash but I recently added a nice and dandy API to it (cuz someone needed one) and I'd like for someone to tell me what they think about the API, not the backend impl because it's trash and there's no way I'm fixing it without an entire rewrite from the very ground up ::)
IMO the API is clean and concise, and hopefully it is (it's also very small but it's natural for what the plugin does)
https://s01.oss.sonatype.org/content/repositories/snapshots/
"com.github.fefo6644:betterjails-api:1.5-SNAPSHOT"
So yeah just like import it in maven/gradle/ur mum and start at the BetterJails interface :)) pls k thx

#

please I really need some feedback other than my own ego

#

some background information, it's a plugin made to replace EssX's jail system

oblique heath
#

BetterJails only has 3 methods?

obtuse gale
#

Indeed

#

I mean the biggest part is the event bus lmao

#

But hopefully the jdocs are explanatory enough

oblique heath
#

ah yeah they're helpin

ocean quartz
#

Pretty straightforward API imo

obtuse gale
#

Inspired by LP's

#

Somewhat yeah

ocean quartz
#

I suggest a PlayerJailedEvent and PlayerReleasedEvent, could be pretty useful

obtuse gale
#

PlayerImprison(ed?)Event & PrisonerReleaseEvent

ocean quartz
#

O

#

Didn't see those

#

Nvm me

obtuse gale
#

Was gonna make those cancellable but the spaghetti backend made it impossible lol

oblique heath
#

my feeble brain can't handle the stuff going on but it's definitely fancy

obtuse gale
#

Lmao

oblique heath
#

how do i get a list of all of the events I can listen to?

obtuse gale
#

They are all under the ...api.event package (in their own sub packages)

#

Making the event bus made me read the documentation for Class#isAssignableFrom(Class) a lot ๐Ÿฅด

#

Because of the whole "listens to subinterfaces too"

oblique heath
#

๐Ÿ˜ฎ

#

well this is certainly a grade above anything i could come up with

#

all i'd want is some thorough documentation

#

to make sure me and other small brained developers can figure out how to use all of the features hidden away in this juicy package

obtuse gale
#

There isn't much to it xD it's just the event bus doc that needs to be read thoroughly lol

cinder flare
ocean quartz
cinder flare
obtuse gale
#

Non, these are totally unrelated and detached from Bukkit's event system

cinder flare
#

Okay, please do tell then :)

cinder flare
ocean quartz
#

Yeah

#

The font you change on the IDE itself

#

Fuck i should be sleeping

cinder flare
#

But instead, you're vibin with me! :)

ocean quartz
#

Suffering at 6am

cinder flare
#

Oh my god that color scheme is so nice

#

So bright! and pastelly!

obtuse gale
# cinder flare Okay, please do tell then \:)

I have my own event bus (which allows for things to be platform agnostic)
In my case the other plugin passes a class of the event they want to listen to and a consumer of said event type, I literally just keep a Map that maps the event type -> handlers so yeah lol

ocean quartz
#

I changed a few colors to make it even nicer, didn't like how the string green looked

cinder flare
#

Oh so what does your event bus accomplish then?

cinder flare
ocean quartz
#

Oof I'd need to check, i can send it to you tomorrow, not on pc right now

cinder flare
#

Ah okay sick, thank you!

obtuse gale
#

I can dispatch events not only not depending on Bukkit's system but I can keep track of as many things as I want and design it the way I want it to
For example if I make cancellable events I can keep track of which plugin did it based on what handler was called etc, this bus you can also subscribe to superinterfaces (e.g. subscribing to BetterJailsEvent lets you listen to every other event of a subtype)

cinder flare
#

But doesn't that make it more annoying for other developers to listen to your events? Since it's on a whole new bus

obtuse gale
#

It basically boils down to flexibility

cinder flare
#

Oh cool

obtuse gale
#

But if you're designing something that will run on multiple platforms (say LuckPerms) having an own event bus is a must-have

cinder flare
#

Is BetterJails really going to be that widely adopted? lolo

#

I guess it's good practice though

obtuse gale
#

Was planning on making it for Sponge and Fabric too but like uuh in a thousand years lol

cinder flare
#

Haha'

#

lol the shortened name is BJ

obtuse gale
#

I guess I just want the challenge of abstracting it out of the server software

obtuse gale
#

Then when I realized I was like

#

Oh...

cinder flare
#

oh I thought it was intentional haha

obtuse gale
#

LMAO NOO

#

XD

cinder flare
#

it's kinda hilarious tho

obtuse gale
#

Well no one complained so :^) it's staying

cinder flare
#

haha yes, you put Maven before Gradle in the help section >:)

obtuse gale
#

Like every other "importing X to your project" section

#

They always put maven first lol

cinder flare
#

Good >:)

#

b

obtuse gale
#

Ngl maven made it amazingly easy to publish to sonatype

cinder flare
#

what's sonatype?

obtuse gale
#

Central

cinder flare
#

Oh I see

obtuse gale
#

Central repository for Java applications or whatever

#

If you want to distribute your JVM library, Central/Sonatype is a common choice after self hosted

cinder flare
#

Ah I see, I know what Maven Central is lol, just didn't know it was called Sonatype

obtuse gale
#

They are the maintainers

#

I think

#

No idea lol

cinder flare
#

alright, time to clone betterjails and see what I can pr >:)

obtuse gale
#

Yeah I'm not touching v1 no more LMAO

#

When I said "it's literally trash" I meant it xD

cinder flare
#

Oh I should be touching main branch shouldn't I

obtuse gale
#

The main one which I haven't touched in a long time either but it's the v2 rework!

#

Yes that one

cinder flare
#

ah yes ye yes

#

3 commits ahead, 48 commits behind haha

obtuse gale
#

And it has many things wrong already lolol

cinder flare
#

hmm, no issues?

#

got anything that needs to be done?

obtuse gale
obtuse gale
#

Idk if in the readme or in spigotmc/bukkitdev

cinder flare
#

Ah I love trello!

obtuse gale
#

I really like it but it doesn't make me any less lazy lol

cinder flare
#

At least you can identify, at a glance, just how lazy you are!

obtuse gale
#

Sad :)

jovial warren
#

Lol

#

Totally didn't take me a few hours to do that

#

What do you guys think of those enum names btw? They're named by their names on the wiki, rather than whatever vanilla calls them internally

#

Or any Bukkit BS naming

#

And I split blocks and items as well, to make it easier to find what you want

cinder flare
#

is Krypton like paper but in kotlin?

jovial warren
#

There's a big difference between Krypton and Paper

#

Paper patches vanilla, Krypton is made from scratch

cinder flare
#

So the real difference being that you can't use like any plugin on Krypton?

#

At least it's in Kotlin though, that's kinda really nice

prisma wave
#

Sadly many grave mistakes were made when designing this project

#

For example the use of kotlin

steel heart
#

should have used haskell

#

duh

prisma wave
#

Obviously

#

Haskell is actually pretty good in terms of performance