#dev-general

1 messages ยท Page 78 of 1

prisma wave
#

procking

#

packing

#

crudding

pale shell
#

fricking

remote goblet
#

packing :wonk:

topaz bay
#

ori

#

shut up

remote goblet
#

sx

topaz bay
#

please

remote goblet
#

shut up

prisma wave
#

lmao

remote goblet
#

please

#

:D

#

I understand i am asking for death

#

however

#

does it matter

prisma wave
#

you are playing with fire here

remote goblet
#

no

old wyvern
#
```Wait what?
remote goblet
#

fire is kinda hot ngl ๐Ÿ˜ณ

prisma wave
#

Death is imminent

#

@old wyvern they pretend to be native

remote goblet
#

Atleast none of us are american kekW

old wyvern
#

Then who are the actual native french speakers?

remote goblet
#

that would suck

prisma wave
#

We have seen through their cunning ruse

#

Nobody

#

except ranald

remote goblet
#

nobody actually speaks french

pale shell
#

@prisma wave is native

old wyvern
#

๐Ÿ‘€

prisma wave
#

There are no native french speakers

#

It's a lie

#

All of it

remote goblet
#

it's all just mind games

old wyvern
#

French is a hoax

prisma wave
#

not rral

#

real*

old wyvern
#

is that where we are going

#

xD

remote goblet
#

not oral ?

#

nice

compact perchBOT
#
Seems things are getting a bit off topic here.

Please either stick to the topic or move over to #off-topic

prisma wave
#

I guess not either

remote goblet
#

ah

prisma wave
#

skedaddle

remote goblet
#

insert code talk

#

okay back to languages

#

french is a scam

pale shell
#

except ranald
When I saw that I thought of something but I don't want to annoy someone in this chat.

remote goblet
#

people in this chat strive to get annoyed

#

thats why they're in this chat

prisma wave
#

@topaz bay how to do functions

remote goblet
#

that's why im here, to annoy people

pale shell
#

I mean the name is like something

#

Ori, so you know what I'm thinking

topaz bay
#

@prisma wave Ive been putting it off

remote goblet
#

do I

prisma wave
#

Likewise

#

it's not going to be pleasant

pale shell
#

Rd M**d

topaz bay
#

It shouldnt be too hard though

#

functions hold a route

remote goblet
#

wot

prisma wave
#

a route?

topaz bay
#

a route is a collection of commands

prisma wave
#

ah yes

pale shell
#

R----d M------d

prisma wave
#

Mine is just List<Statement> right now

topaz bay
pale shell
#

@remote goblet

prisma wave
#

Then a FunctionSignature and Type

#

Hm

pale shell
#

Pls say you know what I'm thinking

topaz bay
#

The loop command is literally a route of the expression, and the body

remote goblet
#

I was never good at guess who untuched

#

i can spell

#

i promise

topaz bay
#

the expression is evaluated every time, and if it passes, the body is evaluated

prisma wave
#

That's quite simple

#

Might nick that

pale shell
#

Dmd

topaz bay
#

Same with the when

#

it has the expression, and then the passing route, and optionally the failing route

#

in the case where an else block is provided

prisma wave
#

Incidentally with expressions does your Expression type have any evaluate() or similar? If so what are you returning? Any?

topaz bay
#

wdym expression type?

prisma wave
#

Might just be me but I've made an interface Expression that I bring the results from the parser into

#

Expression extends Statement and defines resolve() that returns Any

#

Not sure if that's a good idea or not

topaz bay
#

Probably not

#

My command type is a sealed class that has a function eval(Stack, Context)

prisma wave
topaz bay
#

Stack is literally a stack

#

Context holds information about the runtime

prisma wave
#

Yeah I've got a Context too

topaz bay
#

The current scope, types, properties, functions, etc

prisma wave
#

So you have a Command type rather than Expression?

topaz bay
prisma wave
#

Interesting

#

Alright I'll have a look into that

topaz bay
#

It all works the same with every kind of evaluation

#

Including the operators

prisma wave
#

Yeah that makes a lot of sense

remote goblet
#

01001000 01100101 01111001 00100000 01010010 01101111 01101110 01100001 01101100 01100100 @pale shell

prisma wave
#

The Stack idea is quite clever

remote goblet
#

i now hide

topaz bay
#

Its literally how like all languages work Alex...

prisma wave
#

and?

#

It's a clever idea

#

there's also the other one

topaz bay
#

Its not that clever

#

xD

prisma wave
#

I can't remember the name

topaz bay
#

The heap?

prisma wave
#

That's it

#

yeah

topaz bay
#

In this situation, the Context would be the heap

prisma wave
#

Yeah that makes sense

topaz bay
#

Makes big sense huh?

#

Its almost like language design is easy

prisma wave
#

It actually does

topaz bay
#

LOL

prisma wave
#

my comprehension of language design has increased tenfold

#

I will return in circa 2 days with Kotlin 2

topaz bay
#

It really do be like that

#

When I change the evaluation of name parsing to allow for assignment as expression

#

My brain power increased by 30%

#

A was a huge eureka moment

#

Which btw

#

Great show

prisma wave
#

That's how Einstein felt

topaz bay
#

If you have prime, highly recommend it

prisma wave
#

probably

#

What show!

#

?

topaz bay
#

Eureka

#

lol...

prisma wave
#

Oh I've not heard of it

topaz bay
#

Its a show about a world where all of the top minds have been living in a single city

prisma wave
#

Will give it a try once I get bored of programming

topaz bay
#

The entire lineage of all the people you know

#

darwin, enstein, etc etc

#

Theyve all been in that one town funded by the government

#

And crazy shits happens because of their experiments

#

AMAZING show

prisma wave
#

sounds pretty interesting

topaz bay
#

Its very "Under the Dome" if youve ever seen that show

prisma wave
#

I've kind of been "under a rock" when it comes to TV

#

So no

#

But I'll give it a try sometime

#

btw why would you make assignment an expression?

topaz bay
#

Because why not?

prisma wave
#

idk

#

seems ugly

#

I'm no expert but there's a reason kotlin made it a statement

topaz bay
#

Kotlin has

var count = 0
if (count++ == 2)
#

Thats an assignment thats an expression

prisma wave
#

true

topaz bay
#

You also have to keep in mind

#

Im not modeling this after Kotlin

prisma wave
#

No I know

#

But with my limited experience kotlin seems like it's hit the nail on the head in terms of language design

#

I'm actually finding it fairly difficult to not directly copy kotlin lol

topaz bay
#

Kotlin is literally every other language in existence combined

prisma wave
#

And therefore any decision that isn't similar to kotlin would need some sort of justification in my current mindset

obtuse gale
#

sorry to disturb you but I would like to know if there is an installation tutorial (if you have to install other plugins) compared to Guilds that I would like to buy

prisma wave
#

An installation tutorial of Guilds?

obtuse gale
#

yes

prisma wave
#

You need to buy it for support

#

But I imagine it's pretty simple

obtuse gale
#

I would like to know if it is mandatory to install other plugins to make it work properly

prisma wave
#

Iirc premium plugins have to be standalone

frail glade
#

It requires vault

prisma wave
#

this is not the place to ask

frail glade
#

And a permission and economy plugin (as vault does)

obtuse gale
#

oh sorry thanks

frail glade
#

But that's it

topaz bay
#

Did someone say Go?

pale shell
#

No

topaz bay
#

shut up you

pale shell
#

Excuse me??? Don't talk to your elders like that

ocean quartz
#

So you could do num0, num1, num2: Int? That sounds quite nice ngl

ocean quartz
topaz bay
#

@ocean quartz yup

#

Its from Go

#

:D

#

And this is the part where I actually have to implement entering and leaving scopes

ocean quartz
#

That's really nice, kinda wish Kotlin had it now xD
And good luck!
Also found my problem lol, the way i was checking for the commands is bad, it was checking for every message, which means it'd get the command, the send the wrong message, but that would trigger the event again and it'd repeat forever

#

I need to think about a regex to match exactly

topaz bay
#

That was actually considerably easier than I thought it would be

#

I've discovered, the parsing for a tuple is exactly the same as the parsing for a function call

#

I literally just take the routes from the tuple parsing algorithm, and turn them into the routes the function access command passes into the function route

#

KINDA fire

compact perchBOT
#
โœจ Channel Cleaned!

โ€ข Removed 15 messages.

topaz bay
#

gooooooodddd

#

GOOOOOODDDDD

pallid gale
#

๐Ÿงน ๐Ÿงน

topaz bay
#

Nooowww yourrr MEEEEEEE

#

I'm sad, no one will get that reference

onyx loom
#

hecc outta here with that language

frail glade
#

Now imagine if Barry removed the XP on messages that were removed

onyx loom
#

WAIT

#

no.

topaz bay
#

For the uninitiated ^

#

I am white diamond. Do not argue this.

compact perchBOT
#
โœณ๏ธ Global Multiplier Expired!

The global multiplier has ran out and has been reset!

onyx loom
#

huh

lilac acorn
#

i have create a score system

#

not add score

#
    public static void addPlayerScore(Player p, int amount){
       int score = 1;
   
        score += amount;
       
            
      

    }

        
        
        
    

    
    public static int getPlayerscore(Player p){
        int score = 1;
        return score;
        
    }

errant geyser
#

Well, getPlayerScore will always return 1, and addPlayerScore will ways return amount+1. Why not have a UUID, int HashMap to actually store the players score?

heady birch
#

@topaz bay What you think now, more consistent

#

Or this one, even though setGroup shouldn't really be used by api users

#

@quiet depot Could you advise me here alittle?

#

This is one of my api classes, now in the second image api users shouldnt use setGroup as it's used by kiteboard internally and will be changed anyway, they should use setGroupOverride instead

#

Not sure if it's better to put the group updating logic within updateGroups

lilac acorn
#

i can help me ?

#

my log :

#
 TheBlockWinner v1.0 attempted to register an invalid EventHandler method signature "public void me.neon.theblockwinner.Blocks.onBlockBreak(org.bukkit.event.block.BlockBreakEvent,java.lang.String)" in class me.neon.theblockwinner.Blocks
hot hull
#

I mean it says the issue

#

remove the string from the params

lilac acorn
#

oh ty :D

#

fixed :D

prisma wave
#

@heady birch regarding #showcase what were you using before that was so much slower?

heady birch
#

I wont show the code to it but basically

#

splitting string by . and getting method, invoking e.g every placeholder request

prisma wave
#

ah yeah

heady birch
#

only thing that has really changed is I don't have to do getMethod every time

#

the methods are stored

#

now answer my question above ๐Ÿ˜›

prisma wave
#

I don't think I'm qualified enough to answer that

heady birch
#

What

#

Shutup

#

Lol

#

Aint no api coming till I make a decision

night cloud
gilded breach
#

Is there a way to remove an npc using nms from the player list?

ocean quartz
obtuse gale
#

Nice!!

ocean quartz
#

Ooh what about an annotation with @Delete, commands marked with that will delete the user's message instantly after they type it

hot hull
#

Dew it

ocean quartz
gilded breach
#

I figured it out, nevermind.

heady birch
#

Aint no api coming till I make a decision
@heady birch

ocean quartz
#

Hmm how do people check for permissions for bots normally? With roles or what?

remote goblet
#

wot

ocean quartz
#

Like for commands, for example command x requires x permission, i have never used JDA enough to know how that's handled xD

ocean quartz
#

Actually that name is probably not good, it makes it sound like you'd need both to run it

old wyvern
#

would is be possible to use the role order?

#

Like if defined for "Admin", everything above can use it as well

obtuse gale
#

theres no way to set a default build.gradle is there?

lunar cypress
#

where exactly

#

you mean when running gradle init?

obtuse gale
#

like when I make a new gradle project

#

since i always add in like spigot, matts frameworks, shadow plugin

old wyvern
#

If you use Maven you have Archetypes

#

@obtuse gale

obtuse gale
#

I use gradle

topaz bay
#

@obtuse gale You should be able to create a script in your gradle home

#

And apply from there

ocean quartz
#

What would you guys name the annotation to require a minimum role?
I thought about @RequireRole("role"), but what it'll do is , it'll require the user to have at least that role, which means let's say roles are admin, role, member, admin and role would be able but member not

rotund egret
#

@InheritsRole ?

ocean quartz
#

I like that, it's pretty descriptive

lunar cypress
#

Where is the annotation applied?

#

@InheritsRole sounds like something very different

ocean quartz
#

Once the command is sent, it'll check if the user has that role or any of the above

lunar cypress
#

Personally, I'd simply call it @Requires

#

I don't think there will be any confusion as to what is required

#

If there was, I'd use a named parameter

ocean quartz
#

I thought about doing something like this:

@Requires(name = "role")
@RequiresAtLeast(name = "role")
@Requires(id = "102103103101")
@RequiresAtLeast(id = "204121054040")

But i think it'd get too confusing

lunar cypress
#

Why not use one annotation that has multiple possible parameters?

ocean quartz
#

Good point yeah

old wyvern
#

a optional boolean for inherit maybe?

#

tbh that one looks ok

lunar cypress
#

Well, in my command library I just made an API for this sort of stuff. Users can therefore implement their own restrictions and the built ins aren't too critical

old wyvern
#

Id like the annotated one above more

ocean quartz
#

Ooh, actually that's a good idea, have them register a permission and on the annotation get it's ID
Then they can implement it the way they want

#

Similar to how I do the parameter types and completions (for spigot)

lunar cypress
#

You can still have that with annotations @old wyvern

old wyvern
#

I see

#

is your API public?

#

can i get a link?

#

@lunar cypress

lunar cypress
#

no

#

that's an old one that sucks

old wyvern
#

Nice!

signal tinsel
#

Should I learn Rust?

topaz bay
#

@signal tinsel HA

#

You think you can just LEARN the vast abyss of symbols that is Rust?

signal tinsel
#

I can do anything

#

I'm spiderman

#

I mean superman

topaz bay
#

LMFAO

#

@obtuse gale yeah, that works

signal tinsel
#

lol

pale shell
#

@topaz bay you managed to get any of your code working yet? >:)

topaz bay
#

wdym?

pale shell
#

I thought its all broken as usual

#

Unlike my perfect code

topaz bay
#

I'm confused about what you're referring to?

pale shell
#

I thought your code always breaks?

topaz bay
#

??????

pale shell
#

?

#

You're confusing me

topaz bay
#

What are you talking about bruh

pale shell
#

I'm not sober

#

@topaz bay i made a language for you

topaz bay
#

brigadier is kind of a pain in the ass

prisma wave
#

Brigadier is ass*

#

It's only nice on the client side

topaz bay
chilly jungle
#

Sxtanna come play mc with me

ocean quartz
#

Brigadier is awful I gave up on it

topaz bay
#

ooooo

#

@chilly jungle bedrock?

prisma wave
#

A kotlin DSL or something for brigadier would be wonderful

#

Java lambdas... Not so much

topaz bay
#

@prisma wave 100%

#

I'm doing it in Java to get a feel for it

prisma wave
#

Ah I see

#

Great minds think alike

topaz bay
#

So far

#

Not feeling great

#

At all

#

I still dont know how to actually suggest things

#

nvm, figured it out

#

Wow... this is honestly such a fucking mess

pale shell
#

Get a brush and clean it up then?

distant sun
#

What is that for sx?

topaz bay
#

I'm playing around with brigadier

distant sun
#

Oh

#

Looks weird tbh

topaz bay
#

The code youre looking at isn't brigadier directly

#

Its what I made over top of it

rotund egret
#

Pretty sure luck made a library for it, not sure if it makes it easier to use or not

topaz bay
#

They did

#

Its Commodore

#

Not that much better to work with tbh

#

And extremely lacking in documentation

ocean quartz
#

Yeah lucko's is about the same to work with, bunch of nested stuff

ocean quartz
frail glade
#

Fancy

ocean quartz
#

The system is pretty similar to the other registrations

commandManager.registerRequirement("#admin-up", member -> {
    final Role requiredRole = jda.getRoleById(496353695605456897L);
    if (requiredRole == null) return false;

    return member.getRoles().stream().anyMatch(role -> role.getPosition() >= requiredRole.getPosition());
});
#

@topaz bay What are you doing? Just punching each other around xD

topaz bay
#

Pretty much

ocean quartz
pale shell
old wyvern
#

when using Object.hash(a,b,c) does order matter?

#

@pale shell

pale shell
#

Idk about that sorry

old wyvern
#

rip

#

anyone?

pale shell
#

It's 4:30am idk about anything

old wyvern
#

xD

pale shell
#

I think it goes in sequence

old wyvern
#

Alrighty that works

topaz bay
#

Who doesn't love a good bit of interoperability?

pale shell
#

You know you mightve woken up Alex right

#

Cool feature tho ;D

topaz bay
#

Works... pretty well...

old wyvern
#

@topaz bay In a Claiming system, is holding all claims in memory good?

topaz bay
#

@pale shell now THATS interop

#

@old wyvern probably not?

#

It would depend on how you store them

old wyvern
#

I was currently working a system to save per claim and load when needed but thinking back I think thats probably much much more inefficient so im gonna rewrite that...
What would be a better way to load/store them?

I tried going through towny for ideas but it seems to they load all townblocks https://github.com/TownyAdvanced/Towny/blob/master/src/com/palmergames/bukkit/towny/db/TownyFlatFileSource.java

#

really confused with this rn ๐Ÿ’€

#

actually seems towny does save per townblock but loads everything together?

topaz bay
#

My brain is kinda fried rn

#

So I can be of no help

#

@pallid gale when are you going to rewrite barry in Odin?

obtuse gale
#

whats gitlab?

old wyvern
#

similar to github

#

another repo host

hot hull
#

But juckier

old wyvern
#

JS

#

yes

#

thats the way to do it

#

xD

#

@hot hull Do you have any ideas about the claim management issue?

hot hull
#

Hmm

old wyvern
#

I feel like keeping all chunkdata loaded will cause issues

#

Maybe load on chunkloadevent??

#

Would that work?

hot hull
#

Possibly, I feel like keeping it loaded wouldn't cause issues btw (well it would if something cucked up and it didn't store)

old wyvern
#

I meant ram usagewise

#

Wont it cause high ram usage?

hot hull
#

I mean depends how much we talking data wise

old wyvern
#

Hmm. Ill move to that then . Thanks man ๐Ÿ˜„

topaz bay
#

Use redis

#

๐Ÿ™‚

old wyvern
#

I havent used it yet, ill check it out. I do still wanna provide flatflat storage option tho

topaz bay
#

Flat files are gross

#

You can read from redis a million times in the time it takes to read from flat files

hot hull
#

Well yea, but variety usually better :p

old wyvern
#

I see . Id love to check it out and maybe have that as the recommended options then ๐Ÿ™‚ . I should still provide flatfile support for people who dont have redis.

topaz bay
#

That was hyperbole btw

#

I'm sure its only a couple thousand

hot hull
#

Sx, better be fixing the thingy I showed you above

topaz bay
#

?

obtuse gale
#

@topaz bay where the hell is my gradle home folder lol

topaz bay
#

@obtuse gale do you have gradle installed?

obtuse gale
#

lol probably not

topaz bay
#

You should probably do that

obtuse gale
#

alright

#

when I download it will intellij auto use that? Or will it still try and use the wrapper or whatever?

heady birch
#

@topaz bay Yo I need your opinion

#

?

topaz bay
#

On?

heady birch
#

Bro

#

Are you with me

topaz bay
#

Bruh

#

It's 4am

#

Spit it out

heady birch
#

Ok

#

Kiteboard has criteria

#
criteria:
  1:
    type: permission
    permission: "kiteboard.group.default"
  2:
    type: world
    world: "World_Nether"
#

Looks like this

#

Only problem is people can register their own type

#

So I implemented a factory interface as a kind of registry

#

registerCriteria("PERMISSION", PermissionCriteria::new);

#

But I mean I could make Criteria objects a singleton kind of

#

So you would register the actual instance

#

Like this

#

However then it has to access sections on the fly, I just don't know which method to go with really

eager fern
#

oo

heady birch
#

Actually better example

#

Top image a new instance is crreated a couple of times

#

Bottom one only one instance should exist

#

@topaz bay ๐Ÿ˜

topaz bay
#

First one is stupid

heady birch
#

Darn it

#

Could you explain why?

topaz bay
#

There's 0 reason to hold a hard reference to that value

heady birch
#

Since config is already in memory?

topaz bay
#

You would have to recreate the entire object

#

Yes

heady birch
#

Yeah, atm the object is created per configuration

#

So you do think 1 object, to be used for all configs is better?

topaz bay
#

Yes

heady birch
#

Awesome

#

Thanks

#

I love you

topaz bay
#

I wouldn't even make these objects tbh

heady birch
#

Why not

topaz bay
#

I would define isMet in a functional interface

heady birch
#

๐Ÿ™„

topaz bay
#

And define them with a factory method

heady birch
#

??

#

What do you mean

#

registerCriteria("WORLD", (user, config) -> user.getWorld().getName().equalsIgnoreCase(config.getString("world"));

#

Whats the factory method

#

I mean I already got a factory method

topaz bay
#

Thats it

heady birch
#

That ain't no factory method?

#

Thats just the functional interface

topaz bay
#

registerCriteria

heady birch
#

Ok

#

I'll try it out but I will keep my objects ๐Ÿ™‚ I like my OOP

topaz bay
#

This is kind of a greay area due to java's SAM conversion of lambdas into the actual type

#

But its technically a factory method in that it does the actual object creation instead of you calling new on a type

heady birch
#

Yeah

#

I have another criteria type which is basically a container

#

That contains more criteria

#

It did load them all on object creation, but it would have to load them all on the isMet instead

obtuse gale
#

Do I need to tell intellij not to use the gradle wrapper when I make a new project now?

topaz bay
#

@obtuse gale no

heady birch
#

@topaz bay You sure the second way is better

#

It has to do alot more processing on the fly, compared to version 1 where its loaded on startup

#

@topaz bay

#

โ˜น๏ธ

prisma wave
#

@topaz bay very nice indeed

#

@old wyvern typically hashing would use multiplication so no it wouldn't matter

heady birch
#

@prisma wave You gotta help me bro

prisma wave
#

What's up

heady birch
#

My criteria system

#

I create a new Criteria object for each config it has

#

It would be possible to use one Criteria object and do the logic in a method where the config is provided

#

Idk to be honest

prisma wave
#

What are you actually asking

prisma wave
#

Yeah I would say the bottom one is nicer as you wouldn't need to worry about reloading all of the objects

heady birch
#

Thats good and all

#

But can get difficult for some of the criteria

#

e.g one that contains other criteria

#

It would be running more logic at runtime

#

I guess this is pre-optimization

prisma wave
#

Quite possibly

#

You could do a compromise

#

Have the data empty by default but then intialize(ConfigurationSection) loads them

#

Then you could call intialize again to reload the data

heady birch
#

Thats actually worth a shot

#

I mean isMet is called every second for each instance

#

I should expect isMet to be called 10-20 times a second, possibly more

prisma wave
#

That seems like something you should optimize when possible then

heady birch
#

Even though the task is async (it probably shouldn't be) theres no point using any more resources than I need to

#

Thats why instances are created at load so some stuff can be cached etc

prisma wave
#

Makes sense. Processing async seems like a strange decision but if it works go for it I guess

heady birch
#

Checks permissions, world e.g it's worked fine for about a year no issue reports ๐Ÿ˜„

#

@topaz bay Your thoughts?

topaz bay
#

Whet

#

Oh hi Alex

prisma wave
#

Hello there

#

I hear you've got interop

distant sun
#

@quiet sierra pretty sure that can be made but it's a cool idea ๐Ÿ˜ฎ

quiet sierra
#

The example I made is functional

distant sun
#

dope

quiet sierra
#

Also sorry for inconsistent naming

#

the first example isn't consistent with the others

heady birch
#

Ha who wanna review my API?

quiet sierra
#

Bet it's gonna be bad

heady birch
#

๐Ÿ™„

hot hull
#

Says the guy with no pfp

quiet sierra
#

Can you easily read the code without any comments in 1 year?

hot hull
#

pfft

heady birch
#

There is no code to read

prisma wave
#

@quiet sierra are you delegating functionality?

heady birch
#

Just methods and classes

quiet sierra
#

I don't think I am

#

add events are added in form of a consumer, which gets called when values are modified

prisma wave
#

You probably should be

quiet sierra
#

Actually I might be yeah

prisma wave
#

I mean for the rest of the methods

quiet sierra
#

For maps it's a BiConsumer

prisma wave
#

The ones inherited from the superclass

#

Oh wait

heady birch
#

๐Ÿคข Functional programming

prisma wave
#

Are you making your own HashSet and things?

quiet sierra
#

Yeah I'm extending java's

prisma wave
#

With the same class name?

quiet sierra
#

Yeah

#

I can't figure a better name

prisma wave
#

I'd recommend changing the class name for clarity

#

ObservableHashSet for example

heady birch
#

CoolHashMap

prisma wave
#

You could also extend it with the delegate pattern so it works with any Set

heady birch
#

Don't mention any pattern infornt of me

prisma wave
#

Factory visitor abstract factory builder

heady birch
#

No no NO

quiet sierra
#

I've been doing java for a whilee but I'm pretty sure delegation comes a lot on C#

prisma wave
#

I'm not sure about c#

quiet sierra
#

or I'm prob dumb

prisma wave
#

But the general principle would be implementing Set for example, then have a Constructor that takes a Set. Then in the Set methods, do your consumer calling and call the original set methods

quiet sierra
#

Ah yes I already do that

prisma wave
#

Ah alright cool

#

Just making sure

quiet sierra
#

I just don't understand that messy english terminology

prisma wave
#

What terminology?

quiet sierra
#

dEleGatIon

#

or I'm just dumb idk

distant sun
#

What terminology?
@prisma wave biscuit

heady birch
quiet sierra
#

ah the kiteboard guy

distant sun
#

fdps?

quiet sierra
#

gosh don't say that

heady birch
#

subdomain on that server

prisma wave
#

Dรฉlรฉgation is a programming term as well as English

quiet sierra
#

In portuguese fdp means the same as son of a b..

distant sun
#

wew he even used fancy accents

heady birch
#

"the kitebaord guy" ๐Ÿ˜ญ

#

Oh, lol

prisma wave
#

Very fancy accents

quiet sierra
#

Humm YeSe

prisma wave
#

fdp?

quiet sierra
#

ye

#

It's an acronym

distant sun
#

subdomain on that server
@heady birch ty sherlock but what does it mean

heady birch
#

FDPS

#

Flight Data Processing System

quiet sierra
#

oh god

distant sun
#

welp

heady birch
#

How the API looking?

hot hull
#

Niall

#

I wanna say it so much..

heady birch
#

No

onyx loom
#

say it

hot hull
#

||YoU gOt ThAt AA yEt ?||

heady birch
#

There is none

#

Now I need to look at the new obfuscation rues

#

Long (eg llililililillllllliiiillliiiiillii) or illegal (eg CON1)

heady birch
#

@prisma wave Should I put my api classes in an api package

#

Atm they share the same package just in a different modules (which seems the best way)

prisma wave
#

I think the different module is fine

quiet sierra
#

It prints hello world and then does 1, 2, 3... 10

prisma wave
#

dear god

distant sun
prisma wave
#

well that's not bad

distant sun
#

Whats x::Int = 3

prisma wave
#

explicit type declaration

#

age = 16 infers the type as Int

heady birch
#

Nice

obtuse gale
prisma wave
#

x::Int specifies it directly

#

like int x = 3 rather than var x = 3

lunar cypress
#

Any particular reason for the ::?

prisma wave
#

as a design choice?

lunar cypress
#

yes

prisma wave
#

nothing specific

#

just thought it looked kinda cool

#

It could've been anything

#

But I was intentionally trying to not copy kotlin

lunar cypress
#

It's kinda confusing to me

prisma wave
#

what would you change it to?

lunar cypress
#

I mean the :: have been used for a lot of different stuff

#

java method references
c++ namespaces
rust impl functions
haskell functions

distant sun
#

now Bristten for object type

prisma wave
#

well you could say that about anything

#

each language will use different symbols for different features

lunar cypress
#

Idk what I'd change it to. I'd probably use type inference

prisma wave
#

it has type inference

#

well not really

#

it infers everything as an Int right now bc I've not figured inference out yet lol

distant sun
#

Question, it's ok to use Map.Entry if I need to return 2 values?

prisma wave
#

but if you need explicit type specification (eg method parameters) you can use ::

#

I'd say that's fine gaby

distant sun
#

I mean are there other alternatives?

lunar cypress
#

how does it work with print then

#

I mean are there other alternatives?
@distant sun designated class or an array of two elements

#

nothing nice

prisma wave
#

@lunar cypress how does what work?

lunar cypress
#

the statement with print also uses the = operator and you don't specify a type there

distant sun
#

Ye but what if the objects are different? Wont I have to cast them if I use an array?

lunar cypress
#

Yeah if they're different the array thing sucks even more

#

but Map.Entry suggests something else idk

obtuse gale
#

lol wtf its not letting me put my plugin in my servers folder cos it says the servers in use but

#

its not

lunar cypress
#

If java had tuples or at least wannabe tuples in the standard library this would be no problem

#

maybe you're already using some extension library that has a Pair class or something

distant sun
#

I see.

#

Ty :3

prisma wave
#

yeah. at the moment internally it is just inferred to be a function but what I want is for print's type to be Any -> Nothing. So theoretically you could specify print::(Any -> Nothing) = value::Any -> Nothing { stdout.println(value) }

#

which is just unnecessarily verbose

#

but a function could be ```
take = intProvider::(Nothing -> Int) -> Nothing {
print(intProvider())
}

lunar cypress
#

I don't really like the Nothing thing

#

Like, you can't treat it as a normal value if you use it to represent "no parameters"

prisma wave
#

yeah I haven't 100% decided how I'm gonna go about that

#

possibly (() -> Int) instead

prisma wave
hot hull
#

Is it though

prisma wave
#

good question

hot hull
#

Yes

distant sun
#

I like the last print function

heady birch
#

Okay quick maths

#

Hex colours, how many are available?

prisma wave
#

ty gaby

heady birch
#

16,777,216

prisma wave
#

16777216 I think @heady birch

#

yes

heady birch
#

Darn it

#

Lol

prisma wave
#

16 ^ 6

heady birch
#

So for a rainbow effect whats a decent step

#

Changing 1 at a time is just gonna be slow

prisma wave
#

10 perhaps

#

20 maybe

#

depends how fast you want I guess

heady birch
#

Let's calcualte

#

Ok I'm poor at maths

#

rotating through all colours in 10 seconds, 20TPS

hot hull
#

just go up by 1 each time

heady birch
#

Let's re arrange the equation

hot hull
#

And let it rotate for like an hour

heady birch
#

838860

#

That many seconds

#

(10/838860)*16777216

#

Step = 200

#

Something like that

topaz bay
#

Gross language @prisma wave

prisma wave
#

screw you

#

๐Ÿคฌ

prisma wave
#

mine is good

topaz bay
#

No thank you, that's illegal

#

@remote goblet I DID IT

remote goblet
#

๐Ÿ‘

hot hull
#

You did what?

remote goblet
#

i'm just sat updating gradle for everything

lunar cypress
#

You're making a tree walk interpreter right @prisma wave

topaz bay
#

@prisma wave Why does it take so long to parse?

hot hull
#

probably the *3

topaz bay
#

I expected mine to take WAY longer

#

Oh the joys of reflection

hot hull
#

oof

topaz bay
#

I'm fine with it taking a bit longer to actually parse

#

Especially since you can store the result of the parse

prisma wave
#

@lunar cypress i believe so. I'm using ANTLR, not 100% sure on the algorithm it uses under the hood. @topaz bay not sure tbh. My logic is a bit convoluted but not that bad. It's possibly because I have a lot of recursion going on

#

I could run a profiler through it at some point but it's pretty fast so I'm not that bothered

distant sun
#

what is that text saying "Sxtanna, Today ..."?

topaz bay
#

inline blame

#

from the git toolbox plugin

distant sun
#

ah

lunar cypress
#

ANTLR doesn't say anything about the way of evaluation

#

If you're simply evaluating the ast it spits out, you indeed have a tree walk interpreter

prisma wave
#

No you're right

#

Yes I'm tree walking

#

there's probably some optimisation to do but for now ~100ms is satisfactory for me

topaz bay
#

boooooo

#

too slow

#

start over

prisma wave
#

ironic

#

still faster than Badin

lunar cypress
#

Don't @ me if your language doesn't "compile itself in under 1 second" and "segfaults if you type in 1 + 2"

hot hull
#

@lunar cypress

prisma wave
#

oh god

#

what have you done

lunar cypress
#

@hot hull

hot hull
#

I don't have a language, meaning I win :))

lunar cypress
#

@prisma wave i've done nothing, talking about v lang LMAO

prisma wave
#

ah yes that lovely thing

lunar cypress
#

They probably fixed it a long time ago but it used to segfault in the repl for 1 + 2

prisma wave
#

lmao

#

top notch programming

remote goblet
#

i would like an answer on why new java devs always use static and call their main class "Main"

prisma wave
#

youtube tutorials

hot hull
#

Shitty yt tuts

heady birch
#

NiallCourse highly recommend you do use the try catch smart casting alternaive

#

You should always call your class Main, then any developer knows it is your main class

ocean quartz
#

IJ is even showing that it's bad lol

topaz bay
#

ugh

#

UGH

#

Theres so much non final

heady birch
#

public static Boolean Allowed = Boolean.valueOf(Boolean.TRUE.getValue());

topaz bay
#

It hurts

pale shell
#

man why are scoreboards so annyoing, reee.

heady birch
#

Sxtanna

#

I delibratley went against your advice

topaz bay
#

Ok?

heady birch
#

Published my api with the first method

#

man why are scoreboards so annyoing, reee.
@pale shell What's issue

pale shell
#

I wanna check if a sb contains something if it does add the new team shit underneath that

#

it currently makes a new scoreboard each time and attempts to show them both at once ;D

heady birch
#

I got no idea

#

Sounds like logic error

pale shell
#

I mean, i don't really enjoying doing scoreboards lol

signal tinsel
#

I might just make a PlaceholderAPIAPI class lmao

#

To set placeholders from both mvdw and papi

#

Cuz clients requesting mvdw all the time

prisma wave
signal tinsel
#

Lmao nice

prisma wave
#

merci

heady birch
#

Any gradle users: Can gradle still use the local maven repository?

prisma wave
#

yes

#

mavenLocal()

heady birch
#
<dependency>
  <groupId>net.kitesoftware</groupId>
  <artifactId>kiteboard-api</artifactId>
  <version>3.1</version>
</dependency>
#

what would this look like in gradle?

prisma wave
#

implementation "net.kitesoftware:kiteboard-api:3.1"

#

btw you can paste maven dependency blocks into a gradle script and IJ will convert them

heady birch
#
repositories {
  mavenLocal()
}

dependencies {
  compileOnly "net.kitesoftware:kiteboard-api:3.1"
}
#

what does implementation do?

prisma wave
#

technically the same thing

#

but implementation would shade it by default with shadowJar

#

there are some semantic differences too

remote goblet
#

this skyblock plugin is made

#

so badly

#

what the hell

#

i dont know what im reading

pale shell
#

What one @remote goblet

remote goblet
#

wot

pale shell
#

this skyblock plugin is made
@remote goblet

remote goblet
#

i made*

compact perchBOT
#
โœจ Channel Cleaned!

โ€ข Removed 60 messages.

pale shell
#

I'm hated in this community so.

prisma wave
#

Interact in what way?

pallid gale
#

No one is hated smh

pale shell
#

I am.

topaz bay
#

Like does that value only accept a single whole number there?

prisma wave
#

yeah at the moment

remote goblet
#

Some people here are

pale shell
#

I mean I annoy everyone.

prisma wave
#

I'm not sure it was worth the pain just for a gimmick

pallid gale
#

Also let's move to offtopic

remote goblet
#

I wouldn't say "No one" but sure

pale shell
#

Alright

prisma wave
#

but the Binary operation resolution makes a function that calls the original function n times

topaz bay
#

Seems scary

prisma wave
#

Very scary

#

However it works so can't complain

topaz bay
#

lol

#

Thats pretty much how I feel about the runtime scoping

#

it functions...

#

functions

prisma wave
#

Scoping is a horrible thing

#

I will confess I copied like most of your code for scoping and context

topaz bay
#

YOU BITCH

remote goblet
#

Scoping is a horrible thing
@prisma wave exactly

topaz bay
#

thats MINE

remote goblet
#

you should always noscope people

prisma wave
#

it's open source

topaz bay
#

@remote goblet I hate you

prisma wave
#

What do you expect

topaz bay
#

Thats fair...

#

However, we are CLEARLY in competition here

#

How dare you

#

You've offended the gods

prisma wave
#

if it's any consolation I made it more imperative rather than declarative

#

I think

#

it's not a carbon copy

topaz bay
#

Did I make the code declarative???

#

Now I kinda wanna see what part youre referring to

#

I tried to make the code as imperative as possible for extension reasons

prisma wave
#

wait

#

declarative is with for loops and things right?

#

or is it the other way around

#

I always get the two confused

topaz bay
#

declarative = "telling it what to do"
imperative = "telling it how to do it"

#

control flow like if, else, while, for is imperative

prisma wave
#

I made it more declarative then

#

yeah

#

other way around

topaz bay
#

writing lexer and parser code declaratively is a pain in the ass without high level language support

prisma wave
#

can't relate ๐Ÿ˜Ž

topaz bay
#

LOL

#

cheater

prisma wave
#

sounds like a pain though

topaz bay
#

-1

prisma wave
#

it's not cheating

#

nobody said anything about not using proven existing software

topaz bay
#

Kotlin should be enough proven existing software

#

frigga could NEVER touch odin

#

NEVER

#

:)

prisma wave
#

we'll see about that

#

I would say mine has FAR more practical features

#

Function multiplication for example

#

I've used that over 851 times in a production environment

topaz bay
#

LMFAO

#

I like to think that Odin exists purely to shit on frigga

#

:>

prisma wave
#

HA

topaz bay
#

So fun fact

#

LOL

prisma wave
#

Does yours have an exponential operator? I think not

topaz bay
#

Oh... damn youre right

prisma wave
#

I think it's obvious which language comes out on top here

topaz bay
#

Odin is clearly a top

#

LMFAO

prisma wave
#

fuck you

topaz bay
#

I'M JUST SAYING

prisma wave
#

You are ignoring the facts that I am showing you

topaz bay
#

EXCUSE ME

prisma wave
#

frigga is OBJECTIVELY better

topaz bay
#

I DEFINE what the facts are

#

You exist because I ALLOW IT

prisma wave
#

IS THAT SO

prisma wave
#

oh god no

#

have mercu please

#

mercy

#

gifs are actually my fatal weakness

topaz bay
#

I...

prisma wave
#

DDDD:

topaz bay
#

Just got the idea to write another toy language named Thor

#

IN ODIN

#

SAY I WONT

#

I DARE YOU

pale shell
#

Do it

topaz bay
#

aww

#

now I'm sad

#

Such a shame she died...

pale shell
#

Who

topaz bay
#

She is an icon

prisma wave
#

nooooo!!!! It's not reached any maturity as a language so can't practically be used!!! Noooo!!!!

topaz bay
#

WDYM WHO

old wyvern
#
IN ODIN```
pale shell
#

I mean who

old wyvern
#

Nested toys

#

xD

prisma wave
topaz bay
#

HA

prisma wave
#

LOAD DAMMIT

topaz bay
#

No embed

#

LMFAO

#

get fucking OWNED kid

old wyvern
#

Odin is in Java or Kotlin?

topaz bay
#

@old wyvern kotlin

pale shell
#

Hi yugi you called me?

topaz bay
old wyvern
#

uh?

pale shell
#

You said odin..

prisma wave
#

oh so we're plugging our languages are we??

topaz bay
#

oh I need to update the readme

old wyvern
#

xD

topaz bay
#

@prisma wave Does your language have interop???

#

I think the fuck NOT

prisma wave
#

It did

old wyvern
#

whats "when"?

#

if?

pale shell
#

Stop bullying Alex

prisma wave
#

And then I rewrote it and forgot to do interop

#

That's next on the to-do list

topaz bay
#

@old wyvern yes, for now

old wyvern
#

I see

topaz bay
#

I plan on extending it to be a general purpose condition statement

pale shell
#

Alex I thinks I sent it

prisma wave
#

@topaz bay does yours have a nice syntax? I think not

topaz bay
#

One that can be used as if/switch

#

@prisma wave IT DOES

prisma wave
#

I BEG TO DIFFER

pale shell
#

Sx, my language could easily beat yours! >:)

old wyvern
#

can we have a else if ladder similar to switch case?

#

xD

old wyvern
#

variable conditions I mean

pale shell
#

Alex you seen my language right

topaz bay
#
val list = java::["java.util.ArrayList"]
list.add(10)

push list

// output
[10]
prisma wave
#

Nope

topaz bay
#

When your language does this

prisma wave
#

that is ugly

pale shell
#

O fr??

topaz bay
#

I will concede the thrown

#

until then

prisma wave
#

you never sent any of it

topaz bay
#

STAND THEE BEHIND ME

prisma wave
#

Thrown

pale shell
#

I did?

topaz bay
#

oh fuck

#

throne***

prisma wave
#

You lose the arguement

topaz bay
#

LOL

prisma wave
#

Typo

topaz bay
#

SHIT UP

#

KLJGKDKHBD

prisma wave
#

AGAIN

pale shell
#

Shit up

prisma wave
#

2-0 TO FRIGGA

pale shell
#

Ok

#

Frigga frw

pale shell
#

Frigga ftw

prisma wave
topaz bay
#

Frigga couldnt even survive one fight

#

She's a whole PUSSY

pale shell
#

It could

topaz bay
#

Just saying

prisma wave
#

EXCUSE ME

#

WHO ALMOST DIED IN THE FIRST FILM?

pale shell
#

I wanna see these 2 languages fight tbh

topaz bay
#

Once you conquer the nine realms

prisma wave
#

not frigga

topaz bay
#

Come talk to me

pale shell
#

have you 2 stopped fighting yet

topaz bay
#

Oh please... that'll never happen

#

You have no seat at this table

#

The big boys are talking

pale shell
#

EXCUSE ME

#

SIT BACK DOWN

prisma wave
#

EXCUSE ME

#

what's this disrespect

pale shell
#

Imagine naming a language after a marvel character