#dev-general

1 messages · Page 61 of 1

brazen ether
#

hilarious readme

hushed prairie
#

Some say "this README reads like they belong in a hospital."
And you're goddamn right.

#

nice

tribal plinth
#

aight this caught me off guard

agile galleon
#

That was entertaining lmao, thank you for sharing

pastel imp
#

what algo did they use lol

#

someone should implement this in paper

#

lol

ocean quartz
prisma wave
#

i think he means in the server impl?

potent nest
#

technical players wouldn't survive that

prisma wave
#

we should use lean to prove their equivalence

#

or disprove it

potent nest
#

wow you just came up with topics for 3 PhDs

prisma wave
#

yay!

agile galleon
#

"Paper'd" what the fuck did I do here is that correct English?

potent nest
#

everything is correct English

agile galleon
#

ghoti (pronounced fish)

pastel imp
#

probs any thesis

potent nest
#

yeah just far more then

unkempt cloak
#

is USpigot actually what it says it is?

#

I heard many mixed things about it and idk

nocturne apex
#

am using it ccshrug

dapper pawn
#

@visual bluff dms

brazen ether
agile galleon
# unkempt cloak is USpigot actually what it says it is?

On the one hand it's quite shady as it's entirely closed source (even though as per the GPL license it would have to be open) and suspected to be straight up stealing patches from other forks. Additionally if you need custom patches on new versions or something isn't exactly working then support can be slow and you can't just hire somebody to do it as they don't have the source to make the necessary changes. On the other hand I have heard very good things about the performance increase servers with many players are experiencing. Thus, imho it's a double edged sword.

cold prawn
#

i would try looking in the network tab, and finding the way they get the data, and unless they use SSR or sum, they probably just fetch the list with a page param, so you can just make a for loop and scrape them on ur browser, doubt they rate limit it much for a logged in user

abstract osprey
potent nest
#

yeah why would someone who benefits from the community that they actively hurt do something unethical

nocturne apex
#

I mean I do get both sides

#

but its tru Machine could have communicated it better w them

#

the worst part is that as it is close sourced, it contains private patches from servers even Hoplite patches and people can just steal it. Ive already seen dumped classes of the fork

#

and all Hoplite stuff was there

#

they should have made it open sourced at this point

pastel imp
#

It's like said, double edged sword

agile galleon
#

I can't give you an exact source sadly so take my words with caution. I just tried summarizing the different things I've heard lately

#

Ah nice that this message went through now... I sent it 4 hours ago lol

pastel imp
#

any ideas which packets TAB sends or are sent in general for scoreboards?

#

is it Scoreboard_objective?

#

listening for SCOREBOARD_OBJECTIVE and DISPLAY_SCOREBOARD, none of them being triggered for some reason

#

guess they using UPDATE_SCORE

hushed prairie
#

idk which version you wanted but here's 1.8

#

you can check the other modules for other versions

pastel imp
hushed prairie
#

smart choice

nocturne apex
#

if you want I can show u

pastel imp
nocturne apex
#

LearnSpigot provides a free web-based pastebin service for storing and sharing code snippets with anyone. Powered by hastebin.

LearnSpigot provides a free web-based pastebin service for storing and sharing code snippets with anyone. Powered by hastebin.

LearnSpigot provides a free web-based pastebin service for storing and sharing code snippets with anyone. Powered by hastebin.

#

here u go

#

it is just a regular scoreboard without the score shown

pastel imp
#

also why you using learnspigot's paste 💀

nocturne apex
#

xD

nocturne apex
cold prawn
#

or do servers still cling onto it

wind patio
hushed prairie
#

well, it is

#

but that doesn't mean people will stop using it

wind patio
#

I'm not sure if it's possible to replicate the 1:1 1.8 PvP mechanics in newer versions

hushed prairie
#

it absolutely is, and has been done

#

it's server sided, no reason for it not to work

brazen ether
hushed prairie
#

but people are people and say that it's not the same

brazen ether
#

hypixel definitely doesn't feel like 1.8 on newer versions, idk about anything else

wind patio
brazen ether
#

id imagine their emulation is just not very good

brazen ether
half harness
hushed prairie
#

damages are applied by the server, not the player

wind patio
half harness
#

there are much more to it than just damage

#

but that being said

#

I think there are several plugins that very closely replicate it

hushed prairie
#

the player just sends the click, server detects it and applies damages based on attributes and items used

brazen ether
hushed prairie
#

what is then?

wind patio
#

knockback, durability, heal ratios, etc

brazen ether
#

okay now I'm much less trusting of your experience 😭

half harness
#

movement, blocking, and I think the OldCombatMechanics had several more stuff that I'm overlooking

brazen ether
#

knockback and movement

hushed prairie
#

and how is that not server sided as well?

brazen ether
#

blocking yeah

half harness
hushed prairie
#

how will the client know how much kb to take without the server telling it?

brazen ether
#

if only the client predicted movement or something

#

I wonder what that would be called

half harness
#

wdym

brazen ether
#

sarcasm

hushed prairie
wind patio
#

there are bunch of other "hidden" mechanics in 1.8 PvP like what happens when player you hit is sprinting at you, jumping, and running away, W tapping, etc., that are not always considered when making a 1.8 combat replica

half harness
# brazen ether sarcasm

wait what does the mc client predict movement? I thought it just its own movement and reported it to the server

brazen ether
#

actually I might be misremembering

#

I know client does some sort of movement prediction

#

but I don't think it actually applies to knockback

half harness
#

oh idk I haven't really looked deep into it
I heard that in like the new version it also report the controls to the server or smth

hushed prairie
brazen ether
half harness
brazen ether
#

for example if you click ~20-40 cps on an entity while getting attacked, you take no knock back

wind patio
brazen ether
#

this is not a thing in new versions

half harness
#

oh also this isn't directly pvp related (but it comes up in speedbridging) but didn't they change shifting as well on newer versions

#

the animation

hushed prairie
#

they did yes

#

there's a smooth animation instead of being instant

brazen ether
half harness
brazen ether
#

notice this guy literally not taking knockback at the start

#

while literally flying in the air

#

its bullshit like this that makes 1.8 hard to replicate

hushed prairie
brazen ether
#

the change in animation also contributes to it feeling differently

#

and even if everything was perfectly replicated, people who don't believe that will have placebo

wind patio
# brazen ether actually I might be misremembering

I believe its somewhat both, client can be authoritative if it doesn't exceed abnormal movement thresholds, so minecraft is using client authoritive + server authorative + server authorative with rewind

brazen ether
#

I don't play the game but ngl I wish we still got a combat update

#

like

hushed prairie
#

they were working on one

brazen ether
#

look at at hytale combat

brazen ether
#

and it got cancelled

wind patio
#

I believe the server auth rewind happens when you get a messages like "... moved wrongly" or whatever

hushed prairie
#

we had experimental snapshots around 1.14

#

yeah

brazen ether
hushed prairie
#

I'm still so sad it hasn't been looked into again

hushed prairie
#

but yeah

wind patio
hushed prairie
#

that too

brazen ether
#

I'm acting as if it's gonna happen anyway

cold prawn
cold prawn
#

ive played mods that basically do hytale combat

#

and it just makes it less fun as its "easier"

pastel imp
#

did I just get back here to witness a war?

brazen ether
#

i don't think that's a feature of the combat

#

just problems elsewhere

quiet depot
#

@oblique heath have you self hosted supabase before

oblique heath
quiet depot
#

damn

#

I think I got it 99% working now anyway

oblique heath
#

i have heard that selfhosting supabase is much more painful

quiet depot
#

it is very painful

#

like was trying to get it working with npm

#

just wasn't happening

#

then I got it working with npm

#

but there was no auth

#

so I was tryna get auth working

#

just wasn't happening

#

gave up on that and just shoved it all into a cloudflare tunnel

oblique heath
#

lmao

quiet depot
#

now I need to get cloudflare access auth working

#

it's not sending me an otp email even tho my email is on the allowed list

oblique heath
#

pocketbase also has ways to send emails but i have never made use of them so far

#

are you using an external email service or selfhosting everything

quiet depot
#

just self hosting supabase now

#

cloudflare isn't sending my email

oblique heath
#

oh i see hmm

quiet depot
#

like with cloudflare tunnels u can have an auth page infront of it

#

and it's showing

#

just doesn't send me an email when I click send code

oblique heath
#

i've heard people talking a lot about cloudflare tunnels but have never really looked into it, i took a quick look at the options available for that now and it's very overwhelming

#

good luck piggy maybe you just missed configuring the email in another one of those dozens of pages

pastel imp
#

This kids, is why you use appwrite

#

Way better UX for self hosting

#

And better overall

oblique heath
#

yeah single binary superiority

agile galleon
#

Isn't Pocketbase almost cross compatible with Supabase APIs?

#

I honestly don't think that self hosting Supabase is a grand idea haha

quiet depot
#

got it working

#

we chillin

oblique heath
#

supabase has a lot of features pocketbase does not afaik

#

though the basic crud stuff is probably similar

cold prawn
#

is it on their free tier too?

agile galleon
#

ye

#

Zero Trust

#

It's a bit annoying since you almost always need to verify with an email sent to your inbox

quaint blaze
quiet depot
#

Yeah they do

#

loads of auth options

lavish notch
cold prawn
#

sounds good

#

i would do mongo as u dont have to mess with schemas

lavish notch
# cold prawn i would do mongo as u dont have to mess with schemas

I honestly never really used Mongo and was going to go MariaDB since I don't plan on doing anything crazy with this data other than an automatic-ish (ish is because I'll be manually adding new purchases) discord verification system and basic management overview web dashboard.

cold prawn
lavish notch
#

I've only just noticed that when I exported, I only got 15,688 out of the total 15,726 reported publicly. I don't suppose if anyone knows if SpigotMC has any sort of hidden purchases system?

I've ran my export twice and two different ways/versions of code which both produced the same output. And it's not like I'm missing a single page which holds 50 as adding 50 to the export brings the total of 15738 and I've more than likely captured the last page as the export count is a number that isn't an interval of 50.

distant sun
#

If you multiply the number of licenses per page by the number of pages what do you get?

#

All licenses should be there ig

lavish notch
#

Gets even more interesting, just noticed SpigotMC is listing more than 1 purchase for the same user.

distant sun
#

Same date wth

#

Probably a refund / error during payment?

lavish notch
#

Who knows but this 'issue' doesn't help answer wth 'Total Downloads' tracks.

#

I original thought it was Total Purchases but now I don't know.

distant sun
#

Technically downloads should not be tied to purchases

lavish notch
#

I fully agree but SpigotMC is dumb. giggles

#

Total Downloads for free plugins is Total Downloads but for paid, it's total purchases afaik.

#

but this export proves otherwise I hope

distant sun
#

Ig take what you have and check later for missing purchases manually

lavish notch
distant sun
#

Yes

lavish notch
#

Balls - I assume you bought it and weren't given for free?

distant sun
#

Ye

lavish notch
#

DAmn.

distant sun
#

I had a server a few years ago

lavish notch
#

I was thinking maybe I could try adding you, then you download and then I remove you to see if the Total Downloads number is effected.

distant sun
#

Doubtful the value updates instantly

lavish notch
#

Even then, I don't think BRC has revoked many, if any, licenses.

#

I guess I'll just hope and pray my export is successful/complete.

crude cloud
nocturne apex
#

so ig this is the case

#

2015 💀

pastel imp
#

this is why we don't use spigotmc kids

nocturne apex
#

well spigot was not updated since then xDD

lavish notch
lavish notch
distant sun
#

Most likely

brazen ether
agile galleon
#

Tsoding is peak

smoky oasis
smoky oasis
#

how to download paper?

smoky oasis
pastel imp
pastel imp
smoky oasis
pastel imp
#

Spigot hasn't been the best nor relevant since like 1.10 or so

#

For instance, paper and forks of paper, hold over 85% of the market

#

paper alone holds 68% across all versions. If you only look at latest versions, paper is dominating by a land slide with over 95% adoption

#

the only servers bumping up spigot numbers are servers that don't know any better, or old servers like 1.8, etc.

pastel imp
smoky oasis
pastel imp
#

we already had that talk here (or in #minecraft), leaf is just another scam, stealing old and/or rejected and/or experimental patches from paper and other forks.

#

The only difference between leaf and USpigot is the fact that Leaf is free.

#

How misleading and scummy both are, are almost equal

smoky oasis
pastel imp
smoky oasis
pastel imp
#

but there is no one enforcing the license

#

so, nothing rlly happens

#

well.. sometimes it does happen

#

USpigot already got in trouble cause of this (without giving more details)

#

so, there are SOME people enforcing their licenses

#

but still...

crude cloud
#

leaf is less of a scam and more of jus[ Yatopia all over again, it mixes every patch ever with no regard, broken untested code that breaks your server in unrecoverable ways

#

call it "bleeding edge" instead of "broken untested" and you're cool and better now

potent nest
#

I'll call myself bleeding edge now too

brazen ether
#

probably

pastel imp
#

At least not by name

brazen ether
#

no he's just a guy who streams his different programming sessions

#

and really humorous

#

notice most of these vids are lik 1h+

#

he's just a fairly competent guy all around

#

he wrote his own coroutines in C, amongst many many other things

prisma wave
#

he is but i think he ragebaits too hard sometimes

#

on twitter at least

nocturne apex
#

hey chat

#

don't let this channel die

half harness
#

it'll never be as dead as #developer-chat

#

-# only the OGs remember...

nocturne apex
#

what Abt

#

builders chat

half harness
#

😳

#

I forgot those existed as well lol

nocturne apex
#

there was a message like once a year

#

mostly it was my message

nocturne apex
nocturne apex
#

@halcyon leaf u use mixins or how do u handle the IDs of the keys while still being able to merge those items without any issues?

#

just curious, bcs ive been designing an anti dupe system before and have seen quite a bit of people use mixins for this

lavish notch
#

Never have I ever seen a more valid response from a plugin developer. 🤣

desert horizon
#

Well, some people are just weird and may be unable to read

oblique star
#

he goes through a lot of idiots (including me), and provides a neat plugin

brazen ether
#

learning cpp in 2 days 💀

#

Zig had spoiled me

potent nest
#

C++ is impossible to learn

brazen ether
#

cpp feels like a clusterfuck in comparison

#

I need to learn it for physics internship

potent nest
#

You learn some subset of it for project A, and then you re-learn a whole other subset of it for project B

brazen ether
#

specifically rn bcs I wanna do a project and it being in cpp would be the best way to show that I am Okay at cpp

brazen ether
#

im mostly done

#

it's just. a lot of bullshit

#

I need to write relatively fast code with it while not being just C because I want to actually learn it sort of properly

#

so can't bs it

potent nest
#

Just make everything constexpr

brazen ether
#

oh my god

#

I hate that shit

#

all of it

#

templating

#

Zig completely mogs cpp

#

in a way it's sad because all the fucking physics shit is written in like

#

fortran, cpp, python

#

i don't like ANY of those languages

prisma wave
#

Have you heard of RUST

brazen ether
#

I hope I get to use newer languages for this kind of stuff eventually yeah

#

though tbh not Rust 😭

#

Rust is a language for programmers

#

it's too complicated

prisma wave
brazen ether
crude cloud
#

the only language scientists use is python

#

and julia

#

and maybe R

#

and that's pretty much all there is

brazen ether
#

no they learn cpp really badly and do that too

#

it's quite incredible

prisma wave
#

wow

#

theyve gone too far

brazen ether
#

maybe a bit of Fortran also

#

but actually you're right

#

Rust is seeing use in this kind of stuff

#

so maybe

prisma wave
#

kill all rust users

brazen ether
#

😭

crude cloud
#

so true

brazen ether
#

better than cpp tho

prisma wave
#

yeah and world war 1 was better than world war 2

brazen ether
#

i would try to convince future employers to let me use Zig for part of the code but it would just make it unmaintainable to everyone else

potent nest
brazen ether
#

also a funny thing I've noticed is that in academia they call programs "codes"

#

like you say "I'm writing a simulation code"

#

it's kinda interesting

crude cloud
pastel imp
prisma wave
agile galleon
prisma wave
#

matlab more like… fatlab

oblique heath
#

brister "1-indexed" matlab

brazen ether
#

cpp:

constexpr const int* const getXPtr() const { return &m_x; }

zig:

fn getValue(this: *const Testing) *const i32 { return &this.value; }
  1. no constexpr needed because zig can determine comptime-ability by itself
  2. explicit this making it clear that it requires a const pointer to itself (struct is called Testing), so it can't be modified; much more readable than a const
  3. *const i32 is much more clear to me "pointer to const i32" than const int* but this is personal preference
#

zig mogs

potent nest
#

figuring out is one thing, but can you enforce that it is constant at compile time?

brazen ether
#

constexpr doesn't guarantee comptime execution either

#

so in either case it depends on use-site

#

zig is just able to do more at comptime with less hassle

potent nest
brazen ether
#

that's the same thing as comptime

prisma wave
#

elara =

getValue = value

best language

#

Those who know

brazen ether
quiet depot
#

IEvent

#

feels like it's 2014 again

#

I'm gonna go out on a limb and say this entire api is gonna be rewritten before public release

hushed prairie
#

PAPI Hytale?

quiet depot
#

ye

#

might aswell

hushed prairie
#

fair enough

quiet depot
#

the api's are so similar and papi has barely any hooks into actual minecraft

hushed prairie
#

I'm gonna have to finish my plugin faster

quiet depot
#

I reckon the luckperms expansion would work by simply changing the bukkit import to a hytale import

nocturne apex
quiet depot
#

yeah I mean

#

prefixing interfaces with I in java has never really been the go

#

but like it was more common over a decade ago

#

which I reckon there's a good chance is when this code was written lol

#

anyway cube already added hytale support to the ecloud so now I just gotta make papi work

#

and then change it all again when hytale most likely changes their api

#

hopefully they just hire all the talent from paper, sponge etc so we can have the most beautiful api ever created

#

or open source it

nocturne apex
quiet depot
#

it's not necessarily bad

#

do you mean the naming convention or the api

nocturne apex
#

ah ye in API it is quite strange imo

#

ye am not really using it

#

but was just curious whys it not a convention actually

quiet depot
#

I mean I don't really think it's bad per say

#

Like I can't think of any legitimate reasons why prefixing an interface with "I" would cause issues

#

it's just not common practice because people realised it's unnecessary

#

it's a really old practice, that's why I mentioned it

#

perhaps a remnant from the days pre modern IDE's that can tell you if something is an interface

#

and as for the api, I mean it's not really bad, it's just heavily spigot inspired, they've got a lot of play room to make a great api here so hopefully they do that

nocturne apex
#

ye we need to keep in mind that this is a progress of something that they have re-acquired 2mo ago

#

and they have mentioned that they reverted all riot changes

wind patio
#

but yes, its not common to prefix them in Java

#

also dont forget EMyEnum

quiet depot
#

ah yes

#

I think i used to do that

wind patio
#

personally I don't hate it, imo its more helpful to prefix it than not

abstract osprey
prisma wave
#

it just makes autocomplete etc harder

potent nest
#

I use an I when I mean Implementation 😎

crude cloud
#

I agree with BM that it doesn't really matter, or rather it shouldn't

#

I have used Interface suffix on certain types but to more so mean "this is a layer to" or "this connects with"

#

but that's entirely unrelated

prisma wave
#

yes

wind patio
quiet depot
crude cloud
#

does it support &§x&§a&§b&§c&§d&§e&§f ?!?!?!?!?!

wind patio
#

when minimessage support?

#

when component support?

quiet depot
#

papi has component support now

#

sorta

#

it's in a dev build

quiet depot
#

probs never gonna have minimessage support tho

#

seems out of scope?

wind patio
#

yeah I guess im just yapping to yap

desert horizon
wind patio
#

what does that have to do with packets

crude cloud
#

the name

pastel imp
#

Lmao

#

Is that AI generated?

fresh glade
woeful flame
pastel imp
#

Anyone here has a good knowledge on llm models? Looking to find the cheapest yet still reliable model that would fit the following scenario: Gets a link to a mediawiki page, scrapes it and converts it into a specific json format for my use case. From what I researched, instruct models are pretty good for these.

prisma wave
#

surely even a simple self hosted model would be fine for something this simple

pastel imp
pastel imp
#

if I were to self host anything else then I guess yeah, might be worth it but even then

oblique heath
#

you can start at like qwen3:1.7b and work your way up (idk if anyone even offers qwen3:1.7b but if they do it will be dirt cheap)

#

i have actually been considering creating a free faucet for qwen3:1.7b api requests so if you express enough interest i can set that up soon

wind patio
#

there are quite a few public solutions for wiki scrapers

#

or at least that's how I would do it

pastel imp
#

I was also today years old when I found out you can just use ?action=raw at the end of a mediawiki page and it will give you the raw content lol (with mediawiki formatting)

cinder flare
#

MediaWiki truly is a great platform

pastel imp
wind patio
#

knowing Star I'd say without

pastel imp
#

eh ig

cinder flare
#

it is quite impressive that it powers virtually every wiki in the entire world and is completely free and open source!

#

and was written like 20 years ago in PHP lmao

pastel imp
#

yeah tbf that is indeed impressive

wind patio
#

@cinder flare did you see Laravel plugin now being integrated (I guess pre-installed) in phpstorm?

#

iirc it was paid before

cinder flare
#

yeah pretty nice tbh, honestly surprised it wasn't before, that was kind of an annoying barrier to entry

#

you did get it free with the student thing, but you had to do it separately, so it's nice that it's just included no extra steps now

wind patio
#

yeah I didnt have it before

#

its so nice now

#

didnt know it resolves inertia (frontend components?) stuff too

cinder flare
#

yeah it's kinda fucked up that Eloquent has like no intellisense without it lol, definitely one of my biggest gripes

radiant schooner
#

Hey I'm a bit confused where to properly asked to get access to a ecloud extension that's currently under Legacy. Could anyone tell me if this is the right spot or where I have to go?

pallid gale
fresh glade
pastel imp
brazen ether
#

you know you CAN have a nuanced opinion on AI right 😭

#

they're good enough at understanding things to be a great tool for learning difficult concepts via having it provide resources and answer questions that are hard to find answers for

halcyon forge
#

gotta love em

halcyon forge
halcyon forge
woeful flame
nocturne apex
#

however he does not even have NMS imported so

halcyon forge
#

yeah lol

nocturne apex
#

xDDD

crude cloud
#

why

plain eagle
brazen ether
#

writing proper async safe code feels nice

#

I think every serious developer should implement some basic concurrency safe structures by themselves just to get a better feel for what they're actually working with

potent nest
#

Nah it‘s more fun if you know there is a concurrency bug

brazen ether
#

still new to cpp but implemented parallelization for my simulation and it was nice to understand all of it, manually working with mutexes and condition variables

potent nest
#

Fun fact: the complexity of the C++ memory model is partly because of Java

brazen ether
#

I haven't learned much about cpp memory model

#

everything I've dealt with so far had been really obvious

#

i also ended up not applying to the HPC internship I was looking at so I doubt I'll ever actually need to be crazy good at that kind of stuff

#

hopefully will get into their laser program tho...

potent nest
#

How would you write concurrency safe code without learning about the memory model

brazen ether
#

I mean just knowing how mutexes work and memory visibility in general is doing me fine

#

im not doing anything crazy complicated in cpp

crude cloud
crude cloud
brazen ether
#

I meant that I personally don't need to know the nuance of every little detail, probably

#

sorry should have been more clear

quiet depot
potent nest
#

I do this all the time

#

Well whenever I can’t be bothered to otherwise refactor my code to avoid labels

crude cloud
#

true and same also we have named blocks already they are called methods

oblique heath
hushed prairie
#

I didn't even know this was a thing in Java 🥲

potent nest
#

How did you break from your ifs then before??

crude cloud
#

oh i just reenter the event loop from that point so it never returns

hushed prairie
forest pecan
#

Named blocks are cursed

#

Only scenario I can think of is C code error handling when cleaning up stuff but like even then bruh

nocturne apex
forest pecan
nocturne apex
#

but it is useful for iterations

#

i haven't been using it in java, but i do sometimes use it in Kt

forest pecan
#

Yeah but in my like 7-8 years of Java I’ve never had to use it once

#

You shouldn’t really use it tbh

nocturne apex
#

I've used it like twice so xD

prisma wave
#

they are evil and awful

#

we have nice things now like "functions"

forest pecan
#

It’s a slur

crude cloud
#

I'll show you a slur if you show me yours

forest pecan
#

Another day, another paper-dev question that pisses me off

#

🙂

potent nest
#

If you don’t use labels, is your code even optimized???

nocturne apex
#

huh

halcyon forge
#

if you don't use a keyboard, are you even coding???

brazen ether
#

agent + voice AI now and some people might say you don't even need a keyboard

potent nest
#

In which case you aren’t coding

plain eagle
#

s3 download bucket down?

wind patio
plain eagle
#

Wrong server

lavish notch
#

Does anyone know how to best emulate SpigotMC's Purchase Resource transactions in Paypal Sandbox? For the life of me, I can't seem to get Webhook events to fire off of purchases, or even basic transactions, and I'm unsure what I'm doing wrong.

Like the account linked to the webhook notifications has received emails for payments completed but no webhook events got fired.

#

For reference, the webhook testing tool shows that my webhook listener works fine so I'm assuming it's something on Paypal's end that either I'm doing wrong or isn't working.

wind patio
#

Step 1 - don't use PayPal

#

most dogshit seller unfriendly payment provider

nocturne apex
pastel imp
#

Step 2 - Don't use spigot

#

Most dogshit unfriendly platform provider

wind patio
#

I thought he was trying to emulate it, so he isnt using Spigot?

lavish notch
#

A small part of me thinks Webhooks aren't triggered for IPN transactions but even then, that doesn't explain why in-app transfers aren't sending webhooks.

half harness
#

out of curiosity, how does Hytale handle text colors in its API? (ex minecraft with legacy/components)

#

if anyone here has worked with it yet

#

since there doesn't appear to be any api documentation yet

quaint blaze
half harness
#

lol TinyMessage
sounds awfully close to MiniMessage 🥲

quaint blaze
#

yeah lol. a library someone made inspired from that

pastel imp
#

wonder why they didn't go with minimessage

half harness
#

it wouldn't really be viable to have the same library across two different games

halcyon forge
quiet depot
eager fern
lavish notch
# eager fern Lmk if you figure it out we need it here also lmao

Not my proudest moment but as a last resort, I quickly ChatGPT'ed a query and it came back saying Webhooks aren't fired for legacy (cant remember the proper name) transactions that utilise the IPN.

I also found a thread on Spigot where people were requesting a IPN forwarding feature from SpigotMC since Paypal only allows 1 IPN url. You can set the IPN url on your Paypal account however if one is set in the transaction call, like Spigot has, only the one in the transaction call is given the notification.

I believe this leaves me with the only option of polling Paypal API for recent transactions.

#

Still doesn't explain why my standard/modern transaction test weren't firing webhook events though. hmm

lavish notch
eager fern
lavish notch
#

Paypal Transaction has the user ID.

#

SpigotMC Forums has an API to get username from ID.

eager fern
#

cuz when they aint online yk its weird

lavish notch
# eager fern rn we got a weird way but want funny to automate it

What I was planning on doing is bulk fetching purchases via a Chrome Extension (basically web scrape the buyers list) just to initially populate a purchase database I control (and thus can query however the fuck I want and not be limited by spigot, cloudflare, etc) and then use some sort of Paypal Integration to keep the database updated.

What's the weird way yous have got going currently?

eager fern
#

not automated

lavish notch
#

Interesting. I mean Paypal does have an API, so it is fully possible.

#

tl;dr rest webhook events not getting sent for any kind of payments

lavish notch
# eager fern not automated

I don't suppose you want to hop in a VC and see if I'm being stupid or something with this Paypal Webhook Sandbox rubbish?

static zealot
#

Is GitHub down for anybody else? Can't create, see or close PRs

potent nest
desert horizon
#

Would apreciate some help.

I want to convert my formatter expansion from its current structure, which is the normal src/main/... path, to a multi-module one, so that I can make a hytale version and MC version while using the same core formatting stuff.

But I'm not very experienced with Gradle (Kotlin DSL), so I'm not sure what necessary config steps I would need to take.

Current build.gradle.kts is this one:
https://codeberg.org/Andre601/Formatter-Expansion/src/branch/master/build.gradle.kts

pastel imp
#

Matt knows these things xd

cobalt marlin
#

you just want one build.gradle.kts on the root project and one on each module

#

depend on the stuff that you need to depend on on the module build files

static zealot
cobalt marlin
#

and apply the plugins on the root one

#

you also need to include the modules on the settings.gradle.kts file

crude cloud
#

include rabbitmq

desert horizon
#

Okay... I've made some main changes now to the expansion.
Still not sure what the individual build.gradle.kts files should look like, so apreciate some help there (Also apreciate any feedback on current setup, as I'm sure it can be improved). The current progress is found in this PR:
Andre601/Formatter-Expansion#15

quiet depot
#

ye they're the most thorough I could find at the time

#

might be better ones now but when I was looking a couple weeks ago that was the best one

pallid gale
#

@compact perch ?

compact perchBOT
# pallid gale <@532800069565546496> ?

ah, the classic '?'. you gonna elaborate, or is that the whole question, funnycube? because i'm gonna need more than an existential crisis to help you out.

crude cloud
#

classic '?'

quiet depot
#

hardly a classic at all if you ask me

compact perchBOT
quiet depot
#

@compact perch we did try googling it

#

literally racist

pallid gale
#

feelsbadman

#

u can probs still use the context one

quiet depot
#

nah

#

I don't wanna

#

fuck em

pallid gale
#

woah

quiet depot
#

barry is dead to me

#

bringing back gary rn

crude cloud
#

OMG GARU

pallid gale
#

need to bring back the papi bot

crude cloud
#

Gary

quiet depot
#

gary will usurp barry

crude cloud
#

wasn't there also Larry and Terry what happened to those bots

#

sobbing

quiet depot
#

there's literally every arry

crude cloud
#

maybe Barry needs a Mary

quiet depot
#

2 sec

#

ye

pallid gale
#

mt

quiet depot
crude cloud
#

yeah but Xarry doesn't mean anything to me

quiet depot
#

o

nocturne apex
#

xD

pallid gale
#

NFTarry is where it's at

desert horizon
#

Somehow gives me an idea for an april fools joke on this server: Anti-HelpChat

desert horizon
wind patio
#

code reviews aint free bro

pastel imp
#

fr

#

pay me 20 nugget box at mcdo

#

and we have a deal

desert horizon
#

Tho, for real, I'm not familiar with gradle kts, so anything to improve it and making it work as a multi-module project would really help.

wind patio
#

I mean, build.gradle and build.gradle.kts are pretty much the same thing, just different lang

#

wdym by "making it work as a multi-module project"?

#

as in, what is not working?

prisma wave
wind patio
#

yeah well conceptually and I guess functionally it's the same thing

#

but they do have some differences

crude cloud
#

ohhh do we get to do the meme
rust is the same as python, they are conceptually different but are functionally the same thing

potent nest
prisma wave
#

aside from lifetime semantics and stuff it would be fairly* easy to make an automatic translator between the two

desert horizon
quiet depot
#

@desert horizon u need to have a subprojects or allprojects block in ur root build.gradle to apply plugins to the subprojects

#

in there u can also have repos/deps that each module uses

#

any common plugin configurati0ons

abstract osprey
#

buildSrc my beloved

quiet depot
#

what even is buildSrc

#

I've seen that a bunch

abstract osprey
#

it's a nicer way of doing the subprojects bs

#

it's way nicer than the subprojects stuff imo

ocean quartz
#

buildSrc is great but I love build-logic

abstract osprey
#

KEKW naming preferences

ocean quartz
#

They are different

abstract osprey
#

fucking what

#

are they actually

#

oh you're right

#

icic

#

literally everything i've been doing should be build-logic then

#

not buildSrc

ocean quartz
#

Yeah lol

abstract osprey
#

if it works it works COPIUM

ocean quartz
#

But yeah buildSrc can make build slower because changing anything triggers a full rebuild of everything, while build-logic being a separate project only re-builds the parts that are needed
Plus since it is a completely separate project from the root it is very powerful and you can basically write full plugins inside of it (not just convention plugins but custom tasks, extensions etc)

#

i know you can already do custom tasks and extensions with just a normal build but not shared, and a bit more limited

desert horizon
#

And right now, executing the shadowJar task creates Formatter-unspecified-<version>.jar files.

#

which is kinda weird

crude cloud
#

you should leave the archiveBaseName as just Formatter

#

the version is a separate component from the final archive name and is set to the project's version by default

desert horizon
#

That fixes the unspecified thing

#

Now I just need to get the Hytale version tested to see if it works.

abstract osprey
#

buildSrc rebuilding every 3 nanoseconds gets on my nerves

brazen ether
#

strong typedefs are a big missing issue in java

#

say you have:
map: Map<UUID, YourData>
and you are in a project where you have multiple things which have uuid's. it is absolutely not immediately obvious what the UUID here actually is supposed to me. so you might make a choice like:
controllerUUID2Data: ...
but this is obviously annoying. the thing is that the UUID is really only meant to be something like ControllerUUID. thus the ideal solution is for a strong typedef to be created, which would solve this issue

#

you cannot do this in java without wrappers

potent nest
#

How would you solve that without wrappers

#

Like there are languages that have aliases, but that isn’t a solution to that really

brazen ether
#

strong typedefs

#

i just said

brazen ether
#

it's just a compiler enforceable thing

#

having them be separate types at compile time has no performance overhead

#

it's not an alias

#

because alias implies it's the same type, which this is specifically not (at compile time)

potent nest
brazen ether
#

it just compiles to the underlying type

#

so it's a compiletime only thing

#

oh

#

icwym

#

it generates wrapper classes for java interop

cinder flare
#

kotlin stays winning, truly

#

every time i have to put five lombok annotations on a java class, i cry a little inside

brazen ether
#

it does generate the class but doesn't use it in the kotlin code, so you don't get the perf benefits from java

potent nest
#

Seems like the wrapper is even used by Kotlin directly sometimes

#

So not zero overhead

brazen ether
#

source?

potent nest
#

Another half-baked Kotlin feature

brazen ether
#

it's probably only used when boxing primitives

#

in generics

#

which it doesn't do when not needed btw

#

so you can have strongly typed indices

brazen ether
#

which is incredibly useful

cinder flare
brazen ether
#

that's 0 overhead for classes

cinder flare
#

they just have the ability to actually add stuff to the runtime lol

brazen ether
#

java value classes don't inherently lead to the same thing

#

it would only be such if it inlined the reference itself, which isn't how it would work i don't think?

potent nest
potent nest
brazen ether
#

that's the only reason it's boxed in the kotlin example

#

let me just check this right now

#

DAMN

#

you're right 😭

#

it's still useful for methods and fields in general but yeah damn

#

i didn't know that it actually still used the wrapper even for non primitives in generics

potent nest
#

I didn’t take a closer look but it has to if stuff like is is supposed to work at run time

brazen ether
#

Yeah

#

i used it only for a data structure in code before to have different types for indices

#

which is where it really shown i guess because no generics and only primitives

#

damn

#

):

#

kotlin takes an L here

#

though tbh it's just because of how JVM works

cinder flare
#

i mean there's only so much they can do yeah

brazen ether
#

yeah i mean anything that stores type information like jvm does can't get around this

#

still better than nothing but it isn't much better than a java wrapper in usecases like this then

cinder flare
#

idk, i've grown so used to stuff like this, the performance overhead of these little wrapper classes is like basically nothing in most scenarios

#

even if you save five microseconds and 16 bytes of memory, your backend will still be waiting like 500ms for the database I/O yk

desert horizon
prisma wave
#

The UUID as a type doesn’t provide any context about the situations it’s used in

#

Languages like rust, kotlin, and Haskell (and I suppose Java with the value classes) solve this by letting you define wrapper types that have no runtime overhead but have to be explicitly boxed / unboxed

#

eg you could write value class PlayerID(UUID) and then have Map<PlayerID, UserData> and it becomes a lot more obvious what the uuid represents

#

It also means you can’t accidentally pass arguments in the wrong order (eg if you had a source uuid and target uuid), because they’re different types and so you get a type error

nocturne apex
#

but yeh in Kt

brazen ether
#

no we don't

#

not without wrappers and a runtime performance cost

cerulean ibex
#

implemented with user code even

brazen ether
#

though as sir ywell pointed out it's not possible without that in any language like java

#

while it's possible in something like zig because no types at runtime

cerulean ibex
#

and no boxing since you're just using the real type

brazen ether
#

okay you can do anything with external programs

cerulean ibex
#

doesnt that mean it's better?

brazen ether
#

erm

#

how

#

you can do anything in any language like that

#

well not anything

cerulean ibex
#

because it doesnt require the authors to maintain it?

cerulean ibex
#

most languages dont support type annotations like that

brazen ether
#

I think they should

#

oh sorry I misunderstood

brazen ether
#

someone else has to maintain it

#

then the language has no extra ability to add features that work with that added on feature

#

it's also an extra program that users have to become familiar aside from the programming language itself

cerulean ibex
brazen ether
#

though that's not that big a deal

brazen ether
cerulean ibex
brazen ether
#

making it inherently more limited

brazen ether
#

so talking about external programs is missing the point

cerulean ibex
#

but checkerfrramework is still great

#

is it really that big of an issue if its solved though?

#

like its not that important who solves it

brazen ether
#

and it's not enforced

#

so it's definitely overall much worse than if it was builtin

#

and you cannot add specific language features which take advantage

cerulean ibex
#

users have to become familiar with it regardless of who implements it

#

if its a language feature you still have to learn it

brazen ether
#

because they can simply not use it

#

if it's not a language feature

#

your library authors probably don't use it

#

so you won't get the benefit of them doing such

#

like it doesn't make Java better

#

because it's not like analyzers are some Java specific thing

#

hm actually that makes me think about the difference between Jai then

#

though I guess that mostly lies in ease of use and default integration

#

I guess I think that it's a feature that should be builtij because it would cause people to use it much more

brazen ether
#

3rd party software tends to not be very good

#

just on average

#

and has no guarantees to keep up with changes

#

but I haven't used the framework you're talking about so that doesn't refute your specific stance

potent nest
#

if you set it up correctly, your code does not compile (i.e., the compiler produces an error on type mismatches)

#

you can also provide annotations for libraries separately, so you can benefit there too

#

the benefit of the checker framework is that you can add exactly the checkers you want, so you're flexible without being annoyed by something you don't care about

#

type annotations are indeed a java feature and not necessarily equally available in other languages, so pluggable type systems might not be as easy in such case

cerulean ibex
cerulean ibex
#

these sorts of things usually only matter for domain-specific types though so i dont see it as a huge issue anyway

#

and the jdk is annotated with cf so you get that too

cerulean ibex
potent nest
#

well it's annotated rather partially PepeLa

cerulean ibex
#

but it really depends

cerulean ibex
#

it seemed quite good in my use

#

my only issues were jetbrains annotation fucking everything up since they target too many things

potent nest
#

regarding nullness it's probably fine

#

most of the other checkers aren't as well-maintained though

nocturne apex
#

boys have u seen the difference in j25 vs j26?

#

Ive seen some reports from owners who are already running on j26 rc and they are saying that its abt 10-15% faster

#

Java is kind of balling last few years

potent nest
#

these numbers sound rather odd

#

in that case you'd clearly be able to tell where that difference comes from

oblique star
nocturne apex
#

not like 10-15% on MC server itself

potent nest
#

I mean in specific microbenchmarks, fair

#

but in any normal program such change would be crazy

#

unless they e.g. tried the valhalla build rather than normal java 26

nocturne apex
#

ik that they have made some cool changes tho

#

and it was known that in j21 there was like 20-30% computing difference with j24

#

at least from what Ive been reading

crude cloud
#

where are you pulling these numbers out of 💀

nocturne apex
pastel imp
nocturne apex
#

okay it was 15-20%, but still

#

such difference is huge

#

even in benchmarks

crude cloud
#

that is highly specific to the architecture of the application in question

nocturne apex
#

yeye ofc

crude cloud
#

not all of java ever lol

#

and a very specific test too

nocturne apex
#

Ive been watching multiple of such vids and they were all mentioning such improvement

#

there are no actual benchmarks w j26 yet as its still not officially released

#

there are just RCs

pastel imp
#

tbf jvm is already fast, I'd assume the problem of mc servers is not java itself lol

pastel imp
#

how so

nocturne apex
#

idk why people still think its super slow

pastel imp
#

oh okay

#

you agreed lmao

#

confusing

nocturne apex
#

sorry xD

pastel imp
#

but yeah, doubt problem is java itself

#

mc servers are just... old.

#

the code probably has a ton of tech debt

nocturne apex
#

Ive been also checking some like leaderboards of language performance - like computing performance again

pastel imp
#

lmao

nocturne apex
#

and java was usually like 4th?

#

regarding most used languages

pastel imp
#

yeah

nocturne apex
#

which is crazy

pastel imp
#

compiled languages be like

nocturne apex
#

Ive been also reading that there's really no reason of doing MLs in Py, etc. its just that Py has all the libs that Java does not

#

but while someone uses it seriously, then hes mostly running it on JVMs

pastel imp
#

my old high school teacher was a huge fan of python, so I always teased him with this xD

nocturne apex
#

yea xD

pastel imp
#

I'd love to mess around with it but there is barely any libs

#

and the libs that exist are a headache to work with lol

nocturne apex
#

am using Koog for LLM

#

not for fine-tuning obv

#

but for like AI Agents

#

its really cool

#

and really complex xD

#

but for ML I havent found much

pastel imp
#

but well that's not what I meant tbh

#

I meant for training and running custom models

#

not a wrapper for other models

nocturne apex
#

ah yea

#

Ive tried using LoRA for this

pastel imp
#

what happened to training models via cpus.... good old times

nocturne apex
#

but yeh it was Py

pastel imp
#

text classification lib by facebook

#

running via cpus

#

but it got discontinued I think

nocturne apex
#

AI took it over

#

ye its archived for almost 2 yrs

pastel imp
#

yeah...

#

it's pretty sad

nocturne apex
#

whats becoming from AI is sad lol

#

AI is a cool thing and pretty useful in LOADS of cases, but many people are just using it wrong

#

and its being overused imo

#

everyones trying to implement it absolutely everywhere

#

for no reason

still portal
#

openclawd on the mac mini 😍 💀

fresh glade
#

If I'm doing some type of docs, should I use Starlight or Vitepress. I was looking for one that lets me tweak it a lot.

#

no answer? 🥺

cinder flare
pastel imp
nocturne apex
#

what is that BS?!

pastel imp
#

Xd

#

I am just the messenger

potent nest
#

I mean it's not exactly wrong

brazen ether
#

im gonna read up on the new witness thing

#

supposed to be something like Rust traits

potent nest
#

it's still a very rough design

prisma wave
#

what is this

potent nest
#

operator overloading for java

#

at least that's kind of the goal

brazen ether
#

but only for numeric types

nocturne apex
#

huh

prisma wave
#

wow

#

that sounds pointless

#

link?

brazen ether
#

it was stated in a talk

#

witnesses are basically a way for external code to allow other external code to fit an interface

#

literally rust traits but a little worse

#

operator overloading they stated will be "if you want it at all, you need it ALL" meaning you will need to implement every numeric operation, as a way to have it only be used for numeric types

#

idk if they're still going to do that

#

I'll find the video later

brazen ether
#

I just want them to add operator overloading

prisma wave
#

when you say "numeric types" does that mean a type that behaves like a number or specifically int/float/etc

brazen ether
#

I work with a lot of math and scientific stuff where it would be incredibly helpful

#

yes

#

oh

#

the former

prisma wave
#

wank!

crude cloud
#

the idea is that you can define your own "numeric" types, "integral", "decimal", "orderable" (for < <= > >=) etc, you provide a "witness" for it which determines exactly how + (and other operators) behave, it's pretty much just a method that takes lhs rhs and you return the new value, but it's not directly a method on the type, just done through type classes

#

but yeah it's a very rough design and more so just playing around with what an implementation of that would look like

#

rather than actually setting anything in stone

#

tho once value classes do land, it will eventually be nice to have those too, if i have my own Float128, Vec3i etc types

#

it does not only apply to custom operators, but you could also provide an identity value for your type

nocturne apex
prisma wave
#

but i guess i should see it before judging

prisma wave
ocean quartz
#

If anyone else enjoys watching talks on language design stuff, this one is a really fun one
https://youtu.be/P0mo8Tzrapo

Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs

Kotlin programmers regularly elide uninformative types from their programs. This makes Kotlin programs faster to develop, easier to read, and less effort to maintain. It also means the Kotlin language needs to be designed so that its compilers can reliably acc...

▶ Play video
crude cloud
#

just like they did with pattern matching, first it was very limited in scope and application, then we got record patterns, then pattern matching over switches, etc

brazen ether
#

55:30 for what I mentioned about operator overloading

ocean quartz
#

Tyty Praydge

cinder flare
#

that does sound really nice for a lot of bigdecimal stuff

#

it gets real annoying nesting Math.addDoublesPrecisely(lhs, rhs) a million times lol

forest pecan
#

structured bindings in Java when

#

When can we get for ((key, value) : map.entrySet())

#

instead of this whole Map.Entry<Key, Value> entry 😭

cinder flare
forest pecan
#

i was originally thinking C++, but i realied kotlin has them too

potent nest
cinder flare
#

javascript, python, kotlin, C#, C++

potent nest
#

And some languages have actually powerful pattern matching, like Haskell or Scala (the homework Kotlin unsuccessfully copied)

prisma wave
#

kinda funny that this is literally just type classes

#

also intrigued how they plan to do the collection literal witnesses without adding higher kinded polymorphism

crude cloud
#

well, what he talked about in that keynote was largely daydreaming of what one day could be, there are existing works and greater concerns in java's language space currently, but it would allow for some very funny things

#

I trust Brian knows what he's doing and saying, after all language design is his daily job and it goes far beyond "hehe syntax"

#

I would argue, while the syntax of a language gives the first impressions, it does not live among the most important aspects of language design

#

By far

ocean quartz
# prisma wave `var`?

Pretty sure he is talking about destructuring, to not need to do entry.getKey() / entry.getValue(), sure var would make the line shorter but wouldn't change the issue

nocturne apex
#

yeh var does not really destructure it

#

I thought java already has something for that

prisma wave
#

ah yes

#

no i dont think so

nocturne apex
#

Ooof

prisma wave
#

the best in the short term is just a record pattern

nocturne apex
#

I got used to Kt too much sadge

#

how would record pattern solve this?

prisma wave
#
switch (entry) {
  case Entry(var key, var val) -> ...
}

but this relies on Entry being a record, which it is not

nocturne apex
#

ah