#dev-general

1 messages ยท Page 391 of 1

jovial warren
#

actually looks like it must be chunk data that declares inventories like chests and stuff

jade kraken
#

idk there is crafting tables and furnaces

jovial warren
#

I mean, if Bukkit can just magically open inventories out of nowhere then there has to be a packet to open windows

cinder flare
#

maybe they manufacture their own fake inventory then teleport the player to it, force them to right click, and teleport them back ;)

jovial warren
#

lol

jade kraken
#

they open a chest

cinder flare
#

wow, you're fun

jade kraken
#

we could just make minecraft from scratch and then add another inventory type

jovial warren
#

lol

onyx loom
#

yes

#

minecraft client written in kotlin when

#

@ bardy

jade kraken
#

kotlincraft

half harness
#

make mojang bankrupt

jade kraken
#

y no

half harness
#

wdym nope

jovial warren
#

I ain't dealing with rendering or lighting or any of that shit

#

alright, leave it as a maybe

jade kraken
#

just make cat sleep on keyboard and when you wake up you will have 900k github stars

jovial warren
#

lol

pastel imp
#

Uhm.... anyone with knowledge of google spreadsheets api?

prisma wave
onyx loom
#

๐Ÿฅฐ

pale shell
#

does a bunch of work for a client and they don't pay fingerguns

cinder flare
#

half up front half after

pale shell
#

learnt that the hard way

#

how many enchants would be needed in a premium plugin for it to be fair to premium?

cinder flare
#

solid like, 15 at least?

stuck harbor
#

ruhst

oak raft
#

rust bad

#

php good

prisma wave
#

April fools is over

jovial warren
#
/**
 * Represents a player's inventory
 *
 * This should follow the standard inventory of the protocol, which documents the following:
 * - The first slot, 0, is the crafting output slot
 * - Slots 1-4 are the crafting input slots
 * - Slots 5-8 are the armor slots (helmet, then chestplate, then leggings, then boots)
 * - Slots 9-35 are the main inventory (27 slots)
 * - Slots 36-44 are the player's hotbar (9 slots)
 * - Slot 45 is the offhand slot
 *
 * @author Callum Seabrook
 */
```is that too complicated for a player's inventory?
cinder flare
#

that uh

#

seems a little backwards

#

I'd think the player's inventory starts with their hotbar and normal inv then expands up to their crafting things

#

also is your name Callum ๐Ÿ‘€

jovial warren
stuck harbor
#

seabrook is a crisp brand

#

ur named after a crisp brand

#

sadge

cinder flare
#

Well that's just how mojang does it, no?

#

you can do it however you want!

stuck harbor
#

false

cinder flare
#

oh?

stuck harbor
#

oh.

cinder flare
#

I mean as long as you send it correctly, it doesn't matter

jovial warren
#

yeah true

cinder flare
#

you could make logical sense of it for the API to make it easy squeazy to use

jovial warren
#

yeah I'll think of something later

#

also gonna have to rework player data loading

cinder flare
#

how's block data persistence coming

jovial warren
#

I've just spent the past couple of hours maybe making inventories

#

those have to come first before we can even start on placement

#

since we have to know what item the player is holding to know what block to place

cinder flare
#

nah just make it random

#

it'll be spicy

jovial warren
#

lol

cinder flare
#

I'd actually be down to mess around with that

#

we should make that an easter egg or something

jovial warren
#

when I make super_secret_settings.conf a thing, I'll put it in there

cinder flare
#

ooooh yeah

#

you have to make it yourself

#

now that'd be secret

jovial warren
#

20 files changed, 545 insertions(+), 9 deletions(-) I'm officially declaring incremental commits impossible with this project

#

the thing I've made doesn't even work properly

half harness
jovial warren
cinder flare
#

haha

#

add a built-in if (player.getName().equalsIgnoreCase("BomBardyGamer")) { player.setOp(); }

half harness
#

time to hack bardys account

cinder flare
#

ooh maybe it could be a secret password or something

#

that way even if you hack Bardy, you wouldn't know the pass

half harness
#

time to make an app to try every combination overnight

cinder flare
#

SHA-256 hash

#

more possibilities than you can compute in the next 500 years

onyx loom
#

good luck

#

yeah lmao

jovial warren
cinder flare
#

awe nice

#

who else is a creator huh?

#

me, for all my amazing input?

#

and those cinnabon bites once?

jovial warren
#

actually that should be trust-core-team-with-op = true

cinder flare
#

im on the core team right

onyx loom
#

dont make it bait tho ๐Ÿ‘€

jovial warren
#

no Star

cinder flare
#

wot

#

wdym

#

with all the love and support I've given

jovial warren
cinder flare
#

this is how you repay me

onyx loom
#

debug: true gives u op instead :kekw:

jovial warren
#

lol

cinder flare
#

im gonna cry

jovial warren
#

operator status doesn't even exist yet

#

Star you're not part of the core team

#

you haven't even contributed any code

cinder flare
#

you don't have to keep saying it!

#

I've contributed ideas!

jovial warren
#

fair I guess

cinder flare
#

Not everything has to be code

#

And testing!

jovial warren
#

contribute some code and you get the contributor role in Discord

cinder flare
#

you have a discord?

onyx loom
jovial warren
#

oml why are you not in it yet lol

cinder flare
#

bro im your biggest fan

#

and you forgot to invite me

#

im shook

jovial warren
#

look on the GitHub

#

kaliber you ain't in here either

#

smh

cinder flare
#

oh wtf I don't get moderator

#

this is rigged

jovial warren
#

lol

#

you can have moderator if you really want it

cinder flare
#

the real Dr. Mike Pound would appreciate me ๐Ÿ˜ญ

jovial warren
#

-_-

onyx loom
ocean quartz
#

Wait what? Brigadier is transitive, you shouldn't need this

onyx loom
#

ill join when i get home

cinder flare
#

yooooooooo

#

im happy again

jovial warren
#

I found that one out the hard way

#

try it yourself

#

not sure if that works for Maven, but that definitely doesn't work for Gradle

#

I just assumed Gradle suffered from the same issue

#

where there are no transitive repositories

#

try it for yourself if you call BS

ocean quartz
#

Give me an example of a command to test

#

Also bard lol

#

@jovial warren

obtuse gale
#

lmao

jovial warren
#

what version you depending on

#

latest is 0.16.1

#

noob

ocean quartz
#

Then update your shit lol

jovial warren
#

wait where does it say the version?

#

did you read "as of version 0.11" as "the latest version is 0.11"?

ocean quartz
#

Nowhere, that's the issue

jovial warren
#

true

ocean quartz
#

Aight give me an example of a command

jovial warren
#
class MyCommand : Command(name = "test", permission = "permission.test", aliases = setOf("hello", "world")) {

    override suspend fun execute(sender: Sender, args: List<String>) {
        sender.sendMessage(Component.text("Hello!"))
    }
}
#

note that permissions don't work without LuckPerms lol

#

there's no built-in system yet

#

named so you can read them properly

#

it's basically BungeeCord's commands

#

might give you a bit of an overview of all the things the API has and how it works

#

(sorry there's not any decent documentation yet, I'll get round to it soon)

ocean quartz
#

Yeah you have an issue with your generated pom, it's not adding repositories

#

Won't get org.jetbrains.kotlinx:kotlinx-serialization-hocon either

jovial warren
#

yeah that seems to be an issue

#

no idea how I even solved that

ocean quartz
#

solved
You haven't

jovial warren
#

or what causes it

#

I mean solved it in LP

#

ah this is using Maven Local

onyx loom
jovial warren
#

idek what causes that issue Matt

#

if you could help me figure it out that would be greatly appreciated

jovial warren
onyx loom
#

@jovial warren wheres this discord link

#

am i blind or what

ocean quartz
#

I'll look at it once I'm back

jovial warren
#

top of the README

#

it's kinda small

#

one of the badges

onyx loom
#

ah yes sorry

jovial warren
#

might wanna add one of the big badges

ocean quartz
#

I think i know how to solve it but brb

jovial warren
#

alright

half harness
#

what is a good package name for top level functions or whatever they're called?

surreal quarry
#

i usually do utils or funcitons

half harness
#

thx

steel heart
#

funcitons

#

yes

cinder flare
#

welcome to funky town

#

funci-ton

ocean quartz
#

@jovial warren Awesome start lmao

cinder flare
#

download that HOCON baby

old wyvern
#

Ah yes

#

Matt

#

Set the gradle version to 11

#

In project settings

#

It seems to just not work when gradle jvm is set below that

cinder flare
#

it's cause java 8 is big bad

old wyvern
#

oh wait, actually in your error it seems the repo itself isnt provided xD

cinder flare
#

damn dude Frosty got 62 repositories

ocean quartz
#

Yeah xD

old wyvern
#

Frosty OP

#

Time to learn how to use dagger

cinder flare
#

man I never realized how good MF-GUI was

ocean quartz
#

Why would you do this Bard ๐Ÿ˜ข

old wyvern
#

MF taking over the world

onyx loom
#

mf-gui-kotlin fingerguns

ocean quartz
#

That'll be a thing soon

#

Gotta work on SlimJar first though ๐Ÿ‘€

old wyvern
#

๐Ÿ˜ฎ

cinder flare
#

oh I was looking for it lmao

onyx loom
#

just merge bms repo into one, ez claps

cinder flare
#

is MF-Cmds any goodf?

old wyvern
#

oh yea, bm has a mf gui kotlin extensions lib

old wyvern
onyx loom
#

yea thats what im on about yugi xd

#

i use it myself star, its great

prisma wave
#

yes merge it

onyx loom
#

nice and simple ๐Ÿ™‚

cinder flare
#

okay okay so Matt is carrying all of our plugin development very cool

onyx loom
#

expansive too ofc

ocean quartz
old wyvern
#

Matt is becoming the google of Spigot

onyx loom
#

slowly but surely

old wyvern
#

Taking over the industry

ocean quartz
#

Oh god

cinder flare
#

so should I not use it until it's rewritten? lol

old wyvern
#

๐Ÿ˜‚

onyx loom
#

lol

#

id say use it star

ocean quartz
onyx loom
#

matts just not happy with the codebase lol

old wyvern
#

It works fine rn Star

cinder flare
#

okay okay

ocean quartz
#

Was my first ever lib so yeah it's oldie

old wyvern
#

Only thing I would want fixed is the onDisable bug

onyx loom
#

how long have u been working on the rewrite now matt, like 1 year sad_fingerguns

ocean quartz
#

Is it the thing about commands not unregistering?

old wyvern
#

Yea

ocean quartz
#

That seems to be a Bukkit thing though
So best thing is to only register the commands after all disabling checks are done

old wyvern
#

I think I have an idea to fix that

#

Not sure if PRing rn is going to be useful tho

cinder flare
#

what about uhhhh

#

triumpchat ๐Ÿ‘€

old wyvern
#

You can add a listener directly to the HandlerList

onyx loom
#

๐Ÿ˜ฉ

#

matt with his billion projects

old wyvern
#

so it wouldnt disable the listener before stoping the plugin

ocean quartz
#

Ooh good idea

cinder flare
#

i mean he really is becoming a one-stop shop for convenience

onyx loom
#

xd

old wyvern
#

triumph paper merge when?

onyx loom
#

omg

cinder flare
#

you made it worse Yugi lmao

old wyvern
#

xD

ocean quartz
#

Dude I have so much, TriumphChat, which i wanted to have SlimJar and the cmds rewrite done first, so that's 3 already
Then TriumphPets which I want to work on a new navigation for them, so 2 more ๐Ÿ˜ซ

ocean quartz
old wyvern
#

๐Ÿ˜ฎ

cinder flare
#

what's slimjar?

old wyvern
#

I really should setup the organization now xD

cinder flare
#

and don't say "slims your jar"

old wyvern
#

I just get lazy every time xD

#

I slept through this whole day tbh

#

tired af for no reason

cinder flare
#

who tf is alex and why do they keep reacting to your messages

old wyvern
#

Absolutely no idea

#

Bot maybe?

bold pecan
#

Hi guys

old wyvern
#

Hi

cinder flare
#

oooh spooky

bold pecan
#

Was interested in your convo

onyx loom
#

yugi will this support relocations ๐Ÿฅบ

old wyvern
#

Yes

onyx loom
#

omg pog

old wyvern
#

Already working on it

onyx loom
#

fuck pdm

#

bad

stuck harbor
#

okay Frank Lloyd Wright

old wyvern
#

xD

cinder flare
#

oh wow imagine every plugin using slimjar and it only has to download the shared libs once

#

that'd be some crazy savings

#

near package-manager level shit

stuck harbor
#

thats... the point

#

will slimjar work with pdm?

#

as in, slimjar and pdm plugins, will they be able to use each other's dependencies?

#

that would be a good idea

old wyvern
#

You could set it up to do so yea

cinder flare
#

built-in integration right now!

old wyvern
#

PR

#

Open for any suggestions

cinder flare
#

bro I just heard of this, you think I understand how both this and PDM work well enough to link them

ocean quartz
#

Yo @jovial warren Could not resolve org.jetbrains.kotlinx:kotlinx-serialization-hocon:1.1.0. I'm bored I'll do something else

#

Why would you link them though?

jovial warren
#

no!

#

๐Ÿ˜ญ

#

did you find anything btw?

#

I just got back from eating dinner

old wyvern
#

Did you add mavencentral matt?

jovial warren
#

ah actually ik what it is

#

I'm stupid

#

set your Gradle build version

old wyvern
#

this isnt that issue bard

#

Mine was with version incompat

#

This is just not resolving the dependency

jovial warren
#

yeah your Gradle needs to be using Java 11

#

oh

ocean quartz
#

Pretty sure it's because you have a mess of dependencies in the project
Imo all those dependencies shouldn't be in allprojects but only in api which will be transitive to the rest

#

And yeah I added central

old wyvern
#

try a clean build

jovial warren
#

alright, I'll do some messing around with dependencies

#

^

ocean quartz
#

I changed that and it worked just can't seem to get hocon

#

Let me try clean

jovial warren
#

you checked to make sure the error isn't incompatible thingy thingy? (can't remember what it's called now)

#

the different versions for different Java versions thingy

#

variants

#

that's it

ocean quartz
#

Alright clean worked

#

Let me try publishing to local now

jovial warren
#

what you doing btw? making a plugin?

ocean quartz
#

Nvm kekw, still not finding kotlinx-serialization-hocon

jovial warren
#

not a variant issue?

cinder flare
#

imagine matt adds block persistence before bardy does

ocean quartz
#

i actually wanted to ask for that

jovial warren
#

check the error isn't incompatible variant

cinder flare
#

omg lmao

ocean quartz
#

Yeah No matching variant of

jovial warren
jovial warren
#

set your Gradle build version

ocean quartz
#

Ah so it actually was Yugi's first suggestion a while ago lmao

jovial warren
#

File | Settings | Build, Execution, Deployment | Build Tools | Gradle | Gradle JVM

cinder flare
#

ah Yugi, classic genius

ocean quartz
#

Ah Cannot perform signing task, commenting this kekw

jovial warren
#

you complaining has actually reminded me that I need to make it clear how you're meant to do this

cinder flare
#

oooh contributors guide coming up!

jovial warren
#

yeah you need to setup a GPG key

ocean quartz
#

I'm not publishing anything, just testing on local

jovial warren
#

since I sign when publishing

#

you tried gradle publishMavenKotlinPublicationToMavenLocal?

#

or just publishToMavenLocal

ocean quartz
#

Oh jesus, not that one but I already got it working with the publishToMavenLocal

jovial warren
#

yeah publishToMavenLocal just runs all the publishPubNamePublicationToMavenLocal tasks I think

#

not sure what else I could do really

#

ignore the comment at the top lol

#

those should probably be immutable collections tbh, since calling filter followed by toTypedArray might get a little expensive

ocean quartz
#

Ah fuck I guess you can't really have transitive repositories, which kinda sucks

jovial warren
#

how does MF-GUI deal with inventories btw?

ocean quartz
#

Wdym?

jovial warren
#

actually I think Bukkit deals with most of it for you

#

how do Bukkit's inventory items work? how are they sorted?

ocean quartz
#

Oh, no idea about that xD

cinder flare
#

didn't you... make MF-gui? lmao

#

we definitely want to port that bad boy

jovial warren
#

yeah but MF-GUI doesn't deal with that stuff

ocean quartz
#

^

jovial warren
cinder flare
#

oh really?

#

well that's convenient

jovial warren
#

I'm trying to design it rn lol

#

I want something that's both easy to use and fast to get what I need

onyx loom
#

mf-gui-kotlin port instead

#

more idiomatic

jovial warren
#

@prisma wave he said a bad word

onyx loom
#

lol

stuck harbor
#

mf-gui f# port

cinder flare
#

so how come like armor slots return null when empty but normal slots and main hand return AIR when empty?

onyx loom
#

bukkit

jovial warren
#

Bukkit thing lol

prisma wave
jovial warren
#

might change that

cinder flare
#

oh ew

#

yeah could you?

#

with Kotlin, everything can be null safely!

ocean quartz
#

It's a mess

cinder flare
#

wtf

ocean quartz
#

You always have to check if not null or air

cinder flare
#

just make everything return null if it has a null value

jovial warren
#

also, thanks for completely avoiding my question btw star

cinder flare
#

wait did you ask something

cinder flare
#

oh I was looking at it and reviewing!

jovial warren
#

and you decided to skip the helper arrays and go straight to the bad parts ๐Ÿ˜”

cinder flare
#

I mean I don't really know what other alternatives you have

ocean quartz
#

Why array and not list? thonking

jovial warren
#

fixed size

cinder flare
#

Fixed size

ocean quartz
#

Ah, sad

cinder flare
#

Faster access and schtuff

jovial warren
#

less memory footprint

prisma wave
#

Immutable list is fixed siz e

onyx loom
#

lol

jovial warren
#

yeah but immutable lists are immutable smart ass

cinder flare
#

well wait is this not mutable?

#

yeah

cinder flare
#

I was gonna say I thought this was changeable lol

jovial warren
#

oh yeah, because we can do inventories with immutable lists

#

that's very nice

prisma wave
#

Ofc we can

jovial warren
#

pick up an item and we have to construct a new list that's a copy of the old one with the new item added

prisma wave
#

Oh the overhead!

onyx loom
#

:kek:

cinder flare
#

excellent!

prisma wave
#

If only there was a solution to this problem!

jovial warren
#

drop an item and we have to, you guessed it, construct a new list with the other item removed

#

wat

#

literally nothing

onyx loom
#

wouldnt work lol

prisma wave
cinder flare
#

Listener is an interface

#

not an abstract class

jovial warren
#

if you define methods that meet the criteria then it'll still work

cinder flare
#

You extend abstract classes and you can only extend one

jovial warren
#

also, imagine needing to use an empty Listener interface

cinder flare
#

You implement interfaces and can have as many as you want

jovial warren
#

Krypton's listener classes don't need to implement anything ๐Ÿ˜Ž

prisma wave
#

Imagine having interfaces

onyx loom
#

implementing Listener is the most stupid thing ever

cinder flare
#

I mean it's literally OOP 101

jovial warren
#

if you register a listener class, it just does the scanning anyway

cinder flare
#

interfaces just force you to have methods in them that conform

onyx loom
#

annotation ig

jovial warren
#

redundant

cinder flare
#

I presume if it doesn't contain the right function, it goes pew pew

#

Listener is empty?

#

wtf

hot hull
onyx loom
#

yes

jovial warren
#

doesn't scan actually, that's the wrong term, it reflectively gets all declared methods and filters them

#

it doesn't

#

ah actually it does

cinder flare
#

I guess it's a good way to sort classes?

jovial warren
#

lemme show you the code

cinder flare
#

i dunno

jovial warren
#

it's basically a Kotlin version of the BungeeCord event bus lol

ocean quartz
#

You can check any class for annotations, implementing changes nothing

ocean quartz
onyx loom
#

hmmmmmmmmmm

hot hull
#

as you just used wifi to send a message

#

big broin

jovial warren
#

oml

#

you're typing to us on Discord

#

you have internet

hot hull
#

Wait this is discord?

#

I thought this was physical mail

onyx loom
#

yeah lets just not go there

#

this is classic efe

jovial warren
#

lol

#

what the actual fuck

#

yeah and I see them

onyx loom
#

ok but u still have wifi

ocean quartz
#

Lmao

jovial warren
#

if anything, going outside should decrease the internet connection

ocean quartz
#

Data isn't wifi

jovial warren
#

"hmm, where should I put my router? oh yes! I'll put it in this nice plant pot over here. that's a great spot"

cinder flare
#

cell tower go brrrrr

#

quite literally, 5g mmmm

jovial warren
#

hold on a minute

onyx loom
cinder flare
#

my friend sent me this

jovial warren
#

you know, some time back in the early 2000's maybe, these really clever people invented this really nice thing called "WiFi" efe, you ever heard of it?

cinder flare
#

so i said remove-rona'; CREATE DATABASE BILL_GATES;--

jovial warren
#

you said in the house you get H

#

then go on WiFi

#

ez

hot hull
#

Lmao Star

jovial warren
#

oh lol

#

"except"

cinder flare
#

god damn, 802.11 was standardized in 1999

#

that's so old

cinder flare
jovial warren
#

if it's not broken, don't fix it

#

just come up with a new standard

#

802.11n, 802.11ac, 802.11ax, etc.

cinder flare
#

oh they have like a bazillion standards lol

onyx loom
#

lol

jovial warren
#

man you haven't seen that GIF yet?

#

sadge

onyx loom
#

have u tried turning ur phone off

#

swear ur on like 11h now

cinder flare
#

kaliber big counter

onyx loom
#

yes turn it off

hot hull
#

Imagine having that enabled

stuck harbor
#

hehehe

old wyvern
old wyvern
#

Clash?

unkempt tangle
forest pecan
#

why do you send so many audio clips

#

i dont understand the point

unkempt tangle
#

I'm an authist

steel heart
#

Bukkit#getOfflinePlayer(uuid) wouldn't make a request to mojang right?

onyx loom
#

no

#

it should say in the docs probably

#

afaik just String does

steel heart
#

hmm yeah okay nice love you

old wyvern
#

If player had never joined the server

onyx loom
#

o

steel heart
#

hmm I thought fefo said it would only wrap the offlineplayer object with the uuid but I guess I will just wrap that into a completablefuture

onyx loom
#

d;spigot Bukkit#getOfflinePlayer(UUID)

ruby craterBOT
#
@NotNull
public static OfflinePlayer getOfflinePlayer(@NotNull UUID id)```
Description:

Gets the player by the given UUID, regardless if they are offline or online.

This will return an object even if the player does not exist. To this method, all players will exist.

Parameters:

id - the UUID of the player to retrieve

Returns:

an offline player

onyx loom
#

d;spigot Bukkit#getOfflinePlayer(String)

ruby craterBOT
#
@Deprecated @NotNull
public static OfflinePlayer getOfflinePlayer(@NotNull String name)```
Deprecation Message:

Persistent storage of users should be by UUID as names are no longer unique past a single session.

Description:

Gets the player by the given name, regardless if they are offline or online.

This method may involve a blocking web request to get the UUID for the given name.

This will return an object even if the player does not exist. To this method, all players will exist.

Parameters:

name - the name the player to retrieve

Returns:

an offline player

onyx loom
#

only String states that it actually makes a web request hmm

steel heart
#

ye

#

safe side tho

#

maybe someone uses dumb spigto fork

old wyvern
#

oh wait, it might just be the string one

#

I dont remember well enough

#

Check the source ig

steel heart
#

yeah

onyx loom
steel heart
#

man hits the vibe

jovial warren
#

Krypton docs in DocDex soonโ„ข๏ธ

onyx loom
#

๐Ÿ‘๏ธ

steel heart
#

also another question, if a thread pool has no strong references any longer and no tasks running, will it get gc'd as well its threads

#

?

hallow crane
#

probably not

steel heart
#

why not?

old wyvern
#

running threads are not gcd

steel heart
#

fuck so I have to manually terminate it?

#

bruh bruh bruh

old wyvern
#

oh you meant a pool

steel heart
#

yeah

old wyvern
#

Id assume it still doesnt

steel heart
#

Let's say a fixed thread pool/fork join pool

#

hm

#

I mean that kinda sucks but Ig

#

d;ExecutorService#awaitTermination

ruby craterBOT
#
boolean awaitTermination(longย timeout, TimeUnitย unit)
throws InterruptedException```
Description:

Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.

Throws:

InterruptedException - if interrupted while waiting

Parameters:

unit - the time unit of the timeout argument
timeout - the maximum time to wait

Returns:

true if this executor terminated and false if the timeout elapsed before termination

old wyvern
steel heart
#

d;ExecutorService#shutdownNow

ruby craterBOT
#
List<Runnable> shutdownNow()
throws SecurityException```
Description:

Attempts to stop all actively executing tasks, halts the processing of waiting tasks, and returns a list of the tasks that were awaiting execution.

This method does not wait for actively executing tasks to terminate. Use awaitTermination to do that.

There are no guarantees beyond best-effort attempts to stop processing actively executing tasks. For example, typical implementations will cancel via Thread.interrupt(), so any task that fails to respond to interrupts may never terminate.

Throws:

SecurityException - if a security manager exists and shutting down this ExecutorService may manipulate threads that the caller is not permitted to modify because it does not hold RuntimePermission("modifyThread"), or the security manager's checkAccess method denies access.

Returns:

list of tasks that never commenced execution

steel heart
#

maybe that

#

d;ExecutorService#shutdown

ruby craterBOT
#
void shutdown()
throws SecurityException```
Description:

Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted. Invocation has no additional effect if already shut down.

This method does not wait for previously submitted tasks to complete execution. Use awaitTermination to do that.

Throws:

SecurityException - if a security manager exists and shutting down this ExecutorService may manipulate threads that the caller is not permitted to modify because it does not hold RuntimePermission("modifyThread"), or the security manager's checkAccess method denies access.

jovial warren
#

shutdownNow is good if you don't want any more tasks to be ran at all as soon as it's invoked

steel heart
#

yeah I guess I will call that at the very end of the disabling process

jovial warren
#

PacketInCreativeInventoryAction what a class name lol

#

only a mere 33 characters long

surreal quarry
#

Wow, this is so inspirational

glass cloak
#
                                .setLore(Util.translateListWithPlaceholders(settingsConfig.getStringList("items.balance-note.lore"), new ImmutablePair<>("%value%", String.valueOf(amount)), new ImmutablePair<>("%player%", player.getName())))
                                .setName(settingsConfig.getString("items.balance-note.name"))
                                .build();```
#

i hate nbtapi so much

obtuse gale
#

that looks more like your mess rather than NBT API's lmao

glass cloak
#

fair enough lol

#

but this is all through a wrapper util as well lmao

ocean quartz
obtuse gale
#

oh lord

oblique heath
#

that looks like the kind of thing that would be much nicer recursive

glass cloak
forest pecan
#

the logic doesn't make any sense

weary epoch
#

logic = no

surreal quarry
#

loGnic

#

= gone

weary epoch
#

nah, he don't bite

half harness
#

the amount of times i almost deleted my whole project - then got saved by intellij local history scares me

cinder flare
#

hooo boy

#

you thought Java type erasure was bad?

ocean quartz
#

How? @half harness

cinder flare
#

TypeScript basically doesn't have any types at runtime lmao

half harness
#

why do i have 149 errors-

#

intellij is acting weird

cinder flare
#

maybe you're the problem, after that last statement lol

hot hull
#

@ocean quartz Any updates?

static zealot
#

oh man I love how clip added [BROADCAST] to deluxemenus but didn't register it.

#

or whoever did add it

stuck harbor
regal gale
#

Holy god... everything is blurry in c++ for me that I even think this is okay:
if (used[0] == used[1] == used[2]) {

stuck harbor
#

I mean that ain't great

#

but it ain't awful

hot hull
#

variables

old wyvern
#

@quiet depot a little question about classloaders,
So If I were to add a class file to the jar at runtime and then call loadClass with its fqn, would the application class loader try to load the one I created?

quiet depot
#

yea

#

should do

#

wait

#

i might be misunderstanding

#

do you mean that youโ€™ve got a jar, and at runtime, youโ€™re adding a file to the jar itself

old wyvern
#

yes

quiet depot
#

yeah no

#

I doubt itโ€™d pick it up

old wyvern
#

Rip

jovial warren
#

enum class ItemType(override val key: NamespacedKey = NamespacedKey(value = name.toLowerCase())) someone please tell me how I can achieve what I want here

quiet depot
#

windows doesnโ€™t allow u to edit the jar while itโ€™s running, and linux does some other funky thing that allows u to edit it but edits donโ€™t actually make any difference

#

Iโ€™m guessing the entire jar is loaded into memory

old wyvern
#

ohh

quiet depot
#

and file changes arenโ€™t listened for

old wyvern
#

hmm

jovial warren
#

I want to be able to default the value of the key to the name of the enum to lower case, but if I use this.toString() and override toString to give me name.toLowerCase, I get an NPE

#

and a secondary constructor just complains as well about name not being initialised yet

old wyvern
jovial warren
#

ah yeah, that'll work

hot hull
steel heart
#

Pls no

hot hull
#

wdym pls no

steel heart
#

TaskUtil? Why static set?

#

Database.INSTANCE ?

#

If weโ€™re in java consider encapsulating your fields and work more object oriented but of course that is subjective

#

Maybe try to make something with a dependency injection framework

#

It surely helps to get a rightful object oriented approach to a certain extent

old wyvern
hot hull
#

registrebles are constant tho, so that's an invalid questionuity

steel heart
#

No itโ€™s not

old wyvern
#

Not true, they have state related to your plugin class

steel heart
#

For the record I also advocate to use a ImmutableSet.copyOf then

hot hull
#

TaskUtil?
What bothers you about this so much tho lol

steel heart
#

Idk why do you create weird utility classes for everything

#

Whatโ€™s the motive

hot hull
#

Why have organized code when you could cram everything into the main class, you right

steel heart
#

Idk if thatโ€™s suppose to be an argument

jovial warren
#

starting to think that maybe a single material enum isn't such a bad idea lol

#

since all block types can be represented as items in your inventory

cinder flare
#

Big brain Bardy

#

Save overheard on objects and all that

jovial warren
#

no, just make it actually work

steel heart
#

no pls use registry

jovial warren
#

wat

steel heart
#

pls no enum

#

pls

jovial warren
#

wdym

#

enum good

#

if structured properly

#

might also make some handy premade enum sets that group certain things

steel heart
#

I mean I don't like enums because of the rigidness they sort of provide

#

but I guess it's fine

#

tho spigot will be migrating from enums to registries

#

so thats pog at least

jovial warren
#

wait what?

#

also, define registries

steel heart
#

uh well pseudo enums

cinder flare
#

Oh wow

#

Big difference huh

steel heart
#

well it would allow for generics

jovial warren
#

why would you want generics for materials?

cinder flare
#

^

jovial warren
#

these are materials

#

we use an enum because they are always constant

steel heart
#

well if different materials have different properties it can be nicer to have a type for that instead of a thousand boolean methods

jovial warren
#

yeah that'll be done a different way in Krypton

steel heart
#

sure thing, I am interested

jovial warren
#

the material enum is literally just a way to tell the game "this is what type of block/item this is"

#

nothing about the properties of said block or item, that's stored in metadata

steel heart
#

properties of materials*

jovial warren
#

materials then

#

ItemStack holds some form of ItemMeta (I want it to be buildable if it can be, not sure though yet, I'll figure something out)

cinder flare
#

Dude why is picking a name the hardest part of plugin development

jovial warren
#

since, let's face it, ```kotlin
val item = ItemStack(Material.OAK_PLANKS, 1)
val meta = item.meta
item.meta = meta.apply { name = Component.text("My custom item name") }

#

I mean, I guess that could become ```kotlin
val item = ItemStack(Material.OAK_PLANKS, 1).apply {
meta.name = Component.text("My custom item name")
}

hot hull
#

make an applyMeta thanks

#

so you have name = ..

#

:))

jovial warren
#

I mean, I could just make them immutable and make you use data class copying

#

but not sure what that would be like either

cinder flare
#

Sounds like pain to me

hot hull
#

Just yeet out attributes

#

ez

#

we don't need custom shit anyways

jovial warren
#

could make the meta all data classes

#

I mean, what is there to add on the backend?

#

maybe NBT deserialisation? but I can do that with extension functions

steel heart
#

Well, you might think the material enum is just a way to tell what material but it also as of now contains a lot of methods that kind of helps to describe each materials properties. While it works just fine using pseudo enums would be nice as you can use generics and wouldn't be constrained by the limits of a regular enum. In addition it would also increase reusability. Of course this is a subjective matter. Idk if you've checked nms but it also uses pseudo enums/registries I think. Idk what do you think else than just "a way to tell what material"?

jovial warren
#

yeah we use registries on the backend

#

they're not generified though

old wyvern
#

ya'll still going on about this

jovial warren
#

the only registries we use in Krypton are the official ones from the data generators, which are all JSON lol

steel heart
#

hmm interesting

jovial warren
#

also, the material enum only describes the type of material

#

not anything else

#

no properties, no other whack

#

no hardness values

cinder flare
#

But how do you know about the properties of certain materials?

steel heart
#

Well at least for spigot they have lots of methods like isAir, isBlah etc

jovial warren
#

isAir is literally just ```kotlin
if (type == Material.AIR)

steel heart
#

CAVE_AIR

#

and VOID_AIR

jovial warren
#

yeah we don't have that on the API's end

#

and I won't show that to the API either

#

unless I have to

#

then I might

steel heart
#

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

hot hull
#

I mean that could be usefull for cave generation

cinder flare
#

What's the difference

old wyvern
#

Have every material define a optional subtype

#

๐Ÿคท

hot hull
#

I presume cave air is just checking if it's surrounded by blocks?

jovial warren
#

idfk how I'm gonna do this

#

cave air is just air that's in a cave lol

cinder flare
#

Well why is it different lol

jovial warren
#

Mojang

#

your guess is as good as mine star

jovial warren
#

probably

#

might be used in proto chunks

hot hull
#

doubt it's Y specificated

old wyvern
#

Whats the point of it?

hot hull
#

variety

old wyvern
#

Damn

hot hull
#

I mean I'm sure they had a valid use for it

old wyvern
#

Hopefully

hot hull
#

But it's mojang so you never know lol

hot hull
#

World#getBlockAt()#setType :p

jovial warren
#

also, ez player inventory persistence

#

18 files changed

#

fuck

#

every time

onyx loom
#

๐Ÿ˜ฉ

#

thats gonna be a decent commit

jovial warren
#

didn't actually change that much tbh

#

that's just adding inventory persistence and creative inventory action & held item change support

#

and fixing up player data not being set if there is no file, which was something I caused when I changed player data loading lol

cinder flare
#

Every day we get closer to the real goal: block persistence

jovial warren
#

yeah that's not gonna come yet lol

#

that'll require changes to the way I handle chunk data

#

and the addition of all the blocks

pale shell
jovial warren
#

lol

#

that's actually normal with larger builds

pale shell
#

o.O

jovial warren
#

you know 1 minute isn't even bad right?

quiet depot
#

would take 5 mins with maven

jovial warren
#

I remember MiniDigger saying that it takes ~45 minutes to apply all the Mojang mappings to Paper with Gradle lol

static zealot
#

On gitbooks is there any way to put a group inside another group? Can't seem to figure it out so I assume you can't but maybe someone in here knows the secret recipe.

pale shell
#

45?!

old wyvern
#

Would take a nanosecond with ebt

jovial warren
#

that's just an example of a huge build task

pale shell
#

๐Ÿ˜ฐ

jovial warren
#

most builds won't take a minute though

#

fresh start is always longer because Gradle has to spawn a fresh daemon

pale shell
#

odd question with the fawe api is there much of a difference between fastmode(true) and false?

onyx loom
pale shell
#

i mean like would you notice the difference? fawe is fast overall no?

prisma wave
#

Maybe with big pastes

pale shell
#

you have a feature in fancy pmines i want bm >:L

#

but its in coatlin

jovial warren
#

Kotlin > Java

#

facts

onyx loom
#

wait really?

pale shell
#

i'm starting to hate w/e LOL

#

if the api was nicer it'll be gucci

jovial warren
#

lol

pale shell
#

it's like "give a pattern" yeah but what you want LuL

prisma wave
#

Haven't heard that one before

#

That's a pretty original take

pale shell
#

bm ๐Ÿ˜„

onyx loom
#

controversial opinion

pale shell
#

you a smart guy, you got any clue how to do patterns

remote goblet
#

Pattern.from?

#

i thonk

pale shell
#

like the BlockTypes one

old wyvern
#

Elm > Js

#

๐Ÿ˜‡

obtuse gale
prisma wave
pale shell
#

well

#

the fawe or w/e?

#

p.s @prisma wave why doesn't the modern factory kick in at all

prisma wave
#

what

pale shell
#

in the plugin? thonking

prisma wave
#

because its only used on modern versions?

pale shell
#

ModernMineFactoryCompat

old wyvern
pale shell
#

e.g 1.12+

old wyvern
pale shell
#

?

cinder flare
#

Is that Elm?

old wyvern
#

Im def using this over anything else now.

If only I could figure out a good way to apply styling

obtuse gale
#

No, this is Patrick

old wyvern
prisma wave
#

Kinda cute

#

Is that like <| in f#?

old wyvern
#

Yea

half harness
#

intellij is dying on me

prisma wave
#

Isn't it unnecessary in most of the examples then?

half harness
#

๐Ÿ˜ซ

prisma wave
#

text <| "fgh" could just be text "fgh"

old wyvern
#

I had it because I was using some function calls there earlier

frail glade
half harness
#

what does this mean-

old wyvern
#

Replaced it cause I changed that structure ,so jsut replaced that call with the text hence the left pipe xD

ocean quartz
#

Oh hi Glare

half harness
onyx loom
ocean quartz
frail glade
#

So does anyone really know what the new kotlin IR backend does? I see it's going to be the default soon and you can manually enable it for testing.

jovial warren
#

it's for Kotlin/JS

hot hull
#

What do you think matt

frail glade
#

Ahh

jovial warren
frail glade
#

Yeah pretty sure it's for the JVM as-well.

#

Cause I see Kotlin 1.5 is in milestone release and should be going to GA soon.

ocean quartz
#

Ah, not yet sorry Frosty

frail glade
#

What's he talking about? ๐Ÿ‘€

ocean quartz
ocean quartz
frail glade
#

Ahh

#

Looks like ConfigMe isn't really being worked on much anymore.

onyx loom
#

insert matt config lib here

ocean quartz
#

Lmao, but yeah that's one of the reasons why i made my fork, I PRed a change to ConfigMe and took them 6 months to release it xD

frail glade
#

Dear lord.

#

To be fair, I'm in a similar boat. I have like 0 time to do plugins.

onyx loom
#

๐Ÿ˜ฉ

ocean quartz
#

And I have so many things to work on that I end up working on none ๐Ÿ˜ฉ

frail glade
#

I know BM is also in the same boat cause like with PDM, he's been "working" on the relocation support for like 6 months or so.

onyx loom
ocean quartz
#

Did you see what me and Yugi have been working on? ๐Ÿ‘€

onyx loom
#

has he even started it with that hmmmm

frail glade
#

For me, real life has taken over. I'm working my ass off for school + I am in the process of getting a full time internship for the summer.

#

Nope, feel free to share, Matt.

ocean quartz
frail glade
#

Will it support relocation? ๐Ÿ‘€

ocean quartz
#

I'm working on the plugin part, working on the relocations right now ๐Ÿ‘€

frail glade
#

Plugin being gradle plugin?

ocean quartz
#

Yeah

frail glade
#

Okay cool.

#

I've starred it. Keep me updated. Might be my next thing I use.

ocean quartz
#

Nice!
I'm still trying to understand how the jar building works so I can do the relocations on the imports, then hopefully make it so the same relocator can be used to do the relocatiosn at runtime

frail glade
#

I'm not entirely sure how Luck does it but you might be able to see what he does in the backend for that stuff.

#

God bless, this looks like it will handle transitive too.

ocean quartz
#

Yeah i am also checking what he does

half harness
ocean quartz
#

Didn't mean to commit that, then Yugi made the PR without me knowing xD

frail glade
#

Ahh

unkempt tangle
#

How can I compile a project from Github

#

that has a Makefile ;C

#

@prisma wave

#

welp

cinder flare
#

is it in C?

unkempt tangle
#

yea

unkempt tangle
#

No idea how to compile it in combination with gcc ;C

cinder flare
#

do you have CLion?

#

It'll do it for you like how IJ does Gradle/Maven

unkempt tangle
#

and without ?

ocean quartz
#

Geany IDE ๐Ÿฅฒ

cinder flare
#

do you not have CLion?>

unkempt tangle
#

nu ;c

cinder flare
#

are you a student?

unkempt tangle
#

Yus

#

But I do not want it

cinder flare
#

then you can get it for free

#

what

#

why

unkempt tangle
#

cuz I just wanna compile a project.

hot hull
#

:what:

cinder flare
#

??

#

just get Clion bro

#

make your life easier

lunar cypress
#

No instructions on the github page?

cinder flare
#

yeah you probably just need to run make lol

lunar cypress
#

Tried make build or make install?

#

Or just make yeah

unkempt tangle
#

make build?

#

make is not an available command

lunar cypress
#

I take it you're running windows

unkempt tangle
#

yeah

cinder flare
#

oof yeah thats a yikes

#

you're gonna need like MinGW

lunar cypress
#

And you want a windows executable

unkempt tangle
#

I do have it

#
  • cmder<3
lunar cypress
#

Are you running the mingw shell?

unkempt tangle
#

no

cinder flare
#

well that'd do it

unkempt tangle
#

What do I need ,c

cinder flare
#

open the minGW shell

lunar cypress
#

You run mingw in your terminal of choice

unkempt tangle
#

Dont have an shell

lunar cypress
#

What

cinder flare
#

what

unkempt tangle
#

nope

lunar cypress
#

in your terminal

#

what happens when you run mingw

cinder flare
#

probably not in the path

unkempt tangle
#

C:\MinGW\bin

#

no shell associated executable

prisma wave
unkempt tangle
#

Dont have it

prisma wave
#

install it then

unkempt tangle
#

wat do I need

lunar cypress
#

I thought you'd already installed it

#

try to get mingw to run first

unkempt tangle
#

senpaiiiii

cinder flare
#

just install linux and use LLVM like a normal boi

unkempt tangle
#

are there any good alternative for virtualbox or vmware?

#

Portable

cinder flare
#

virtualbox is free and open source

#

10/10

forest pecan
#

its made by oracle

#

right

unkempt tangle
#

its a piece of bloatware

cinder flare
#

it is made by oracle

#

sadly

#

but it is very solid for what it does

#

and you have quite the opinions for someone using Windows lol

unkempt tangle
#

Kali is recommendable as distro?

quiet depot
#

no

#

just use ubuntu

cinder flare
#

don't use Kali for anything other than security stuff lol

#

it's not very good for much else

unkempt tangle
#

Reverse Engineering

#

Should be their tier

quiet depot
#

pretty sure kali is just a gimmick os

#

for script kiddies

cinder flare
#

you plan on reverse engineering?

unkempt tangle
#

yes

cinder flare
#

it's just ubuntu but it comes with cybersecurity stuff lol

#

wtf you know what kali is and you can't figure out how to use a makefile?

#

what skillset do you have lol

unkempt tangle
#

meh

humble silo
#

I tried C a bit ago and that was ok but C++ was honestly just too much of a pain to learn at all... I got passed pointers and some memory stuff and then trying to figure out the best way to structure a project killed it for me

obtuse gale
#

I mean pointers and "memory stuff" is also crucial to C

#

it's not a C++ realm specific topic

cinder flare
#

it's crucial to every language, most just hide them from you

jovial warren
obtuse gale
#

but it isn't something you have to know in every other language to work with it

cinder flare
#

it's good to understand how they work though

#

gives you a better understanding of programming

obtuse gale
#

not denying that, but it isn't necessary to know for you to work with the language

#

yeah knowing how the CPU operates at the micro instructions level will help you better understand how you can help it with performance by optimizing your code... but is it really necessary for you to know that other than when working with assembly?

cinder flare
#

well a lot of stuff you do in other languages works like you're using pointers, you just can't directly access them

obtuse gale
#

you ain't thinking that with python

cinder flare
#

it's much more directly relevant than CPU microinstructions lol

obtuse gale
#

but it still isn't necessary

#

in both C and C++ it's pretty much a must

humble silo
#

It was really interesting to try out and i defintely wanna get back into it but not for a bit probably

cinder flare
#

alright Fefo you're right, understanding anything isn't necessary for programming

#

all you need to know is how to type eh?

humble silo
#

Especially since ive never used OpenGL in C and only with LWJGL in java

obtuse gale
#

you can't tell me you deem it necessary to know how pointers work when you're working with SQL

cinder flare
#

oooh I'd try SFML in C++ if you're interested

obtuse gale
#

or hell, kotlin even

cinder flare
#

SQL is not the language we're talking about Fefo

humble silo
obtuse gale
#

we are talking about languages in general

cinder flare
#

In Kotlin or Java you are literally working with pointers in like linked lists and stuff

#

You just can't edit them

obtuse gale
#

in java or kt you don't need to know about them

cinder flare
#

alright Fefo whatever

obtuse gale
#

you put something in a list and it's there

cinder flare
#

i guess not

#

you don't need to know anything

#

ever

obtuse gale
#

yeah no

cinder flare
#

knowledge is imaginary

obtuse gale
#

not at all

#

I'd rather be on the streets ig

#

All I'm saying is that it isn't something you have to know to work with the language

#

it's not that you straight up can't program if you don't know them

#

does it help? yes absolutely

#

but it's not a must

cinder flare
#

but it's also good to know

#

not much is a must honestly

obtuse gale
cinder flare
#

keyboard, if statement

#

done

lunar cypress
#

Knowing C-like pointers doesn't give you any benefit in Java, you only need to understand how reference types work

cinder flare
#

They're the same thing

static zealot
#

is it bad that I made 4 years of C++ and I barely remember anything?

cinder flare
#

Just you can't modify java pointers

lunar cypress
#

No, they are not the exact same thing

#

Things that work different and need to be understood differently are precisely not the same

cinder flare
#

Well pointers are just memory locations

#

and so are named variables for objects

#

any reference type is

lunar cypress
#

No, not in the language

#

None of this is specified or important to the language

cinder flare
#

wot

#

that's literally what reference types are lol

lunar cypress
#

I feel like you're making the mistake of confusing language and JVM, as many people seem to do here

cinder flare
#

I mean in the language, when you're making a linked list and you do this.node = this.node.next, you are directly modifying pointers