#dev-general

1 messages · Page 46 of 1

cinder flare
#

but yeah doing a bounding box check is like 100x easier than doing each distance calculation manually

#

so yeah it would be pretty far off

#

likely wouldn't really matter for not many players, but still

inner umbra
#

That can get pretty heavy on performance.

long dagger
#

well im no einstein but everything I have already tried hasnt worked

cinder flare
#

i'm not sure i understand the problem honestly

long dagger
#

I did that first, and that is where my problem began

#

since the distance is 10 yet entities are added past that

cinder flare
#

yeah up to 14, because square bounding box

rotund egret
#

entity move event when

cinder flare
#

lmaooo oh no

long dagger
#

using 14.14, it removes far past when it is added

#

you can clearly see it in the video

cinder flare
#

wdym "removes"

long dagger
#

I have code that removes the armorstand

#

forgot to mention that

#

it adds it when it gets close, and removes it when they get far away

cinder flare
#

are you using the bounding box thing for JUST the initial pickup?

#

or also for checking the distance between the player and the mob later?

long dagger
#

I use getNearbyEntities to add the armorstand, and then use location.distance for checking distance later (using 14.14)

#

idk if that answers your question

cinder flare
#

hmm

long dagger
#

this is what I am talking about, it is weird

#

the math aint mathing

cinder flare
#

yeah i feel like something isn't working as it should

#

maybe like debug to make sure the starting origin is right?

#

how often are you polling this actually, like every 20 ticks?

long dagger
#

it is player.getLocation

#

so the origin should always be good

long dagger
cinder flare
#

hmm

long dagger
#

idk, maybe I just ignore it

#

it just bugs me

inner umbra
#

I have my own box object and I loop through the world entities via NMS, so I can do it async, then check their location is inside the box.

cinder flare
#

i mean you can probably just do that in the spigot BoundingBox or whatever

inner umbra
#

not async but the bounding box part maybe.

inner umbra
#

My own thread...

potent nest
#

but what is it doing?

inner umbra
#

loop through the world entities via NMS

potent nest
#

so you're doing something that isn't thread-safe

inner umbra
#

I take a copy of the list which you can't get via the api.

potent nest
#

that doesn't make it thread-safe automatically

inner umbra
#

Its thread safe.

potent nest
#

doesn't sound like it is

inner umbra
#

Go find out for yourself 😉

potent nest
#

I don't know your code, so that part is difficult

inner umbra
#

Go find the NMS code.

potent nest
#

show me your code

#

because there are many methods in NMS that deal with entities, and most differ in implementation between spigot and paper, for example

#

and just because a method doesn't have an async catcher call doesn't mean it's thread safe

#

and without deep cloning at a thread-safe point in a thread-safe way, almost any interaction with a specific entity is thread-unsafe again

inner umbra
#

My method works and is thread safe, thats fine for me.

potent nest
#

it most likely isn't, you have shown before that you don't understand multithreading

inner umbra
#

I have. But also learned from it.

potent nest
#

what are you doing when iterating over the entities async? Checking if they are inside a bounding box?

inner umbra
#

x,y,z fields, later versions the x,y,z fields of the Vec3

potent nest
#

how do you make sure that part is threadsafe?

inner umbra
#

Its a copy, not the original

potent nest
#

so you have deep copies of the entity?

half harness
#

no idea if anyone has any experience relating to this but how can I get SFTP to have its ChrootDirectory on a mounted drive while having read & write permissions?

  • I can't chmod because the permissions don't persist
  • I can't chroot because I don't want the sftp user to own the drive (and I haven't tried, but I'm assuming the same issue with above will happen anyways)
  • I can't umask=000 the drive in /etc/fstab because then SFTP gives the error: client_loop: send disconnect: Connection reset (why??)
    What else can I try? D:
wind patio
#

setfacl? @half harness

half harness
pastel imp
#

Eyo planning on making an sql library for funs and personal use but maybe making it public and would like some feedback on this pseudo code:

SQLDatabase db = SQLDatabase.mysql()
                  .host("localhost")
                  .port(3306)
                  .user("root")
                  .password("")
                  .database("db")
                  .build()

db.addTable(SqlTable.of("newTable")
                  .addField(
                        SqlField.of("id").type(DataType.TEXT).primary(),
                        SqlField.of("name").type(DataType.TEXT).notNull()
                  )
);

ResultSet rs = db.select("id", "name").from("newTable").where(Conditions.eq("id", "12345")).queue();

Just an overall idea on how it would look, a bit inspired in the JOOQ syntax but it's not an orm.

crude cloud
#

well, jooq isn't exactly an orm either

pastel imp
cerulean ibex
crude cloud
#

no, i just enjoy being a nuisance

pastel imp
cerulean ibex
#

the capitalisation

pastel imp
cerulean ibex
#

yea

#

that capitalisation is wrong

pastel imp
pastel imp
#

fk off

#

@kindred hatch

half harness
#

but i don't really use sql so idk

#

or you should just make a whole ORM :)))))

#

is there any good free OS ORM for mc

rotund egret
#

exposed

prisma meteor
#

Is there a way to enable placeholders to be used in bungeecode like a tab plugin?

cerulean ibex
#

theyre all ass

#

istg if someone says hibernate theyre getting it

half harness
#

._.

#

bad barry

crude cloud
#

Barry is racist

#

he eats infants

rotund egret
#

real

half harness
rotund egret
#

skill issue really

half harness
prisma meteor
#

Um... can you help me too?

rotund egret
#

Oh you just have to fix the service files, you can do that with a gradle task I think.
I have an example of when I did it for Mongo awhile back

half harness
half harness
rotund egret
#

It'd probably require a lot of hunting down what needs to be changed and how, but lemme find it rq

#

This is a little older, I think either gradle or shadow changed some things since, but you should still be able to do it.

This is where I call transform
https://github.com/DrZoddiak/Strax/blob/d4d405aedae705e34535b4b7ea3ace84d3042085/build.gradle.kts#L54

This is the transformer
https://github.com/DrZoddiak/Strax/blob/d4d405aedae705e34535b4b7ea3ace84d3042085/build.gradle.kts#L121-L171

It's not very technical necessarily, it's just reading matched files and transforming their contents correctly
This was written with kmongo in mind, so it's not like universal or anything.

half harness
rotund egret
half harness
#

wait you excluded kotlin?

#

is kotlin included in sponge or smth?

rotund egret
#

I depend on another lib, kruntime

half harness
#

oh

rotund egret
#

That project has bad configuration though fr

pastel imp
pastel imp
pastel imp
#

I am also wondering if I should add magic or not? For instance, .from("tableOne", "tableTwo") would automatically do an inner join with tableTwo.

#

and that if there were 2 elements with the same name and the dev didn't specify which table, it would automatically take the first one it finds in a table

#

but that might be too much magic and actually bad for debugging in some cases

#

which I suppose makes it a bad idea?

wind patio
#

well, personally I wouldn't do it

#

makes it confusing imo

#

if I want to join a table, I will do a join.

wind patio
#

though .from("tableOne", "tableTwo") implies more of a

SELECT * FROM tableOne UNION ALL SELECT * FROM tableTwo
wind patio
#

anyways, we are currently using openjdk 17.0.10 java distr. for our server, any other recommended distributions, such as adoptium?

potent nest
#

distributions based on OpenJDK barely differ besides licensing

#

the only real difference would be using something like azul platform prime, OpenJ9, GraalVM as those actually provide different implementations of JITs

cerulean ibex
#

wait nvm

#

im deaf

pastel imp
#

the union I will do with smt like .union(SQLQuery) aka it receives a new query instance.

pastel imp
#

So it would make sure people provide the on condition

wind patio
#

well, JOOQ does it like this

dslContext.select()
      .from(AUTHOR)
      .join(BOOK).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
      .fetch();

I suppose it's just skipping .on clause

pastel imp
#

Hence why I wanted to put the condition (ON) inside the join method directly.

rotund egret
#

throw

pastel imp
#

yeah sure but I wanted to make it bullet proof for those types of mistakes

wind patio
#

well, you can't proceed with the query anymore if you don't have .on, since .join doesn't have a .where method

rotund egret
#

No builder patterns sad

pastel imp
#

would that make sense to make to keep the "builder pattern"?

pastel imp
#

Unsure...

wind patio
#

well, if you have a single builder instance then you will have to -> throw

cerulean ibex
ocean quartz
#

Meanwhile Jpa on spring allows you to write queries like this:
List<Something> findByKeyAuthorAndSomethingAndSomethingElseOrderByDesc()

#

So cursed

cerulean ibex
# cerulean ibex very anti-oopy

take their example

@Entity
class Book {
    @Id private String isbn;
    @jakarta.validation.constraints.NotNull private String title;
    Book() {}

    Book(String isbn, String title) { ... }
}
  1. must have a default constructor so youre adding an invalid state to your object
  2. cannot ensure any invariants hold because shitty reflection stuff
  3. class must be non-final

(these are more jpa things, but hibernate the bad standard so)

cerulean ibex
ocean quartz
#

Yeah that's what I meant, jpa, didn't want to write the entire thing "spring-data jpa"

#

I know it has other stuff too not just that, but that's what we use so that was the example :')

cerulean ibex
#

theres a wip jakarta data spec that does essentially the same thing

#

i love their example

#
List<Product> findByNameIgnoreCaseLikeAndPriceLessThan(String namePattern, float max);
ocean quartz
#

It's so cursed

#

I think we have a really long one, let me see if I can find it

rotund egret
#

Pretty sure that's illegal

ocean quartz
#

Can't find anything longer right now and too lazy to search more but this is a nice one

public fun findOneByKeyPlayerIdAndKeyQuestTypeAndSlot(playerId: UUID, questType: String, slot: Int): QuestEntity?
half harness
cerulean ibex
half harness
cerulean ibex
#

why did it tell me i cant mask my link then not delete it

cerulean ibex
ocean quartz
#

Yeah it's converted into a query

cerulean ibex
#

i might actually like jakarta data

// these are equivalent
Vehicle[] findByMakeAndModelAndYear(String makerName, String model, int year, Sort<?>... sorts);
@Find
Vehicle[] searchFor(String make, String model, int year, Sort<?>... sorts);

no more magical language in the method name

#

prob requires enabling parameter names tho

distant sun
#

I didn't use it but it looks very cool ngl

pastel imp
pastel imp
#

well I will hopefully work on it this week if no more feedback is given

crude cloud
#

idk, you say it's inspired by jooq but it just seems like a watered down version of it, you lose a lot of the static typing by using just strings to refer to columns which is one of jooq's strengths (which you can also omit and use strings as well)

pastel imp
agile galleon
#

Why is that a requirement for a public library?

wind patio
pastel imp
pastel imp
wind patio
pastel imp
wind patio
#

well there are functional and non functional system reqs

#

something that abstract is definitely non functional, it doesnt define any function of the system itself

pastel imp
agile galleon
#

^

rotund egret
#

I think the idea they're attempting to convey is that a "decent library" is a "non-functional" requirement of a "public library"

In that a "public library" need not be "decent"

And because being "decent" does not define the function of the program, it is then a "non-functional" requirement.

Reading the wikipedia, if a "non-functional requirement" describes what the system is "to be", then the system is to be "decent" rather than, the system shall do decently.

pastel imp
pastel imp
wind patio
#

yeah I guess I am just thinking about something else

pastel imp
#

on a random note, I plan on doing like, an hybrid library where you can easily change what you are using... (mysql, sqlite, postgres, etc) would a multi module project work for this? so having the core and one for each platform? Any recommendations on where to learn more about it? Never really experienced much with multi modules.

cinder flare
#

multi module seems way overkill for that lol

#

at least for the SQL stuff, it's basically the same

wind patio
#

true

#

different classes for parsing should be enough

rotund egret
#

I love multi module gradle setups

#

I wish gradle docs were easier to digest because gradle is so fun to use (when it works)

pastel imp
cinder flare
#

bro this is like, the third time in the 1.20 minor versions we've had an instant version bump with one bug fix

wind patio
#

lol

rotund egret
#

Bro is version maxxing

cinder flare
#

1.20 -> 1.20.1, 1.20.3 -> 1.20.4, and now 1.20.5 -> 1.20.6

#

like how do they not test these things man

rotund egret
#

big gaem

wind patio
#

lgtm push to prod

rotund egret
#

small studio

cinder flare
#

most sold game of all time can't test for gamebreaking bugs lmao

rotund egret
#

Seen the game test stuff for bedrock?

#

neato stuff

wind patio
#

bedrock is bleh

rotund egret
#

That's aside the point, the game test feature is just super cool

wind patio
#

havent seen it

rotund egret
#

You can write tests that generate structures that test mechanics in-game, you also get a neat little green beacon on passes

#

Look at this cutie

cinder flare
#

okay ingame unit tests is pretty cute

rotund egret
#

I'd love to have something like that in Java edition

potent nest
#

it's integrated in the java edition

pastel imp
#

wait wut

wintry plinth
agile galleon
#

laracraft

rotund egret
potent nest
#

It’s part of the source code for years

rotund egret
#

Huh

quiet sierra
#

what the hell did I just decompile

rotund egret
#

Not as bad as when I checked the source of a local pest control website and found porn links scattered in the comments, that was wild

wind patio
#

what is copilot blabbing about

static zealot
half harness
#

OH

#

💀

brazen ether
#

a kid at my school showed me his java project and since he's just learning... he only used 1 class. for his entire program. "Main extends JFrame". I almost cried

#

or JWindow, whatever the main screen thing is called

rotund egret
#

Nice

oblique heath
brazen ether
#

real

rotund egret
#

It's imperative after all

oblique heath
#

my ancestors are smiling, imperial(ative)

#

can yours say the same

brazen ether
#

imperative programmers when they unexpectedly have to scale their code:

#

(weeks of refactoring)

#

(it's joever)

prisma wave
#

so true

old wyvern
#

so true

slender kiln
#

Yo

#

So if I have a Custom entity with a model on it and I want to check if a player right clicks on it and open a inventory

#

Cann I use #UseEntity?

#

And how should I implement it?

foggy pond
#

I was talking to devs on the Minecraft Modding Development discord server, and a couple of them were of the opinion that Paper/Bukkit is deprecated and instead Fabric/Forge server side mods should be used

#

Is that actually feasible? If so, how come people don't do that?

potent nest
#

lol

#

There are also people saying Java is dying for 20 years

sly sonnet
pastel imp
#

Uhm thoughts on HikariCP? Thinking if it would make sense to use it on my SQL Library... since it is another library so... unsure

crude cloud
#

your library should be able to be used without it, but also with it

pastel imp
crude cloud
#

it should be unaware of where the connections are coming from

#

take a DataSource or a Connection at worst

pastel imp
# crude cloud take a DataSource or a Connection at worst

but that means the user still has to handle that on his own, that would make the builder quite obsolete...
By builder I mean this:

SQLDatabase db = SQLDatabase.mysql()
                .username("root")
                .password("")
                .host("localhost")
                .port(3306)
                .database("database")
                .connect();```
wintry plinth
pastel imp
#

laravel is carrying though

#

But yeah, overall, php is huge

#

like, over 75% of the websites still use it probably

wintry plinth
pastel imp
#

According to stats, the number of php websites is decreasing by 1-3% per year

crude cloud
cerulean ibex
rotund egret
#

Kinda the same thing in this context

pastel imp
cerulean ibex
#

cuz php is old from when ppl had less to choose from

rotund egret
#

"It's not dying, people are just using it less for new projects and old ones"

cerulean ibex
#

i dont think its true, it would also fit the fact theres more new devs/year and wayyy more options

wintry plinth
#

But I’ll hands down agree that PHP is only popular due to frameworks like Laravel and that other one

cerulean ibex
#

isnt it mostly cuz of wordpress

#

arent like half of all websites wordpress

pastel imp
cerulean ibex
rotund egret
#

Uhh

#

What

sly sonnet
#

source trust me bro

cerulean ibex
#

thats an example of what im saying

rotund egret
#

Is your assertion that the original number was poorly drawn?

cerulean ibex
#

well its 2 things

#

1 is percentages can be misleading so -5% could mean 2 things

#

2 is that losing share doesn't mean its dying, it could be growing faster than ever

rotund egret
#

The number of websites is decreasing they said, how does that relate to what you said

pastel imp
#

Top 10 market share of programming languages btw (not really web specific, just general language)

half harness
#

I think a loose connection could be made to like C++
Its getting more outdated, so less are starting to use it, but it's still a very used language with more devs still learning it

wintry plinth
pastel imp
wintry plinth
pastel imp
#

the question is, what color?

wind patio
#

how tf did Fortran go from 20 to 10 in a year

pastel imp
#

no fking clue

cerulean ibex
wind patio
#

not sure

cerulean ibex
#

tiobe index or smth right

wind patio
#

yeh

cerulean ibex
#

this is why i said percentages can be misleading and mean 2 things

rotund egret
#

literally probably, my favorite

kindred hatch
cerulean ibex
rotund egret
#

Woah you're hostile

cerulean ibex
#

do you understand a joke

rotund egret
#

Bad joke I guess

cerulean ibex
#

how tf would you being deaf affect your ability to read 😭

rotund egret
#

Part of why it's a bad joke I guess

ocean quartz
crude cloud
#

as a paper representative, yes

quiet depot
#

are modded servers still a big thing

#

well I mean they weren't ever that big but do they still exist

#

I remember crazycraft servers ages ago that used to get a few hundred players

rotund egret
#

They still get around a bit. I don't think they're like big big per se

Hard to keep a fairly consistent player-base with content updates while fighting against mod/vanilla/plugin bugs and being cornered with version constraints and a higher resource requirement

There's also not like a decent plugin/mod platform up to date at the moment. Only ones that exist are hybrids with their own set of issues.

quiet depot
#

yeah that all figures

wintry plinth
#

i have to say, working on stuff for modded is such a nightmare

quiet depot
#

suppose a lot more is also possible in vanilla now that didn't used to be, modded servers don't serve as much of a purpose as they used to

wintry plinth
#

I struggled building the fabric implementation for Analyse, as not a lot of stuff have docs

#

Or apis as nice as what spigot has

rotund egret
#

Waiting for Sponge to update 😩 It's getting closer

quiet depot
#

what sponge update

#

aren't they working on like 3 different ones concurrently

rotund egret
#

They maintain 2 implementations Vanilla and Forge

#

Vanilla I think keeps up mostly, Forge is and has been behind

quiet depot
#

yeah but last time I messed around with sponge (mind you a couple years ago), they were working on multiple versions of sponge concurrently

#

not talking about the implementations but the actual sponge api

rotund egret
#

Oh like api versions?

quiet depot
#

yeah

rotund egret
#

Uhh I think it's api 8-11 now?

#

I think they're dropping 8 in favor of 10 or 11 now though (support)

quiet depot
#

yeah

#

is/was there a 9?

#

I think last time I was working with sponge, 7 was stable, 8, 9 and 10 were being worked on all at the same time

#

but I could be misremembering

rotund egret
#

Yeah no major number skips

quiet depot
#

idk just sounds like a lot of work to me

#

why not just work on one update at a time

rotund egret
#

FWIW 8-11 are all mostly the same with some world changes I think

#

And it's traditionally been only for api breaks, which have traditionally happened every major minecraft version

cerulean ibex
#

is it not for different mc versions? i see them bump it like every other version

rotund egret
#

It's not technically, they save major version breaks for major versions of MC, but that's not necessarily the intention per se.

#

I think that's gearing to change "officially"

crude cloud
#

i wonder what they constitute a "major" minecraft version

#

given that basically now every version seems to have huge changes underneath

#

not that mojang follows semver anyway

rotund egret
#

Literally major ver

cerulean ibex
crude cloud
#

that's a useless metric then

wind patio
#

minecraft 2.0.0 when

rotund egret
rotund egret
crude cloud
#

i mean 1.20.6 is much different than 1.20.2

quiet depot
#

sparky have you ever used the sponge api

rotund egret
#

They haven't started on 1.20.x yet, so hard to say, but they'll probably just jump to 1.20.6 and call it a day

crude cloud
#

mojang versioning doesn't really mean anything because it does not represent any compatibility or anything

rotund egret
#

Well forge, I think they have a vanilla impl

crude cloud
#

they just represent gameplay changes at this point

rotund egret
#

Which is in Snapshot, so it's subject to change anyway

crude cloud
#

anything else goes to 1.x.y

crude cloud
rotund egret
#

Sponge also ships a lot of nice apis that spigot just lacks.
Sponge had the benefit of hindsight but regardless I still appreciate it.

quiet depot
#

iirc sponge also is missing some things that spigot has?

#

don't ask me what I just remember having issues there

rotund egret
#

You'd know better than I

crude cloud
#

spigot has 10+ year old api that doesn't even work anymore 😌

#

bet you don't have that in sponge

quiet depot
#

no, sponge isn't cursed with the promise of backwards compatibility

ocean quartz
#

Spigot is too held back by the fear of breaking things

rotund egret
#

I do recall contextual data not being a thing, which might be a hold back?
Like seeing your own name on a hologram instead of someone elses (but they see theirs)

#

But you could always impl that yourself with packets or something too

crude cloud
quiet depot
#

definitely wasn't that, I honestly couldn't say what it was I just remember running into some issues

crude cloud
#

VERY slowly

#

but, Commodore.java isn't gonna go anywhere Pepe_cross

rotund egret
#

Oh you know, there were a fair few events just not implemented now that I think of it.
Some equip events I recall I think

quiet depot
#

I could dive into the papi 3 code and see what I had to implement myself

#

I think it was inventory based

rotund egret
#

Oh I wouldn't be surprised. Inventory has gotten quite the buff since api7 though FWIW

quiet depot
#

yeah that's good

#

idk I don't really code anymore though

rotund egret
#

That's a shame. No time or no passion?

quiet depot
#

no passion

#

still good at it though, helped some people with their uni assignments recently

#

pretty simple first year python stuff though

rotund egret
#

Have you taken a crack at Rust yet?

quiet depot
#

fuck no

#

I think I looked at it like once

#

did sxtanna ever have a rust phase, I feel like they probably introduced me to it

#

idk if you ever had the... pleasure... of talking to them

rotund egret
#

I am not a fan

quiet depot
#

of rust?

rotund egret
#

Sx 😛

#

I rather like Rust

quiet depot
#

aha

#

what do you use it for

rotund egret
#

Recently started learning it, but I made a CLI app and then I was most recently working on my own toy-lang thing

quiet depot
#

fun stuff

#

I think I'd probably struggle with rust, idk any langs like it

rotund egret
#

It's unique in a certain way, but it borrows a lot of concepts from different places.
You might enjoy it, it's really not hard once you get the hang of it

quiet depot
#

might enjoy it... if I still enjoyed coding

rotund egret
#

That's fair 😛

quiet depot
#

which I mean I don't hate it, just no desire to do it

#

yeah, that list

#

I haven't used any of those langs except for c#, which I've used like twice

rotund egret
#

I learned a little C++ a long time ago, and touched Haskell once I think.

ocean quartz
quiet depot
#

damn idk who used to be a big rust nerd then

#

think there was definitely someone in here

rotund egret
#

I remember Kotlin being huge for a bit, then Ocaml was a meme, and then BM got into Haskell

#

err not ocaml

#

closure

quiet depot
#

clojure

#

what's that quote they used to say

#

something about functors being a functor or something

rotund egret
#

AHAHA

quiet depot
#

monad

rotund egret
#

monoid over the category of endofunctors

quiet depot
#

yep

#

that

rotund egret
#

"a monad is a monoid over the category of endofunctors"

quiet depot
#

whatever the fuck that means

rotund egret
#

there

#

BM could explain it I'm sure

quiet depot
#

that's ok

#

I don't need the explanation

ocean quartz
#

Ah yes, the nerd language

quiet depot
#

but yeah that was an interesting era for sure

rotund egret
#

Remember the Help chat kotlin project?

quiet depot
#

erm

rotund egret
#

Community effort

quiet depot
#

oh god

#

yes I do remember this now

#

wasn't this deployed on clip's smp

#

or was that unrelated

ocean quartz
#

He's still in the Go phase it seems

rotund egret
#

Oh I don't know, maybe?

quiet depot
#

maybe he's lost the passion too

#

shame cuz he was a wickedly good programmer

#

just too much sass

ocean quartz
#

Could also have gotten a job, mine has been pretty dead for a while too

#

But yeah, he was very held back by his personality :')

quiet depot
#

yeah could be that

#

what are you doing atm?

#

work wise

rotund egret
#

Surely you've seen Matt's work in showcase?

#

It's amazing stuff

quiet depot
#

I don't look at showcase that much, do you still work for that server?

#

lemme have a look in there

ocean quartz
#

Still working at Noxcrew on MCCI, moved mostly to work on systems, backend and other stuff

quiet depot
#

like worldpainter but with a much better preview

ocean quartz
#

More like worldmachine, you'd probably still need to use world painter after

quiet depot
ocean quartz
#

Honestly yeah me too, gameplay can be fun but it's a lot harder to test and it breaks very easily

quiet depot
#

yeah that and I just found it very repetetive coding sometimes

#

and very fidgety, messing with numbers over and over till you find what works

#

just wasn't fun

rotund egret
#

Very real

quiet depot
#

I see all these people want to get into coding to make games and I always tell them that's the least fun way to code

#

idk, maybe it's different to what we do in minecraft vs using a game engine

#

I never ventured beyond making little 2d games in bluej or something

ocean quartz
#

I think it all depends on what exactly you're doing, when working on new mechanics or new things in general I tend to really like, but when it comes to repetition and tweaking it's horrible
For example I wanna work on a "spell" system in minecraft for fun at some point which I'll probably enjoy, but the moment I have to make it better and fix bugs I'll lose interest :')

quiet depot
#

yeahh

#

I remember when we did that coding competition and I tried to make a galacticraft plugin

#

had a little rocket you could launch to the moon on

rotund egret
#

I remember that

quiet depot
#

was great seeing the result of it, was pain with the numbers

ocean quartz
quiet depot
#

that's gonna take like a year to load cuz of my shitty vps but damn I thought it was so cool back then

ocean quartz
#

Oh yeah that was really cool

prisma wave
prisma wave
quiet depot
#

no

#

it's ok

#

restrain yourself

#

behave

prisma wave
#

no it's okay it's not bother

#

seriously

#

you dont need to be polite

quiet depot
#

no I assure you

#

please

#

ok go ahead

#

i suppose I could use a refresher

prisma wave
#

we still talk occasionally

quiet depot
#

even though I never understood it and probably won't even after you paste it

prisma wave
#

okay ngl i kinda cant be bothered haha

#

i was mostly joking

rotund egret
#

Shame I was looking forward to it

quiet depot
#

not even a little dopamine rush from explaining it?

prisma wave
#

really? 🥺

#

awww well

#

if you insist...

quiet depot
#

we do

#

but I must warn you

#

whatever knowledge you're about to impart will most likely fall through the holes in my sieve of a brain

prisma wave
#

ok i'll oversimplify it

#

so a monoid is any type that can be "combined" in some way

#

eg lists and strings via concatenation

#

numbers via addition OR multiplication

#

etc

#

it also has to have an "identity element" which doesnt change anything when combined

#

that being the empty list/string, or 0 for addition or 1 for multiplication

#

an endofunctor is a bit trickier to simplify but the best way of describing it is any type you can "map" over

#

think Streams, Optionals, etc

#

they all have this #map function

#

meaning they are (endo)functors

quiet depot
#

ok

#

following so far

#

oh

#

that's pretty much it right

prisma wave
prisma wave
#

the simplest way of describing a monad is that it's any type that can "merge/flatten" a nested stucture

#

for example with lists we can write a function List<A> merge(List<List<A>>)

#

ditto with Optionals and so on

quiet depot
#

when you say that I think of like a Table from guava

prisma wave
#

that could probably form a monad too but it's not quite the same

prisma wave
#

[[1, 2], [3, 4]] -> [1, 2, 3, 4]

#

now if you squint we can say that merge (formally known as join) is pretty much the combining operator that a monoid has

#

it's a bit different because rather than 2 arguments it's 1 nested argument

#

but it's more or less the same

quiet depot
#

I think I get it

#

I don't really see how it'd be useful especially that specfici example

prisma wave
#

well because it's mostly a joke definition

#

it's not actually really useful at all

quiet depot
#

oh lol

prisma wave
#

monads as a design pattern on the other hand are super useful

#

a more practical definition is anything you can flatMap is a monad

#

so again, Optionals, Streams, CompletableFutures (though it's not called flatMap)

#

and that's like... pretty much it

ocean quartz
#

The problem with functional programming is the programmers, yall make everything so unnecessarily convoluted that makes people not be interested in it kek

prisma wave
half harness
#

:((

quiet depot
#

well

prisma wave
quiet depot
#

I think I'm now 1% smarter

prisma wave
#

yay

prisma wave
prisma wave
rotund egret
#

But the SingletonFactoryFactoryBuilderFactorySingleton is so good

ocean quartz
#

So true

prisma wave
#

Functor -> Mappable
Monoid -> Combinable
Monad -> Computation or Effect or Bindable or Joinable or Branchable or something (monads are kinda too abstract for there to be a single useful term)

crude cloud
#

@prisma wave what the FUCK is a magma

prisma wave
#

ummm

#

i actually dont know that one

#

oh okay it's just like a very abstract term for any set with an associated binary operation

#

in other words a type T and some function T f(T, T)

#

no other requirements, the function could be anything

potent nest
#

wow a group is just a special case of a magma

crude cloud
#

why the FUCK is it called magma

#

actually i think i know that one

#

they just wanted it to sound cool or something

#

unironically

prisma wave
#

real as fuck

prisma wave
#

but yes

#

magma is like the most primitive abstraction i think?

#

while still being useful

#

you cant get more abstract than "a set and any function"

stoic remnant
slate elk
#

A

half harness
#

B

#

Headings have been out for like months now
Someone posted like subtexts that are apparently coming soon

#

But idk

brazen ether
#

call me a 10x programmer the way i delete prod db and it requires 10 people to fix it

terse elbow
#

hehhehehehehe

#

hehehehehehehehehe

fleet bay
#

Someone that has experience with React-Native and wants to build a simple app?

agile galleon
fleet bay
#

Ah thank u

agile galleon
#

Also don't cross post

fleet bay
#

Sorry

#

I deleted the message

agile galleon
#

All good

pastel imp
#

random question but where does it make sense to use preparedstatements "variables"?

#

I assume no one will be using it for select, etc.

#

it's just in conditions right?

#

or in this case, expanding conditions?

distant sun
#

I always use PreparedStatement

pastel imp
distant sun
#

that's because I usually have some parameters for the query, I guess you can use anything else for static queries (e.g. select * from table)

cinder flare
agile galleon
#

Even if the value can't be entered by the user I wouldn't risk it either way

cinder flare
#

Yeah any time you have more than a hardcoded string, it needs to be a prepared statement

ocean quartz
lunar viper
#

help placeholders api placeholders dont work
in chat
but if do "/papi parse me %betterteams_name%" it shows the placeholders but in chat dont do it
help

pastel imp
#

now time to see how I implement it

rotund egret
#

My son drop tables is happy to hear this

solar wren
#

How to make it if the player clicks the item in the gui it will open a link in deluxemenus

wintry plinth
rotund egret
#

Yes

#

Couldn't tell you why. Most times it's because they're notorious pingers

wind patio
#

lol why block me too

#

😔🫰

rotund egret
#

I mean, I could tell you

wind patio
#

unlucky

rotund egret
#

Not particularly personal, I think afonso and yappers are too

#

Sometimes I unblock people after awhile, it depends

wind patio
#

well, reminds me the elijah guy

#

who constantly leaves and re-joins the server for some odd reason

rotund egret
#

I'm not sure how that's related, but sure

wind patio
#

idk just a weird quirk

solar wren
# dry harbor Send a message of the URL

that will only send it in their chat and they have to click the linkl. I'd like when they click the item in the deluxemenu gui, it opens the minecraft url options (Are you sure you want to open.... Yes|Copy to clipboard|No)

pastel imp
#

I can probably guess why

rotund egret
#

You're a pinger

pastel imp
#

if I ping you, then it is intended ping

rotund egret
#

Guess it was too much then idk

pastel imp
#

¯_(ツ)_/¯

#

idc

wintry plinth
distant sun
#

Jesse is not wrong though

agile galleon
#

yes he is

distant sun
#

🤫

rotund egret
#

List<List<*>> moment

wind patio
rotund egret
#

Didn't realize I was so popular

safe crescent
#

you aint him

rotund egret
#

I wasn't talking to you, I don't know who you are

safe crescent
#

btw for experienced developers

whats worth learning, java or kotlin

rotund egret
#

Depends what you want to do, I prefer Kotlin, but Java isn't bad

safe crescent
safe crescent
#

i know some java

rotund egret
safe crescent
#

but ive heard kotlin is meare identical

rotund egret
#

Woopie

safe crescent
#

nice try buddy

#

anyways for people who do plugin development on versions like 1.18 1.19 and 1.20 would kotlin be a good use of time to learn?

ocean quartz
#

Kotlin my beloved

rotund egret
#

Minecraft dev is going to be a little more Java oriented, but you can use Kotlin. It's great

safe crescent
#

ight

#

can kotlin communicate with apis written in java?

i.e say i write code in kotlin, would i be able to use the dynmap api, or towny api

#

or would they need one that is also written in kotlin

ocean quartz
#

Yes, it's fully interopable

safe crescent
#

oh ok

#

ty

rotund egret
#

Java (in some situations) can even use Kotlin API :^)

safe crescent
#

i have some experience in java making android apps

#

but ive started to get into plugin development

#

for mc

dry harbor
tepid hull
#

your the owner of the server?

oblique heath
#

bro replied to a 4 year old message

wind patio
#

breuh

green stag
#

0000

distant sun
#

A lot can change in 4y

oblique heath
#

yeah im the owner now

#

get it right

solar wren
#

could somebody please direct me to the website that hosts headbase search? I'm specifically looking for the section where I can find Minecraft heads and copy their commands for the material section in DeluxeMenu.

green stag
rotund egret
#

Remind me in 4 years when it's true

inner umbra
#

I have a few different "type" classes that implement an interface. What would I use to not copy the same variables in every "type" class?

oblique heath
#

make the interface an abstract class? idk

cerulean ibex
#

when you try to create an abstraction declaring some fields youre doing too much

rotund egret
#

Are you?

#

It's like 1 keyword and 2 less characters isn't it

half harness
#

wait can't interfaces have variables

#

oh ig you can't override the variables

#

kotlin >

inner umbra
inner umbra
half harness
#

but if you truly want variables, then you need a class afaik

inner umbra
#

Yeah. Was trying not to go that route though.

#

Might just go back to class instead of interface then.

bronze olive
brazen ether
#

OOP 🥴

#

@safe crescent you should play around with custom fonts and make a more stylized tooltip

#

would make it a lot nicer than reading a paragraph for all the info

#

looks great so far tho!

sweet cipher
brazen ether
#

a developer's ultimate dilemma is deciding whether to spend 3 hours-months figuring out a good architecture or saying "fuck it, imperative programming!"

potent nest
#

Not really

brazen ether
#

i'm exaggerating, but architecture can be hard to get right

#

big companies do major rewrites all the time because things change

potent nest
#

Rewrites are rare

#

Far too costly with only little benefit

#

That’s why we still have COBOL systems all around the world

#

Although they slowly get replaced by Java applications

brazen ether
#

true, but architecture is still something any decent programmer spends some time thinking about

potent nest
#

Yes, because that helps avoiding the need for rewrites

raw cove
#

Hi, all.
I am looking for a working partner(EU/UK/US). If you are interested in collaborating with me, please DM me.

agile galleon
wind patio
#

does this seem fine?

#

we appear to have a memory leak, trying to find out what's causing it

potent nest
#

that seems to just be a circular reference somewhere

wind patio
potent nest
#

18k chunks sounds okay-ish depending on the server size

wind patio
#

well it's definitely not 18k chunks loaded

#

that's 18k object instances fsr

#

something is definitely up with chunks lol

distant sun
agile galleon
#

because it's old and thus tested

potent nest
#

because it's a reliable and widespread platform

distant sun
#

Fair

drowsy kernel
# distant sun Fair

Who knows a plugin to completely disabled chat.
Like nobody can see it (Everything) even joining and leaving.

#

(Sorry did not mean to ping you)

crude cloud
#

yes you did

sly sonnet
#

weird bug? more like a feature

long dagger
#

it isnt really code tho

sly sonnet
#

which plugin

long dagger
#

its just a resource pack thing

#

I will move it

inner umbra
#

Does BufferedReader close everything or do I have to run it on all above classes?

potent nest
#

what does "run it [...] on classes" mean? Run what?

inner umbra
#

InputStreamReader & InputStream in this case

potent nest
#

you mean if it calls the close methods on what you've passed at construction time when calling close?

inner umbra
#

Yes

potent nest
#

the javadoc tells you what it does

long dagger
#

Guys, a tornado just hit in my town, literally half a mile from me houses were in the air

#

I am fine, but there's debris everywhere

rotund egret
#

US?

#

I'm about 5 hours away

long dagger
#

Yeah

harsh ivy
#

Mr. @chilly zenith , Mr. @eager fern he is defaming my server falsly. Please check on to it sir.
This is enough

chilly zenith
#

First of all

#

We're not doing this here.

#

Make a ticket via @compact perch

#

do /report

harsh ivy
onyx girder
pastel imp
harsh ivy
#

Also, its not what u are saying. 🙂

pastel imp
half harness
storm kelp
#

Bro couldn't even spell mercenary

onyx girder
harsh ivy
onyx girder
harsh ivy
harsh ivy
onyx girder
onyx loom
#

this conversation does not need to continue

#

drop it

harsh ivy
onyx girder
harsh ivy
#

W Staff

rotund egret
#

Dev general

brazen ether
rotund egret
#

Surely Javascript has reached Venus

remote scarab
#

Any person, especially those that has worked for you has the right to share their thoughts in regards to the environment you've provided.

#

Oh, my apologies.
Didn't notice staff said to drop it

harsh ivy
harsh ivy
harsh ivy
#

Also, this isnt a review channel. Review when you can and where you are allowed to.

remote scarab
# harsh ivy "if its true", Make a reporting ticket rn. Lemme prove how is it true.

It's not a reportable offense, bad quality of employer doesn't mean you're a scammer or any devious person.

It simply means that it isn't nice working with you due to the reasons I've specified.

Also I was not dismissed, I told you that I am not interested in continuing the project with you due to the reasons I've specified

Furthermore I did join the staff server, I have a screenshot of that.

Moreover, I'm providing my experience so my fellow developers would know what they're going to experience.

And lastly, I shouldn't even be replying as it's been said to drop it, so once more I apologize to everyone who has to go through this, but it's essential for this message to be sent.

distant sun
#

Move this to DMs @remote scarab @harsh ivy

harsh ivy
#

Stay Mad bruh.
Give your review to ur fellow devs in dms. Not here. this aint a review server. 👍

harsh ivy
rotund egret
#

Personally I think

rotund egret
#

Amazing, so brave

crude cloud
#

bro

rotund egret
#

Deleted messages 💀

pastel imp
#

I swear I am laughing a ton reading the messages from this cool guy

pastel imp
oblique heath
#

wtf drama in dev general

rotund egret
#

drama-general

quiet depot
#

it's from a game I used to play in like primary school lol

#

planet racer, cool little web game

#

at least I think that's what it's from, I could be completely wrong, but still unlocked a memory so bonus points for that

rotund egret
#

Piggy!

quiet depot
#

greet

rotund egret
#

What an excellent and subversive way to greet people, I love it

quiet depot
#

I think it's the perfect greeting

#

very concise

#

unfortunately I have to do a greetn't now, because i'm going to bed. just wanted to say cool picture.

#

uh... ungreet for our newspeak speakers

rotund egret
#

Ah well, cya!
Or.. ungreet

brazen ether
harsh ivy
#

Oh yes, im begging for you to join. 🤡

crude cloud
#

zzz

pastel imp
slate elk
#

weird off topic question but how its called when something push something that cause some else to move like in chain?

brazen ether
#

domino effect?

#

chain reaction?

slate elk
#

its more like how rolex works

#

the mechanism

#

but the thing that happens

slate elk
#

i guess its just called mechanisms.

prisma wave
#

Gears?

#

Oh

#

Clockwork

half harness
#

Idk

crude cloud
slate elk
#

thanks everyone, its basically mechanism , i gived rolex as exmaple since it has gear clockwork mechanism

#

my english is dog shit or actually i'm just uneducated...

ocean quartz
#

#showcase message when you can't control the player camera so you instead you rotate the world around the player :)

crude cloud
#

jesus

versed vale
#

@everyone how to fix mod error in Vs studio?

crude cloud
#

i dont know

ocean quartz
#

Maybe everyone might know

wind patio
#

@everyone answer pls

pastel imp
brazen ether
#

it's a shader

#

so it is client side

pastel imp
#

shaders are powerful tf

#

gotta learn how to use them ngl

ocean quartz
#

It is really cool yeah

pastel imp
#

wonder where I can learn more about shaders though

brazen ether
#

shader labs discord

#

YouTube tutorials

#

linear algebra and glsl

crude cloud
#

it seems to be vanilla mc and block displays tho?

pastel imp
#

pog, love algebra (I do not)

brazen ether
#

well it is vanilla mc

crude cloud
#

well, technically resource packs are vanilla :^)

brazen ether
#

but not block displays

pastel imp
#

wait not block displays?

#

its all shaders?

brazen ether
#

what are u referring to?

pastel imp
#

he is probably referring to the whole camera rotation

brazen ether
#

that's just shaders

#

the minimap is Shader + maps

steady stump
#

camera rotation is hacky

crude cloud
#

it's literally dispatching display transformations lmao

steady stump
#

i implemented fully custom world renderer in post shaders

crude cloud
#

interesting

brazen ether
crude cloud
#

yes?

#

that's how you move things in space

brazen ether
#

yes?

crude cloud
#

okaylol

potent nest
distant sun
ocean quartz
#

Well, one is 10€ a month more than the other and offers a free version of its most popular product :')
(not saying subscriptions are good, just pointing it out)

rotund egret
#

Community edition is very nice FWIW

chilly zenith
#

love being ghost pinged!!?!??!!?

rotund egret
#

If I use a repeating task with a period of 0 is that a non-repeating task?

half harness
rotund egret
#

Shame

half harness
rotund egret
#

That is odd

half harness
#

yeah 🤔
🤷

rotund egret
#
onServerLoad {
    BukkitTaskScheduler.scheduleTask {
        Logger.info("Run once")
    }
    BukkitTaskScheduler.scheduleTask(20, 20) {
        Logger.info("Run every second after a second")
    }
}

Works great thanks

drifting aspen
potent nest
#

probably to showcase that it isn't limited to being axis aligned

drifting aspen
#

yeah that was my thought, but considering the "hacky clientside mirrors" title, I suspect it's not intentional

#

I really do wonder how much do these affect performance

rotund egret
#

Minecraft mirror maze is gonna be crazy

#

Also walls you could walk through being mirrors, like paintings almost would make for interesting hidden corridors

drifting aspen
#

it's a shame that these are not compatible with iris/optifine shaders :/

violet relic
#

hi

rotund egret
#

yes

distant sun
charred palm
#

Do u know about it?

#

@distant sun

distant sun
#

No.

inner umbra
#

Damn... Really thought multi variable initialization would be fixed in later java versions.
Java 21 ```java
double health, health_max = -1;
````health == 0andhealth_max == -1`

rotund egret
#

Not sure I'm a fan

potent nest
slate elk
#

or somethinig?

wind patio
brazen ether
#

nuh uh

pastel imp
#

dont think that is even coming anytime soon

#

inline variables are already sketchy in regards to readability, initializing those like that would be even worse

twilit jay
#

Hey guys,
I just want to have your attention for a second. @final hinge as a client is a scammer. He never paid for our plugin and wants to sue us for taking his code (completely rewritten and got permission).
Do not interact with him if you don't want your brain get drained.

#

Please ban him from this server.

final hinge
#

Actually would like to contest that.
I never received any plugin from you guys. The plugin I requested does not at all correlate to what you showed in the video.

You stole my source code and tried distributing it if I didn't pay you for a job you didn't accomplish. Furthermore do /report in bot commands if you have a problem with me

#

And yes, we are suing you. Thanks for adding cyber libel to the claims now.

#

So you were making me pay for a faulty plugin, and if I didn't you'd end up distributing my work. Thank you for that.

pallid gale
#

Take it to DMs or wait for the report to be handled

final hinge
#

@pallid gale may I request their message to be deleted as it's damaging without any substance.

#

It'll be a pleasure seeing you in court though @sharp mountain Just wondering if it'll be monetary compensation or seeing you in jail 🙂

pallid gale
twilit sparrow
#

omfg

#

not here too

#

every server i look at

#

i see these dudes

obtuse gale
#

Oh, right

inner umbra
#

Open to suggestions it does have to be inline.

potent nest
#

you can still do a = b = c = d = 1

#

but also if you have many variables with the same value, something is wrong already

inner umbra
#

Yeah but to many = signs lol.
You're saying you don't have 5 or more variables with the same value?

prisma wave
#

something is wrong with ur design if you do

potent nest
inner umbra
#

Even uninitialized? You don't have a class with multiple variables of the same type?

potent nest
#

If they are uninitialized, I never initialized them, so I never needed to write a =

#

but even then having 5+ sounds like a nightmare

inner umbra
#

The data base classes in fastasyncworldedit have multiple string variables.

Not having to write private final String for each variable is a lot cleaner.

potent nest
#

how is it cleaner

#

less code does not mean cleaner

inner umbra
#

More code isn't

potent nest
#

Isn’t what? Cleaner? Not automatically, but if it’s more explicit, it’s often easier to read and understand

inner umbra
#
private int x,y,z;```Vs
```java
private int x;
private int y;
private int z;
```I prefer inline. At this point it's preference.
pastel imp
half harness
pastel imp
#

you can't.

#

mc plugins are automatically under a license

#

aka GNU

half harness
#

ok
i have no legal knowledge and idk the details of the situation so 🤷

#

but either way

#

it wouldn't be a good use of resources

#

🙃

pastel imp
#

GNU allows modifications and sharing

#

and says software should be free

#

so, selling mc plugins in theory are against that license.

half harness
#

oh that

#

free not as in price tho

pastel imp
#

so, this guy is trying to intimidate the other one

#

while he can't do a single fuck

ocean quartz
#

Why do you have to bring back the drama by pinging them? Cube explicitly told to drop it
I know you are not directly involved in it, but pinging them will just make it continue, it's the CoolAllRounder person situation all over again

pastel imp
ocean quartz
pastel imp
#

tf

#

it should automatically be off

#

for any replies

#

oh welp

crude cloud
pastel imp
#

how so

crude cloud
#

free as in free speech, not free beer

half harness
#

ya thats what I meant
forgot exactly so I just stopped

pastel imp
#

the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.

crude cloud
#

again, free as in free speech, not free beer

#

GNU GPL does not say anything about being unable to sell the licensed software

pastel imp
#

wdym with free speech in this context though

#

?

ocean quartz
#

TLDR of the license

half harness
ocean quartz
pastel imp
#

mhm thanks for clearing that up

#

although, even in this case, unsure if they could sue them for a software under the gnu license

#

that is not even his

half harness
potent nest
#

Plugins aren’t automatically under the GPLv3

crude cloud
#

it isn't piracy if it's GPL?

pastel imp
#

Plotsquared is a perfect example

half harness
pastel imp
potent nest
pastel imp
#

so, bukkit can sue, but not a random person

crude cloud
#

the copyright owner is the one who would pursue legal action

#

yes

pastel imp
#

so this applies to this case, the guy saying he will sue, is basically bullshitting

#

lol

inner umbra