#dev-general

1 messages · Page 556 of 1

prisma wave
#

🤢 🤢 🤢

steel heart
#

Anyways compile time di frameworks are superior

#

No reflection overhead like a certain something

ocean quartz
#

I wonder how hard it'd be to write a compile time di framework

steel heart
#

Basically lombok

prisma wave
#

No

steel heart
#

Yes

prisma wave
#

Dagger does it in the proper way

steel heart
#

Yeah true

#

So long time since we had a clash of code

prisma wave
#

Guice doesn't actually do reflection I don't think

#

Unless it can't do classgen for some reason

steel heart
#

I think it does

#

Like if you inject fields?

#

Or maybe unsafe

#

Idk

prisma wave
#

Oh yeah it has to there probably

#

But field injection is bad

steel heart
#

Indeed

prisma wave
#

I'm 90% sure constructor injection uses classgen

#

For speed

steel heart
#

Ya good point

frail glade
#

Kyori honestly has a great collection of stuff for Gradle.

steel heart
#

Yeah fr

old wyvern
#

@prisma wave How does scoping work in guice?

prisma wave
#

in exactly the same way i think

#

afaik the api's are pretty much identical

#

except some dagger specific stuff

old wyvern
#

I cant find anything like what I saw in dagger tho

prisma wave
#

huh idk then

#

wdym by scoping

old wyvern
#

Like for example imagine I have a some client app,
Auth -> (SomeService1, SomeService2, SomeService3)
I want it to reconstruct some dependencies of the services when I start a new scope from auth

prisma wave
#

oh so like singleton and not-singleton

#

you'd just use an annotation i think

#

or bind it with .in

old wyvern
#

Well, it wouldbt be a singleton right?

#

The dependencies arent persisting throughout the lifecycler

#

They change when you go back to the authentication stage

prisma wave
#

huh idk then

old wyvern
#

welp

old wyvern
steel heart
#

BM, Yugi I need help

old wyvern
#

Whats up?

steel heart
#

I got a discord and they don’t recognize Haskell

prisma wave
#

😡

#

thats unacceptable

steel heart
#

So I thought you guys could do some fine work there

old wyvern
#

WHAT

#

send

steel heart
#

Ya invited

ocean quartz
#

Table of contents parser for a wiki page working 😌
Input:

# Parent header
* Random content from page that'll be ignored
* More random things to get ignored
## Child header
### Grand child header
# Solo parent
# Another parent
## Another child

Output:

Parent header
  Child header
    Grand child header
Solo parent
Another parent
  Another child
steel heart
jovial warren
#

oh hey, anyone here noticed any of the Material changes? unless this is just standard Material and IJ's disabled Matom OneDark lol

#

but the directory colours have changed, and also, the colouring for Git statuses on files has changed too

#

changes to existing files now seem to appear as a light blue, and additions seem to appear as a more yellowy green

distant sun
#

idk oceanic dark is broken for me and it is very annoying

ocean quartz
#

Yeah seems like a few things changed

jovial warren
#

So, I've been trying to work on a propagation algorithm for chunk tickets for the past few days, but I'm a bit stuck. Basically, the idea is, I place a ticket in that centre chunk at level 22 (marked in the image), and then each row around it propagates out with the level of the neighbour + 1. I know how it works, I've just never done stuff like this before, and I'm not actually sure where to start researching. Would any of you be able to point me in the right direction on where I could learn something like this? (Image: https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/f5/Spawn_chunks_range.png/revision/latest/scale-to-width-down/726?cb=20200317084615)

#

it's kinda like light propagation, except that diagonals are the same level as the centre neighbour, and the ticket levels increase, rather than decreasing, which is what happens with light levels

#

actually, I just saw the term "flood fill" used in a gist describing this system, maybe that might help

potent nest
#

yeah that's basically just a special case of flood fill

jovial warren
#

would you know where I could find any info on that sort of algorithm?

#

I've looked around but couldn't really find anything of interest

prisma wave
obtuse gale
#

what

#

no lmao

#

why xD

prisma wave
#

well you said this and it made me think of you

lunar cypress
#

helpchat unhinged

jovial warren
#

lol

obtuse gale
#

lmao

prisma wave
#

okay

#

thank you for laughing your ass off

obtuse gale
#

yuo're welcome

potent nest
jovial warren
#

alright, cheers

forest pecan
#

You use some sort of recursive list

#

Like a Queue or Stack depending on what you need like LIFO or FIFO etc. Then you add it to that list when recursing from one chunk, and getting neighboring ones

#

You can also use a method for this too. For example, you can call a method recursively with the neighboring chunks.

#

Here’s an example of it when doing one of my FooBar problems. Notice how I keep an array of what the differences in X and Y coordinates are (for example -1,1 etc). Then inside my structure I loop through each of the differences, apply them, check if they are in bounds/valid (or whatever limitation in your case is) and then add them to the structure

#

You can create a class to store the current light level, and make one for each block. Then you set the distance it is from the light source using the algorithm described above and it should do it

forest pecan
#

Bruh what

prisma wave
#

coward

potent nest
#

Now that I‘m thinking about it, flood fill isn’t even needed because you know exactly what level should be where

forest pecan
#

I fixed it

#

You could actually probably use a normal for loop and construct it top to down with the pattern it goes like 33, 33,… 33 to 33, 32… 32, 33 etc.

#

But that won’t provide a good lighting effect like if you send them to the client it’s obvious they start from the top to down rather than middle to out

#

So it might look weird

old wyvern
#

Wouldnt a floored distance algo be enough?

#

Or not hmm

#

Make the x or y coordinate equal to the central point and take the distance for each cell, substract from weight of center

forest pecan
#

Yeah. Start from (-D, -D) then loop to (D, D) while excluding when D=0

#

Then add those values to the middle cell

#

That’s for each of the layers

jovial warren
#

alright, thanks for your help guys

#

I just have two questions

#
  1. what about, say, if I needed a certain area of chunks, say 11 x 11, to all have the same level, and then propagate around that
  2. for moving players changing which chunks are at which levels, would it be better to completely recalculate every time a player moves? or could I do something with propagating the levels down/up in the directions where they need to?
#

I know these are very implementation-specific, but it's always the actual implementation that I struggle with

eternal compass
#

how would people recommend setting up a rest API that you need to give a list to?
something like link/to/api/opt1/opt2/opt3 etc, or adding to json to the url, or a header, or what?>

#

I'd make it post, but I'm returning a file

#

and that seems wrong, right?

jovial warren
#

give a list to?

#

just give each option as a query param

eternal compass
#

basically it returns a file generated from a list of items

#

and I don't know the size

#

of the list

#

it could be zero

#

it could be 50

jovial warren
#

link/to/api?opt1=0&opt2=1&opt3=5

eternal compass
#

so programatically keep going until opt69 or whatever is missing?

jovial warren
#

actually, not sure

eternal compass
#

seems janky lol

jovial warren
lunar cypress
eternal compass
#

(defined by the arguments)

lunar cypress
#

what are the arguments exactly

eternal compass
#

wdym the arguments? the list elements?

#

they're all strings

lunar cypress
#

just random shit

#

no special meaning

eternal compass
#

well, they do, but I add them other ways, so I can't hard code them all

#

or tell you them all

lunar cypress
#

no that part is obvious I'm just trying to understand what you want to do exactly

jovial warren
lunar cypress
#

Because that is an important factor in design

eternal compass
#

and I need to be able to send it from a website

lunar cypress
#

Not what I'm talking about, whatever

#

But currently, from what I can gather it seems like it'd be your best option to encode the list as a string in a single query param

eternal compass
#

okay, that was one idea I had, but I wasn't sure if it was practical

#

so add some sort of break character

#

and encode them?

#

eg. string[].join("%").atob() or whatever its called

#

(I can guarentee they don't have %s in them)

lunar cypress
#

what does atob do

#

you need to url encode it

eternal compass
#

I think

eternal compass
#

okayt

lunar cypress
#

Well I guess you can do base64 but there is no need for that really

#

how long do you expect this list to be anyway

eternal compass
lunar cypress
#

and each element is how long

eternal compass
#

up to like 12 chars

lunar cypress
#

all right

forest pecan
#

Correction: it means dick

static zealot
#

pretty sure it will end at one point with you dying.

eternal compass
static zealot
#

yeah. I Think that will be his last problem

#

you're basically eating all the poison you just got rid of

eternal compass
#

well no, its not poison, its just not digestable

forest pecan
#

It is poison technically lol

eternal compass
#

poison comes out in urine

forest pecan
#

You get food poisoning

eternal compass
#

food poisoning isn't actual poison mostly

forest pecan
#

Urine is like 97% water

forest pecan
eternal compass
static zealot
#

so its not going to be good for you anyways

eternal compass
forest pecan
#

Which is like 99999% bacteria

#

Lmfao

eternal compass
#

eh

forest pecan
#

Your body can kill the 3% easily

#

But the shit? That’s gonna be a big load

eternal compass
#

thats how they restart your intenstines bacteria! making you (basically) eat other peoples

#

not actually eat

#

but they inject it

#

its wierd

static zealot
#

I love eating other people

eternal compass
#

me aswell

forest pecan
#

Mmm

#

Cannablism

eternal compass
#

Baked Blitz

#

I can't spell

#

;-;

forest pecan
#

Apparently cannablism like slowly destroys your brain though lol

eternal compass
#

it also quickly destroys the person you eat's brain

#

🧠

jovial warren
forest pecan
#

Lmfao

#

Bardy just use the loop technique

#

Here:

eternal compass
#

thats what I was gonna say lol

jovial warren
#

what if I have my table ordered from the centre outwards though?

eternal compass
#

loop through, them order them in a hashmap (order : value), then sort by value, then loop

#

then re assign by order

static zealot
#

freddy u suck

eternal compass
#

hm?

#

were you typing that

static zealot
#

ma dick!!

#

gottem

eternal compass
#

ah you were typing that

static zealot
#

couldn't have seen that coming

eternal compass
#

and no need for a library

#

not even a bookshelf

forest pecan
#

for (int D = 1; D < 35; D++)
for (int x = -D; x <= D; x++)
for (int y = -D; y <= D; y++)
if (x == 0 || y == 0) return;
Point newPoint = new Point( middle.x + x, middle.y + y)

#

Idk what that logic is Fred

#

Lmfao

eternal compass
#

my logix is gud

#

I swaer

forest pecan
#

Doesn’t make sense

eternal compass
#

to order them

static zealot
eternal compass
#

for an actual loop

#

that is by number

static zealot
#

its so easy

jovial warren
forest pecan
#

Yes

#

Middle to out

eternal compass
static zealot
#

man... Cho Con method is the best.

static zealot
jovial warren
#

is that Point meant to be the java.awt Point?

forest pecan
#

D actually will never be 0 so that conditional is unnecessary

forest pecan
#

For storing X Y point

jovial warren
#

alright

forest pecan
#

You can change it to whatever cell you need

static zealot
#

@eternal compass I heard you're friends with Rydon. I heard you also love to Rydon this dick

eternal compass
#

you really gotta work on your jokes... you gave away the punchline while telling it!

forest pecan
#

Seems good now? Haven’t tested cause I typed that out on phone

static zealot
#

xD

#

k. Bye now. Going to watch Major Grom

eternal compass
#

thats not falling for it... I red the answer before the joke lmao

forest pecan
#

Fred what’s hamood backwards

distant sun
static zealot
jovial warren
#

then what do I do with all these points?

static zealot
jovial warren
#

how do I print them into a table?

static zealot
#

when she was taking a shit

forest pecan
eternal compass
#

aokayt

#

ahhh

forest pecan
#

D is the distance from the center

static zealot
eternal compass
#

I'm going back to parsing markdown in javascript ;-;

static zealot
#

I really want you to ask me

#

what is Major Grom

#

if you couldn't tell

eternal compass
#

okay

forest pecan
eternal compass
#

;-;

forest pecan
#

Lol

static zealot
eternal compass
#

cool

static zealot
#

man... tomorrow I'll be switching from KDE Plasma but I will really miss the Kontrol app. or whatever the name is

jovial warren
static zealot
#

the Kde Connect one

forest pecan
#

Doomah 🥜 fit ⏬ ▶️ 👄

forest pecan
#

When the x and y value is changed you get the Points that are D distance away from the center. For example at first if it’s 1 then it loops through the points that are exactly 1 distance away counting corners

#

This means that the light level would be the light level - 1

prisma wave
#

you can run KDE apps on any distro / DE

forest pecan
#

Then the light level for the block in general is the light level - D

#

(And d is in the loop shown above in the code)

#

🧠

ocean quartz
eternal compass
#

I'm using one

#

also ts

eternal compass
ocean quartz
#

The way i do it is, i get the md from GitHub on the backend, parse it to html in the backend then save it to the database, then just return the html on api call

eternal compass
#

I parse it via react markdown which works fine, except for returns

#

and I'm confused

#

I even have the remark breaks addon

#

<ReactMarkdown remarkPlugins={[remarkBreaks]}>{popupText}</ReactMarkdown>

ocean quartz
#

Ayy now most features are ready, md to sidebar, md to html content, and md to table of content 😌

#

now the designing 🥲

steel heart
cinder flare
#

but hey i bet you'll do good

winter iron
#

Is world generation safe to do async

#

?

#

I am making new worlds for my mazes and Its hanging the server for 2-3 seconds when i create a world

winter iron
#

i don't want to hang

cinder flare
#

i mean

#

try it and see

#

maybe you can figure out what spigot never could

jovial warren
distant sun
#

nice, nice

forest pecan
#

Gj

#

What algorithm?

jovial warren
#

lemme show you the algorithm I originally came up with a couple of weeks ago maybe that actually worked the whole time pretty much

#
const val VIEW = 5
const val ETL = 31

fun main() {
    val offsetX = Random.nextInt(40)
    val offsetZ = Random.nextInt(40)
    println("X: $offsetX, Z: $offsetZ")
    val center = ChunkPosition(offsetX, offsetZ)
    val centerLevel = ETL - VIEW
    val area = (VIEW * 2 + 7) * (VIEW * 2 + 7)
    for (i in 0 until area) {
        val pos = chunkInSpiral(i, offsetX, offsetZ)
        val deltaX = pos.x - center.x
        val deltaZ = pos.z - center.z
        val level = level(absDelta(deltaX, deltaZ), centerLevel)
        println("Level at ${pos.x}, ${pos.z} = $level")
    }
}

private fun absDelta(deltaX: Int, deltaZ: Int): Int {
    if (deltaX == 0 && deltaZ == 0) return 0
    return max(abs(deltaX), abs(deltaZ))
}

private fun level(absDelta: Int, center: Int): Int = if (absDelta >= 0) center + absDelta else center - absDelta
#

with a few modifications to fix me not using chunkInSpiral correctly lol

forest pecan
#

Ic

jovial warren
#

VIEW is the view distance btw

#

VIEW * 2 + 1 is the diameter of the player's regular visible chunks, but that +7 there is because there's 3 chunks in either direction iirc that have the different levels

#

though what I actually need is for it to propagate all the way out to the maximum level of 44

#

so I've just modified it to use a while (true) and break when we get a level above 44

#

what still confuses me though is why vanilla's is a bit more complicated than that

forest pecan
#

Did you get SO for forgetting to break

#

Lol

jovial warren
#

SO?

#

oh, nope

#

you might be able to see what's going on better than I can lol

#

I'm actually just curious about what kind of algorithm that is tbh

#

I mean, bare in mind though, that DynamicGraphMinFixedPoint is shared between ChunkTracker, SectionTracker (for POI stuff), and the lighting engine

distant sun
#

Question, does CharSequence#matches(Regex) (kt) work like Matcher#find (java)?

jovial warren
#

yes

#

matches checks if the sequence matches the given regex

#

though I think it would probably be closer to Matcher#matches than Matcher#find

distant sun
#

that's why im asking cuz I don't need to know if it is exact that pattern

#

Returns true if this char sequence matches the given regular expression.

ocean quartz
distant sun
#

so I guess there's no extension for find()

jovial warren
#

what are you trying to do?

#

you can replace a while (matcher.find()) with regex.findAll()

distant sun
#

nah not that, was just looking for a shorter version of Pattern#compile#matcher#find

forest pecan
#

What do you guys in place of Collection when returning something with items in it

#

I use HashSet and add the item inside via ImmutableSet some times, but im just wondering what people do

cinder flare
#

tuple

#

🤤

rotund egret
#

Kotlin pair

#

Or if it's big enough I'll use a data class

cinder flare
#

this is exactly why tuples exist

#

i wonder if Kotlin has them yet

ocean quartz
#

Used to have

cinder flare
#

fucking what

ocean quartz
#

Will have again in the future

cinder flare
#

oh cool

forest pecan
#

Java has tuples right?

cinder flare
#

uh I don't think so

forest pecan
#

Oh

#

Oof

cinder flare
#

ah there's a Javatuples library lmao

#

slap that bad boy in your maven and you're good to go it claims!

forest pecan
#

Oh lol

#

also i dont use maven

#

only 🤡s do

cinder flare
#

i mean neither do i

forest pecan
#

good

cinder flare
#

that's just what their website says

forest pecan
#

Oh

#

lmfao

cinder flare
#

Triplet<String, Integer, Double> triplet = Triplet.with("hello", 23, 1.2);

onyx loom
#

sounds like smth vavr would have

cinder flare
#

wtf is vavr

onyx loom
#

functional java

cinder flare
#

Kali you brilliant man

onyx loom
#

🤤

rotund egret
#

Kotlin has tuples still wym

#

It's part of Pair

cinder flare
#

i think pair is just a separate thing

#

you can't make arbitrary tuples

#
// (Java, 8)
Tuple2<String, Integer> java8 = Tuple.of("Java", 8); 

// "Java"
String s = java8._1; 

// 8
Integer i = java8._2; ```
#

oh ew

#

i hate underscore naming

rotund egret
#

Wym?

onyx loom
#

i feel like for Tuple2 they shouldve done .first and .second, like kotlin pair

cinder flare
#

they only have like pair and triplet

#

you can't make a (String, Int, String, Int, String, Int, String)

#

so it's not real tuples

#

at least, that's what I gathered from some blog post in 2012

ocean quartz
onyx loom
#

yeah now all in java is to have an infix function to easily create pairs 🥲

cinder flare
#

lets just add tuples already

half harness
#

time to learn Turkish now 🥲 /s

half harness
#

Argh why am i keep getting my project files deleted

#

this time i uploaded everything to github before i changed anything, so im safe

#

but if i didn't upload that to github... the last time i uploaded to github was a while ago 💀

eternal compass
#

webpack typescript no type checking ;-;

addon: string = input;
typeof (<string | number>addon;

l need to cast it to <string | number> so that my IDE doesn't freak out at a un needed check lol

forest pecan
#

why does intellij read your commit names and if it has a swear it complains "inappropriate word!", then recommends "piss off". I wrote "shit"

#

lmfao

old wyvern
#

Im sorry, what?!

distant sun
#

time to learn turkish

ruby dew
#

lets speed run turkish

lime ember
#

Google translate👌

ocean quartz
distant sun
#

See you in 2 days

lime ember
#

Do you know how the installer from lunar or badlion client work?
I think they patch the vanilla jar or something like that but I don't know how to do it myself...

prisma wave
steel heart
wind patio
#

Unpopular opinion
Five hours of coding will save you 5 minutes of reading documentation

steel heart
#

🥲

ocean quartz
#

@distant sun Smh my head, I wonder who made the typo

static zealot
#

me

distant sun
#

I KNOW I DID SMH

static zealot
#

what typo?

distant sun
#

I put it on there so I don't forget

jovial warren
ocean quartz
#

It's not there, it's in the file

jovial warren
#

nice Javadocs you got there mate 🙂

ocean quartz
jovial warren
#

oh, that, lol

ocean quartz
#

What typo is in the link you sent?

#

Oh it's missing the {

jovial warren
#

@link MapBuilder}

#

yeah

ocean quartz
#

Smh Gaby

jovial warren
#

not sure how I picked up on that one and missed the more obvious one though lol

ocean quartz
#

Just found out about this window, quite cool

hot hull
jovial warren
#

300k? for what?

#

you could buy a fucking house with that

#

well, in my area, you'd be fucking lucky to find a house that cheap, but in most places, yeah, you could buy a house with that

#

sorry, I just thought that was cool

winter iron
#

why buy a house when u can just build one in minecraft?

jovial warren
#

the only thing I'm worried about with my algorithm is the fact that I have to completely start a fresh every time and recalculate everything

ruby dew
#

its just a budget lmao

jovial warren
#

and the thing that (I think) is the most expensive here is the spiral function that gets the neighbour positions

ruby dew
#

i have 1 trillion budget yet i wont spend a cent on you lmao

#

thats what the dudes were implying

hot hull
jovial warren
#

that wasn't actually me attempting to flex, just seemed to turn out that way

jovial warren
#

I was just making a comment lol

hot hull
#

Bardy, I'm messing with you, 300k for a house ain't a lot

ruby dew
hot hull
#

Do you not want to spend at least a dolar on me?

jovial warren
hot hull
#

Well euro, but that's even more for you

jovial warren
#

£300,000 is a lot of money

ruby dew
hot hull
#

Or wait, is pound more than euro, or not

jovial warren
#

not yet I don't think

obtuse gale
lime ember
ruby dew
#

these guys are living ahead of time
imagine unlimited budget

eternal compass
old wyvern
jovial warren
#

:kekw:

#

well, for AWT anyway lol

hot hull
#

Ew

jovial warren
#

pay close attention to the far right side as the player moves, notice that no levels are getting yeeted

ocean quartz
#

Which bg color is better?

eternal compass
#

Also- is this OS? I was a bit confused on how you implemented that cache thing

#

Since mine exploded

#

Or similar

ocean quartz
eternal compass
#

Thanks

frail glade
#

You finally releasing this GitBook alternative?

eternal compass
#

Gitbook alternative 😌

ocean quartz
#

Kinda it's personal, idk if I can make it public
I would if I spent more time creating an editing system, right now the only way to edit the data is through github

frail glade
#

Ahh

eternal compass
#

I might make smth like that at some point actually, sounds semi-easy.
Just parse Markdown files and boom :p

#

And markdown parsing is surprisingly easy

#

RemarkJS has a react plugin

ocean quartz
#

System I have is pretty simple
Any folder will become a project

eternal compass
#

Aha

ocean quartz
#

For a project to be validated it needs a SUMMARY.md file

#

That'll turn into the side bar

#

Then every other file will be a page, which you have to link to in the summary

frail glade
#

Do you plan to host a public demo?

ocean quartz
#

Yeah

eternal compass
#

Well it's the docs for triumph, no?

#

Also what's the backend for?

#

My backend is integrated with my front end, which is... intresting. It'd basically 2 ts projects in one

ocean quartz
#

Yeah
And the backend handles everything, github cloning, project creating, summary md parsing, page md to html parsing, etc
Instead of handing that on the client, the backend saves it all and then just simple api call and you can get everything, which makes it super fast

eternal compass
#

Oh and no react create app

eternal compass
#

I basically have a custom web server though, its... intresting

#

And it caches like 50+ jar files for quick download :p

ocean quartz
#

All the data is stored like this

eternal compass
#

Fancy

#

Mine is just a simple rest api + static (react) site

#

And a file generator

#

For the response

frail glade
#

What'd you make?

eternal compass
#

Me?

#

I'm replacing bentoboxworld's download site that's built in python atm, and is really finicky. Stealing the style though, as I'm not a designer

ocean quartz
#

I'd hate to do it like that, it's already awful enough to work in the front end with TS, can't imagine handling everything else like that 😬

eternal compass
#

Well, yeah

frail glade
#

Ahh are you rewriting a new one for him?

eternal compass
frail glade
#

What are you doing with Jenkins?

eternal compass
eternal compass
#

:p

jovial warren
#

ffs why can't I make a simple fucking floor fill algorithm

frail glade
#

Can you not just use an npm module for Jenkins with ts?

obtuse gale
#

hmm I can use AutoCloseable as an exception friendly runnable

eternal compass
#

And I'm lazy

frail glade
#

Ahh

eternal compass
#

So I'm building my own

#

Maybe I'll publish it

#

jenkins-ts

#

(Not for pushing builds, just the public api)

frail glade
#

I have no idea if it exists, but would be cool, is if you could take a JSON string and throw it into something and it would spit out a possible Java object that could serialize and deserialize that string with gson or whatever.

eternal compass
#

Doesn't gson have that?

#

Deserialize to class

#

Oh wait

#

I missread

#

Well typescript has that :p

#

Someone made one

#

I use it for my configs

frail glade
#

Yeah it has deserialize but that would be cool if it could generate a class from a given string

obtuse gale
#

PepeLa

eternal compass
frail glade
#

That would be pretty useful IMO if it doesn't exist.

eternal compass
#

Yeah I'll do some googling first

#

But if not

#

Next Project™️

frail glade
#

👍

eternal compass
frail glade
#

Oh this actually did it somewhat decently.

eternal compass
#

yeah

#

and theres already a typescript one that works perfectly

#

so later

frail glade
#

I'm working on a subtitles feature for Holovid so I was just so annoyed trying to work with the YouTube captions API that I said screw json and I went with XML instead.

eternal compass
#

lol

#

xml is meh

#

I love json over xml/yaml though

frail glade
eternal compass
#

ahhh

#

my eyes

frail glade
#

Yeah

eternal compass
#

yeah use that jsonschema thing

frail glade
#

And that's for a 30 second video iirc

eternal compass
#

find a 2 hour video to generate the json

frail glade
eternal compass
#

then it'l be better

#

oh easier

frail glade
#

Took like 20 lines of code to convert it into Java objects that I wanted to work with.

distant sun
#

Damn

frail glade
#

Are you in Syscraft Fred?

eternal compass
#

yessir

frail glade
eternal compass
#

fancy

#

but why no maps?

#

or whats the texture pack for

frail glade
#

Audio

eternal compass
#

ah

#

you could use noteblocks and make it just audio-like without it ig

distant sun
#

Whats Syscraft?

frail glade
#

And we also will be shipping a font in the pack with audio that makes it look a lot nicer. Still talking about how we plan to do that.

eternal compass
frail glade
#

Why do noteblocks when we literally have audio working?

eternal compass
#

thats fair

#

but it requires a resource pack

frail glade
#

So? We handle it for them for the time being.

#

It's generated on-demand.

#

Sent to all players in range for the screen.

eternal compass
#

how does it work with another resource pack?

frail glade
#

I suppose noteblocks could be an option if they don't want to have a resource pack

eternal compass
#

(eg. a server default one)

frail glade
#

Yeah that's what we haven't came up with yet. Most likely wouldn't work.

eternal compass
distant sun
#

Looks nice

frail glade
#

We're working on a pipeline limitation right now on the client end and seeing how we can optimize the packets. It currently saturated it too much at 144p.

#

But yeah when we sync the subtitles I think it'll be pretty cool.

#

That way you don't even need audio.

eternal compass
#

right

#

and subtitles are the only one that would work on twitch, right?

#

since it doesn't have predefined audio

frail glade
#

I haven't even looked into that tbh

#

We're doing a couple things right now.

  1. drop ProtocolLib
  2. fix client sync audio issues at higher resolution
  3. general cleanup and subtitles
eternal compass
#

why drop ProtocolLib?

#

everyone already has it

frail glade
#

Because it was contributing to the saturation of the pipeline. It was flushing every line of every frame in the pipeline. In a dev branch we went directly into NMS and now we only flush every frame. So iirc if we have it at 72p it's 72 lines and each of those lines flushed every frame and now it's 1 flush per frame instead of 72.

#

It's not set in stone yet, a lot of profiling needs to be done.

eternal compass
#

I have no idea how I'd even think about doing that lmfao

forest pecan
#

Holovid back from the dead 👏

frail glade
#

We're also exploring the possibility of doing something like animated frames and have it statically on itemframes with maps so it can be in a static location vs rotating with the player.

eternal compass
wraith hamlet
#

oks

ocean quartz
#

Nice to see Holovid being worked on, it's looking amazing Glare!

frail glade
#

😃

grim current
#

Does somebody want to talk and code a bit?

rotund egret
#

Sure, I'll code

hallow crane
#

Does Holovid have a repo? I have a very good use for this- display stock tickers.

old wyvern
hallow crane
#

Thanks!

#

Oh wait does this require a spring boot app

frail glade
#

That's just for the backend audio

eternal compass
#

dang I missed 1,000 changes lmao

#

965

#

close enough

eternal compass
frail glade
#

For now. It already is hooked up to a public one

eternal compass
#

Nice

obtuse gale
#

how hard is to make a plugin that allows a player to set a home/spawn

forest pecan
#

not that hard, but depending on yoru skill level

obtuse gale
#

alright

obtuse gale
#

where would I start

half harness
#

depending on your knowledge

rotund egret
#

Hello world

frail glade
#

Sup

forest pecan
#

Sup

grim current
obtuse gale
quiet depot
#

lmao

rotund egret
#

👀

#

I wish I had that kind of money

paper yacht
#

$700 a year
$2 a day
still cheaper than a vps, but why would you even buy it for 3 years? its almost like hes tryna make the next big server or something

#

he couldve just built a budget server rack for that money and keep it on his lan lol

hot hull
#

I mean why wouldn't you, he probably got it a lot cheaper for that timeframe than buying for like a few months

remote goblet
#

I find it so painful when people buy stuff like that before their server is closed to finished Panik

#

if you're still in the luckperms setup phase

#

stop paying wack amount of money to run the server that probably won't be released for another month

hot hull
#

Ori, go update my shit

ocean quartz
remote goblet
hot hull
#

<3

remote goblet
#

i hate auction worth Panik

hot hull
#

Why

#

It's a big broin ploogin

remote goblet
#

StareIntoYourSoul because you made it

onyx loom
#

frosty... smart...?

hot hull
#

Wdym because I made it

#

That's not very nice of you

remote goblet
#

becacuse you made it and because you wont do plugins, I have to do it Panik

#

and I got all the shit on my ah release because I got all the shit for it breaking when you're the one who messed up Panik

hot hull
#

Nah nah, my shit works fine

toxic fable
#

hello! Please update DeluxeMenus, it's such an awesome plugin! I've been waiting to use it on 1.17 :>

pallid gale
#

I linked you to the 1.17 dev build

toxic fable
#

Oh okay.

#

I can't seem to download it.

ocean quartz
#

There is a download button right there

toxic fable
#

Oh thank you!

static zealot
#

👍

toxic fable
#

It didn't work tho.

static zealot
toxic fable
#

Okay.

prisma wave
#
if (itemConfig.headOwner() != null && meta instanceof SkullMeta headMeta) {
            //noinspection deprecation cringe
            headMeta.setOwningPlayer(Bukkit.getOfflinePlayer(itemConfig.headOwner()));
            meta = headMeta;
        }
item.setItemMeta(meta);

meta = headMeta is this line necessary?

#

surely not right?

steel heart
#

Maybe he’s setting it concurrently in another thread BES_Clown

prisma wave
#

not possible

#

it's not a global variable

steel heart
#

Oh

#

Frick

#

Well make everything global!

prisma wave
#

so it's probably not needed

#

i dont think

#

like headMeta is still gonna point to the same value

steel heart
#

Global variables, global functions, global everything!!!!

#

Yeah

onyx loom
#

use editMeta instead then u definitely wont need it!

steel heart
#

Btw is editMeta more optimized than getting the meta and then setting it back?

prisma wave
#

oh shit that's a thing

onyx loom
#

😌

#

well its a Consumer, so take that as u will. but probably a micro optimisation either way

steel heart
#

I remember spigot cloning the meta 4 times or something when invoking equals on ItemStack

onyx loom
#

🌚

distant sun
#

where's editMeta from?

#

ah 1.17 paper

ocean quartz
#

@fleet bay Just reading the docs and trying it out is pretty easy, if you know Java then Kotlin is gonna be a breeze

ruby dew
#

how is kotlin different?

cinder flare
#

Go to the website and look at it

ruby dew
#

kotlin syntax looks like c++ or cs which gives me chills

onyx loom
#

its definitely not c++ what

fleet bay
#

I am looking forward to it now

ruby dew
#

its syntax look like it at first glance

distant sun
#

??

ocean quartz
ruby dew
#

idk

cinder flare
#

No it does not

ruby dew
#

maybe im looking at the wrong language

cinder flare
#

Do you know what Cpp looks like lmao

forest pecan
#

Haha null safety in Java be like

#

Optional

#

xD

ocean quartz
#
fun main() {
  println("Hello world")
}
ruby dew
ruby dew
fleet bay
ruby dew
#

gives me chills

#

and yes i use cpp all the time

#

other than java

forest pecan
ocean quartz
distant sun
#

Yes Jona

fleet bay
#

Looks nice

cinder flare
#

What semicolons lmao

ruby dew
#

idk

forest pecan
#

Semicolons are useless

#

Add unnecessary stuff

fleet bay
#

But indeed smillair to java ofc

ruby dew
#

maybe i am looking at the wrong language

#

i hate fun keyword tho

cinder flare
#

Look at what Matt just sent

ocean quartz
#

It's fun though

fleet bay
#

But if you use Java all the time is it hard to switch to kotlin?

ruby dew
#

reminds me of nasty "function" in java script

fleet bay
#

Then i can try it atleast 😂

forest pecan
#

I code my test cases in Kotlin

stuck harbor
#

kotlin is very similar to java

forest pecan
#

And main lib in Java

stuck harbor
#

easy to switch over

ruby dew
#

like fun is the thing where you dont have to specify return type

frail glade
#

You can use them interop

cinder flare
#

The best way to start kotlin is so convert a single file of your code at a time from Java to kotlin

frail glade
#

It just comes with practice.

cinder flare
#

They can live together in the same protect

ruby dew
#

c++ or cs > all discussion ended

cinder flare
forest pecan
#

Yeah

ruby dew
#

lol

fleet bay
#

😂

#

Maybe it is the time to stop @ruby dew

ruby dew
#

:)

#

just because i rejected your opinion

lunar cypress
ocean quartz
# fleet bay But if you use Java all the time is it hard to switch to kotlin?
public class Person {
  
  private final String name;
  private final int age;

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

  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }
  
}

In kt

data class Person(val name: String, age: Int)

not counting records

stuck harbor
#

man

ruby dew
#

yes true fun is nasty

forest pecan
#

Lombok

#

/s

distant sun
#

@ocean quartz record smh

forest pecan
#

Lol

fleet bay
#

What the heck

fleet bay
#

Holy shit

ocean quartz
cinder flare
fleet bay
#

Its so much cleaner

forest pecan
#

Record better

#

Lol

cinder flare
#

You can override them if you need to

ruby dew
stuck harbor
#

imagine using lombok inside kotlin

fleet bay
#

Damn

stuck harbor
#

that would be funny

#

and illegal

forest pecan
#

Lol

lunar cypress
#

no

stuck harbor
#

but no

cinder flare
frail glade
#

Confusing the JVM 101.

stuck harbor
#

but

#

just no

ruby dew
forest pecan
#

How

cinder flare
ocean quartz
forest pecan
#

You can still override and define the ones you need

cinder flare
#

You can still do the Java thing the hard way

onyx loom
#

u can still have an explicit constructor with the init keyword in kotlin

static zealot
#

^^^ you can still have multiple constructors

ruby dew
#

ohh alr

cinder flare
#

This is just a nice shortcut

ruby dew
#

thats nice ngl

stuck harbor
#

i refuse to use kotlin cause i like NPE

onyx loom
#

but what about KNPE 🥺

forest pecan
#

I refuse to use Kotlin because I target Java users

lunar cypress
forest pecan
#

And Kotlin compatability too

fleet bay
ocean quartz
#

I am yet to ever use a secondary constructor

data class Person(val name: String, age: Int = 1)

Person("bob") // bob, 1
Person("bob", 25) // bob, 25
onyx loom
fleet bay
#

😂

cinder flare
# fleet bay KNPE?

Kotlin's type system makes it hard to get a null pointer exception, but it is still possible if you're dumb

forest pecan
#

Lol

ruby dew
fleet bay
#

Hahaha wtf

#

Sounds Nice tho

ruby dew
lunar cypress
fleet bay
#

Its like you guys are saying that in Java you can make so many more mistakes then in kotlin?

#

Or isnt that true

cinder flare
cinder flare
ruby dew
cinder flare
ocean quartz
fleet bay
ocean quartz
#

Kek

cinder flare
ruby dew
forest pecan
#

There are just a couple things only I dislike about Kotlin though

lunar cypress
#

where did kotlin dream up the deranged concept of functions man

forest pecan
#

Only a couple

remote goblet
#

the hardest part about moving from java -> kotlin is the syntax blobslightsmile

forest pecan
#

Like the bitwise operators and some exceptions

fleet bay
cinder flare
remote goblet
#

this server circlejerks kotlin a lot

forest pecan
#

For a couple years already

cinder flare
#

Not really actually

forest pecan
#

🥲

stuck harbor
#

not enough clojure circlejerking imo

ocean quartz
#

According to StackOverflow's survey Kotlin is on the top 5 most loved languages

rotund egret
stuck harbor
#

🙂

cinder flare
#

Now that BM has changed sides

ruby dew
#

i would still stick for java tho until kotlin has more features
and why do i feel like you guys are developers from kotlin lmao

ocean quartz
#

Most loved

fleet bay
#

Whats the first language you guys ever coded with?

stuck harbor
#

more features

onyx loom
#

what kind of "features" are u looking for?

cinder flare
#

Kotlin has more features already smiling_face_with_3_tears

steel heart
onyx loom
#

yeah...

stuck harbor
#

typescript can go microwave itself

cinder flare
stuck harbor
#

go is good for servers man

ocean quartz
cinder flare
forest pecan
remote goblet
#

actually no, JS is a lie

#

Python was my first for a whole hour until I stopped

lunar cypress
#

seriously everyone is a kotlin shill here lmao 🤣 they should use ABCL like real programmers

stuck harbor
#

lol ABCL

ruby dew
stuck harbor
#

all my homies use ABCL

#

who needs clojure

cinder flare
ruby dew
#

lets just stick to assembly

remote goblet
#

i dislike clojure syntax

cinder flare
#

Different languages for different tasks

stuck harbor
lunar cypress
ruby dew
forest pecan
ruby dew
#

but flexibility > safety

forest pecan
#

Somethings wrong

stuck harbor
#

22 bytes

cinder flare
ruby dew
cinder flare
#

You should look into it

forest pecan
#

Lol

cinder flare
#

If you love Cpp so much

ruby dew
#

and faster

remote goblet
#

i prefer kotlin for SQL Based stuff blobslightsmile

cinder flare
lunar cypress
#

I want to frame some of these messages

stuck harbor
cinder flare
#

And without all the bloat of C and being really old

remote goblet
#

rust? I thought that was a game clowncat

ruby dew
#

ohh alr thats good

#

i literally thought rust was some libraries like react legit like 2 years ago

cinder flare
#

Yeah no

ruby dew
stuck harbor
#

yep

cinder flare
#

Rust will be Mozilla's biggest contribution to the world hands down

ocean quartz
ruby dew
#

firefox sucks tho

lunar cypress
#

Guess what else has memory safety

stuck harbor
#

linux kernel has rust in it now, doesnt it?

#

a bit

ruby dew
#

firefox is slow and annoying

rotund egret
cinder flare
stuck harbor
#

i use firefox

#

no problemos

rotund egret
#

Same

cinder flare
#

Meh

ruby dew
#

idk it just keeps crashing on my pc

stuck harbor
#

it serves its purpose

ruby dew
#

and chrome is much faster when it comes to gaming

stuck harbor
ocean quartz
#

Maybe you need a new pc

rotund egret
#

Who games on a browser wtf

onyx loom
#

lmao

cinder flare
#

I just use Chrome but Firefox is whatevs

lunar cypress
#

Lmao

stuck harbor
ruby dew
#

i play diep io or arras io or some shits

remote goblet
#

real gamers still use internet explorer EmiCool

stuck harbor
#

man club penguin shut down didnt it

#

mood

onyx loom
#

"chrome is much faster when it comes to gaming" what does that even mean

stuck harbor
#

use opera gx then 😉

cinder flare
ruby dew
#

i run arras io in chrome no problem
but when i run arras io in firefox it just lagsso much

distant sun
ruby dew
#

club penguin is revamped

stuck harbor
#

rust good

cinder flare
#

Just like toontown and potco

ruby dew
#

i saw it went online

remote goblet
#

look at that clean ui

ruby dew
#

like several months ago

cinder flare
remote goblet
#

was half concerned that screenshot was gonna dox me

ruby dew
#

there is something attracting me in IE

stuck harbor
#

imagine using windows

ruby dew
#

at least you dont get that annoying warning when you browse to some cracked sites

cinder flare
stuck harbor
#

i use linux, and occassionally macOS

ruby dew
#

IE is great

stuck harbor
#

windows serves no purpose

ruby dew
cinder flare
#

Dude this guy has got to be trolling

ruby dew
#

while chrome just completely blocks out those

cinder flare
ruby dew
#

no im not lmao i still use it
and im trying to dig around its source code to make it faster

#

yeah

cinder flare
#

Those are extremely unsafe

stuck harbor
#

mans saying chrome is too secuer

ruby dew
#

sites without certificate and also malicious file types which are legit

forest pecan
#

Yo anyone wanna help me pick out a name

cinder flare
#

Okay whatever lmao

stuck harbor
#

fun fact: .dev sites wont load without SSL

#

its why i use .dev

onyx loom
#

oh no @ocean quartz

forest pecan
#

Lol

ocean quartz
#

I mean who doesn't have ssl

stuck harbor
#

well

ruby dew
#

i manually disable ssl

stuck harbor
#

fair

remote goblet
stuck harbor
#

wh

#

👀

#

wh

steel heart
#

🤨

stuck harbor
#

huh

ruby dew
#

to let others see my browsing history

stuck harbor
#

thats not how

#

it

#

works?

ruby dew
#

i dont care if i log onto some websites without ssl

#

like if someone is gonna intercept the packets then let it be

#

for some sites

remote goblet
#

clowncat linux scares and confuses me so I gave up with ssl

stuck harbor
#

lol

ocean quartz
stuck harbor
#

certbot is too easy nowadays

#

ssl is a baseline, not a high mark

remote goblet
#

i got it to work on one domain and gave up after that

stuck harbor
#

HTCPCP is what my homies use now

errant geyser
steel heart
#

Caddy

#

😌

errant geyser
#

😍

old wyvern
#

ElaraGinx configures itself from your brain waves!

steel heart
#

😳

ocean quartz
#

Hawt

errant geyser
old wyvern
#

Yup 😔

#

wtf is this

errant geyser
#

skill

#

Or brain damage, take your pick

old wyvern
#

I really thought I was reading Java for a few minutes

errant geyser
#

The cardinal sin of Kotlin

old wyvern
#

😔