#dev-general
1 messages · Page 61 of 1
Some say "this README reads like they belong in a hospital."
And you're goddamn right.
nice
aight this caught me off guard
That was entertaining lmao, thank you for sharing
You mean the one they did? https://github.com/bsommerfeld/pathetic-bukkit
i think he means in the server impl?
technical players wouldn't survive that
wow you just came up with topics for 3 PhDs
yay!
Paper'd get another hate video from cubic lmao
"Paper'd" what the fuck did I do here is that correct English?
everything is correct English
ghoti (pronounced fish)
not necessarily phd
probs any thesis
yeah just far more then
is USpigot actually what it says it is?
I heard many mixed things about it and idk
am using it 
@visual bluff dms
A*
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.
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
and suspected to be straight up stealing patches from other forks
who what when where why
yeah why would someone who benefits from the community that they actively hurt do something unethical
yea Ive been told that too and they also shown me what was just grabbed 
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
It's like said, double edged sword
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
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
idk which version you wanted but here's 1.8
you can check the other modules for other versions
Yeah figured it out, I will never support 1.8 but ty though
smart choice
I have got a simple handling for scoreboard on modern versions
if you want I can show u
sure, using PE but that doesn't hurt.
ye there's not that much tbh
https://paste.learnspigot.com/pamiqideya.kotlin
https://paste.learnspigot.com/enibuganoq.kotlin
https://paste.learnspigot.com/ebupahenup.kotlin
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
ty. also regarding your showcase, would be cool if it supported kotlinx.serialization
also why you using learnspigot's paste 💀
Yeeeh uh I was thinking of that tho none of my systems use it
isint 1.8 finally basically obsolete
or do servers still cling onto it
I would guess there are still some mainly because of the PvP mechanics
I wish
well, it is
but that doesn't mean people will stop using it
I'm not sure if it's possible to replicate the 1:1 1.8 PvP mechanics in newer versions
it absolutely is, and has been done
it's server sided, no reason for it not to work
some people will swear by their lives that it can be done, others will swear that it always feels different
but people are people and say that it's not the same
yeah
hypixel definitely doesn't feel like 1.8 on newer versions, idk about anything else
I mean I would guess so too, but those servers exist for (basically) that sole reason
id imagine their emulation is just not very good
dumb players, devs who don't wanna upgrade
it's not server sided??
damages are applied by the server, not the player
that's true, yeah
I mean, even if the replicated mechanics don't feel 1:1, at some point you just have to adapt and move on lol, it's not 2008 anymore
there are much more to it than just damage
but that being said
I think there are several plugins that very closely replicate it
the player just sends the click, server detects it and applies damages based on attributes and items used
damage is not what people refer to when taking about 1.8 combat
what is then?
knockback, durability, heal ratios, etc
okay now I'm much less trusting of your experience 😭
movement, blocking, and I think the OldCombatMechanics had several more stuff that I'm overlooking
knockback and movement
and how is that not server sided as well?
blocking yeah
movement & blocking are client controlled (shield workaround is... meh)
how will the client know how much kb to take without the server telling it?
if only the client predicted movement or something
I wonder what that would be called
wdym
sarcasm
predicted and based on what? items and their attributes/enchants ? that can be altered with packets to match the player's version
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
wait what does the mc client predict movement? I thought it just its own movement and reported it to the server
actually I might be misremembering
I know client does some sort of movement prediction
but I don't think it actually applies to knockback
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
I thought so too since when your connection lags, you can see players floating on the air without falling or moving
there's lots of strange things as well with how clicks (not attacks) impact how you take knockback
speaking of
there is indeed https://www.spigotmc.org/resources/LegacyKB.86080/ which is pretty neat for pvp servers
idk if it replicates 1.8 kb though, especially since that plugin itself is supported on 1.8
for example if you click ~20-40 cps on an entity while getting attacked, you take no knock back
yeah, its not that easy to make a 1.8 pvp clone lol
like
this is not a thing in new versions
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
#shorts
#youtube #youtubeshorts #shortsvideo #respect #short
Discord: https://discord.gg/rj5vcG3fEx
Mouse: Bloody a70 & roccat kone pure
oh yeah, but tbh as someone who doesn't have a double clicking mouse, I remember this being a bit annoying lol
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
that's because it's Techno in disguise
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
that is true
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
they were working on one
look at at hytale combat
I believe the server auth rewind happens when you get a messages like "... moved wrongly" or whatever
maybe they're just scared to have another divide but man
I'm still so sad it hasn't been looked into again
I had heard mostly good comments on it tho
but yeah
should be a toggle (gamerule?) tbh
that too
ideally much more configurable than that but yeah..
I'm acting as if it's gonna happen anyway
cant u emulate it good enough on 1.9+ tho?
i disagree, i think its in a decent spot from a casual perspective
ive played mods that basically do hytale combat
and it just makes it less fun as its "easier"
did I just get back here to witness a war?
i don't know about that
i don't think that's a feature of the combat
just problems elsewhere
@oblique heath have you self hosted supabase before
never supabase, only pocketbase
i have heard that selfhosting supabase is much more painful
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
lmao
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
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
oh i see hmm
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
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
This kids, is why you use appwrite
Way better UX for self hosting
And better overall
yeah single binary superiority
Isn't Pocketbase almost cross compatible with Supabase APIs?
I honestly don't think that self hosting Supabase is a grand idea haha
is alright
got it working
we chillin
no
supabase has a lot of features pocketbase does not afaik
though the basic crud stuff is probably similar
u can get auth on cloudlfare tunnels?
is it on their free tier too?
ye
Zero Trust
It's a bit annoying since you almost always need to verify with an email sent to your inbox
dont they have an option to login with an auth provider. I've seen one that allowed you to login with GitHub
Ah nice didn't know that
cc: @agile galleon
Just encase yous are interested to know - I managed to hack an export by making a chrome extension to automatically scrape the data. Took 10-15 minutes due to attempting to avoid cloudflare bot detection
Ended up with a total of 94,130 lines of JSON data - now just gotta move it all to a suitable DB. 
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.
fair, but for loose stuff and for things that dont need hella verbose structure, i prefer it over sql anyday.
Awesome!
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.
If you multiply the number of licenses per page by the number of pages what do you get?
All licenses should be there ig
15700 (50*314) which is odd... that must be total downloads isn't just purchases. 
Gets even more interesting, just noticed SpigotMC is listing more than 1 purchase for the same user.
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.
Technically downloads should not be tied to purchases
I fully agree but SpigotMC is dumb. 
Total Downloads for free plugins is Total Downloads but for paid, it's total purchases afaik.
but this export proves otherwise I hope
Ig take what you have and check later for missing purchases manually
Hmm... random thought. Have you got ShopGUI+ on your account?
Yes
Balls - I assume you bought it and weren't given for free?
Ye
DAmn.
I had a server a few years ago
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.
Doubtful the value updates instantly
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.
given this number ^ it sounds like your scrape is fine, it's just spigot being stupid
from time to time there was a bug of being able to purchase 1 resource twice
so ig this is the case
2015 💀
this is why we don't use spigotmc kids
well spigot was not updated since then xDD
Just thought I'd throw it out there - interesting theory from BRC, Total Downloads could possibly not be accounting for chargebacks and thus revoked licenses in that regard. 😄
Most likely
Tsoding is peak
who is that
what are those
how to download paper?
isnt spigot the best of the best?
I hope you are sincerly joking 🙂
databases
no?? isnt it
1st: Spigot
2nd: Purpur
3rd: Paper
invert that list and you are right
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.
leaf better than paper
scroll up and read about the scam it is
what does it have
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
so they steal code from others
among others yes
isnt that illegal- since the other proyects have licenses.
it is.
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...
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
I'll call myself bleeding edge now too
a better programmer than anyone in here will ever be
probably
Am I stupid for not knowing him?
At least not by name
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
a private channel too
@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
Never have I ever seen a more valid response from a plugin developer. 🤣
Well, some people are just weird and may be unable to read
dubs to bencodez
he goes through a lot of idiots (including me), and provides a neat plugin
C++ is impossible to learn
cpp feels like a clusterfuck in comparison
I need to learn it for physics internship
You learn some subset of it for project A, and then you re-learn a whole other subset of it for project B
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
I'm literally just reading the entire learncpp book
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
Just make everything constexpr
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
Have you heard of RUST
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
as opposed to...?
scientists
the only language scientists use is python
and julia
and maybe R
and that's pretty much all there is
maybe a bit of Fortran also
but actually you're right
Rust is seeing use in this kind of stuff
so maybe
kill all rust users
😭
so true
better than cpp tho
yeah and world war 1 was better than world war 2
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
wait until you see world war 3
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
what if i'm blind
You'll feel it
rust 2
You forgot Matlab
matlab more like… fatlab
brister "1-indexed" matlab
cpp:
constexpr const int* const getXPtr() const { return &m_x; }
zig:
fn getValue(this: *const Testing) *const i32 { return &this.value; }
- no
constexprneeded because zig can determine comptime-ability by itself - explicit
thismaking it clear that it requires a const pointer to itself (struct is calledTesting), so it can't be modified; much more readable than aconst *const i32is much more clear to me "pointer to const i32" thanconst int*but this is personal preference
zig mogs
figuring out is one thing, but can you enforce that it is constant at compile time?
what
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
it does (unless you use a constexpr function in a non-constexpr context, but that makes sense)
yeah that's what I mean
that's the same thing as comptime
more characters = bad
I won't fall for this bait
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
PAPI Hytale?
fair enough
the api's are so similar and papi has barely any hooks into actual minecraft
I'm gonna have to finish my plugin faster
I reckon the luckperms expansion would work by simply changing the bukkit import to a hytale import
jesus christ, havent seen that for years
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
on the other hand whys it actually bad?
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
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
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
I don't think it's necessarily an old practice, it came from microsoft, starting from COM, later in C++ before actual "interface" keyword became a thing and then got formalized for .NET and C#
but yes, its not common to prefix them in Java
also dont forget EMyEnum
personally I don't hate it, imo its more helpful to prefix it than not
I think most devs are hoping so as well, the api is in such a bad state right now
nah if it's a good enough name it doesnt matter
it just makes autocomplete etc harder
I use an I when I mean Implementation 😎
C++ doesn't have an interface keyword
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
yes
yeah I didn't mean to imply it got it at some point
does it support &§x&§a&§b&§c&§d&§e&§f ?!?!?!?!?!
Then you haven't checked JDA I suppose.
what does that have to do with packets
the name
spy?? the name is very relaxing.
yeah that looks AI generated 😭
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.
ask AI
xD
surely even a simple self hosted model would be fine for something this simple
lol
I am currently not self hosting anything sooo, not really worth it self hosting solely this
if I were to self host anything else then I guess yeah, might be worth it but even then
if it is just text reformatting then like bm said you can probably get away with a very weak model and get good results
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
why do you need LLM for all of this, you can quite easily do the first part yourself, LLM can process the rest if you want to convert it to specific format
there are quite a few public solutions for wiki scrapers
or at least that's how I would do it
interesting, I was leaning towards an LLM due to the layout/content of each page being very different from each other. Hence an LLM would "understand" (not rlly) what is what and how to split it. But I will 100% look into this!
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)
MediaWiki truly is a great platform
is that with or without sarcasm?
knowing Star I'd say without
eh ig
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
yeah tbf that is indeed impressive
@cinder flare did you see Laravel plugin now being integrated (I guess pre-installed) in phpstorm?
iirc it was paid before
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
yeah I didnt have it before
its so nice now
didnt know it resolves inertia (frontend components?) stuff too
yeah it's kinda fucked up that Eloquent has like no intellisense without it lol, definitely one of my biggest gripes
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?
Here works, let me know your username and link to each expansion with their ecloud.placeholderapi.com link
It's SlyOtters and it's only one expansion: https://ecloud.placeholderapi.com/expansions/healthbar/
done
LLMs are horrible at understanding anything.
well, yes but this is also just patterns, but anyways, I most likely won't use LLMs after I found the raw stuff
they're not that horrible
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
if it works ig ¯_(ツ)_/¯
yet another vibe coder
gotta love em
thing is, the class has no packets stuff at all
right you're a vibe coder too

well its meant to have NMS xD
however he does not even have NMS imported so
yeah lol
xDDD
why

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
Nah it‘s more fun if you know there is a concurrency bug
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
No.
Fun fact: the complexity of the C++ memory model is partly because of Java
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...
How would you write concurrency safe code without learning about the memory model
I mean just knowing how mutexes work and memory visibility in general is doing me fine
im not doing anything crazy complicated in cpp
absolutely yes
yeah that's what the memory model is about
I meant that I personally don't need to know the nuance of every little detail, probably
sorry should have been more clear
https://github.com/ichoco-milk/PlaceholderAPI/blob/0f35362a0c3d700d9fd7a6e115b9ebf6d92e3aa8/src/main/java/me/clip/placeholderapi/replacer/CharsReplacer.java#L73 might be the first time I've ever seen someone use named blocks
I do this all the time
Well whenever I can’t be bothered to otherwise refactor my code to avoid labels
true and same also we have named blocks already they are called methods
damn they really added ruby to java
I didn't even know this was a thing in Java 🥲
How did you break from your ifs then before??
oh i just reenter the event loop from that point so it never returns
I called the main function so it would continue and skip to after the if with a switch case from a string in the main's arguments
Named blocks are cursed
Only scenario I can think of is C code error handling when cleaning up stuff but like even then bruh
how so?
Makes code hard to read arguably, also it can usually be structured better
ah ye well usually
but it is useful for iterations
i haven't been using it in java, but i do sometimes use it in Kt
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
I've used it like twice so xD
Don’t mention that word!
It’s a slur
I'll show you a slur if you show me yours
If you don’t use labels, is your code even optimized???
huh
if you don't use a keyboard, are you even coding???
agent + voice AI now and some people might say you don't even need a keyboard
In which case you aren’t coding
s3 download bucket down?
might as well let the AI please their wife too at this point
Wrong server
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.
u cannot use anything else on spigotmc
I thought he was trying to emulate it, so he isnt using Spigot?
I am using SpigotMC, I'm attempting to make some sort of automatic verification system where by Paypal hits a laravel webhook receiver to input new purchase data into a database.
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.
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
here is an example of formatting the chat with color - https://hytalemodding.dev/en/docs/guides/plugin/chat-formatting
lol TinyMessage
sounds awfully close to MiniMessage 🥲
yeah lol. a library someone made inspired from that
wonder why they didn't go with minimessage
ig since it's bound to Adventure, which has minecraft-specific stuff like bossbars
it wouldn't really be viable to have the same library across two different games
pfft voice AI? neuralink connected to AI agents is the NEW coding
been using these docs for hytale https://hytale-docs.pages.dev/
Unofficial community documentation for running and configuring Hytale dedicated servers.
yeah
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. 
but we need spigot username
What do you mean?
to sync spigot purchases
Just use the ID, no?
Paypal Transaction has the user ID.
SpigotMC Forums has an API to get username from ID.
My data for example: https://api.spigotmc.org/simple/0.2/index.php?action=getAuthor&id=310075
rn we got a weird way but want funny to automate it
cuz when they aint online yk its weird
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?
so from what I understand they export and import it manually
not automated
Interesting. I mean Paypal does have an API, so it is fully possible.
Also just found this which appears to be the same issue I have... https://stackoverflow.com/questions/71561151/does-paypal-rest-webhook-supports-instant-payments-notification
tl;dr rest webhook events not getting sent for any kind of payments
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?
busy atm
Is GitHub down for anybody else? Can't create, see or close PRs
Welcome to GitHub's home for real-time and historical data on system performance.
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
Matt knows these things xd
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
You'll need:
- Split project into 3 components: core, minecraft, hytale
- Have 1 main build.gradle.kts file and a settings.gradle.kts file. In the settings file make sure to declare the projects. For example
include("core") - Have a build.gradle.kts file in each module. You can then declare subprojects as dependencies using
implementation(project(":core"))
and apply the plugins on the root one
you also need to include the modules on the settings.gradle.kts file
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
highkey nice
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
@compact perch ?
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.
classic '?'
hardly a classic at all if you ask me
#dev-general for meme explanations now? wild. i'd ask if you tried googling it, but i don't want to overload your system. next you'll be asking us to explain why your nullpointerexception isn't a feature.
woah
OMG GARU
need to bring back the papi bot
Gary
gary will usurp barry
there's literally every arry
maybe Barry needs a Mary
mt
yeah but Xarry doesn't mean anything to me
o
NFTarry is where it's at
The B in Barry stands for B[censored]
Somehow gives me an idea for an april fools joke on this server: Anti-HelpChat
Also, still would apreciate some feedback on this, as I want to publish a hytale version of the formatter extension
code reviews aint free bro
your payment will be the satisfaction that you could share your knowledge in a review to improve a project.
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.
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?
kts has some more idiomatic usage patterns i think
yeah well conceptually and I guess functionally it's the same thing
but they do have some differences
ohhh do we get to do the meme
rust is the same as python, they are conceptually different but are functionally the same thing
my turing machine is just like rust
i mean unironically sort of
aside from lifetime semantics and stuff it would be fairly* easy to make an automatic translator between the two
I have no idea how to configure it to shade in core module and build the different jars
@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
buildSrc my beloved
https://github.com/PlaceholderAPI/PlaceholderAPI3/tree/master here's an old example
what even is buildSrc
I've seen that a bunch
it's a nicer way of doing the subprojects bs
https://github.com/GeyserMC/Geyser/tree/master/build-logic
example ^
and then in your actual module build.gradle(.kts) you'd be doing id("geyser.publish-conventions") or geyser.publish-conventions in your plugins block
it's way nicer than the subprojects stuff imo
as for the actual docs, https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.html
buildSrc is great but I love build-logic
naming preferences
They are different
fucking what
are they actually
oh you're right
icic
literally everything i've been doing should be build-logic then
not buildSrc

Yeah lol
if it works it works 
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
Thanks.
Tho, still a lot confused on this entire thing.
Right now I have this:
- Root
build.gradle.kts: https://paste.helpch.at/esuvupawak.kts - Core
build.gradle.kts: https://paste.helpch.at/yujubesusa.kts - Hytale
build.gradle.kts: https://paste.helpch.at/atofozoyih.kts - MC
build.gradle.kts: https://paste.helpch.at/yipomaziqo.kts
And right now, executing the shadowJar task creates Formatter-unspecified-<version>.jar files.
which is kinda weird
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
That fixes the unspecified thing
Now I just need to get the Hytale version tested to see if it works.
Oh shit, that's game changing
buildSrc rebuilding every 3 nanoseconds gets on my nerves
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
How would you solve that without wrappers
Like there are languages that have aliases, but that isn’t a solution to that really
kotlin value classes
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)
How‘s the Java interop story if there is no overhead?
it just compiles to the underlying type
so it's a compiletime only thing
oh
icwym
it generates wrapper classes for java interop
kotlin stays winning, truly
every time i have to put five lombok annotations on a java class, i cry a little inside
i'm not 100% sure because this hasn't been my usecase though
it does generate the class but doesn't use it in the kotlin code, so you don't get the perf benefits from java
Seems like the wrapper is even used by Kotlin directly sometimes
So not zero overhead
source?
Another half-baked Kotlin feature
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
which is incredibly useful
generics
isn't Java literally adding exactly the same thing with Valhalla?
that's 0 overhead for classes
they just have the ability to actually add stuff to the runtime lol
no it's not actually
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?
No, Java value classes are a more general concept
But the example you showed before was using generics too?
overhead because Int is a primitive
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
I didn’t take a closer look but it has to if stuff like is is supposed to work at run time
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
i mean there's only so much they can do yeah
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
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
I don't really get what you talk about tbh. Could you elaborate?
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
we are using the value classes for this at my job
but yeh in Kt
oh yeye exactly
we have this in java
implemented with user code even
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
okay you can do anything with external programs
doesnt that mean it's better?
because it doesnt require the authors to maintain it?
wym?
most languages dont support type annotations like that
I don't see how this is a benefit
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
more competition, more options, generally faster development
though that's not that big a deal
that only makes sense here because its an analyzer with no language integration
yeah maybe the implementation could be better if it was more integrated into the language
making it inherently more limited
I was talking about improving the language / problems with it
so talking about external programs is missing the point
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
.
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
users have to become familiar with it regardless of who implements it
if its a language feature you still have to learn it
no?
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
also I don't fully buy this argument
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
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
maybe im not understanding what ur saying but you dont have to use it if its a language feature of checker framework?
yeah ig
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
yeah i can agree
well it's annotated rather partially 
but it really depends
oh
it seemed quite good in my use
my only issues were jetbrains annotation fucking everything up since they target too many things
regarding nullness it's probably fine
most of the other checkers aren't as well-maintained though
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
these numbers sound rather odd
in that case you'd clearly be able to tell where that difference comes from
imo its pure computing perf
not like 10-15% on MC server itself
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
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
where are you pulling these numbers out of 💀
Every release of Java includes performance and runtime updates. For organizations moving from Java 21 to 25, that means a lot of release notes to review to understand all that has changed. Luckily Billy Korando from ACME Soft has already done all the work of breaking down the important performance and runtime updates. Join Billy as he covers th...
well that's 21 vs 25 not 25 vs 26 or 21 vs 24 xD
.
okay it was 15-20%, but still
such difference is huge
even in benchmarks
that is highly specific to the architecture of the application in question
yeye ofc
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
tbf jvm is already fast, I'd assume the problem of mc servers is not java itself lol
yea it really is
how so
idk why people still think its super slow
sorry xD
but yeah, doubt problem is java itself
mc servers are just... old.
the code probably has a ton of tech debt
Ive been also checking some like leaderboards of language performance - like computing performance again
lmao
yeah
which is crazy
compiled languages be like
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
my old high school teacher was a huge fan of python, so I always teased him with this xD
yea xD
yeah I really wish we had more llm stuff in java/kotlin
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
Koog?
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
first time I am hearing about it lol
but well that's not what I meant tbh
I meant for training and running custom models
not a wrapper for other models
what happened to training models via cpus.... good old times
but yeh it was Py
reminds me of https://fasttext.cc/
text classification lib by facebook
running via cpus
but it got discontinued I think
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
openclawd on the mac mini 😍 💀
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? 🥺
it's mostly about what platform you prefer/are used to. If you're doing Vue, VitePress is gonna be awesome for you (I prefer it). If you like Astro components more, Starlight is based on Astro, so that'll probably do you better. As far as I know, you can basically completely customize both of them pretty easily, but I've only really had expeirence with VitePress.
https://youtu.be/UuQQVY9jxSs @nocturne apex
A quick look at modern Java and project Valhalla.
🥇 Join the community https://www.youtube.com/channel/UCXzw-OdotBUcNA9yhuYQBwA/join
💬 Topics:
- Java longevity over language trends
- Mature ecosystems outperform novelty
- Null safety in legacy systems
- Project Valhalla performance goals
- Value objects
- Universal generics
👀
what is that BS?!
I mean it's not exactly wrong
im gonna read up on the new witness thing
supposed to be something like Rust traits
it's still a very rough design
what is this
but only for numeric types
huh
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
tbh I don't really like this
I just want them to add operator overloading
when you say "numeric types" does that mean a type that behaves like a number or specifically int/float/etc
I work with a lot of math and scientific stuff where it would be incredibly helpful
yes
oh
the former
wank!
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
yea lol
yeah i mean this sounds nice but the fact that it doesnt generalise very well is kind of annoying
but i guess i should see it before judging
atp just add proper type classes you know
Do you have the link? I love watching that stuff
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...
well, this is step one, and they are testing the ground
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
Brian Goetz (Java Language Architect) 2025 JVM Language Summit session on evolving the Java language.
- Growing a Language (Guy L. Steele Jr.) ➤ https://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf
- https://www.youtube.com/watch?v=lw6TaiXzHAE
- https://www.youtube.com/playlist?list=PLX8CzqL3ArzUOgZpIX6GsoRhPbnij-sco playlist
- JVMLS...
55:30 for what I mentioned about operator overloading
Tyty 
that does sound really nice for a lot of bigdecimal stuff
it gets real annoying nesting Math.addDoublesPrecisely(lhs, rhs) a million times lol
structured bindings in Java when
When can we get for ((key, value) : map.entrySet())
instead of this whole Map.Entry<Key, Value> entry 😭
mmm Kotlin
i was originally thinking C++, but i realied kotlin has them too
That’s more or less the plan with carrier classes
i think like most languages have destructuring lol
javascript, python, kotlin, C#, C++
And some languages have actually powerful pattern matching, like Haskell or Scala (the homework Kotlin unsuccessfully copied)
var?
truth nuke
ok it seems i was being overly harsh on this
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
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
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
yeh var does not really destructure it
I thought java already has something for that
Ooof
the best in the short term is just a record pattern
switch (entry) {
case Entry(var key, var val) -> ...
}
but this relies on Entry being a record, which it is not
ah
