#general

3141 messages · Page 1870 of 4

worn ember
#

thank you youtube, very cool

vernal moth
#

@neon bramble it you only look at modern versions, the numbers for paper are muuuuuch higher

neon bramble
#

May we continue then?

neon bramble
#

ok nvm

vernal moth
neon bramble
#

it is only 7%

magic river
#

iirc Paper 1.8 didn't advertise itself as Paper

#

But who cares about old versions?

vernal moth
#

Servers on 1.8 literally doesn't matter

#

Like, no thing we do today will affect them in any way

#

They don't update the server, they don't update plugins

#

There's no hope

neon bramble
#

I mean

#

I am pretty sure that someone will just create a fork which adds it back

#

honestly I wouldn't be surprised if purpur added it back

vernal moth
#

They will be irrelevant tho

neon bramble
still sorrel
#

Fried my laptop

vernal moth
#

If the majority of big plugins follows us

still sorrel
#

Water on keyboard not good

#

Well it was running surprisingly long while wet

#

After drying the surface and booting it up again it held out decent

neon bramble
#

btw, if you want to remove the legacy api, why isn't it marked for removal?

#

(Deprecated#forRemoval)

wraith trail
#

there aren't any immediate or concrete plans to remove it

#

afaik it's more of a dream at this point

magic river
#

That flag is new in Java 17, isn't it?

neon bramble
wraith trail
#

pretty sure that is 9

magic river
#

Deprecated normally meant it would be going away soon

neon bramble
wraith trail
#

yeah 9

magic river
#

They added the distinction because they decided some of it wouldn't go away but you shouldn't use it

neon bramble
magic river
#

That's a silly level of software engineering for block game

neon bramble
magic river
#

I'm surprised it has kept going this long, I burned out on it after 2.5 years 😛

neon bramble
worn ember
#

yes

wraith trail
#

either way, this isn't a couple months, or probably years or ever thing

neon bramble
#

Glad for that, as much as I've tried, I wasn't able to avoid it in some places

wraith trail
#

the most user facing issues is that whenever a plugin uses some of the legacy stuff ingame features go away

#

such as, hovering over a death message to view a weapon

magic river
#

I still think the hard fork will be the death of the project, looking back at it

neon bramble
#

well, you could make it naggable

wraith trail
#

broken on probably 60+% of bukkit servers

magic river
#

But I also think it'll die a slower and more painful death if they don't

#

So...

#

I'm also super jaded about all things Bukkit

neon bramble
#

well bukkit is bukkit eShrug

magic river
#

It's a shitty API that has been maintained and expanded on in shitty ways

neon bramble
#

agree

#

but there currently really isn't a better alternative (as far as performance goes)

worn ember
#

discord changed some colors and its really throwing me off lmao

neon bramble
#

unless you do not need vanilla features

worn ember
#

the new message line is more red, for starter

vernal moth
#

Bukkit doesn't have anything to do with performance?

golden gust
#

"I want modern things but I also don't wanna lose my 10 year old plugins" really doesn't work longterm

#

theres been years upon years of data loss or damage due to craftbukkit

neon bramble
#

(Paper)

#

Or is sponge faster?

vernal moth
#

See, Bukkit is an API

magic river
#

Sponge was at one point probably faster

golden gust
#

much of it which is unfixable as it stands because god forbid we yeet outdated stuff

magic river
#

But that was like 1.12

vernal moth
#

Paper is a mess of patches

golden gust
#

e.g. legacy text creates consistent issues due to the back and forth conversions

magic river
#

Although their API is heavier so it may have balanced out, I don't think anyone benchmarked it

worn ember
neon bramble
#

sorry for ping

golden gust
#

I mean

neon bramble
#

didn't realize

magic river
#

Fuck Spigot 😛

golden gust
#

either we move forward and adopt new features

vernal moth
#

We will sort stuff out, worrying about it today doesn't help really

golden gust
#

or, we stick in the past and further diverge from vanilla

#

We're not aiming to fuck everything up day 1

worn ember
#

just use paperlib and dab on spigot users

vernal moth
#

We haven't met all dependencies for a hard fork so talking about it leads nowhere

golden gust
#

we aim to have a sane deprecation policy to allow stuff to slowly move forward, maintain compat where possible as much as possible

#

but, between legacy plugins and moving forward, we're gonna eer towards moving forward

worn ember
#

talking about hardforking instead of working on hangar smh

neon bramble
#

does hangar have some kind of plugin that would update the plugins on the end user side?

vernal moth
#

Just rest assured that we will make sure to take everybody willing to take part in a modern community with us on our ride

magic river
#

Day 1 of hardfork should be removing all deprecated things 😛

neon bramble
#

well then, I am fucked

vernal moth
#

That's exactly what we will not be doing

magic river
#

They've had months to years of warning at this point

worn ember
#

hangar package manager wen

void void
#

hapt-get™️

neon bramble
#

genius name

#

or haptman? Nah, hapt-get is better.

twin lagoon
#

hapt

golden gust
#

Issue is that deprecation from spigot is generally a joke

neon bramble
#

it is

golden gust
#

Like

#

getting a map from its ID is deprecated

#

ignoring that ids are and have been the only way to get a map from the server for god knows how long

magic river
#

We should have broken things more back in 2012 is the real problem here

vernal moth
#

Once we have Bukkit as source we can make sure to do better

magic river
#

Before that Bukkit broke in some serious way every few months

neon bramble
golden gust
#

APIs break

#

Literally

magic river
#

We bragged about plugins from beta 1.6 working on release 1.7 instead

#

And now no one wants to change anything

golden gust
#

find an API or project which has existed for 10 years and hasn't had any major API breaks and I'll show you a shit project which isn'tmoving forward

#

and, that's the issue with bukkit; the server has supported custom biomes for what, 2 years now?

worn ember
#

Log4J had no breaking changes or exploits in the past 10 years blaze

neon bramble
golden gust
#

Bukkit still doesn't support custom biomes at all

#

datapack support is broken af

neon bramble
#

doesn't it? lol

magic river
#

The only way to do anything useful with command tab completion is to bypass the API

void void
#

They are working on removing some of the enums to allow for custom stuff (biomes, etc) though

golden gust
#

mojang is only going to push harder on moving forward, making datapacks more powerful, and right now the API is in this state where the shit we shoulda done 6 years ago

neon bramble
golden gust
#

i.e. moving away from enums, etc

magic river
#

How does Forge deal with command clashes? First one loaded wins? Should probably just switch to that

golden gust
#

is now biting us in the ass because now we've got spigot which refuses to do anything without maintaining stupid backwards compat

golden gust
#

Like, spigot literally asm hacks plugins as they load now

#

plz no mention

neon bramble
#

oof sorry

magic river
#

Having the minecraft:foo vs essentials:foo stuff is nice but confuses people and datapacks

neon bramble
#

thank god I use velocity :D

golden gust
#

Bungee fucking sends json strings through the API

vernal moth
#

Bungeecord is basically deprecated too

neon bramble
#

I still don't understand, why people do not use Velocity

#

like

#

most of the plugins you need on proxy are available

vernal moth
#

Because people are scared of change

untold meadow
#

most
there's your answer

magic river
#

Uh, you're bitching about API changes

#

But think people should use velocity

#

A completely different API from bungeecord

golden gust
#

I mean, thing for velocity is the ecosystem

neon bramble
golden gust
#

many things have changed since then

neon bramble
golden gust
#

i.e. we used to think that handling chat purely on the proxy was a good idea

worn ember
#

why would you use velocity if you gotta make every plugin yourself cuz there is no eco system thonk

neon bramble
#

well, because there is :D

golden gust
#

eventually we learned that people want features like placeholders, for data which only exists on the servers

worn ember
#

barely compared to bungee

spare venture
#

you don’t really need to do a whole lot on the proxy level

neon bramble
#

like tell me what do you need on proxy?

golden gust
#

Well, that's part of the issue with a new ecosystem

neon bramble
#

LuckPerms?

spare venture
#

luckperms doesn’t need to be on proxy

golden gust
#

You have to remember that bungee only won out cos it was associated with spigot

pallid edge
#

ah yes bukkit & bungeecord bashing, lemme get my popcorn and enjoy the read

worn ember
#

then why would you use velocity if you dont need many plugins bigbrain

golden gust
#

theres been proxies before which where much more performant than bungee, bungee won out cos spigot and java APIs

neon bramble
spare venture
#

velocity has like 2 commands

neon bramble
golden gust
#

now you have a new ecosystem which performs much better which requires that people slowly move their stuff over towards it or break their older concepts

twin lagoon
#

lilypad

#

written in go

neon bramble
#

you need it.

magic river
#

lilypad was such a nicer system than bungeecord

spare venture
#

why would you put moderation plugins on the proxy

neon bramble
#

oof

quasi valley
#

why not

twin lagoon
#

still works, still in use by some

golden gust
#

no data sync if you're doing it on the network

neon bramble
spare venture
#

i just put litebans on every backend

golden gust
#

boot connections arelier into the connection stuff so you use less resources

neon bramble
#

^

golden gust
#

I mean, litebans on everything works but it's hardly a great solution for scaling

magic river
#

lilypad had a control server which managed the actual proxy instances and did pub/sub so servers could communicate but beyond that you basically did everything just on the servers

neon bramble
#

which is a bad idea IMO

magic river
#

No figuring out what should be on the proxy and what should be on the servers and how to deal with conflicts, the proxy only knows how to send people to servers

#

Let the server figure out everything else and give it a way to coordinate with the other servers

neon bramble
#

this only puts more load on servers

#

which is exactly what you want to avoid

twin lagoon
#

right so instead you want to move that to the proxy

neon bramble
#

yeah?

twin lagoon
#

and if your proxy goes down, everyone gets disconnected

magic river
#

The proxy which is handling multiple servers

neon bramble
#

well everyone get's disconnected anyway if your proxy goes down

#

I don't see your point?

magic river
#

Yeah, that sounds like how scalable things work

twin lagoon
#

okay but not everyone gets disconnected if one server goes down?

magic river
#

Push all the work to the thing you have fewer of

neon bramble
#

If you put your moderation handling on proxy

#

which will only reduce load on servers

#

where is the issue?

spare venture
#

I was just saying there aren’t a ton of velocity plugins because there isn’t a ton you need to do outside the proxy. Only things I can think of for general people are permissions, punishment, and chat.

neon bramble
#

yup

#

And all of these should be available on Velocity afaik

spare venture
#

do on the proxy*

#

MOTD i guess

#

yeah they are

magic river
#

Permissions?

#

Chat?

neon bramble
#

LuckPerms?

#

What do you mean by "chat"?

vernal moth
#

You never want to put any load on your proxy

#

Cause they are way harder to scale

glass crag
#

put the world on the proxy

#

then the servers will be super fast

magic river
#

I guess I can see the need for permissions to support doing bans but I would just make the server send a message to the proxy to add/remove a ban or put the bans in a DB

vernal moth
#

Not like a moderation plugin would steal any performance from your backend servers, lol

magic river
#

Chat makes no sense on the proxy

golden gust
#

You can scale proxies ez if you're in the need for scaling anyways

neon bramble
#

^

golden gust
#

moderation is a really weird area, however

vernal moth
#

It's way more complex tho cat

neon bramble
#

i mean, you will get in that state if you have like 5K players?

golden gust
#

Like, being able to boot early has some pros, especially if you're expecting stuff to be sane

neon bramble
#

I think at that point, you can afford that.

vernal moth
neon bramble
#

which means

#

that putting some lightweight load on proxy is fine

quasi valley
#

yeah lol

vernal moth
#

But you can also just do it on the backend

quasi valley
#

and if you have 5k players scaling should be easy for whoever you have

neon bramble
#

ofc you can mini

#

should you however?

golden gust
#

I mean, shit gets nuanced

#

a ban plugin on the proxy is gonna have less load on the overall network vs the servers themselves

neon bramble
#

lemme get my dictionary

#

fuck, google translate does not know definition for word nuanced

golden gust
#

and, if you're at the point where scaling proxies come into play, you're gonna need to be setup for that anyways

vernal moth
#

What kinda load does a ban plugin have cat

#

Like cmon

golden gust
#

basically none in the scheme of things which is my point

worn ember
#

just put more proxy blaze they're like 300mb

#

while ur server eats up 20gb ez clap

neon bramble
#

I mean, if you have a good scalable system

worn ember
#

i just solved your issues

golden gust
#

at the point at which the load of a ban plugin becomes an issue you're probs gonna be dealing with scaling issues anyways

neon bramble
#

you can just throw velocity on 2x 64c/128t cpus /s

worn ember
#

just make it anarchy so you dont need a banning system

neon bramble
#

like with 10k players?

#

you need to scale far before that anyway

radiant oriole
#

If you’re anywhere close to needing to scale, then you’ll be able to solve that problem with your wallet.

neon bramble
#

exactly.

worn ember
#

your storage solution could be a bottleneck by then sure, but eh gl scaling your instances to hold 10k players to begin with

neon bramble
#

allow me to introduce you....

#

database cluster

worn ember
#

No.

neon bramble
#

ok :(

worn ember
#

request denied

neon bramble
#

:(

magic river
#

Clusters generally lose latency to gain throughput and scalability

golden gust
#

in all my years of working with rando servers, I've literally never seen a server need to get into clustering

magic river
#

So might be too slow to use

golden gust
#

and, at the point at which you get into clustering, your software needs to cater for that

neon bramble
waxen panther
golden gust
#

i.e. auto increment is a MASSIVE issue on clusters

neon bramble
#

monkaOMEGA is it?

#

fuck.

waxen panther
#

average cluster user

twin lagoon
#

@waxen panther

waxen panther
worn ember
# neon bramble database cluster

just do like the company i have to clean up their infrastructure for. Put everything in an access database with no relations or normalization whatsoever and then be surprised when the azure instance takes 2 minutes to load a form cuz it has to go through 480 queries to get a result

neon bramble
magic river
#

autoincrement requires two phase locking across the entire cluster on every insert, afaik

neon bramble
#

imagine using MS products :)

vernal moth
#

That's why sane people use guids

neon bramble
#

I will probably never reach a stage when I need it

golden gust
#

yea, idk anything which really deals with that well outside of the db's which basically have their own offset for clustering

magic river
#

This is why twitter invented snowflakes

golden gust
#

^^

worn ember
#

so are its users lul

golden gust
#

Much of this stuff is already solve, ofc

magic river
#

uuids index and cluster poorly

golden gust
#

but, issue is that plugins rarely need to cater for this scale, and so nobody does

worn ember
#

guids then blaze

magic river
#

So people make uuid-like things that don't require locking on insert but also sort better

golden gust
#

UUIDs are a pita because "they should never conflict"

warm anchor
neon bramble
# vernal moth That's why sane people use guids

In some scenarios using autoincrement bigint might be beneficial. A good example of this is some kind of a report system, you want to have some relatively short, easy to type ids, so mods do not eat you alive.

magic river
#

In my experience most of the group complaining about snowflakes are the actual snowflakes but we probably shouldn't get in to that 😛

golden gust
#

your issue is that db's in the cluster need to agree with one another

#

otherwise what happens if two db instances in the cluster try to use the same id for the auto-increment?

neon bramble
#

which leads me to another point

golden gust
#

hence, snowflakes

neon bramble
golden gust
#

snowflakes are basically a mixture of the time and some other data to ensure uniqueness in a db

magic river
#

postgres

golden gust
#

depends on the data lifecycle

vernal moth
neon bramble
golden gust
#

i.e. eco is dangerous to cache on individual instances so for that you'd query directly against the DB

neon bramble
#

do you think that Hypixel needs a cluster?

#

They use MongoDB btw.

magic river
#

No

golden gust
#

hypixel doesn't do live DB stuff afaik

vernal moth
#

You don't want to use the stuff hypixel uses

#

It's prolly still filled with legacy stuff

golden gust
#

they load data into some system which keeps data loaded during the players instance

magic river
#

hypixel probably doesn't have enough DB load to require a cluster

golden gust
#

which is part of the ideal world is that you have the speed of in-memory stuff with a sane API to do stuff

vernal moth
#

Where's oncle agent to tell horror stories?

neon bramble
#

using mariadb, considering redis

golden gust
#

In my years

neon bramble
#

which is kinda unavoidable

golden gust
#

i've literally NEVER had any issues with eco in a db

#

like, databases are fast

neon bramble
magic river
#

Still don't want to do a network call on the main thread

golden gust
#

do what you can off the main thread, but, the instances where you need to do it on main are not all that often that it's a pressing issue if you designed stuff properly

magic river
#

But you shouldn't need to either

neon bramble
golden gust
#

Well, issue is that every plugin accesses the eco on the main thread more or less for things like commands

#

part of why we wanted a new vault is so that we could push stuff like Futures, etc

neon bramble
magic river
#

Unless you care about rcon users you can just return from the command after setting up an async task to do the lookup and give a real response

neon bramble
neon bramble
#

all my commands run async by default

#

i push almost everything off the main thraed

golden gust
#

yea, I mean, part of the joy these days is that if you wanna do stuff properly, you really need to do it yourself

#

I don't think that there is any real competently maintained eco plugin these days

magic river
#

You could make a shop that does the purchase async but it'll be more complicated and custom

neon bramble
golden gust
#

But, eco is this weird area where the plugin gets stable and doesn't need to do much more than that

neon bramble
golden gust
#

and so the plugins basically become "complete", bugs are discovered over the years but people already moved on

#

that's what transactions are for

waxen panther
#

using external plugins copium

neon bramble
#

but back on the topic, how do you synchronize data between servers?

golden gust
#

cache what can be local locally

#

have a messaging system which allows you to bust caches on the network

#

optimise what can't be cached, etc

neon bramble
#

ok, how do you prevent race conditions?

golden gust
#

depends on the scenario

neon bramble
#

ok

#

allow me to write a real life scenario

golden gust
#

Like, you're asking one of the mystical issues which CS has yet to solve

magic river
#

If Microsoft got Windows to run on the Xbox it would basically destroy all the other competitors.

neon bramble
#

it will take me a while because my english lol

neon bramble
magic river
#

Who wants to tell them? 😄

#

(It is running Windows, basically)

neon bramble
#

it is lol

magic river
#

It's an NT kernel, DirectX 12, etc

#

It's like Windows but you replaced explorer.exe with the xbox UI

#

And it has Edge so you can already use it as a desktop version of a chromebook

void void
neon bramble
#

ok so we have server A and server B
Our player "John" is playing on server B, however he also has a chest shop on server A. He has 100$ on his account, now at the same time someone sells him 100 $ worth of diamonds on server A and John buys 100 $ worth of idk... sand on server B. So, this will happen:

server A fetches John's balance -> 100 $
server B does the same -> 100 $

both servers proceed, because they see that john, indeed has enough money to do the action

now
server A sends a query to the database to substract 100 $ from John's account
server B does the same

the result
John now has -100 $, which, especially assuming we would use unsigned numbers, would be a huge issue.

These are the technologies that I can utilize
mariadb (I store data there)
redis and rabbitmq (I do not use either of this ATM)

golden gust
#

that's where transactions come into play

neon bramble
#

ok, lemme make this a bit harder

#

server A needs to do the substraction part synchronously

golden gust
#

start transaction

#

do mutation and lock db row

#

do stuff

#

commit and end transaction

#

after the row i locked in the db, nothing else can read or write to it if you lock it properly

native wolf
neon bramble
#

ok, what if, the item becomes unavailable in the chest on server A, meanwhile we do the DB action?

glass crag
#

you could reserve them before the transaction, or do the checks while you have control

golden gust
#

pre-serve

neon bramble
#

how would I reserve them? (I am not that advanced with mysql in java)

golden gust
#

cancel the transaction

#

Like, welcome to the balancing game

glass crag
#

take diamonds from chest, wait for transaction, if successful, pass them on, if not, put them back

golden gust
#

nobody has solved these issues nicely

#

you basically just start getting into multiples of transactions potentially

neon bramble
#

that is pretty much what I wanted to do except redis. So there isn't really any simpler way?

golden gust
#

or queing such transactions up somewhere so that a single threaded thing can just run through work

radiant oriole
neon bramble
#

my solution was, to keep those things in redis cache

glass crag
#

the technology you use probably wont solve the problem

neon bramble
#

and then lock the resource when I need it

glass crag
#

if you're doing a get + a set, the value could change in between those 2 calls

golden gust
#

which is why transactions exist

radiant oriole
golden gust
#

you literally lock the row so that no other mutations can occur

#

but, once again, this is one of the many unsolved issues of CS

neon bramble
#

ok, would placing a cache between this (redis) make the process faster?

golden gust
#

there are many means to work around the issue but each of them has their own caveats and limitations, especially when dealing with multiple resources which mutate

glass crag
#

yes i agree, just highlighting that redis doesnt magically solve the problem

neon bramble
#

ik

golden gust
#

if redis supports transactions, I mean, yea, you'd just work across the in-memory db

neon bramble
#

I just thought it could help to solve the issue

golden gust
#

but, I mean, this is literally nothing to a properly configured db

#

Shits relative

neon bramble
#

this is not in my control

golden gust
#

Like, within 50ms a tick, stuff matters a lot harder than it does vs to humans

#

much of the stuff people panic about caching on MC is just typical to do directly against the database everywhere else

radiant oriole
neon bramble
#

well,from this conversation I know one thing for sure

#

I need to completely redo my db system mild_panic

radiant oriole
#

You really don’t need redis for this

neon bramble
#

I want to be prepared for scaling

radiant oriole
#

You just need a proper DB schema

#

Only design for the next order of magnitude.

#

If you’re at 10 players now, don’t design for 1000 players.

neon bramble
#

also, when I update something, I somehow need to tell other servers to update the local cache

neon bramble
#

And want to learn this shit

#

better try it with 10 players than with 1k

golden gust
#

I mean, as I said, we get onto data lifecycles

#

cache invalidation is yet just another unsolved CS issue

spare venture
#

well it takes a lot to attract those players, maybe work on that attraction first 😉

golden gust
#

you can poop messages around the network to tell stuff to invalidate data, but, theres always gonna be potential for races outside of storing everything in some central system which manages all of that and everything is queried from it, etc

neon bramble
#

well, my current system works until multiple servers need to access the same data, so I will leave it that way for a while

radiant oriole
neon bramble
#

i get it

#

but the farther I go, the more painful refactoring is going to be

spare venture
#

there aren’t that many 1000 player servers

#

you say that as if it’s a guarantee

glass crag
#

keep things as decoupled as you can so things are easier to replace

neon bramble
spare venture
#

odds are you’ll never need to refactor

radiant oriole
#

^

neon bramble
#

I just work with the worst case scenarios

golden gust
#

Basically

radiant oriole
#

If you get to 1000 players you’ll be able to solve this problem with money.

golden gust
#

go get a piece of paper

spare venture
#

not economical

neon bramble
#

or best, depends on how you look at it

golden gust
#

write down all the chunks of data you need

neon bramble
golden gust
#

and consider their lifecycles

#

is it viable to just query this data on demand?

neon bramble
#

it is not.

golden gust
#

do i need to cache this? does caching it impose any risks? etc, etc, etc

radiant oriole
#

Listen to cat, this is how you design distributed systems

neon bramble
#

listening.

glass crag
#

each problem is really going to be unique

radiant oriole
#

Ideally you don’t design distributed systems at all lmfao

golden gust
#

solutions vary depending upon the data involved and how viable and safe it is to cache stuff ^

spare venture
#

there are literally only a handful of servers that do more than 1000 players ever

golden gust
#

sometimes you get into the corner where you need to redesign stuff to be able to cope with it

magic river
#

Just put this in production and use a single DB

neon bramble
#

ok, if querying on demand is not viable and caching imposes huge risks, am I fucked?

radiant oriole
#

I’ve only managed 800

magic river
#

It basically does intelligent query caching and invalidation automatically

golden gust
#

I mean, unless you find a magical solution for it, you're fucked

neon bramble
magic river
#

(it's a research project, don't do that)

golden gust
#

ofc, many issues where people think that data can't be queried on demand, it can be, easily

spare venture
#

and most servers that get to 1000 players are lying and have less

magic river
#

It does actually work though

golden gust
#

databases are MUCH faster than people given them credit for

magic river
#

They proved you can do it

golden gust
#

(especally if you configure them properly)

neon bramble
golden gust
#

that's stupid

neon bramble
#

it is

golden gust
#

Never do that

neon bramble
#

but I have to work with it currently

magic river
#

noria won't help you there, it sits in front of your DB but you can't run multiple of them

#

Also, don't run any of them 😛

neon bramble
#

i do not plan that lol

golden gust
#

Nothing can solve the latency issue

neon bramble
#

ikr?

#

that is why I need to local cache

golden gust
#

No

magic river
#

wow though

golden gust
#

This is why you need to fix your broken architecture

neon bramble
#

ikr?

spare venture
#

is there really anything to fix if you’ll never get 1000 players

#

not to be pessimistic but

neon bramble
#

I wont

spare venture
#

you’re worrying about the wrong things

neon bramble
#

The point is, I want to learn how to do it + be prepared if it somehow happens

spare venture
#

gotcha

magic river
#

It basically turns your query in to a graph, computes and caches the values of each node of that graph, and then since it knows what the inputs to each node are when you do an insert or update it invalidates those nodes automatically

#

Or something like that

#

So if you do two similar queries some of the cache for the first one can even be used to make the second one faster

golden gust
#

spoopy

magic river
#

And they have math and logic and shit to show this won't have invalidation problems

golden gust
#

that actually sound pretty cool af

magic river
#

Just off by one errors and similar mistakes in the implementation 😛

neon bramble
#

well

#

I am going to do the paper thing tomorrow

#

thanks for your advice everyone

ashen cliff
#

_After that, do the same with memory. kekwhyper _

wide chasm
#

Bro, that's cursed

ashen cliff
#

Bro.

mint patio
#

hey just got a steam scammer thing from this server where report?

sage vessel
#

the /modmail command

mint patio
#

(it is my account lol)

sage vessel
#

but click "report spam" to discord

#

it is best way

mint patio
#

ok done

magic river
#

I also recommend either disabling DMs that aren't from friends or at least disabling them from public discord servers like this one

warm anchor
#

Yeah if someone wants to reach out to you, they will find a way

plucky sparrow
#

I’m yet to get a message from those scammers

warm anchor
#

Maybe your steam profile is too poor

worn ember
#

Even the bots don't want to communicate with you

heady solstice
#

This is not paper, but I hope I get some inside of this
Im looking to some app dev and as far as I have read, usually the apps do api calls to rest apis and such, some of them may need authentication, how does generally deal with that? I assume some type of access token? If so, how do they determine that the token is being used in the same device at it was generated?

worn ember
#

Take a look at jwt tokens

heady solstice
#

But that token have something that identify the device? Does app generally check the device or rather something like the iP'

#

?*

cosmic raft
#

one day i'll stop using the grilled lettuce clip.

today is not that day.

#GordonRamsay #KitchenNightmares

If you liked this clip check out the rest of Gordon's channels:

http://www.youtube.com/gordonramsay
http://www.youtube.com/thefword
http://www.youtube.com/kitchennightmares

More Gordon Ramsay:
Website: http://www.gordonramsay.com
Facebo...

▶ Play video
warm anchor
halcyon horizon
#

Anyone willing to help me set up a server restart script?

#

Im so lost with this

#

I dont know what gist or chmod or tmux are, and it seems like this tutorial assumes that you know exactly what to do already

lament patio
#

Are you Linux or Windows?

halcyon horizon
#

Windows

spare venture
#

where is that tutorial

lament patio
#

Ah, well, in that case the tutorial doesn't cover it

halcyon horizon
spare venture
#

well yeah the tutorial assumes you understand linux, considering 90%+ of servers are run on linux

lament patio
#

You'll have to look for some start.bat script, but I can't recommend anything specific

halcyon horizon
#

Ive never heard of a server run on linux 😂

spare venture
#

you’ll need to specify windows when trying to find help stuff

warm anchor
#

Literally majority of Minecraft server runs on Linux

#

I can’t think of a host that uses windows

spare venture
#

88%, sorry

warm anchor
#

Tfw windows NT

spare venture
#

i would just not use restart scripts

#

just use a start script that uses a loop

halcyon horizon
#

Okay so, in spigot.yml, I set "restart-script: ./start.bat" to whatever my "runtheserver .bat" file name is?

golden gust
#

the script there won't work for windows, on windows you'd just have a "goto" loop and deal with stopping it yourself, basically

proud lance
halcyon horizon
#

What are those?

proud lance
#

wrappers for windows apps to run as services

#

so if your server crashes its automatically restarted and you can control stuff like starting the server on a different user account, etc

halcyon horizon
#

I just want my server to start back up when I type /restart 😅 I dont understand why that isnt just part of it by default

spare venture
golden gust
#

It is

spare venture
golden gust
#

Just, the entire mechanism is flawed

spare venture
#

i rarely see anyone set up a restart script using spigots stuff

proud lance
golden gust
#

imagine if you where dying and you had to pop out a new one of you to keep the world moving

spare venture
#

every guide i’ve really seen tells you to use a loop

golden gust
#

it just, not great

#

am sure you could do the fancy thing we do for linux in powershell

#

or maybe even batch

#

It just requires that somebody knows how to work with other of those things and do it, and, thus far, nobody has stepped up

#

:restart
java ...
goto restart

#

or whatever it was, is rundementaty, everything will restart even when you don't want it to, but, it works

spare venture
#

can get as fancy as you want too

tropic flame
# golden gust or maybe even batch

and I felt inspired so here it goes

@echo off
chcp 65001

:loop
java -jar server.jar
choice /C YN /T 30 /N /D Y /M "Would you like to restart the server? (Y/N):"
if %ERRORLEVEL%==1 (
    echo Restarting server...
    goto loop
)

echo Server stopped! Press any key to exit...
pause>nul
exit
#

batch ain't as bad as some make it sound lmfao

#

(this will basically restart the server automatically after 30 seconds if you don't go to the command prompt and press N to cancel)

golden gust
#

hardly on par to what we have for linux

#

I mean, it works

tropic flame
#

well, it's mostly the equivalent to what I have for my servers' scripts on linux so it's pretty good to me

golden gust
#

But, nobody here wants to learn batch to do something for an environment they don't care too much about

tropic flame
#

now I'd only add a second choice to ask if I want to make a backup of the world

#

and probably use 7-zip's CLI tool for that

nocturne urchin
#

what's a recommended server jar for 1.8, or are you guys gonna tell me to have 1.18 backend ._.

golden gust
#

do whatever you want

#

if you want support, use a supported version

nocturne urchin
#

fair enough

tropic flame
#

i just felt like flexing with my first language ever a little LMFAO

elfin cipher
#

how to enable individual mob cap on paper?

warm anchor
#

It’s enabled by default

#

Unless you are running a super old 1.17

#

Per-player-mob-spawn in paper.yml

elfin cipher
#

alright,but i've experienced low spawn rates on mob farms when people are in a far

#

how to fix that?

spare venture
#

low spawn rates compared to singleplayer?

elfin cipher
#

yeaj

#

h

#

the spawn rate is normal when people are bunched together

warm anchor
#

That’s just how it works

elfin cipher
#

if one player is far away from mob farm the spawn rate is low

warm anchor
#

Even with per player if someone has a less than ideal condition for mob to spawn around him, it will be more likely to pop up around others

golden gust
#

mob spawning is naunced af

#

many issues are down to misconfig/not understanding how mob spawning works

elfin cipher
#

i see

golden gust
#

but, generally, mob spawning is just broken af and the only good fix for it ever is gonna be to just completely replace mob spawning

warm anchor
#

I pinged you in #paper-help (which is the correct channel for questions) read that wall of text @elfin cipher

golden gust
#

per player helps mitigate some of the wider issues and even vanilla does that in 1.18, but, there is no overall magical solution for all issues, it involves tryna pick off more individual stuff

spare venture
#

alternatively design your server around different mechanics

#

singleplayer doesn’t translate well to multiplayer

golden gust
#

plugin idea: virtual farms

spare venture
#

yeah i thought about that a while ago

#

had a system designed so that it wasn’t just loot appearing in a chest

golden gust
#

I've been saying that one for a good year or few 😄

#

was thinking of basically a gloriful inv UI which would let you do stuff like "feed" your animals

spare venture
#

however i hate automation so i just started going the route of more manual stuff

warm anchor
#

People in my server just built at spawn and share farms. Works quite well PepeLa

spare venture
#

i.e. sieving gravel to get gunpowder

golden gust
#

thing would scale the capacity based on a ringed fence would would have NPCs which roam around for the feels

#

Just, am not really interested in much plugin stuff anymore given that most of the stuff I do work wise is around MC

spare venture
#

when designing mechanics on my server i try to do two things: encourage active playing that isn’t too grindy, and try not to get stuck in a GUI

lament patio
#

A very effective strategy in my server was not to whitelist anyone who messed with redstone

#

Nah, on a serious note, I just make the restrictions very clear in the application process

golden gust
#

yea, that's part of why I was also semi iffy about it

#

but, I mean, in part it's not like most beef farms, etc, care

spare venture
#

i’ve evolved a lot from having an afk farm server

golden gust
#

but, depends on server type, etc, as to how well that plays out

#

big issue ofc i that "general server overload" is the biggest unsolvable one

warm anchor
#

Good technical player can work around it and avoid some of the most heavy farms

golden gust
#

good

#

U see ur mistake der, rite

warm anchor
#

But sadly majority of people who build farm is just copying

spare venture
#

the less automation you have with vanilla mechanics the less your server will lag too

golden gust
#

Most "technical" players ^

#

I sawded it in a YT video

#

Y U NO WERK?!

spare venture
#

yeah

warm anchor
#

Lol

spare venture
#

0 ability to adapt to the multiplayer bukkit mechanics

#

because they don’t know how shit works in the first place

warm anchor
#

At least for every minimum effort make a ON/OFF switch

#

And no you don’t need 200k bamboo

golden gust
#

goood I fucking hate node...

warm anchor
#

It’s not even a good fuel

spare venture
#

mfw my pc started and said that it didn’t load correctly, i click continue, it restarts anyway, and now it’s updating my bios

#

pure fear

warm anchor
#

Now you said it. You jinx yourself

minor otter
#

Better than Vayne yourself

spare venture
#

i made it

vernal moth
#

Happy tows-day tuesday

pastel torrent
#

what's with the attitude against kotlin here? the only sticker in the server is

golden gust
#

memes

true canyon
#

There are two things cat doesn't tolerate - bullying anyone over their choice of programming language, and fools who use kotlin

spare venture
#

because it is too advanced for java

#

duh

golden gust
#

I pity the fool who kotlins

#

what's fun is that the spigot IRC channel used to change "fuck" to kotlin after there was muucho discussion around it

vernal moth
#

And after the old censor, hypixel, didn't make sense anymore cause agent left irc

vernal moth
#

does anybody care about my api diff thing?

#

apparently it has been broken for a while

#

should be up to date again now

#

somebody know a new api and can confirm?

void void
#

I noticed it was outdated a while ago, but thought it was just updated manually

vernal moth
#

nah monday is my patch day, thats where I schedule all this kinda stuff, renovate, etc

#

paper adds 243 methods btw

void void
vernal moth
#

excluding stuff in our own package of course

#

it can't work, lol

#

ok I give up

#

jdiff isn't compatible with java 17

#

Caused by: java.lang.ClassNotFoundException: com.sun.javadoc.Doclet

#

and if I don't use java 17 it can't work cause it can't parse switch expressions

solid siren
#

any idea how to disable bows on spawn or lobby so it is not spammed by arrow

worn crest
solid siren
#

even with pvp off

#

they can still use bow

prime coral
vernal moth
#

Nice little story

charred sleet
vernal moth
#

thank you jenkins

lilac moon
#

enderman farm enchanting area

#

deep slate bricks looks just like the one block from tinkers construct

#

beautiful block though

velvet garden
#

That feeling when you're almost free of static getters but then citizens2 comes through the door like "oh yeah gotta have no-param constructors for traits" ._.

cosmic raft
#

hm?

neon bramble
#

Nvm

#

That wouldn't probably work

#

Well, citizens is at it again

meager tusk
#

Citizens is terribly made.

vernal moth
#

I just realized how nice our sprint aligned

zenith lodge
#

nice

#

that was deff on purpose

vernal moth
#

nah, its always Wednesdays, 3 weeks

zenith lodge
#

oh

magic river
#

The following NEW packages will be installed:
libgnome-desktop-4-1 pkexec polkitd
Can I not?

#

Oh, I think this is them splitting pkexec in to its own package so maybe I can remove it after the upgrade

#

Instead of just policykit-1 I have packages for each part

#

hmm, guess that's not done yet

vernal moth
#

now my favorite part of the sprint review comes, the performance marketing team presents stuff

#

maybe I get to see tiktok stuff again, that was fun last time

#

lmao, the focus on a single product now because it sells like crazy on social media

ashen cliff
velvet garden
# cosmic raft hm?

what hm xD traits can't have params in constructors since citizens instantiates them via reflection

red timber
#

umm

#

what are you doing that you need a static getter for your trait?

#

you do realise that traits are instantiated per NPC?

vernal moth
#

other way around

#

the trait needs the plugin instance

red timber
#

ah forgot that

#

JavaPlugin.getPlugin(YourPlugin.class) then

#

iirc that worked fine in onEnable

vernal moth
#

well, a static getter is faster

#

but ye that will work in most cases unless you do fancy stuff with class loaders

glass crag
#

I created a blank abstract Base class which the actual trait inherits to satisfy the no-args constructor requirement

marble lark
#

didn't cat literally say once that he adores Kotlin

red timber
#

yep supplier solution is way better

#

didn't even remember you could do that lol

#

been too long since i touched minecraft

magic river
velvet garden
#

why does plugman have to break everything, plugin works fine ->/plugman reload plugin -> e.getInventory().getHolder() instanceof X returns false even though it's supposed to be true

pallid edge
marble lark
#

reloading a server does some janky stuff that can result in stuff like that (I assume that's what that plugman command does)

magic river
#

Netflix is going to be $20/month

velvet garden
ashen cliff
#

Unload stuff correctly on disable?

solid siren
#

is there a way to give players like speed boost when they enter a specific world like spawn or lobby

marble lark
#

listen for PlayerChangedWorldEvent

#

then when it triggers get the world they're switching to

#

which you'd do by event.getPlayer().getWorld()

#

(iirc PlayerChangedWorldEvent#getTo was removed quite some time ago so you'll have to do the above instead)

tropic flame
#

it wasn't exactly made for loading and unloading code on demand - you can do the former easily but not the latter (or at least without eventually getting a chronic headache)

marble lark
#

you'd only really have the change the classloading code (In practice this would probably mean the code inside share/classfile and share/cds), the JVM runtime itself doesn't really bother when and where code was loaded or unloaded

ashen cliff
marble lark
#

lmaoo i just realised that

ashen cliff
magic river
#

You have to very carefully keep all your modules isolated from each other, makes working with it a huge PITA but keeps it all very flexible and afaik it can unload stuff cleanly

marble lark
#

speaking of the JVM good god

ashen cliff
#

Just hire a whole team.

true canyon
#

Salary range 10-15/hr depending on experience

magic river
#

Is this a job working on the JVM for Oracle, RedHat, or IBM?

ashen cliff
#

Some better send that comic.

marble lark
#

specifically the OpenJDK project

magic river
#

Sounds about right then, must be a senior position

#

For that kind of position I would expect the pay to be at least $150k/yr

true canyon
#

That list was "choose two" right?

magic river
#

Unless it's in the EU, then cut that in half 😛

marble lark
spare venture
#

at least $150k/yr? maybe if you’re in kansas

marble lark
#

and i guess get a new PC that's actually good

#

my current one has the fan grinding against its insides whenever it powers on

vernal moth
#

you should be able to escape poverty with way less than that

marble lark
#

yeah pretty much

#

also depends if the speculated 150k a year is in US currency

#

pretty sure it is though

magic river
#

This is a very senior position but also for not for one of the big 6 so I'm not sure you'd get a lot more than that

marble lark
#

that's a lot

magic river
#

That's $12,500 a month in my local currency 😛

#

Is yours CAD?

marble lark
marble lark
vernal moth
#

now I understand why you aren't impressed by 150k, lol

marble lark
#

who?

magic river
#

Average in Singapore is $4000/mo, apparently

#

Dunno if that's USD or SGD

marble lark
#

5000-8000 SGD from what i remember

#

12500 USD is more than twice as much as what most people earn here anyway lel

quasi valley
#

12k is more than twice as much as most people on earth earn

magic river
#

That's almost twice what I make a month 😛

quasi valley
#

you don't have to be poor or even above average to be impressed by 150k a year

warm anchor
#

150k SGD is about 100k euro

#

That’s pretty good amount of money

vernal moth
#

I was more like hinting at singapore being an expensive city, no?

warm anchor
#

I guess a lot of people here make 6 figures so it may not seem to be a lot

marble lark
#

everything here is costly af

magic river
#

I probably could make six figures but then I'd have to live somewhere where $200,000 for a house is a steal instead of being on the high end

warm anchor
#

For a cool million you can buy a toilet sized room in Singapore krappa

vernal moth
#

also, typical disclaimer that comparing wages across currencies and countries is useless af

magic river
#

Hell in those places $200,000 would be the down payment on a house

vernal moth
#

a 80m2 flat here would cost me half a million

marble lark
#

now an apartment smaller than where i live is like 1.6 million

magic river
#

My house is 140m2 and in the current market is still only $120,000 at most

#

Well, I could probably get more for it, if I put $10,000 in to some cosmetic work first

#

Not interested in selling though so... I'll get to those eventually 😛

charred sleet
#

eh i guess singapore doesn’t have much space

marble lark
charred sleet
#

granted i have been there and it seemed pretty open in the north

marble lark
#

even public housing costs upwards of 600k

warm anchor
#

You can literally jog across their border in a few hour @charred sleet

#

From one end to anther

marble lark
#

depends which end you jog from

#

top to bottom is a mere 20 or so kilometers

charred sleet
#

are there any houses on sentosa

#

i cant remember

marble lark
#

yep

#

there are

charred sleet
#

god they must be expesive

marble lark
#

they used to be dirt cheap until 2020 i think

charred sleet
#

really? why?

#

its so nice there

marble lark
#

back then no one really considered buying a house there

#

then that changed pretty recently

#

sales rocketed pretty high

#

and with that so did the prices

charred sleet
#

i mean singapore was already pretty pricey tbf

#

really pretty

#

but expensive af kek

quasi valley
#

housing prices are zooming

marble lark
#

that's a small city for you i guess

charred sleet
#

*country

#

lol

#

god its hot as well

marble lark
#

it's kinda of both city and country anyway xd

#

the education here is probably on par with south korea in terms of mental health issues lmao

#

someone did say "It's nice to visit but don't live there" while referring to Japan once

#

not sure if it holds up for this instance too

warm anchor
#

It applies to pretty much all Asia countries tbf

#

I will visit all of them as tourist

charred sleet
#

lol what happened to google maps, its like they tried to do a 3d look but got it the wrong way up haha

#

all falling over 😳

marble lark
#

lmao

warm anchor
#

You should check Aus it’s all upside down krappa

charred sleet
#

lol

marble lark
#

managed to get the chinese swimming club in the view

#

used to go there and just sit at the arcade machine without actually playing it

#

i probably looked like a dumbass

warm anchor
#

Oh no shaerman is one of those

charred sleet
#

this whole area looks like it

#

weird

marble lark
charred sleet
#

tell me, are the buildings falling over lol

marble lark
#

well

warm anchor
#

I know someone from Singapore

marble lark
#

if you don't count that one time a hotel imploded on itself in the 1980s I guess not?

warm anchor
#

We can take Sherman out EmaBkr

charred sleet
#

😳

marble lark
#

:)

charred sleet
#

somewhere here

warm anchor
#

Oh yes

charred sleet
#

just gotta search like a million people ig

quasi valley
marble lark
#

fuck

warm anchor
#

As leaf would say, one nuke will be enough krappa

marble lark
charred sleet
#

are you not?

marble lark
#

not?

charred sleet
#

you said you were decently close to there lol

#

so i assumed

marble lark
#

oh

#

north of marina bay, in woodlands

quasi valley
marble lark
#

yes

warm anchor
#

TRUE

charred sleet
#

knenny got it

void void
#

kenny casually doxing millions of people smh

marble lark
#

smh my head

warm anchor
#

we should find Noah next

quasi valley
warm anchor
#

Wait Noah is Briti*h ??

quasi valley
#

no omegalul

void void
#

lmao no

#

imagine

#

@waxen panther thoughts?

warm anchor
#

@waxen panther thoughts?

#

Lmao

smoky cloud
#

Imagine being British harold (this is sarcasm I am British)

charred sleet
#

yes

warm anchor
marble lark
charred sleet
#

i can imagine

twin lagoon
#

@waxen panther thoughts

warm anchor
#

I would ping cat but you will need to pay me enough for the risk

smoky cloud
#

Cat will get lost at the sheer volume of roundabouts my town has

charred sleet
#

britain is shit

waxen panther
#

my thoughts on what

untold meadow
#

@waxen panther thoughts

charred sleet
#

do not come

waxen panther
#

there's too many words

void void
waxen panther
#

sorry

warm anchor
#

Being Briti*h

charred sleet
#

you dont need to dox urself

warm anchor
#

Sherman really want people to visit him

marble lark
#

i only gave the location of the train station closest to me kekwhyper

warm anchor
#

He’s jusf lonely

charred sleet
#

close to the f1 track then

marble lark
#

r/technicallythetruth

warm anchor
#

We are hitting it too real for Sherman now

charred sleet
#

in other news

marble lark
#

lmao

charred sleet
#

there might be a war!

#

woo!

#

fun!

marble lark
#

I doubt Russia's actually gonna do it tbh

#

gets hanged by JRoy

charred sleet
#

its ok he isnt online

#

he cant hurt you

spare venture
void void
spare venture
#

entry level is $104k in seattle

marble lark
#

i know, but i doubt they'll actually start fighting

charred sleet
#

im confused as to what they gain

#

like

marble lark
#

or at least i hope

charred sleet
#

its not like they need more land

spare venture
#

politics 😳

magic river
spare venture
#

weird that it doesn’t go up that much

marble lark
void void
spare venture
#

bet

#

i watched the UN thing last night and it was wild hearing russia justify it

charred sleet
marble lark
#

honestly though it'll probably be a compromise

solar meteor
#

happy 2/22/22 paper people

marble lark
#

Putin isn't dumb to start such a devastating conflict + the Russians back at home also don't want a war

spare venture
#

i wouldn’t assume much about him

#

i know of another place with similar history: sudetenland

#

i’m sure we all know it ended there right

marble lark
#

well... yeah

magic river
#

It's a pretty common way for imperialists to justify their expansion

spare venture
#

yup they are protecting those people from the evil illegitimate ukraine regime /s

marble lark
#

might just be wishful thinking on my part

magic river
#

30 years ago 85%+ of the people in that region voted for Ukraine to be not Russia

marble lark
#

but i doubt Putin is extreme to the point that Hitler was

spare venture
#

why do you doubt that

unkempt drift
#

Hitler was an ideologue, putin isn’t.

spare venture
#

he loved a country that collapsed and is now a hollow shell of what it used to be, and now he has a chance to try to restore it to former glory..

unkempt drift
#

Yeah, but putin can be expected to be much more rational.

spare venture
#

maybe

#

hopefully

unkempt drift
#

Hitler was irrational, especially towards the end of the war, not using slave labor, but killing millions instead

marble lark
#

but even if he didn't have the human decency to consider that the decision to go ahead will effectively murder millions of innocent people, there's still his support back home that risks falling

spare venture
#

but i sure hope no world war is starting over ukraine

marble lark
#

the Russians (and probably the soldiers currently being deployed rn) don't want to start a war too

marble lark
#

yeah

#

me too

cunning raft
#

Drop it

viral hornet
#

It's no longer funny 22/2/22 day here

spare venture
#

2/22/22*

charred sleet
#

wow australia is such a spoil sport

viral hornet
ashen cliff
#

22/02/2022. kekwhyper

viral hornet
#

Americans 🙄

#

Weird date format 🙄

#

Fahrenheit 🙄

charred sleet
#

kelvin 🤩

foggy silo
#

It’s twosday innit bro?

smoky cloud
#

Two for Tuesday

spare venture
charred sleet
left swift
#

what the fuck

#

I'm sorry I failed u jeoy

spare venture
#

jeoy

viral hornet
spare venture
#

have you seen the australia prefix on my server

#

the letters are upside down 🙂

left swift
#

funny

viral hornet
#

Where is my australia prefix barry??

ashen cliff
#

@meager tusk bro!

meager tusk
#

Bro.

spare venture
#

sorry camm you don’t get one

meager tusk
#

What's up?!

ashen cliff
#

Why are you drifting out airplane?

#

I told you not to do that over 🇷🇺 bro!

ashen cliff
magic river
#

They deleted it

frank otter
#

yeah that link is not going anywhere

#

there's a no-call sign one I think in Russia nearish the border

#

but it's registered under a commercial airline

vague lagoon
#

There was a drone(?) a while ago on it