#dev-general

1 messages ยท Page 144 of 1

prisma wave
#

some argument

old wyvern
#

ah

onyx loom
#

sad face

prisma wave
#

clip left too ๐Ÿ˜ณ

onyx loom
#

๐Ÿ˜ณ ๐Ÿ˜ณ

old wyvern
#

wha?

#

doesnt he like own papi tho?

onyx loom
#

probably irrelevant

prisma wave
#

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

ocean quartz
#

Yeah i wonder if i should make it small regexes instead hmmm

prisma wave
#

I'm not sure

#

Have you looked at the one for Odin?

old wyvern
#

Odin doesnt* use regex

prisma wave
#

Alternatively get ANTLR to do all the work fingerguns

#

Ah

ocean quartz
#

Odin doesn't use regex, it's scary

#

How big is ANTLR

old wyvern
#

Yea lexers shouldnt actually use regex

prisma wave
#

not massive afaik

#

it generates a lot of the code

old wyvern
#

regex does a lot of unneccessary matching for this case

prisma wave
#

And also it seems like it would be difficult to maintain

old wyvern
#

but its short and sweet if you dont want anything very fast

ocean quartz
#

I just don't know how to do it the normal way, was getting pretty confused trying

old wyvern
#

oh thats simple

prisma wave
#

@ocean quartz ANTLR is about 400kb I think

#

Pretty small

ocean quartz
#

It's small but a bit too much for this i think

prisma wave
#

Hm fair enough

#

Might be overkill anyway

old wyvern
#

Loop through chars,
collect looped chars to a String or collection,
check if current String/collection is = any of the tokens
drop current if any space or splitting character occurs

#

Remember the papi performance PR

#

pretty much the same thing

#

let me try to find that

ocean quartz
#

Hmm alright tomorrow i'll retry that again, I'll hit you up if i have questions ๐Ÿ‘€

old wyvern
#

Alrighty ๐Ÿ‘

ocean quartz
#

Alternatively i could use a markdown lib, but i kinda wanna do my own way so i can learn new stuff

old wyvern
#

Its mostly that ^ except we match for tokens needed to be found instead of something like %.+%

ocean quartz
#

Oh okok
That's the dude from xseries nice

old wyvern
#

I kinda explained it slightly there

#

xseries?

#

oh the XMaterial things

ocean quartz
#

Yeah

old wyvern
#

damn

hallow crane
#

@somber cradle Using MiniMessage (newer from Kyori), how can I convert my Component (output from #get()#parse()) into BaseComponent[] or something provided by Spigot? Even Json, which I can parse into BaseComponents using the deserializer.

ocean quartz
old wyvern
#

ayyy

thorn pebble
#

catch (Exception|exception|exception e){

obtuse gale
#

i know lol its not my code

hot hull
#

There isn't a multicatch in kotlin is there?

obtuse gale
#

no

hot hull
#

Shame

obtuse gale
#

Ive done this before lol

#
            when(exc){
                is IllegalArgumentException-> message.textChannel.sendError("That is an invalid currency!")
                is NumberFormatException-> message.textChannel.sendError("That is an invalid cost!")
                else-> throw exc
            }```
#

probably better to just use multiple catches tho lol

hot hull
#

Deffo

empty flint
#

What would be the opposite of "append"?
And I don't mean "prepend", I mean opposite in terms of undoing the appending. Yeeting the appendage so to speak.

obtuse gale
#

depend fingerguns

empty flint
#

...

#

I was thinking of "uncouple" or "decouple" or something

#

like a train car

obtuse gale
#

๐Ÿš„๐ŸŸฆ๐ŸŸฆ
๐ŸŽก ๐ŸŽก

#

train ^

lunar cypress
#

Depends on the concrete meaning of append I'd say

regal gale
#

append = depend in a way

empty flint
#

Depends on the concrete meaning of append I'd say
@lunar cypress Alright so imagine a train network of cities. Appending a city A to another city B means creating a one-way train connection from B to A. Prepending A to B means creating it from A to B.
I need a term that communicates the yeetage of that one-way connection from the train network.

lunar cypress
#

Whoa there hold on

#

Are you trying to make an analogy or is this the actual subject of your code

empty flint
#

analogy, the actual subject would take longer than a sentence to explain

lunar cypress
#

Well the analogy is kinda bad that

#

"Append" does not make sense

empty flint
#

doesn't matter, the important aspects are there. append, prepend, one-way connections, yeetage...

#

in the actual context it makes sense

lunar cypress
#

Connect/disconnect seems more reasonable here

empty flint
#

connect/disconnect doesn't imply a one-way connection

lunar cypress
#

Append doesn't imply any "connection" at all. It means you add something to the end of something else to get a bigger something

#

And who says that "connect" can't be one way? This can be defined by the order of params and known from the vocabulary you define for this problem

empty flint
#

in the actual context it makes more sense than connect/disconnect.

#

I just need a word to communicate the "disconnect" equivalent

lunar cypress
#

Again. Can't help you if you don't give the context

empty flint
#

well fuck

#

alright let me try and break it down, maybe I can do it in once sentence after all.

#

So I have a network of branches that contain a series of ranks. players traverse the branches in one direction to rank up and the branches are linear. But you can have a branch connected to multiple branches in that 'ranking-up-direction' and you can have multiple branches connected to one branch. I am coming up with the commands I need to provide to manipulate the network so appending a branch to another means you add it to the end of a branch and prepending a branch means you add it before the branch. "Connect" does not have those same implications.

#

So now I need a word/command do destroy those connections @lunar cypress

lunar cypress
#

What parameters to you need for "destruction"?

hot hull
#

@empty flint Just ask Niall if you need shit named fingerguns_reversed

regal gale
lunar cypress
#

Basic

regal gale
#

Ok thanks

#

That confused for me for a second

somber cradle
#

@somber cradle Using MiniMessage (newer from Kyori), how can I convert my Component (output from #get()#parse()) into BaseComponent[] or something provided by Spigot? Even Json, which I can parse into BaseComponents using the deserializer.
@hallow crane you don't really want to convert it into the dum bungee API, but there are serializer available for that. Ideally you look at the bukkit platform, it allows you to create an audience where you can send component as message, boss bar, title, action bars etc.
It also handles converting stuff to the right client version, which means you can send rgb messages from your 1.15 server to 1.16 clients if you have via installed, it will handle all that automatically for you

#

By down converting the rgb back into the non rgb colors for outdated clients

#

In general, I am unable to monitor this discord, you should ask in papers discord or kyoris discord

hot hull
#

A wild Mini appears fingerguns_reversed

somber cradle
#

We also maybe are working on making even better integration with paper

#

Well, I don't appear, I was summoned ๐Ÿ˜‚

#

7 hours ago but oh well ๐Ÿ˜‚

#

I already forgot what this discord is, I am in too many discords :/

hot hull
#

Daddy fingerguns_reversed

#

(aka papi)

somber cradle
#

I never used that ๐Ÿ˜‚

hot hull
#

Wow

somber cradle
#

I am a developer, I don't need to relay on 3rd party placeholders, I can just do the hooks for my stuff myself, since I don't do public stuff

#

And the last time I touched Minecraft was updating paper to 1.16, soooooo

#

Been working on other projects that will greatly impact this community tho :)

hot hull
#

I am aware yes.

#

Still hoping mojang accepts the toasts feature request :((

empty flint
#

which feature request? I'm curious

hot hull
cerulean atlas
hot hull
#

It's off rn, will be back up in a few hours

cerulean atlas
#

ok, thanks

keen creek
#

is it bad if i run code every second for hours on end?

hot hull
#

Elaborate a bit more on that

keen creek
#

im checking/updating stuff every second with

BukkitScheduler scheduler = getServer().getScheduler();
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                regenMine();
            }
        }, 0L, 20L);
#

is it bad for the servers porformance or anything?

lunar cypress
#

and what does regenMine() do

keen creek
#

it regens a mine

#

but im going to checkother stuff before it regens

hallow crane
#

it's not bad unless whatever is in the regen mine method is running sync and does process intensive stuff like set a bunch of blocks or something

keen creek
#

ok

#

most of the time it will just check if a statement is true

#

it will just regen every 10 minutes or so

hallow crane
#

why not run it every 10 minutes then?

hot hull
#

Also why not use a runnable instead of a scheduler, schedulers ew

steel heart
#

Justdoom

#

Lambda

keen creek
#

Lambda
?

hallow crane
#

also yeah lambda lol

keen creek
#

why not run it every 10 minutes then?
I also need to update a value for a timer

steel heart
#

runTask(() -> {
//code
})

hallow crane
#

but you can run using the scheduler instead of scheduling

steel heart
#

Instead of the new Runnable() { @Override public void run(){/code/}}

#

Afaik lambda doesnt actually create a new Runnable instance for the record

#

Or not the same as just invoking a new Runnable interface explicitly

keen creek
#

ok

#

also how would I have multiple, example, chests that regen the items every 10 minutes with a timer and the owner can set how many chests they want?

steel heart
#

Wym by regen?

#

With items?

#

Or tile wise

keen creek
#

items in the chest

#

like spawn new items, i can do the regen part, i just dont know how to setup the timer parts

hot hull
#

Quick question, do I risk it for the buscuit and just use the normal LP user manager (which means perms may not be up to date), or do I use a shit ton of callback and querry the db?

errant geyser
#

Why would the perms not be up to date?

#

If you're so worried about it, load the user before you do whatever you need to

hot hull
#

However, remember that this instance may not represent the user's most up-to-date state.

errant geyser
#

Where's that from on the wiki

steel heart
#

Save the chest location and then get it when you want to regen

#

@keen creek

errant geyser
#

This is from their UserManager, surely you could just use the future it returns as your callback Frosty, and then you'd have the users most up to date state?

hot hull
#

Issue with that is, I have to either block the thread so it waits for the user to get loaded, or use more callbacks

keen creek
#

idk how to make a timer for example 15 minutes for one chest and 10 minutes for the other

errant geyser
#

You see why I did cooldowns in ASF conclure

steel heart
#

Yes my lord

#

Justdoom

errant geyser
steel heart
#

Bukkit.getScheduler().runTaskTimer(plugin, ()-> {
//code
}, 0L, 20L * 60L * 15L);

obtuse gale
#

๐Ÿ™ Pray or hi five

steel heart
#

Iโ€™m that you donโ€™t use BukkitRunnable doom

errant geyser
steel heart
#

People who does that should leave

keen creek
#

ok

#

cya then

#

jk

hot hull
#

I'll test it a bit and see katsu, if it doesn't break completelly I'll just leave it as is, and fix it if anyone reports any issues fingerguns_reversed

steel heart
#

Runnable or Consumer<BukkitTask>

#

Frosty does lp allow async?

hot hull
#

mhm

errant geyser
#

I'm fairly sure most of it does

steel heart
#

Well obv depends how you implement it but thatโ€™s nice

obtuse gale
hot hull
#

baked beans

errant geyser
#

If I hold a reference to a cancelled Runnable what will happen if I use it again? Will it be null or?

steel heart
#

You canโ€™t cancel a runnable

#

BukkitTask?

#

I donโ€™t think anything will happen

#

It will only attempt to cancel it

obtuse gale
#

my spring things telling me

#

A
|
\/
B
|
\/
C
|
\/

#

and thats whats causing the cycle

#

but I dont see a problem with that lol

hot hull
#

Fam I'm at 2.2mb with FJ :sheesh:

regal gale
#

Why is your FJ at 2.2mb thonking

hot hull
#

The bigger the better no?

onyx loom
#

2.2mb for a join plugin

hot hull
#

ikr, sheesh

#

It'd be funny if it was over spigot's allowed jar size ๐Ÿ˜‚

errant geyser
#

@steel heart

You canโ€™t cancel a runnable
Why not? What does the cancel() method do then?

hot hull
#

You'd think a method called cancel would cancel it huh?

heady birch
#

๐Ÿคจ

#

Pretty sure cancel works

errant geyser
#

I need a way to "pause" a runnable, so I was thinking cancel it, after x tick run it again using the scheduler

hot hull
#

ew

heady birch
#

Or

#

boolean field

#

if (paused) return

errant geyser
#

neeeh

hot hull
#

GWsetmyxPeepoCry

[10:57:40 WARN]: [FrozenJoin] Failed to load LuckPerms API provider! (Ensure LuckPerms is properly installed!)

errant geyser
#

Why do you need LP again?

hot hull
#

normal checkperms system doesn't account for inherited permissions

#

(optional addition ofc)

steel heart
#

Oof

hot hull
#

lmao

heady birch
#

Lol

#

What does it mean blue text
@heady birch Ha interseting

#

It was actually a non final variable which makes sense

obtuse gale
#

niall how would one go about getting the body of an @PostMapping thing? I already have @RequestBody for one of my objects can i use it again for the whole body?

heady birch
#

what

#

what you mean

#

everything gets mapped to the single @Requestbody I believe

#

you can try

#

Multiple @RequestPart

obtuse gale
#

well Ive got a @RequestBody that is the type of one of my pojo's, but paypals api takes in a body for the verify method so

#

also on an unrelated note im getting a cycle dependency thing but I dont see a problem with what ive got

heady birch
#

what do you mean it takes a body

#

just a string

#

or a servlet request or something

#

cylcic dependency is when you have this:

obtuse gale
#

a depends on b which depends on a?

heady birch
#

yes

#
class A {
@Autowired private B b;
}

class B {
@Autowired private A a;
}
obtuse gale
#

hm ill have another look i guess

#

also heres the example of what im tryna do

heady birch
#

Have you got an Api context already?

obtuse gale
#

yea

#

and im just passing it the headers map, that should be good right??

#

Its just the body I need to work out

heady birch
#

Just add HttpServletRequest to the controller parameter

obtuse gale
#

then copy + paste their getBody method or ?

heady birch
#

It will provide automatically

#

Yeah i would

obtuse gale
#

if this works imma be suprised ngl

#

rEEE I cant find this circular dependency

heady birch
#

where does it say

#

it will have a big circle diagram

obtuse gale
#

indeed

#

it says
pay -> paypalService -> JDAComponent

#

pay does depend on paypal service

heady birch
#

what is pay

obtuse gale
#

but paypal service doesnt depend on pay

heady birch
#

hmmmm

#

show paypalService

obtuse gale
#
@Service
class PaypalService @Autowired constructor(
    private val jda:JDA,
    private val guild: Guild,
    private val config:Config
) {```
#

wait

#

is it because guild depends on jda?

heady birch
#

JDA is provided by JDAComponent

obtuse gale
#

jda doesnt depend on guild tho

#

so

heady birch
#

I'm guessing its a bean?

obtuse gale
#

yea

heady birch
#

Do you need Jda in that class?

obtuse gale
#
@Configuration
class GuildComponent @Autowired constructor(
        private val jda:JDA,
        private val config:Config
) {
    @Bean
    fun guild():Guild {
        jda.awaitReady()
        return jda.getGuildById(config[Setting.GUILD])!!
    }
}``` pls no bully about the `!!` idc
heady birch
#

PayPalService shouldnt depend on any of them I dont think

#

It should be completely separate if you can

obtuse gale
#

ehhh

#

keyword should

heady birch
#

What are you using it for in that class?

obtuse gale
#

actually i can probs remove soem

#

I dont need jda

#

I need the rest tho since that channel does the logging (I know it shouldnt)

heady birch
#

๐Ÿ˜ฆ

#

have like

#

Use exceptions

#

throws PayPalError or something

#

then use jda where you call it

obtuse gale
#

ehh

#

ok

#

ill rewrite it

#

is it ok to depend on a repo?

#

or should it purely be to provide data to other classes

heady birch
#

idk

#

i usually make the services depend on a repo

#

then use the service

hot hull
#

I spent an hour trying to figure out why LP api isn't working, would be nice if I used the right version of it :((

errant geyser
hot hull
#

Imagine actually having it embed smh

obtuse gale
#

REE no one line functions :((

errant geyser
#

I also just realised I ran it the wrong way for my start function

#

Fine AJ

#

5 mins ok

obtuse gale
#

Some people say it makes it harder to read

#

Some people also dont vaccinate their children

hot hull
#

I swear my IJ is broken, legit showing me as if a method I am for sure calling is not used anywhere

#

Some weird shit going on

errant geyser
obtuse gale
#

:)(:

prisma wave
#

ew lists

#

imagine not using sets

errant geyser
#

ok actual critiscism

prisma wave
#

why have a cancel function if it's just pause

errant geyser
#

cos kidsll be like HoW dO I cAnCeL iT

hot hull
#

KM, I'm so close to having this how I want it ๐Ÿ˜ฎ

prisma wave
#

nice

#

var timeRemaining = TimeAPI(time).ticks @errant geyser everything about this line disgusts me

hot hull
#

Might need you to clean some stuff up tho fingerguns_reversed

prisma wave
#

aight

hot hull
#

Well that's not good

[13:13:56 WARN]: [Essentials] Permissions lag notice with (GenericVaultHandler). Response took 31.510217ms. Summary: Getting group for Frcsty

prisma wave
#

speedy

errant geyser
#

Why

prisma wave
#

a whole tick

errant geyser
#

Whats up with that BM

prisma wave
#

mutability, and "TimeAPI" is a horrible name

ocean quartz
#

Actual criticism, for cooldown i feel like it's better to use timestamps, like, save the time of the action then get the current time and check if it has passed x time since then

errant geyser
#

Talk to Piggy not me boi

prisma wave
#

not to mention if it's the same class frosty is using it's basically useless

errant geyser
#

Thats not mine

prisma wave
#

:/

hot hull
#

It's the same :kek:

prisma wave
#

matt has a good point too

#

๐Ÿ˜ฆ

#

I cleaned it up in FJ

hot hull
#

In java it's not useless, but in kotlin it is

errant geyser
#

I cleaned it up in FJ
Sauce?

quiet depot
#

wat

#

timeapi aint useless m8

#

and don't blame me for it's name

#

mine is a fork

prisma wave
#

a lot of the code was useless in kotlin

#

well

#

iirc a lot of it was just a copy of TimeUnit

#

I changed it to this

#

does the same thing but cuts out the boilerplate

hot hull
#

btw KM,

TODO the contract of this function is a bit vague. If there's no match, we return the input,
but then we return null based on if a chance succeeded or not?

Only way I could think of without having to have an object returned (would be better if it was a boolean, but you still need the returned text), hence the null check was easiest

prisma wave
#

hm

#

Result type perhaps?

hot hull
#

Never used that, so no clue fingerguns_reversed

prisma wave
#

it's basically an Optional

#

but more functional

#

I was mainly confused why you would return the input if it doesn't match

hot hull
#

I mean you don't necesarilly need a chance action

#

Since it's optional

prisma wave
#

hm

#

true

#

maybe leave it for now

#

it just struck me as odd

hot hull
#

I gotta fix it, cause it appears to cut of messages for some reason

prisma wave
#

:/

#

add unit tests

hot hull
#

But hey we'll get there eventually fingerguns_reversed

prisma wave
hot hull
#

add unit tests
hm?

prisma wave
#

add a suite of unit tests to make it harder to break stuff

#

when I was converting I was worried that I'd accidentally break something subtle

#

unit tests would've ensured that I didn't

hot hull
#

ngl I'm kinda confused as to what exactly you mean

prisma wave
#

oh

hot hull
#

Just like tests which get run on compile or?

prisma wave
#

yeah

hot hull
#

to check the regex and shit

prisma wave
#

well

#

unit testing is usually small, repeatable tests of specific bits of functionality

#

so you might test that a specific function is returning the correct values

hot hull
#

I'll play around with it

prisma wave
#
    @Test
    fun `Assert Simple Decimal Addition Functioning Correctly`() {
        val code = """
            x = 3.0
            x + 1
        """.trimIndent()
        val result = runtime.execute(code)
        result.exceptions.shouldBeEmpty()
        
        result.leftoverStack.first() shouldBe decValue(4.0)
    }``` I have a bunch of super simple ones for frigga, but they're really useful as it makes sure I don't accidentally break something
#

would recommend fingerguns

hot hull
#

Test being TestOnly I assume?

#

Or is there another dep I need fingerguns_reversed

prisma wave
#

JUnit is the main one

#

for the shouldBe and things I use Kotest but that's optional

hot hull
#

Gimme dependency and repo

prisma wave
#
    testImplementation 'org.junit.jupiter:junit-jupiter:5.6.2'
    testImplementation 'io.kotest:kotest-runner-junit5-jvm:4.0.6'
    testImplementation 'io.kotest:kotest-assertions-core-jvm:4.0.6'```
for latest JUnit + Kotest
#

all in central I think

ocean quartz
hot hull
#

Noice

prisma wave
#

nice

hot hull
#

I'm annoyed you use ' instead of " KM

prisma wave
#

why D:

#

' looks better

hot hull
#

Cause I cba to change the color for ' and it looks horrendous

prisma wave
#

wat

obtuse gale
#

color

prisma wave
#

it looks the same on my theme

obtuse gale
hot hull
#

Also, (IntelliJ IDEA) is not responding

ocean quartz
#

It's pretty bad for me too

prisma wave
#

๐Ÿ˜ฆ

hot hull
#

It's a shit green

prisma wave
#

๐Ÿค”

hot hull
#

Gonna probably make it blue or something so it looks nice fingerguns_reversed

ocean quartz
prisma wave
#

woah

#

what theme is that?

hot hull
#

material

#

oceanic

prisma wave
#

ah

hot hull
ocean quartz
#

Custom Atom One Dark

hot hull
#

ew Matt

prisma wave
#

one dark best theme

ocean quartz
#

Why ew? It's literally the best dark theme

hot hull
#

Oceanic better angry_fingerguns

ocean quartz
#

Too much green

hot hull
#

It's all blue for me :))

ocean quartz
#

Still wanna edit a bit more of mine, i don't like the oranges, but idk what color to use

prisma wave
#

the orange is a bit strong I think

hot hull
#

That's a rainbow almost sheesh

quiet depot
#

i smell an absence of static

#

that looks like a util method matt

ocean quartz
#

It's a lexer, would that be considered an util?

quiet depot
#

show the whole method

#

unless it's ridiculously long

ocean quartz
prisma wave
#

not enough upper snake case

quiet depot
#

yeah that can definitely be static

#

also don't use a parallel stream there

#

a parallel stream would only benefit that specific case if there were millions of items in that enum

#

right now, it's making it a fuck ton slower

ocean quartz
#

Gotcha, though this will all probably be scrapped, going to retry doing it without regex

quiet depot
#

yeah that is a pretty chunky regex lol

ocean quartz
hot hull
#

God I love IJ,
"this method can be private"
I try to compile and I use the method in another class, like what the fuck

prisma wave
#

very smart software

obtuse gale
#

Can I disable intellijs warning for any methods with a certain annotation?

prisma wave
#

kind of

obtuse gale
#

Just annoying cos with matts cmd framework it tells me all the command methods are unused

prisma wave
#

you can disable unused warnings

obtuse gale
#

eh

prisma wave
#

with alt+enter

#

not sure about ALL warnings

hot hull
#

Oh yea that's annoying as heck yea Aj

steel heart
#

SuppressWarnings unused

prisma wave
#

gross

hot hull
#

Doing that all the time get's annoying tho Conclure

steel heart
#

Yeah I usually do it though

hot hull
#

Could matt make it so the annotation itself does that already?

prisma wave
#

I don't believe so

#

you can mark @Subcommand or whatever as an annotation that ignores unused though

obtuse gale
#

wait

prisma wave
#

for the sole purpose of annotation based frameworks

obtuse gale
steel heart
#

Yeah we should be able to add custom annotations which integrates with intellij

prisma wave
#

yes

#

do that @obtuse gale

obtuse gale
#

bruh

#

just fixed the whole problem

prisma wave
#

i did say

#

lol

obtuse gale
#

o

hot hull
#

but you gotta do that for every project :((

#

It prints shit in console correctly just not ingame, assuming my game is fucked then fingerguns_reversed

empty flint
lavish notch
#

I can do

empty flint
#

Mind if we dm?

hot hull
#

I'll pay you 1$ to make me a dynamic portfolio site fingerguns_reversed

steel heart
lavish notch
#

sure blocky

ocean quartz
#

There is also horizontal scrolling instead ;p

static zealot
#

yeah that's pretty cool

steel heart
#

Wait also Matt

#

Oh wait nvm let me see the wiki before asking

static zealot
#

yo matt you ever going to update the framewrok? if yes could you add an option for aliases to not be recommended after a command so I only get the command or subcommand recommended?

steel heart
#

I might pr a Supplier<ItemStack> constructor for guiitem if someone would go with a custom item builder, they could easily make it compatible with yours by letting themselves implementing Supplier<ItemStack>

prisma wave
#

() -> ItemStack fingerguns

steel heart
#

Iโ€™m not a kotliner sry but srsly

#

I wonder why spigot doesnโ€™t have this

ocean quartz
#

@static zealot Yeah i'll update at some point
Can you show me an example of that happening?
I gotta fix the aliases for Frosty i can look into that too

prisma wave
#

Probably because it's a big ambiguous

#

Would the supplier be called every time the Inventory is opened?

#

Once?

#

who knows

ocean quartz
#

How would that work Conclure? ;o

steel heart
#

I will pr that later

static zealot
#

Matt I'm talking about tab completion to be able to disable it for aliasses

steel heart
#

@prisma wave true well I will give it a try

prisma wave
steel heart
#

My TriConsumer builder is very cool

ocean quartz
#

Oh okay, i think for subcommand it's easy, but for command i'm not sure, since it's handled by spigot

static zealot
#

well subcommands will be fine

#

its just for example I have a gamemode command and I added aliases like c, 0,1,2 cr etc.

#

and I don't want to do /gm or /gamemode and see all of them there

#

xD

hot hull
#

Matt, any luck with aliases? fingerguns_reversed

onyx loom
#

just dont make them tab completable at all blitz fingerguns

ocean quartz
#

Boy you asked me that like 15 minutes ago

hot hull
#

:)

errant geyser
#

Now is my time to strike

#

Frosty you tried IAL yet

hot hull
#

Your response was shit so matt :p

steel heart
#

Kotsu I have a pr for that as well

ocean quartz
#

shit means I haven't xD

regal gale
#

I thought i could try abuse sk- for evaluating in my bot, but realized their classes and expressions are unorganized af

onyx loom
#

ofc they are

errant geyser
#

Kotsu I have a pr for that as well
Spicy, what you improving?

onyx loom
#

just like the language

hot hull
#

Gradle is fast they said,

BUILD SUCCESSFUL in 1m 27s

onyx loom
#

just ur shit pc im afraid

regal gale
prisma wave
#

afaik semicolons have always been optional in JS?

static zealot
#

yeah but not in js-expansion for some reason

#

but tbh I never set the engine to nashorn

#

so maybe that will not require them but yeah dk for sure

regal gale
#

I always set nashorn as engine for every js papi, but without ;, it keeps returning error somehow

steel heart
#

Weird it worked last time for me

#

I think I returned something without ;

hot hull
#

@onyx loom Got time? ๐Ÿ˜

onyx loom
#

nope

hot hull
#

:c

steel heart
#

4heads

onyx loom
#

boot it up urself fingerguns_reversed

hot hull
#

boot what up

#

I need a gif made

#

And my pc gonna explode if I try to make it myself

onyx loom
#

oh the gif

#

yeah that

#

ill do it later

hot hull
#

bruh it takes 15s to switch fucking channels..

steel heart
#

What gif

onyx loom
#

fRoZen jOiN

hot hull
#

Example of how to use the djoin config converter

steel heart
#

Whats that

hot hull
#

wdym what's that

steel heart
#

The converter

hot hull
#

it converts djoins config to fjoins

steel heart
#

Wth is djoin and fjoin

onyx loom
#

omg

hot hull
#

smh

steel heart
#

Jesus

hot hull
#

Dissapointment intensifies

steel heart
#

Your probably the one guy still using a as a variable name

onyx loom
#

wot

hot hull
#

Excuse me what?

val daddy: Plugin? = Bukkit.getPluginManager().getPlugin("PlaceholderAPI")

onyx loom
#

๐Ÿ™‚

steel heart
#

daddy lol

#

Aight what is it then?

#

D -> f

hot hull
#

=pl Frozen Join

compact perchBOT
#

vv1.2.1 by Frcsty
A Fully Customizable Join/Quit Plugin Which Supports JSON Messages, Alongside Unlimited Formats!

Downloads:

513

Likes:

4

Reviews:

12

onyx loom
#

fRoZen jOiN
@onyx loom

hot hull
#

=pl DeluxeJoin

compact perchBOT
#

v2.9.0 by clip
Highly customizable permission based join and leave "action" plugin with tons of placeholders!

Downloads:

12,992

Likes:

47

Reviews:

51

steel heart
#

Oh

#

Which one is best?

onyx loom
#

:c

#

frostys

hot hull
#

essentials messages fingerguns_reversed

steel heart
#

Impressive?

hot hull
#

wdym by that?

steel heart
#

!*

#

my iPhone

hot hull
#

"iPhone", you've said enough sir

steel heart
onyx loom
#

read notifications pls k thanks

steel heart
#

Itโ€™s impressive you got essentials msgs in to your plugin

hot hull
#

What no

steel heart
#

which ones?

hot hull
#

You asked which one's the best, and I jokingly said essentials messages

steel heart
#

Oh

#

Is that even a thing?

onyx loom
#

yes

#

but frozen join is best

steel heart
#

Wth. Why isnโ€™t it dead yet

#

Cuz itโ€™s in kotlin?

onyx loom
#

no

steel heart
#

Then why?

onyx loom
#

because it has the most features?

#

deluxejoin trash

#

essentials messages trash

hot hull
#

Because it's 2.2mb for a join/leave plugin fingerguns_reversed

steel heart
#

Hmm fair enough

#

Fat big jars for small things == good plugin

onyx loom
#

๐Ÿ˜Ž

steel heart
#

Well 2mb is for the kotlin lib right ?

#

Or smtng

hot hull
#

1.3mb kotlin

steel heart
#

Ah

#

9mb for?

#

0.9

hot hull
#

Sec lemme decompile and I'll see how much is what

steel heart
#

^

#

XMaterial?

hot hull
#

nope

steel heart
#

So Frosty, does it have an api?

hot hull
#

Not yet, but it's mostly setup to have one

onyx loom
#

FrozenJoinEvent ๐Ÿ˜ฎ

steel heart
#

Lol set up like a giant api

hot hull
onyx loom
#

๐Ÿ˜Ž

steel heart
#

Like PreFrozenJoinEvent, FrozenJoinEvent, PostFrozenJoinEvent, PreFrozenLeaveEvent, FrozenLeaveEvent, FrozenLeaveEvent, FrozenJoinActionEvent, FrozenLeaveActionEvent. PreFrozenReloadEvent, FrozenReloadEvent & PostFrozenReloadEvent

hot hull
#

Jesus dude

#

Why tho

old wyvern
#

FrostEvent

onyx loom
old wyvern
#

DefrostEvent

#

GrillEvent

steel heart
#

Lol

old wyvern
onyx loom
#

๐Ÿ˜‚

hot hull
#

I'm about to defrost it's so fucking hummid here

old wyvern
#

๐Ÿ˜‚

hot hull
#

Been sitting still sweating like crazy

steel heart
hot hull
#

So, kotlin, Matt's command framework, bstats, xseries (gonna remove this since it's no longer used), luckperms api

steel heart
#

Oh well

#

Why no usage of xseries?

hot hull
#

Cause I already handle it myself, and xseries ew

steel heart
#

True

#

But noobs be like, my treasure

#

Yeah

hot hull
#

It'd be used in like 3 places so it's kind of a waste

steel heart
#

Maybe not

#

If itโ€™s a feature in the config

hot hull
#

For?

steel heart
#

Idk giving items upon join?

#

YTM

hot hull
#

It'd be used for that single material check (it's a thing btw)

steel heart
#

Oh well

#

Iโ€™m looking forward to have this on my potato server

hot hull
#

@prisma wave Can you load up FJ since I know you've got the stats plugin installed and just check how many lines it is (pull first tho fingerguns_reversed)

#

Ktnx

prisma wave
#

when I get home

#

lol

hot hull
#

kk, pong me cause I'm curious

empty flint
#

Quick: React or Angular 5 for web development?

prisma wave
#

Personal preference

empty flint
#

Not on the table

prisma wave
#

Afaik Angular does more though

empty flint
#

Angular it is.

prisma wave
#

it's full MVC, react might be the same idk

#

If you don't know, decide out of Facebook or Google

hot hull
humble steeple
#

Hello, I am looking for an update for DeluxeMenus 1.16.1, which works the feature of the CustomModelData, someone help me please

prisma wave
obtuse gale
#

hey

#

anybody wants to compile plugin for me [from github]?

#

maven fucked up ๐Ÿ˜ฆ

hot hull
#

What plugin fingerguns_reversed

onyx loom
obtuse gale
#

why paid :((

#

Frosty

#

this one

onyx loom
#

i wasnt on about that

#

but that kotlin request fingerguns_reversed

obtuse gale
#

oh i see

#

Locox

#

oh still

#

im dumb

errant geyser
#

Its compiling now fingergunboat

obtuse gale
#

son

#

nice nitro

#

its your first day i assume

errant geyser
#

It is not

obtuse gale
hot hull
obtuse gale
#

when you have most important test life results today

#

and teacher gives you wrong password

#

and you cant see them

hot hull
#

Nice

errant geyser
#

For some reason the protocol lib repo aint there

#

gimme a sec

#

wait it is but he specifies a non existant version

hot hull
#

kek

ocean quartz
#

@old wyvern I require your big brain ๐Ÿฅบ
This is what I have so far gonna do just asterisks for now will handle the rest later
https://github.com/ipsk/mf-msg/blob/master/src/main/java/me/mattstudios/mfmsg/base/Lexer.java
The result of that is:

[TEXT = Some <#g:000|fff>]
[ASTERISK = *]
[TEXT = text]
[ASTERISK = *]
[TEXT =  [<#ffffff>Some more]]]]]]]](action: Other\) <#g:000|fff>text) and ]
[ASTERISK = *]
[ASTERISK = *]
[TEXT = finally]
[ASTERISK = *]
[ASTERISK = *]
[TEXT =  some more [#000](/guild/164280494874165248/channel/000/)text! This will [#000](/guild/164280494874165248/channel/000/)continue \*to\* be ]
[ASTERISK = *]
[ASTERISK = *]
[ASTERISK = *]
[TEXT = more]
[ASTERISK = *]
[ASTERISK = *]
[ASTERISK = *]
[TEXT =  \~te]xt]
[ASTERISK = *]
[TEXT = ~ sadas~ds)a asdasdsa!]
empty flint
#
    private static final Pattern stylePattern = Pattern.compile("(?<HEX><#.+?>)|(?<ACTION>(?<!\\\\)\\[.+?(?<!\\\\)](?<!\\\\)\\(.+?(?<!\\\\)\\))|(?<BI>(?<!\\\\)\\*+.+?(?<!\\\\)\\*+)|(?<STRIKE>(?<!\\\\)~+.+?~+)|(?<ESCAPED>\\\\[*~\\[\\]()])");

It's a \ chonker ๐Ÿ™ƒ

ocean quartz
#

Yeah, that's why I am trying the other method xD

old wyvern
#

Matt, are you sure you want to check per character

#

?

#

I meant as in wont you have longer Tokens?

ocean quartz
#

I am not sure of anything, i am lost send help

old wyvern
#

Ah one sec Ill try to move it slightly to use Strings once electricity comes back

#

Im sitting in darkness at 12 am

#

๐Ÿ™ƒ

ocean quartz
#

Oh shit, leave it for tomorrow then, go sleep! xD

old wyvern
#

Nah Im not sleepin rn

#

Have to "design a new type of steering" for a class tmr

#

Im pretty sure with my level of creativity itll take me a few hours ๐Ÿ’€

ocean quartz
#

What do you mean by type of steering? ;o

old wyvern
#

For human computer interaction course, we are going through a module that deals with improving how users interact with machines. So our project for tmrs class was to ideate something better than the "steering wheel" as that is very old and not upto modern standards

#

idk he asked us to do it last class but we all came up with stuff like this and then he got mad and postponed it to tmrs class xD

#

Not sure what he expects us to think of at this point

hot hull
#

VR while driving in a car fingerguns_reversed

old wyvern
#

wha? xD

hot hull
#

idk

old wyvern
#

๐Ÿ˜‚ ๐Ÿ’€

ocean quartz
#

Oh jesus, sounds complicated xD

hot hull
#

jesus sounds complicated indeed

old wyvern
#

@ocean quartz What grammer are you implementing for now?

#

Like can I have an example of all possible tokens?

#

like thr strike, bold... things

hot hull
#

he has a gif somewhere above

#

It's basically markdown

#

@prisma wave I can just yeet my entire plugin to run async right? Like should I be worried of anything or can I just make my own thread and just do everything on there, since rn performance ain't the best due to the perms and format checking

old wyvern
#

ah I couldnt find the gif but found this [#000](/guild/164280494874165248/channel/000/)Some text [Some more text](hover: Hover text) *italic Ill work off of that

hot hull
#

Sec Yugi, on mobile so

#

Ah nvm matt is here fingerguns_reversed

ocean quartz
#

Basically for now I'll do only bolds and stuff like that, i'll handle the rest later so *italic*, **bold**, ***bold italic***

old wyvern
#

Ah alrighty

old wyvern
#

@ocean quartz had a look, I think the single character one could work fine for what you want ๐Ÿ‘ You can add a collapser to collapse 2 or 3 continuous Asterisks into one token, might make parsing it easier after.
So like after lexing, go through the result and replace 2 and 3 Asterisk tokens that appear together with a token specifically for ** and ***
Other than that, looks lit!

ocean quartz
#

@old wyvern Ooh gotcha I'll try that in a sec
Though for the other stuff might be better to do more characters right? since I still need to add other stuff like [#000](/guild/164280494874165248/channel/000/) and [something](action: something else) though i feel like i could do this part with regex maybe?

old wyvern
#

I mean i think current might work,
When current token is < You can assume it is a color and pass next Text token to parse as hex ang ignore thex > token after
same for [ but you will have to parse tokens between this and the next ]
for action ( next Text token defines type and after colon, all tokens till a )
I think doing more characters like I initially suggested might be a harder situation , it would work fine for <color> and (action) but with [] since there can be colors and stuff inside it, it would fail in that case. If you want you can implement multiple character for other cases and and leave the sq. bracket case as the same

#

thats:
color: < Text >
action ( Text : Text... )
actiontext [ Text... ]

prisma wave
#

Hi clever people. This is quite a strange question but I'm hoping someone knows the answer. In my language I've implemented decimal addition (it just adds 2 doubles behind the scenes). It all works fine for simple things, but when I introduce a degree of randomness (adding 3 calls to Math.random()) I find there's a tiny loss in accuracy - for example, the expected result might be 1.4707189606734465 and it turns out to be 1.4707189606734463

I honestly have no idea what might cause this (as it's literally just a + b with a few layers of abstraction), any ideas?

old wyvern
#

Does it happen consistently?

prisma wave
#

not really

#

about 1/5th of the time

#

my only guess is it's the JVM trying to optimise by throwing away a decimal place

old wyvern
#

1.4707189606734465 and it turns out to be 1.4707189606734463 Did this example happen?

prisma wave
#

because it's never more than 1 dp away

#

yes

onyx loom
#

i read something like this on stack overflow

#

iirc its the jvm as u said

prisma wave
#

hm ok

#

the only thing I can think of is strictfp

#

but I doubt that will fix it

#

or BigDecimal?

#

but not sure it's worth the overhead

onyx loom
#

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

#

idk what strictfp is, but bd would work ig

prisma wave
#

it just makes sure that the same floating point system gets used across all JVMs I think

old wyvern
#

actually wait

#

km, can you give me the 2 operands used to sum up to that?

#

@prisma wave

prisma wave
#

yeah 1 sec

#

it uses random numbers and I didn't print them so it will be different results

#

but I'll take them from a test that failed

old wyvern
#

Sure ๐Ÿ‘

prisma wave
#

interesting. it works when it's just random() + random() but fails with 3 operands

old wyvern
#

How are you determining the actual value?

prisma wave
#

the test is basically kotlin assertEquals(valueCalculated, actualValue1 + actualValue2 + actualValue3)

#
0.3042658268398106
0.778885550060943
0.9309784732298717``` this is one set of data that fails
#

I'll send code hang on

old wyvern
#

Alrighty

prisma wave
#

hm actually

#

I have a theory

#

I'm using string interp to fill the random values into the code, could there be some truncation there?

onyx loom
#

?tryandsee

compact perchBOT
onyx loom
#

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

prisma wave
#
    @RepeatedTest(RANDOM_TEST_COUNT)
    fun `Assert Random Decimal Addition Functioning Correctly`() {
        val start = Math.random()
        val param1 = Math.random()
        val param2 = Math.random()

        val code = """
            x = $start
            x + $param1 + $param2
        """.trimIndent()
        
        val result = runtime.execute(code)
        handleExceptions(result)
        
        result.leftoverStack.first() shouldBe decValue(start + param1 + param2)
    }```
Here's what's happening to produce the problem
#

i'll try with String.format or something 1 sec

#

doesn't seem to fix it, tried with BigDecimal too

old wyvern
#

Whats the decValue function?

prisma wave
#

it's just for integration with frigga's type system

#

it makes a Value with the Dec type and the given value

#

it's stored as Any rather than Double if that makes any difference

old wyvern
#

have you tried printing x + $param1 + $param2 from frigga ?

prisma wave
#

not yet

#

I've done a rewrite and haven't even implemented functions yet lol

old wyvern
#

Ah

prisma wave
#

but I'll check that asap

old wyvern
#

Alrighty

mental stag
#

Finally Sxtanna is gone, now I can talk >:)

#

Hi people

#

@prisma wave You're cool btw

prisma wave
#

lol

onyx loom
#

๐Ÿ˜†

prisma wave
#

thanks?

mental stag
#

Npz

#

Feel free to hit me up if you want to do some collab kotlin thingz

prisma wave
#

alright lol

#

why couldn't you talk before?

#

was sx bullying you

mental stag
#

Ranald hates my guts lmao

prisma wave
#

ah

#

lol

mental stag
#

But finally free >:)))

#

I'm taking over this chat

prisma wave
#

uh oh

#

do you stand with or against the kotlin kult?

mental stag
#

I don't stand with any kults

#

But I do like Kotlin

prisma wave
#

The kult may have something to say about that

mental stag
#

The Xtanna's you mean?

prisma wave
#

no no

mental stag
#

๐Ÿ˜›

prisma wave
#

we've... indoctrinated a fair few people into the Kotlin world

mental stag
#

I've seen

prisma wave
#

they're very loyal

#

but if you don't join there might be a problem

mental stag
#

Is Ranald there?

prisma wave
#

He was

#

๐Ÿ˜ญ

mental stag
#

Ah, then yes

#

I might even have someone else who can join

prisma wave
#

well not officially

#

ooh

#

who would that be?

mental stag
#

Moocow

#

You wouldn't know him

#

But anyways, shoot me a friend request >:)

prisma wave
#

well if they use kotlin then that's enough

#

aight

onyx loom
#

daily reference to r/kotlinmemes

prisma wave
#

r/kotlinmemes good

#

r/javamemes bad

old wyvern
prisma wave
#

@old wyvern interesting. I implemented a print function, and the problems persist, so it's probably an error in my addition function

mental stag
#

A good post on the issue

#

@prisma wave

prisma wave
#

yeah I was thinking of BigDecimal

#

although that isn't exactly the problem

#

the problem is that after running the same addition process through my language (which uses JVM doubles behind the scenes), you lose 1dp of precision

#

investigating with some hardcoded values atm

mental stag
#

Alright

prisma wave
#

hm

#

I think I might have an idea of what it is

#

currently I'm doing 0.9346341244777236 + 0.11992406936196554 + 0.096298675640208. I imagine the JVM would do that left to right, but because of how the parser is implemented my language seems to do 0.9346341244777236 + (0.11992406936196554 + 0.096298675640208)

#

is it possible that the different order causes a tiny drop in precision?

mental stag
#

One way to find out

#

Run it >:)

prisma wave
#

indeed

#

let's see

#

yeah looks like that's the problem ๐Ÿ˜ฆ

mental stag
#

Rip

#

I wonder if my Shunting yard algorithm would do the same

prisma wave
#

the parenthesises cause a different output :/

mental stag
#

Does it match the output of your script tho

prisma wave
#

the first one does

#

the second doesn't

mental stag
#

Ok

prisma wave
#

which basically confirms that it's to do with the order of operations

old wyvern
#

I mean you could probably just ignore that in that case

prisma wave
#

looks like BigDecimal is the best way out?

#

yeah I could

#

but it's making my tests fail

#

which is annoying

old wyvern
#

Have the test check a range between a small difference

#

Like 2^-15

prisma wave
#

yeah that's probably the way to go

#

lemme try with BigDecimal real quick

old wyvern
#

alrighty

mental stag
#

The best way out would be making your script do the same order kotlin does

prisma wave
#

yeah that's probably the best long term fix

#

but unfortunately I suck at using antlr

#

or maybe I don't

#

we'll see

mental stag
#

Are you stuck with it for expression solving?

prisma wave
#

possibly

#

I don't think this is the parser's fault actually

mental stag
#

Because I have my own algorithm

#

It isn't

prisma wave
#

might be worth a look

mental stag
#

What's the output for 0.9346341244777236 + 0.11992406936196554 + 0.096298675640208 again?

prisma wave
#

JVM doubles resolve it as 1.1508568694798973

#

using BigDecimal it becomes 1.15085686947989714 consistently

mental stag
#

I wish I could send screenshots here

steel heart
#

Interesting

mental stag
#

Off to the dms we go

prisma wave
#

imgur?

#

actually I think this is the parser's fault, because of how I tried to avoid mutual left-recursion

#

repeated binary operators favour the right hand side

#

when in kotlin it favours the left i think

#

ooh yeah this is totally gonna break stuff

#

it parses 10 - 3 - 4 as 10 - (3 - 4)

mental stag
#

Yeah lmao

#

That's pretty garbo

prisma wave
#

in my defense

#

it was an attempt at a workaround

mental stag
#

Remind me not to use Antlr

prisma wave
#

yeah it uhh

#

it can be infuriating sometimes

mental stag
#

Why not just make your own?

prisma wave
#

but I think it's still better than attempting to write my own parser

#

effort

#

basically

mental stag
#

Mmmm

prisma wave
#

I could do it, it's just a waste of time testing it when a (mostly) functional alternative exists

mental stag
#

"it can be infuriating sometimes"

prisma wave
#

only sometimes though

mental stag
#

๐Ÿ˜›

prisma wave
#

writing my own would probably be a lot more annoying

mental stag
#

I doubt it tbh, yet again I haven't finished mine yet either

prisma wave
#

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

#

it's not that hard

#

but still, just effort

mental stag
#

Did you ever make a document for your language?

prisma wave
#

nothing formal

#

yet

mental stag
#

Alright

prisma wave
#

it's in very early stages

keen creek
#

I am making a mine plugin and I want the server owner to be able to create new mines with the config but I dont know how to make it so It resets every certain amount of time specified by the player, basically I dont know how to have an unspecified amount of mines all with different reset times, they will also all have warnings for when it resets the mine

prisma wave
#

I've never been more annoyed to see this

mental stag
#

Lmao

onyx loom
#

426ms slow

mental stag
#

Not wrong

prisma wave
#

shush

mental stag
#

I can read entire schematics in like 20ms

nimble jungle
#

@keen creek love it kinda sounds like you want someone to spoonfeed you code

prisma wave
#

I'm sure most of that time is like... warmup or something...

mental stag
#

Speaking of which

prisma wave
#

each individual test is like 3ms so

mental stag
#

In case you need an NBT library in the future

prisma wave
#

lol

mental stag
#

Which you will for your server implementation

prisma wave
#

that's true

#

looks helpful

#

merci

mental stag
#

It's pretty lit ngl

#

I have a small update for it but I need to do some testing on it first

#

See this is why we do testing

#

Damn, how do I get send image perms on here

prisma wave
#

you gotta be tier 2

mental stag
#

:C

prisma wave
#

takes a day or two of typing

#

or link your github for pretty much instant level up

mental stag
#

Where

keen creek
#

@keen creek love it kinda sounds like you want someone to spoonfeed you code
@nimble jungle no, just what would you do to do it?

nimble jungle
#

@nimble jungle no, just what would you do to do it?
@keen creek uhhh code it?

keen creek
#

if the answer is just, code it then why do people ask for help?

nimble jungle
#

well people ask for help with their code, not to code something

#

and plus you're kinda in the wrong channel anyways

ocean quartz
#

Ayyy not bad Lexed in - 0.5226ms

prisma wave
#

pretty speedy

ocean quartz
#

Only doing * and escaping so far

prisma wave
#

even so

#

not bad

ocean quartz
#

I love string builder

prisma wave
#

cool stuff

mental stag
#

Updated the NBT library

frail glade
#

Alrighty so if I add mf gui to my core, I look to be hovering around 1.8mb, lol.

ocean quartz
#

Oof, that's the entire core size?
with Kotlin or without?

frail glade
#

Without

#

On the bright side tho, when PDM is finally finished, I can just PDM this

#

And then any plugin I use this in cal just pull from it

#

I'll also add in that I am not minimizing yet, when I add that, it takes off like 300kb.

ocean quartz
#

Oof MF-GUI is 123kb, 60% of it is xmaterial lol

#

Oh wait that was compiling the commands too

frail glade
#

Hmm?

ocean quartz
#

88kb, nvm xD

frail glade
#

Damn, not bad.

#

Oh so I know how you said that you didn't want to maven xmaterial cause it got all of xseries too, but I found out that there's actually a maven artifact simply for xmaterial

ocean quartz
#

Is there? That'd be awesome

frail glade
#

At least there was at one point.

#

Okay maybe I jumped the gun on that

#

I can't find it anymore

ocean quartz
frail glade
#

Hmm okayt

ocean quartz
#

Gonna try asking him later if it's possible to release it separately, but i'm assuming it'll be a lot of trouble to do it

frail glade
#

kk

#

Yeah I noticed that I would always boilerplate code when adding in dependencies so I made it so I can just do GuildCoreBuilder.addLangFile().useAdventure().useConfigMe().build():

#

And it allows me to 1 line everything that used to take like 100 lines

tranquil shadow
#

what have i just witnessed

ocean quartz
onyx loom
#

๐Ÿ˜ฌ

tranquil shadow
#

๐Ÿ˜‚

oak raft
#

Yikes

#

I barley know java and thatโ€™s a big yikes

pastel imp
#

NOOOOO @chilly jungle white theme? For reallll????? Expected more from you

#

My eyes

#

Omg

#

Atleast now I know my pc isnโ€™t that bad

#

Dark themeeeee

ocean quartz
#

@quiet depot, if you wanna judge too, go for it, i wanna make this pretty good so i need all the criticism i can get, plus will be good to catch some 4am mistakes xD

quiet depot
#
  • tokenTypes should be TOKEN_TYPES.
  • tokenTypes should be a set.
  • lex#stringBuilder should be final
old wyvern
#

Ill PR this once the Parser is somewhat ready

lost edge
#

I was looking at PAPIโ€™s commit history and I saw version 2.10.9-DEV-${System.getProperty("BUILD_NUMBER")} in its build.gradle and I was wondering if there was a maven way of automatically adding the build number to the version?

obtuse gale
#

MAVEN BAD

steel heart
#

Unacceptable behavior

errant geyser
#

ITs GONE

#

HCCCE

obtuse gale
#

and i never did add fuck1.8 support...

errant geyser
#

NOOOOOOOOO

regal gale
#

F

hot hull
#

@quiet depot fingerguns_reversed

lunar cypress
#

You don't even do anything with the BukkitRunnable

hot hull
#

Forgot to add the async line yea

errant geyser
#

Finished the world builder @steel heart, what do you think?

Also if anyone has any suggestions that'd be great

hot hull
#

That looks clean enough I think

#

But those are only flat worlds :((

errant geyser
#

Yeah, they were the only ones I could think of soooooo

hot hull
#

Play around with actual world gen, like custom terrain using noises and shit

tacit cave
#

hello

#

how to make a new command that's hooking to other plugin

#

like ./is fly

obtuse gale
#

use the plugins api?

split talon
#

What's a better way to handle making "custom items" ig a feather that grants /fly upon use. Currently I'm checking if the item has a certain name and lore