#waterfall-dev

1 messages Β· Page 11 of 1

harsh harbor
#

imagine doing that every time by hand

gentle burrow
#

πŸ˜‚

bleak current
#

that procedure is simple

#
  1. update submodule
  2. apply patches
  3. regenerate patches
  4. script generates a commit message
#

and that's it

thorny holly
#

sexy profile pic you got there mikro

bleak current
#

thanks

bleak current
#

How do I add a custom no permission message for a command? Should I do the permission checking myself?

lean gobletBOT
#

you can set the permission-message in the plugin.yml or via Command#setPermissionMessage

#

oh wait

#

waterfall, nvm

bleak current
#

yeah bungee

trail plume
#

You can't, basically

#

you could deal with the perm check yourself, but, then the command would show to people who don't have it

bleak current
#

hm ok

scarlet anchor
#

Hello, there is a way to get premium and crack in the same time ?

bleak current
#

yes

#

get a cheap account from alt bin and use remaining money to get crack from local reseller

scarlet anchor
#

no but like funcraft

#

(a french network)

#

if i'm premium, i don't get password thing and if i'm crack, i get password thing

bleak current
#

if they did it then there's definitely a way

scarlet anchor
#

yes

#

but how without modifying bungee ?

bleak current
#

you answered your own question then

scarlet anchor
#

because i don't find the event

bleak current
#

go ask them

scarlet anchor
#

i'm here for that

bleak current
#

idk how they did that

civic valve
#

you're not gonna get support with offline mode here anyway

#

it's unsupported

scarlet anchor
#

it's supported

#

because there is "online-mode" in bungee

#

but how i can get if the player is a crack or a premium

bleak current
#

ask them if they're crack, if yes then apply some tape and hope they'll be ok

scarlet anchor
#

yes but how i know that

civic valve
#

ask nicely

scarlet anchor
#

yes sorry

jade wedge
#

you're not gonna get support with offline mode here anyway
why is offline mode not supported jw?

scarlet anchor
#

what is "jw" ?

jade wedge
#

just wondering

scarlet anchor
#

ah yes (sorry i'm french)

civic valve
#

why is offline mode not supported jw?
@jade wedge a lot of bugs can happen with it

#

plus it's supporting cracked accounts

#

we're not really a fan of pirates here

scarlet anchor
#

offline mode is not illegal

#

if offline mode was illegal, i was certainly never purchase minecraft

civic valve
#

yeah it's not illegal

jade wedge
#

if cracked accounts were illegal, mojang would have done something about it ages ago lol

#

but yeh i get that

scarlet anchor
#

and all of the french network is offline ^^

civic valve
#

cracked accounts is game piracy

#

technically illegal

scarlet anchor
#

FunCraft is offline

#

no

#

because the EULA accept this

#

it's one the biggest network in the world

civic valve
#

You are legally allowed to run offline mode servers yes

#

you are not allowed to crack the game

scarlet anchor
#

funcraft have a launcher ^^

civic valve
#

offline mode's intended use is to be able to have servers work over LAN

scarlet anchor
#

and never have a problem with mojang

civic valve
#

you're misunderstanding

bleak current
#

have you tried googling your question already?

scarlet anchor
#

yes

#

but nobody do like funcraft

#

because if i'm premium, i don't have to type password in funcraft

#

i want to do the same

bleak current
#

because such system is hard to pull off decently

#

if you want to lose some features, such as players not being able to change their username

#

or just see how your plugins start blowing up

#

go use FastLogin

#

good luck

scarlet anchor
#

no, i just want to know if a player is online or not

bleak current
#

there is no reliable way for that

#

you have to force authentication then

scarlet anchor
#

how

#

oh

#

i think i got a solution

#

a french network called samagames close recently

#

and crack was allowed

#

and the source code was opened

bleak current
#

whatever floats your boat

scarlet anchor
#

thanks

civic valve
scarlet anchor
#

but there is no way to get this in bungee api ?

bleak current
#

look at the damned code

#

in bungee

#

it's not hard

scarlet anchor
#

yes

sharp isle
#

@scarlet anchor samagames was a premium server

scarlet anchor
#

yes my bad

weary grove
#

I'm dumb

#

Missed the search box

zenith dune
#

why isn't travertine just merged into waterfall?

trail plume
#

because sod maintaining that proto patch in waterfall

#

being able to say "screw it, I'll deal with travertine later" is such a blessing

zenith dune
#

huh ok makes sense

unkempt pecan
#

Hey guys, writing a little plugin at the moment, but not sure how to access my config YML. Anyone able to help me out?

potent lichen
#

Pretty sure YamlConfiguration.loadConfiguration is what you're looking for

#

and of course you need to save your config file to the filesystem

unkempt pecan
#

when I'm implementing it into an event listener, do I have to pass my plugin with the call for registering the listener?

potent lichen
#

"implementing it into an event listener"

#

what does that mean?

#

do I have to pass my plugin with the call for registering the listener

#

Yes

unkempt pecan
#

Alrighty

bleak current
#

ahh sorry I did a mistake worked now

unkempt pecan
#

How would I set a colour for the MOTD, where I can change the colour?

lean gobletBOT
#

iirc there is a ServerListPingEvent or something like that

unkempt pecan
#

I set the MOTD on a ProxyPingEvent,

#

I can set a simple text Component, however the colour eg &4 doesn't work for me. What's the correct usage within a string to change that aspect's colour?

lean gobletBOT
#

you can set the color via the component

unkempt pecan
#

by .setColor?

lean gobletBOT
#

yes

#

I suggest using the ComponentBuilder though, it makes creating formatted messages a bit easier especially if you want multiple colors

#

(or convert from the legacy color codes with TextComponent#fromLegacyText)

unkempt pecan
#

What's the current colour code format?

lean gobletBOT
#

but there are also libraries that improve that format and add their own twist e.g. by xml or markdown inspiration (MiniMessage and MineDown)

#

the current format is json encoded chat components

unkempt pecan
#

so, if I were to have something like this:
"&9A Minecraft Server&r\n&4Here is another line"
Would my best bet to be to split on & then parse that into a component builder?

molten jackal
#

Just built waterfall from sources, which jar should I use?

#

OOP

#

never mind

#

i didnt read OMEGALUL

lean gobletBOT
#

C​oo​lc​al​: you could translate the color codes to the legacy ones witht eh chatcolor method and then use fromLegacyText

chilly coral
#

is there an "easy" command to follow upstream version change ?

#

because when i do ./waterfall merge in my own fork to follow waterfall update and that the version changed, the first patch with POM changes cannot by applied and i do it manually each time

civic valve
#

use travertime as a waterfall fork base

chilly coral
#

thats what i do

civic valve
#

./travertime up

#

should pull changes

#

then do ./travertime p

#

then

#

./travertime rb

chilly coral
#

that's what ./waterfall merge does

civic valve
#

ah

#

does the same thing happen when done manually

chilly coral
#

i think i missed a step for this kind of situation

#

maybe cat or a maintainer could tell me their magic tricks

bleak current
#

you should do it like travertine then

#

no, really

#

that's what i do

chilly coral
#

hum, did you only switched to gradle ? x)

bleak current
#

no

chilly coral
#

i might be blind

#

(must)

bleak current
#

definitely

chilly coral
#

😩

scarlet anchor
#

Hello, where is the waterfall maven?

lean gobletBOT
#

pretty sure it's in the general paper repo

scarlet anchor
#

i don't find it

trail plume
#

Same maven repo as paper

#

Artifact info is in the pins

scarlet anchor
#

what is repository ?

#

ok mb

dense sphinx
#

Hi, is there any way to modify Query response? I am using multiple travertines (waterfall fork) and I want to merge player amount also on query response

#

If not then please - add special feature to do easy modify query responses with waterfall.
It will give some new possibilities to your awesome project and this change may push some bungee users to your fork just because of this small change c:

bleak current
#

query protocol is one of the most abused parts in bungee and its forks

#

wouldn't recommend turning it on nowadays

dense sphinx
#

Some very popular server lists still use it and due to that lots of server owners are forced to have it turned on :/

plucky osprey
#

Yeah, we got attacked/ddosed on that port. Sadly some serverlists need it and don't even support specifying a different port πŸ˜„

dense sphinx
#

Damn.. I would like to drop all udp packets but problem is that I will stop exist on 1/3 server lists in my country 😦

#

Thats why I am asking for extra query api :c

plucky osprey
#

Don't they only use that for player count and motd?

dense sphinx
#

Yep, I have messaged lists owners but most of them simply do not really care about moving from query to ping

#

The problem is that they are 1, 3 and 6 in google result in my country if you type "minecraft server" πŸ˜„

plucky osprey
#

german lists are also like that

dense sphinx
#

So thats the problem - server lists. Until they will be very high in google search results, users like me can not disable query. Maybe moving query to separate .jar as server that does ping to specific port when someone query that port will be good idea?

plucky osprey
#

the worst one at least supports querty port rerouting

#

if you have a separate jar, that still suffers. At best it would be a separate server

weary grove
#

You can use ProxyQueryEvent... but TBH you shouldn't enable query if you can help it

dense sphinx
weary grove
#

This event will be posted whenever a Query request is received.

bleak current
#

probably failed delombok

weary grove
#

F U C K L O M B O K

#

just going to say it, Velocity is proudly Lombok-free

#

so we have real javadoc

bleak current
#

bUT thAt mAKeS pORtiNg coDE frOm mY cUStoM 4000$ flAMeCurD forK hardEr

weary grove
#

"flamecurd" πŸ˜‚

bleak current
#

and we land stuck with a messy/incomplete solution rather than the issue remaining open and a proper solution being created.

weary grove
#

I decided it'd be better to strike the concilatory tone than be mean

bleak current
#

man whole bungee is messy/incomplete solution

#

and zero and perhaps negative interest from him to make it any better

#

what a fucking perfectionist came out from him now

plucky osprey
#

Contributing is not supposed to be an exercise where you drop by, make the code the maintainer's problem because its convenient for you and then disappear forever
That's the optimal solution, but reality is that even the key persons in projects can vanish without further notice. We've been suffering from that quite often

weary grove
#

I could have, if I wanted to, just unloaded on him, but I felt it'd be better to try and be civil

plucky osprey
#

I've never seen any project like requesting that, though. They may only reject PRs because it's a too large maintenance burden, but they never except contributor maintenance

weary grove
#

That was hard to do

#

bUt We StIlL nEeD tO sUpPoRt JaVa 7 :(((((((((((((

plucky osprey
#

yeah that doesn't help anybody, unfortunately. Occassionally I also need to do the Torvalds, but in this case...

dense sphinx
#

who uses java 7 in 2020, lul

weary grove
#

The only reason for the bump was because Mojang forced it

dense sphinx
#

Btw, why FlameCord is bad in your opinion? I saw you laught at it but I do not understand why - want just to know :x

"flamecurd" πŸ˜‚
@weary grove

plucky osprey
#

well starting with the fact that they sell such things instead of working with the community

weary grove
#

the author of FlameCord has produced some truly awful patches to exploits and sell those "patches" instead of contributing them

#

I have produced higher-quality patches for free in Velocity

dense sphinx
#

I have produced higher-quality patches for free in Velocity
@weary grove
They are implemented into WaterFall? Or its your own fork :x?

weary grove
#

Velocity isn't a fork of BungeeCord, let alone Waterfall

#

It's not a fork, so I have the liberty to implement features BungeeCord and Waterfall will never see in a million years

dense sphinx
#

I first time hear of something called "Velocity". It is separate project?

plucky osprey
#

but that one patch has been pulled into waterfall

weary grove
#

Yes, it was my patch that was pulled in

dense sphinx
#

Where can I find source of this project? :x

weary grove
dense sphinx
#

And it is not bungeecord fork :o?

weary grove
#

It's not a BungeeCord fork, period

#

electroniccat, who maintains Waterfall for the most part, is all but urging people to use Velocity instead, and for good reason

dense sphinx
#

This project is really that good? It is not in testing (ready for normal use)? I mean, if I would like to use it, do I have some risk of crashes or something like this?

weary grove
#

It's been ready for normal use for over a year now.

dense sphinx
#

I see it has lots of same classes as waterfall

weary grove
#

Any similarities you see are merely coincidential. Peek inside, it's very different.

dense sphinx
#

Well, time to try it πŸ˜„ Is there any wiki how to create plugin for it?

weary grove
#

The documentation isn't in good shape right now, but there's an effort to improve it.

dense sphinx
#

So maybe some example of other plugin?

weary grove
dense sphinx
#

Why is it better than bungeecord? Is there a major reason to move?

weary grove
#

performance is better, the API is better, security is much better, ...

dense sphinx
#

Ok, I see :x
Time to start moving into it. Thanks a lot for sacrifice of your time for someone random πŸ˜„

#

Ah, I have one more question

#

Does it support any mc version?

weary grove
#

1.8-1.16.1 for current stable version, 1.7.2-1.16.1 for the latest development version

dense sphinx
#

1.7 - 1.16 is what I need. Thanks! dev versions are complied or I have to complie them myself?

weary grove
dense sphinx
#

Btw, didnt you create redisbungee? I remember your nickname from somewhere :x

weary grove
#

if you have any more questions, please ask them in the Velocity Discord as this is not the right place to ask them

#

Yes, I made RedisBungee and I both liked it and also really regret it.

dense sphinx
#

I have bought your premium plugin in ~2015 as I remember xD

#

why you dropped it?

weary grove
#

IRL problems, lack of motivation

dense sphinx
#

Damn, I have reported bug on github with channel register. Due to this small mistake it is impossible to get information from spigot plugin point from redis :c

weary grove
#

late 2014 through late 2017 were a very terrible time for me IRL

#

well, too bad

#

RedisBungee is dead

#

Do not use it, it's not supported

dense sphinx
#

There are no alternatives :c

weary grove
#

And I sure as hell won't support RedisBungee for you

#

In the past I thought about reviving it, but I've decided it's better for me to focus on Velocity and work towards proper multi-proxy support in Velocity instead.

dense sphinx
#

Velocity has multi-proxy feature?

weary grove
#

It doesn't have that yet. In the future, yes, but not on the immediate horizon.

wary inlet
#

it has a very cool api tho, i really enjoy writing a plugin im working on, unlike my experience w bungee

dense sphinx
#

Well, it would be very nice if it would have it :x

trail plume
#

General gist is that velocity is a much better option if you're starting up, and worth looking into switching; You see, being a fork it means that we're limited by upstream, literally every change also induces massive headaches because bungee just doesn't have the API that people need so people often go crazy with hacks to pull stuff off

#

I literally had to revise a "simple" patch multiple times because plugins where messing around with stuff

dense sphinx
#

Main problem with Velocity is the community size and plugins amount created by them. Lets say I want to switch to Velocity right now. I am using just few plugins, RedisBungee, Motd-related plugin and MultiLobby. There is lots of work and testing to do before switching. Thats the problem when you create separated project from start :x

trail plume
#

at the end of the day, a project like velocity wouldn't be viable without that split

#

It was partially me which kinda like, lit the fire up his arse to actually pull it off lol

wary inlet
#

we're working on it, several people (me included) not involved with velocity's development but rather growth are putting time into making it viable for server owners ^^

trail plume
#

Tux does contrib stuff back to velocity, either directly or sometimes just throwing stuff on my backburner which I need to sorta catch up on without sheer death; Many of the improvements I've had over the years have often had a "oh shit, but the plugins"

dense sphinx
#

Maybe try to add tons of most used external features into in that project to make it more comfortable to switch? Like multiproxy, nice motd & server list formating options and so on

trail plume
#

Throwing all that stuff into the core project doesn't work too well

#

At the end of the day, the power of these projects is in their ability to give you power to do what you want

dense sphinx
#

So maybe split if for modules or something?

trail plume
#

"multiproxy" is literally nothing, you just spin up proxies which do stuff

#

Now, what do you want? player count sync? Well, which techs do you support?

dense sphinx
#

by multiproxy - I mean sum of player count in ping/query listeners

trail plume
#

It makes much sense to let the community dev those tools where they can actually account for users whims fast, without basically making velocity essentially act as multiple large projects together

#

That's how you end up with stuff like CMI

dense sphinx
#

Yeah thats true but this project leaks of community members who would like to create plugins like this so it would be great idea to implement all this things to core just at beginning to raise community :x
I really enjoy your projects, they are awesome and very valuable. I am just giving you ideas to progress it

wary inlet
#

velocity's not in its beginning stages, that was 1-2 yrs ago

#

and We Are Working On Itβ„’

trail plume
#

but it's not great to implement that in the core

#

It's easy to see why you'd thing it would

#

but, that's essentially two projects in one

#

For example, how do you get that information across proxies?

#

The issue is that a "simple" feature for shading counts across servers is actually complex when you get to it, you can easily end up with another huge cludge of a project to maintain in your existing project that it just falls into the corner

dense sphinx
#

For example, how do you get that information across proxies?
@trail plume Open special port/channel on one proxy and set all data in configuration on all rest

trail plume
#

That's a bad setup

#

That literally defeats a fair chunk of the gains of multi-proxy setups

dense sphinx
#

So maybe move calculations into other server like redis?

#

I do not know. I have no experience with things like this :c

wary inlet
#

be glad, synchronising shit is the most annoying part of this game

plucky osprey
#

However most likely you are over-optimizing, velocity should work fine with large player counts

bleak current
#

heck, check into velocity discord for real-world pictures

#

that how much it handled

#

630+ players

dense sphinx
#

By the way, is somewhere maven repo & dependeny information for travertine?

wary inlet
#

check papers nexus

bleak current
#

travertine has no api changes

#

so simply use waterfall api

trail plume
#

So maybe move calculations into other server like redis
And then somebody wants you to shove it into rabbitmq, or, somebody just wants to be able to hack it together on their existing infra with mysql, etc

dense sphinx
#

Where can I find data for it?

trail plume
#

The issue is as I said, you make a project into two projects; It's much easier to just let the community deal with that

#

I'd honestly be surprised it they didn't have something like that already, or, somebody didn't figure "Oh, I could do with that myself" and run off on it

dense sphinx
#

And then somebody wants you to shove it into rabbitmq, or, somebody just wants to be able to hack it together on their existing infra with mysql, etc
@trail plume
So maybe give possibility for Velocity to be something like redis server if this feature will be enabled and it will just store player amounts and counts and listen for inside packets
V
/ | \
V V V
xD

wary inlet
#

if its necessary, its happened already

trail plume
#

And that's just stupid too

#

once again, you literally kill the entire gains of multi-proxy

dense sphinx
#

but one Velocity in this case will not have opened port so you will have a gain

wary inlet
#

please just try it first, find its limits before asking how to expand them

weary grove
#

There are some plugins I’m going to work on to make Velocity more useful

#

I’m making an announcement plugin and will be porting over a hub balancer

lean gobletBOT
#

I started adding compatibility in to my resource packs plugins but no adventure was a bummer :S

#

so I had to halt that xD

wary inlet
#

ban will probably never leave development :')

weary grove
#

I added adventure to my dev branch lol

lean gobletBOT
#

well that's not in the repo yet πŸ‘€

#

or is there a dev repo that I could use

#

(maven)

wary inlet
#

there is yeah

lean gobletBOT
#

good to know

wary inlet
#

not home tho, so check docs i guess?

cold jewel
trail plume
#

you need to actually tell it to pull the sources jar

#

i forget how

potent lichen
#

Download Sources and Documentation

shell lagoon
#

Sounds like this is intended for Paper and not Waterfall. Regardless, 1.12.2 is no longer supported.

atomic zodiac
#

Oh, I sent that in the wrong chat. I guess I'll move the message.

foggy shoal
#

Is the Waterfall plugin messaging channel the same as Bungeecord? As in, player.sendPluginMessage(this, "BungeeCord", out.toByteArray());

lean gobletBOT
#

yes

viscid river
#

May I ask can waterfall run forge?

lean gobletBOT
#

waterfall is a proxy

viscid river
#

so what to combine waterfall to use with when I want to use waterfall with forge?

lean gobletBOT
#

waterfall can be put in front of any server, if you want ip/uuid forwarding then it needs to support that. either natively (sponge) or via a mod

viscid river
#

What mod?

lean gobletBOT
#

fabric has one, I would assume one exists for forge servers as well

viscid river
#

Can anyone just kindly tell me what is the mod for forge servers for running waterfall?

#

Phoenix can you please tell you the fabric one at least if you don't know the forge one at least

lean gobletBOT
#

.g fabric proxy mod

viscid river
#

.g proxy mod

lean gobletBOT
viscid river
#

.g forge proxy mod

lean gobletBOT
viscid river
#

phoenix can you tell me the sponge plugin as well? or it include inside sponge?

lean gobletBOT
#

sponge has support for bungee's forwarding built in

viscid river
#

okay

#

is there a version of waterfall of 1.12.2

lean gobletBOT
#

the proxy supports all clients from 1.8 to latest

viscid river
#

okay thanks phoenix please tell me how to use forge with waterfall without using sponge or fabric thank you

lean gobletBOT
#

I don't know, I don't use forge

#

als you should use the help channel for help

bleak current
#

Its my first time making a server, so I'm not really knowledgable

#

So I was wondering where to find the version of waterfall for 1.12.2

potent lichen
#

the latest version

bleak current
potent lichen
#

yes

bleak current
#

#366?

potent lichen
#

yes

bleak current
#

ok thanks

#

sorry its my first time

#

thanks though

potent lichen
#

no issue

#

by the way, I do not recommend you create a network from the beginning

bleak current
#

what do you mean?

potent lichen
chilly ember
#

Like im making a bungee plugin
And i need to get a servers Status like, Killed Stopped Restarting Starting
how can i do this?

trail plume
#

best you can do is ping it and see it's up

#

if you need to track state, that would depend on how you're running it, etc

chilly ember
#

Well what im trying to do is make it so it Tells someone with the permission that the server has gone down that its restarting if its been killed or stopped. Sorry this is my first plugin

trail plume
#

The proxy quite simply can't know that

potent lichen
#

you need to ping periodically

trail plume
#

there is no way to track if it's starting/stopping, best you can check is "is it responding to pings"

chilly ember
#

So if it doesn't respond then its stopped / killed / restarting

#

Okay this wont work I understand.

#

my second idea but bigger, would be to make a plugin like deluxe tags but with Bungee / waterfall support and MySQL i have no idea how to do this. if someone can dm me and help me through it that would help.

potent lichen
#

have you made at least a Bukkit plugin before? If you have no idea what you're doing I would suggest to start smaller

oak lion
#

Is it possible to make the LivingEntity.damage method Not call the EntityDamagedByEntity event

#

nvm

radiant oak
#

Why does it say waterfall 1.15.2

#

I installed the newest version

#

It doesn't say on the download page for which version it is

chilly coral
#

waterfall is not mc version specific

#

latest works from 1.8 to 1.16.1

#

if you need 1.7 go with Travertine

radiant oak
#

Oh?

#

But then how do I tell it which versions players should be able to join with

#

For some reason it wouldn't let me join my server with 1.16.2

#

I don't have viaversion

chilly coral
#

waterfall is not 1.16.2 compatible yet (not even BungeeCord)

#

the version check is forwarded to the backend server (aka paper/spigot...)

rustic rain
#

sometimes waterfall even updates before bungeecord

trail plume
#

I don't have internet, so, unless somebody PRs it, probs not gonna happen, don't feel like tethering for that

wide maple
wide maple
#

noticed f*cked packet offsets

#

sec

wide maple
#

fixed

chilly coral
#

wow, md removed entity rewriters for 1.16+

wide maple
#

@chilly coral we both know that since I hard-wired 1.16 to always resend join-game its become redundant

chilly coral
#

yeye

wide maple
#

so good on him in that regard

chilly coral
#

a step in the right direction

fringe aspen
#

@trail plume beep boop about my pr (soon pls i have need for it this weekend)

wary inlet
#

might as well just fork..?

wide maple
#

I’ll do the 1.16.2 update for both waterfall and travertine in about an hour if nobody else objects

random comet
wide maple
#

I'll hold off with Travertine until this is merged

wary inlet
#

we don't publish the modules changed, so i don't reckon that'd be necessary

wide maple
#

I'll head to the gym in a few @trail plume if nothing else I'll do Travertine after if you dont have objections

#

aight off to the gym. I'll be back in 2h roughly

bleak current
#

If ProxyServer.getInstance().getProtocolVersion() is deprecated what should be used to get the protocol version?

chilly coral
#

what do you need ?

#

the protocol version of the proxy makes no sense

#

the proxy knows almost every release protocols

bleak current
#

Thats a good point, i guess the protocolVersion of the client would work

wide maple
#

guess I am now doing Travertine

wide maple
#

done

#

lets hope I didnt blow anything up

outer cosmos
bleak current
#

Ye i ended up going with that one cheers πŸ˜‰

nimble vale
#

Where can I find in waterfall code version name? Is it possible at all to change it this way? I want to change version supported by my server.

potent lichen
#

code version name

#

What is this?

nimble vale
#

I'm thinking about "1.8.x, 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x (Waterfall)"

lean gobletBOT
#

waterfall.yml has a setting for that

chilly coral
#

You can edit this in waterfall.yml

#

:(

lean gobletBOT
#

:P

nimble vale
#

Ah, I didn't know that, much thanks

bleak current
#

How do I cancel Bungee from sending players to certain servers when it receives a plugin message

#

I need to intercept and send the player to a different server

analog ivy
#

@bleak current Maybe with ServerSwitchEvent ?

bleak current
#

yeah, but I cant get the target server

#

I need to know where they are trying to go

molten jackal
#

I can help one second

#

I did this

#

you want the ServerConnectEvent

#

the ServerConnectEvent#getTarget method will give you the target ServerInfo

#

you can also get a reason with ServerConnectEvent#getReason

bleak current
#

but doesnt changing the target involve re-triggering the event

molten jackal
#

No sir

#

I made my own server designator using purely the ServerConnectEvent

#

using ServerConnectEvent#setTarget(ServerInfo) it will change the destination for that event

bleak current
#

ok well I'll try that and @you when I'm done

#

thx

molten jackal
#

do note cancelling the event when they are joining with reason JOIN_PROXY you need to call ProxiedPlayer#disconnect

bleak current
#

@molten jackal it isn't working, but I'm not quite sure why

#

I'll send gitlab repo in a sec, need to push some other stuff

#

I think the culprit is

String address = document.getString("address").split(":")[0];
int port = Integer.parseInt(document.getString("address").split(":")[1]);
event.setTarget(getProxy().constructServerInfo(
        document.getString("uuid"),
        new InetSocketAddress(address, port),
        "motd",
        false
));
#

Since I might need to add the constructed serverInfo to getProxy().getServers()

bleak current
#

Actually, I just figured out the issue. It wasn't anything with bungee, my servers just didn't care to tell the database that they had been shutdown, so it just kept trying to send me to nonexistent servers

weary grove
#

mongodb pepega

bleak current
#

yeah it's actually pretty great

#

especially compared to shiver SQL

weary grove
#

it's pretty great for data you don't care about

bleak current
#

really?

weary grove
#

I guess a dynamic server registry counts as data you don't care about

bleak current
#

I've found it to be robust

weary grove
#

I've found it to be a disaster.

bleak current
#

Okay, well it does get messy from time to time, but once you learn the ropes you can clean up the extra objects and also you learn to stop creating them in the first place

weary grove
#

MongoDB needs to be left behind in 2012 where it belongs.

bleak current
#

Ok then what do you use

weary grove
#

PostgreSQL.

bleak current
#

ew

#

SQL is gross

#

and has security issues up the wazoo

weary grove
#

SQL may be archic but I'm not going to complain about 50-year-old technology that "just works"

bleak current
#

true, but I bet your server doesnt run debian

weary grove
#

Security issues? Googles "mongodb security issues"

bleak current
#

Β―_(ツ)_/Β―

weary grove
#

Oh, I see... all the open, exposed MongoDB databases with poor authentication.

bleak current
#

yes

#

mine is not

#

because unlike most minecraft server owners

#

I'm over the age of 5

weary grove
#

Insecure defaults are a pretty bad mark in my book

bleak current
#

umm

#

all defaults are insecure?

#

thats why you always change the defaults

violet saffron
#

Ooo like the meow thingy?

weary grove
#

Also, SQL injections are bad, but NoSQL injection attacks also exist.

bleak current
#

yeah

#

but not in mongo

weary grove
#

The class of attacks is actually quite generic.

bleak current
#

because of the "drivers"

bleak current
#

idk why they call them that they are really just API's but whatever

weary grove
#

something something google search proves you wrong

bleak current
#

umm no

#

that article explains issues in your code that cause injection vulnerabilities

#

at that point they are just RCE's

#

oof that's a sad spelling mistake to make

civic valve
weary grove
#

Basically, security-wise, MongoDB ends up no better than any regular, boring relational DB.

#

In some regards, it's probably worse.

civic valve
#

but it's fast as hell!

weary grove
#

writing to /dev/null is also fast as hell

#

and web-scale

civic valve
#

am switching all my projects to /dev/null/!!!!

weary grove
#

I don't deny that MongoDB is appropriate for some use cases, mostly there where data loss is acceptable

bleak current
#

What causes mongo data loss

#

I still see no proof

civic valve
#

you never write anything in mongodb

bleak current
#

this is like bsd peeps saying "omg ext4 will lose your data use zfs" when ext4 hasn't lost my data

civic valve
#

not the same

#

mongo doesn't write data until after the query completes

#

where as mysql will block the query until its saved

#

so you know when you complete a mysql query, your data was stored

#

mongodb writes it later

#

while storing everything in memory for perf

bleak current
#

I don't use mongo because it's new (and also it's really not at this point), I use it because I hate tables and like how it stores data. It is fast enough, it is good enough and it has features that I like. Enjoy your tables, but I am going to enjoy programming.

weary grove
#

What it boils down to is that for years, MongoDB prioritized performance and marketing over actually storing your data.

#

This is consistent, do your own research on this if you don't believe me.

bleak current
#

That's fine. Performance is important in a lot of cases, and honestly when was the last time you shut down your server? So I think I will stick with mongo. I haven't lost data even in the case of a sudden power outage, and that seems pretty robust to me.

weary grove
#

Laziness is never a valid technical reason IMO, but whatever. Personally, I think a lot of the usecases MongoDB serves today could be done better with practically any relational DB.

bleak current
#

Laziness?

#

What about wanting to make programming easier is lazy?

weary grove
#

@bleak current I shut down one of my servers a month ago for a migration. It happens more commonly than you think, power loss, networking issues, all of this stuff has to be accounted for.

bleak current
#

yes

#

but

#

like I said

#

twice I've lost power

#

no data

#

I've restarted like 5 times in the past month

#

but still

weary grove
#

Squealing over the uptime command is useless other than acquiring cool internet guy points.

bleak current
#

no

#

I'm just saying that saving 24/7 is really not important

weary grove
#

Okay, that's pretty reductionist.

bleak current
#

okay, I'm just going to stop arguing. I like mongo because of what makes it mongo. not what makes it "good"

#

please let me know if you have actual proof of data loss

weary grove
#

MongoDB databases are being hit by an attacker demanding a 0.2BTC ransom

BleepingComputer

Dozens of unsecured databases exposed on the public web are the target of an automated 'meow' attack that wipes data without any explanation.

#

Want more?

bleak current
#

umm that's a security issue

weary grove
#

This ties into another point: MongoDB had awful security problems for a long time.

#

Insecure, unsafe defaults was the price paid in 2010-2013 to get a bad product into users' hands, and we suffer for it.

bleak current
#

dude

weary grove
#

Now, in fairness to MongoDB

bleak current
#

thats like saying routers stink because dumb people keep default passwords

#

routers are a great tool

#

when used right

weary grove
#

The software has matured, catastrophic data loss bugs are far less likely now than they were then.

bleak current
#

yes

#

exactly

weary grove
#

But the history is not confidence-inspiring.

bleak current
#

okay well you and I both know that bugs get patched

#

thats how they work

#

oh

#

hypixel uses mongo

weary grove
#

Yeah, they're dumb for using it, but whatever.

bleak current
#

yeah dumb

weary grove
#

They're Hypixel, they can make it work.

bleak current
#

just like google and facebook

weary grove
#

They have money to do it.

bleak current
#

its almost like all these successful companies are using newer technologies... weird...

#

it's almost like, they're not that bad?

#

??

#

idk I'm probably just some 7 year old who knows nothing

#

Β―_(ツ)_/Β―

weary grove
#

It's almost like "they had a specific need to solve", they wrote some technical papers about it, and then people saw those papers, and drew the wrong conclusion

bleak current
#

I have a specific need to solve

#

I don't want tables

#

it's a chronic illness, really

weary grove
#

I have a specific need to solve

#

I like data integrity

bleak current
#

I have that too

weary grove
#

Thankfully, relational DBs solved that a long time ago.

bleak current
#

No

#

file systems solved that one

#

but we arent using thos now are we

#

sometimes stuff from the 1990s is worth leaving in the 1990s

weary grove
#

I wonder how you're able to boot up Discord to chat with me... thonk

#

You had to load the client from a file system, no?

#

Or maybe you use the browser... how'd you load the browser? Magic?

bleak current
#

yep

#

magic

#

πŸ™ƒ

#

but you see what I mean

weary grove
#

I've actually gathered a wealth of information on why MongoDB is awful, I'm just too lazy to dig it up.

bleak current
#

just because it's old doesnt mean it's bad, just because it's new doesn't mean its bad

weary grove
#

And just because Google and Facebook needed to eschew relational databases for certain use cases doesn't mean relational databases are automatically a stupid, antiquated concept.

bleak current
#

yes

#

agreed

weary grove
#

Point is, I believe in picking the right tool for the job, and I've concluded MongoDB is never the right tool.

bleak current
#

Okay well that's like saying that SQL is never the right tool

#

Which I don't do by the way. It does have it's uses.

civic valve
#

no, false equivalence

bleak current
#

But, in my object-oriented language, I like having object-oriented (document-oriented I guess) databases

#

omg yeah false equivalence

#

okay

#

well whatever

#

you guys are just trying to be toxic at this point

weary grove
#

And therein lies the impedence mismatch. MongoDB bills itself as a table-less, schema-less database.

bleak current
#

I only am here because I actually thought mongo had an issue

#

with data integrity

#

and it really does not

#

so I'm going to keep using it

#

thanks for nothing

stone fiber
#

simmer down

weary grove
#

The problem is that instead you get implicit schemas, and by the time you have to tame that, it's too late.

stone fiber
#

someone disagreeing with you doesnt make them toxic

bleak current
#

yeah but completely trashing on mongo with no agreement is pretty toxic

stone fiber
#

if you cant handle the discussion, dont participate in it

#

πŸ™„

bleak current
#

but.. this is waterfall-dev

weary grove
#

Also, ORMs exist for relational DBs too.

civic valve
#

Tux is giving valid criticisms

#

it's not trashing

bleak current
#

He's not though

#

his issues have been patched

civic valve
#

I trust Tux's experience over yours any day

stone fiber
#

"I disagree with what you say therefore it's toxic"

bleak current
#

I guess you could look at it like that

weary grove
#

If your data genuinely has no structure, and it's not at all important to you, MongoDB is the right tool for the job. The problem is that my data often has structure and is very important to me.

bleak current
#

but my data has no structure, and is important

#

I think that mongo is the right tool for that

#

since my data is mostly just attached to players or servers

#

so it makes sense to just use documents

weary grove
#

We attach a lot of data to players and servers, and we successfully model those relations on a relational DB.

bleak current
#

True

#

But documents make it easier to think about and view that data

#

It's like how all JS objects can be immediately saved as JSON

weary grove
#

Furthermore, relational DBs have since grown support for JSON and querying JSON documents.

bleak current
#

but... that's not how they are designed

weary grove
#

It's clearly useful to store unstructured data in a relational DB.

bleak current
#

thats a more hacky-patchy way

#

it is baked into mongo's every substance

#

and that's why I like it

#

because it thinks how java thinks (and C#, and javascript, and python, and every other OOP language)

weary grove
#

Again, schema-less really means implicit schemas.

bleak current
#

honestly

#

I don't like that mongo is schema-less

#

Because like you say

#

implicit schemas

weary grove
#

And also, having learned about software engineering, I can assure you OOP is not "schema-less"

bleak current
#

Yes

#

exactly

#

thats why I dislike the schema-less ness

#

it fits much better with JS

#

however, it still works aside from a few minor headaches here and there

weary grove
#

In fact, schemas are extremely common in OOP. They can be fluid during the development and evolution of an application, but that doesn't really invalidate my point: SQL schemas can be fluid and evolve too.

bleak current
#

In my opinion, schema-less headaches are much better than converting all your objects into tables

#

serialization is not fun, ever

#

I hope you can at least agree with that

weary grove
#

In my opinion, the headache inherit in planning and setting up a proper schema for your data greatly outweights the complexity of trying to retrofit those updates on later. This has bitten me so many times.

#

Serialization is not fun, that's why so many people have invested in writing wrappers so we can do less of that manually.

bleak current
#

good point, good point

#

For my closing argument, I would just like to say, if SQL is the "default" for you, then why can't Mongo be the default for me?

dim gust
#

I think MongoDB excels in specific use cases, you always have to consider if it's the right tool for the job as with anything.

#

For example if you want to log a data set that you have no control over and that changes regularly, mongo can be pretty useful.

bleak current
#

yeah, like a server manager database.

#

:)

dim gust
#

When you are designing something structured I think SQL generally is better.

bleak current
#

Agreed

dim gust
#

Like all internal design.

#

Server manager db?

bleak current
#

Yes it holds whether they are started, player count, IP, etc.

#

All stuff that needs to be constantly updated

#

Honestly I was thinking of using Redis but that wouldn't be good if I restarted my DB but not my servers

#

It needs some persistence

dim gust
#

I'd say it depends, I think I'd personally prefer SQL in that specific case probably.

bleak current
#

Really? Why exactly?

dim gust
#

Well it sounds like you have complete control over the schema, which I feel is where SQL excels. There is a level of development burden in that when you change things, but I think it's worth it.

#

When I say mongo is good, I'm thinking if you're ingesting a huge API that regularly has breaking changes and you don't want the headache of maintaining an accurate schema.

bleak current
#

I kind of have control over the schema, but like you said I actually change it quite frequently

#

I try to release new minigames every 1-2 weeks so if the minigame has, for example, a rejoining feature I need to store a list of the players that should be re-sent to it even if the game is already started

#

and I add these extremely frequently

dim gust
#

You can use it in that case, I generally feel that choice is mostly about if you care about data consistency and historic data.

bleak current
#

historic data?

dim gust
#

So if you're not just storing one row per server for example, and want history, that can be a difficult thing to maintain in a schemaless model.

bleak current
#

huh... I see how it would be difficult to maintain, but it definitely wouldn't be too difficult to implement

dim gust
#

Correct, mongo is easy to implement.

bleak current
#

Yes

#

that's a big deal for me

dim gust
#

That's one of it's strengths, because it doesn't have a schema.

bleak current
#

especially with the whole minigame every 1-2 weeks 😬

#

it gets hard to fix bugs sometimes... so I like to just not have them in the first place

dim gust
#

Even if you don't use SQL in a project it is however (in my opinion) important to learn how to manage schema changes in it, you can actually apply them to NoSQL programmatically

#

Anyway

bleak current
#

yes?

#

do you have a question about waterfall πŸ™ƒ

#

we really need a #database channel

dim gust
#

Nah I was saying anyway because I was talking too much about db's in a waterfall channel πŸ˜›

bleak current
#

okay

thick pendant
#

how can i travertine scripts to pull ?

thick pendant
#

any idea guys?

potent lichen
#

SQL is my favourite. Far better than MongoDB

thick pendant
#

guys help me please

chilly coral
#

what do you want ?

#

update your travertine fork ?

#

update you travertine server ?

bleak current
chilly coral
#

yes i saw but was not the same name so "maybe" not the same person πŸ€·β€β™‚οΈ

bleak current
#

mega sus

#

but fair

#

linsaftw is the same guy who maintains this shitty flamecord claiming it's magical and fixes everything

chilly coral
#

it could be, but not verry ethic to sell it imo

thick pendant
#

who?

potent lichen
#

How would one check offline player permissions on BungeeCord?

trail plume
#

Bungee has no concept of offline playera

#

S

potent lichen
#

yeah I know

trail plume
#

Would depend on the perm plugin

potent lichen
#

I was considering a PermissionCheckEvent and implementing CommandSender

trail plume
#

Well, I'm convinced LP wouldn't be happy with that

potent lichen
#

haha, yeah

#

i think i will just drop the idea

near hamlet
#

Does connection#getSocketAddress() returns a domain or an ip?

dry pulsar
#

so i dont understand waterfall, after you are sent to a subserver, can plugins on that server import classes from the waterfall jar?

molten jackal
#

@near hamlet it returns a socket address. If I recall correctly you can call getAddress and then getHostName on that value for a string version of the ip

#

@dry pulsar waterfall is a completely separate program from spigot. So no. Unless you were to shade waterfall into your spigot or plugin but your really don’t want to do that

near hamlet
#

@molten jackal I want to get the hostname which is used from the user to connect. Is it possible?

molten jackal
#

Yes

near hamlet
#

Can you tell me how?

molten jackal
#

I did lol

near hamlet
#

oh ok

#

thank you

near hamlet
#

@molten jackal (sorry for pinging) Is it possible to get the subserver to connect in the LoginEvent

lapis glade
#

Bro is this Flamecord developer really serious? he says he cant update because he doesnt know how to use git

#

wtf

near hamlet
#

FlameCord

#

?

#

what is that?

lapis glade
#

fork of tavertine that "fixes exploits"

tall canyon
#

Bro is this Flamecord developer really serious? he says he cant update because he doesnt know how to use git
smh

lapis glade
#

but the lead developer doesnt know how to use git

near hamlet
#

ok

weary grove
trail plume
#

I mean

#

He's literally stuck at step 3

#

At this point, the literal only help you could give him is a tutorial on git...

tall canyon
#

considering he's the lead developer for the proxy, how else did he make updates???

trail plume
#

He didn't

#

My best guess is that each update he "starts again"

tall canyon
#

then how did he get the lead developer role in the project?

#

like this is confusing

trail plume
#

He started it himself

#

you can be lead of a pile of shit if you lay the foundation yourself

tall canyon
#

then how he even finished the thing if he cant even make a commit

wide maple
#

well

#

rewrite patches Ig

#

this is cringe

trail plume
#

sanity would have been to use one of the travertine fork things which are already based on travertine

wide maple
#

Is it bad that I used interactive three-way merging to do the 1.16.2 update on Travertine? Took total about 4 minutes

trail plume
#

I mean, I generally use git on the CLI and then just do the rest in my IDE

#

Never been fond of 3 way as you don't often get to see the full context

wide maple
#

Not an issue for me, I’m used to that. Always use it to resolve merge conflict at work

tall canyon
#

if only i was actually CODING stuff and not just making a translation for a single plugin, maybe i would have a use in git lol

trail plume
#

only caveat is to find an option which works

#

Heck, I've abused apatch more times that I probably should have

wide maple
#

As long as it works

#

I mean

trail plume
#

apatch works

#

apatch also makes a total mess of classes

wide maple
#

That’s the reason I use i3w

trail plume
#

I've had cases where I've looked at a patch and figured "fuck that"

#

fired up apatch and it just ran over it and cleaned it up with literally 0 issues

#

I've had smaller patches where it just... oh god....

wide maple
#

As long as it works it’s game

random comet
#

this is why id trust cat to "fix exploits" instead of some fork

wide maple
#

Velocity

random comet
#

not rly a option if you have been using a bunch of bungee plugins for years

wide maple
#

If they’re open source I can port them

#

I really have a burning hatred for bungeecord

random comet
#

theyre not and the dev mostly moved on

#

with life

wide maple
#

Which plugins?

random comet
#

theyre private ones

wide maple
#

Ah, too bad then

trail plume
#

Downfall of being a fork is having to maintain upstream

#

a lot of stuff I've pushed off due to a mixture of health and "that's probs gonna break some plugins"

near hamlet
#

Is it possible to get the subserver to connect in the LoginEvent

chilly coral
#

Could be great to have a byof for travertine or waterfall

#

But it could help Flamecord's dev so dunno if its worth it lol

random comet
#

in the end it was himself he could not patch

trail plume
#

byof was forked out of my own personal needs

#

Not like there isn't already forks of travertine out there for this

#

Not our job to teach tooling like "welcome to git"

tall canyon
#

we need to stop forking everything

trail plume
#

there are valid reasons for forking

#

e.g. I literally ripped out the entire chat system in my fork

marble flint
#

Is there a way to use Brigadier with Waterfall/BungeeCord API? Paper has already a module for that, is there something like that on Waterfall?

molten jackal
#

I am using this code (https://hasteb.in/ewexakid.java) to make it so if X server shuts down, all players are redirected to an optimal limbo server. The selecting of the target server and determining the kicked from server work as intended, debug messages are as expected. However when the event is cancelled, the player is not sent to the target server, is left on the old server (which is offline now!) and they time out. I used this code on 1.15.2 and worked as intended. Has something changed that I'm unaware of, or is this a bug? I am using Waterfall build #370 (latest as of right now).

tall canyon
#

ummmm

#

did you know that fallback servers exist?

#

so your entire thing is useless?

molten jackal
#

If you read my message I choose an optimal limbo server to send them to. This means: 1) it is online 2) it has the least amount of players on it already 3) it is hooked into my server manager.

molten jackal
#

I figured out my issue. It had to do with my server designator code. I was not sending the player to a correct server in the instance of shutting down the server like stated before

snow bolt
#

how is this a waterfall development issue?

tall canyon
#

how this is a waterfall issue

spark sluice
#

wrong section(

warm shell
#

how to set a custom uuid with waterfall when u connect a player to a paper server ?

civic valve
#

Why, what are you trying to do

warm shell
#

i want to have a database for premium and crack player, but if i take username for key, i can have problem with premium player, and if i take uuid in key, i have a problem with crack player if i don't set an uuid at paper connection with waterfall

tall canyon
#

w h a t

#

what is a pseudo?

warm shell
#

string, the name of the player

#

username

#

sorry lmao

tall canyon
#

ok cool

warm shell
#

it's "username" in my language

tall canyon
#

why would you have problems w/ offline players by using uuids?

#

they still have uuids

warm shell
#

they don't have random uuid ?

#

if i store them in a database, i'm fucked, no ?

tall canyon
#

they have a random uuid upon their first join

#

then their uuid is the same

warm shell
#

on each bungee connection ?

tall canyon
#

oh well now i understand the issue

warm shell
#

do you have an idea ?

#

:(

civic valve
#

We don't support offline mode here

warm shell
#

yeah, it's so nice to say bullshit when u have an option "online-mode" in waterfall

tribal jacinth
#

what is your issue again?

warm shell
#

i want to have a database for premium and crack player, but if i take username for key, i can have problem with premium player, and if i take uuid in key, i have a problem with crack player if i don't set an uuid at paper connection with waterfall
@warm shell

tribal jacinth
#

both offline and online players have UUIDs

tall canyon
#

they are inconsistent between servers

#

that's the problem

tribal jacinth
#

they aren't?

#

it's based on the username for offline mode players

#

not random

tall canyon
#

wait le what

warm shell
#

it's not random ?

tribal jacinth
#

offline mode uuids are taken by adding a prefix to the player username and then using the digest of the resulting string

#

and that becomes the UUID

warm shell
#

oh

tribal jacinth
#

look it up, the exact algorithm is up somewhere

warm shell
#

ok, i go check it, a lot of people say it's random on the internet, it's why i haven't checked

tribal jacinth
#

a lot of people are retarded on the internet

#

and also wrong

tall canyon
#

so if i join 2 different offline-mode servers
my uuid will be the same between the two?

trail plume
#

online mode UUIDs are random

#

yes

tall canyon
#

i thought they are just random

#

like completely random, not dependant on anything

tribal jacinth
#

if they were 100% random

#

then every offline mode server would have to store a massive file that maps every known username to its uuid

tall canyon
#

i dont understand why tho

tribal jacinth
#

well

#

player name MaximusMan joins

#

what is his UUID?

tall canyon
#

you get a uuid, you find the file with that uuid, and that file has the username

tribal jacinth
#

it needs to match the UUID you gave him last time

#

because his data is identified by that UUID

warm shell
#

oh

#

it's true

#

i tested and it's not random at all

#

thanks bro

tall canyon
#

oh now it makes sense

tribal jacinth
#

online mode servers do have to pull the UUID for each username from a "massive file"

#

because they are random

#

that massive file happens to be either usercache.json or mojang's API

warm shell
#

the uuid on online mode are random only on the account creation, no ?

tall canyon
#

yes

#

but on PlayerJoinEvent servers have to check the username to see what uuid they have

#

because its actually random

warm shell
#

yeah ok i see

tall canyon
#

you see, that "massive file" is always the same

#

unless they change their username

trail plume
#

servers aren't given the UUID, they have to go look that up themselves

#

they get the players username though

warm shell
#

so, we need to check if the player is premium (for database purpose) or store the uuid created with the username if the player is not premium

tribal jacinth
#

just use the uuid

#

no bells or whistles required

#

unless you want to implement username changes for offline mode players

warm shell
#

i want to implement auto connect for premium player

tall canyon
#

i said exactly that?

servers aren't given the UUID, they have to go look that up themselves

tribal jacinth
#

the easiest way to do that is to use a separate auth server

warm shell
#

how ?

tall canyon
#

oh god my messages are delayed

tribal jacinth
#

so let's say you have your regular offline mode server

#

now, you start a bungeecord proxy

#

that points to that server

#

you set online mode to true in bungee, and enable ip forwarding

#

then, you write a plugin on the bungee server and on the backend server

#

that automatically logs in the player if they are coming from the proxy

tall canyon
#

you set online mode to true in bungee, and enable ip forwarding
wait what

tribal jacinth
#

because if they are coming from the proxy, they are premium and have been authenticated against mojang's auth servers

warm shell
#

and for offline player ?

tribal jacinth
#

offline players connect to the backend server directly

tall canyon
#

wait

warm shell
#

i want to have the same ip for offline and online player

tribal jacinth
#

not easily doable

tall canyon
#

but they still have to pass the proxy

tribal jacinth
#

you see, in order to check whether a player is premium or cracked

#

you need to ask them to auth against the mojang auth servers

#

which will cause a cracked player to disconnect

tall canyon
#

understandable

warm shell
#

we can't "cancel" that ?

tall canyon
#

ok

#

no its not even a kick iirc

tribal jacinth
#

the disconnection is handled on the client

#

because the client has to contact mojang's auth servers as well for the auth process

#

and mojang boots the client out and the client disconnects

#

so, the sanest solution is to just have two ports/ip's; one for cracked, one for premium

#

besides, doing that will let you register on premium-only server lists

tall canyon
#

i guess

#

but they wont be able to play with each other?

tribal jacinth
#

because the other ip "is premium"

#

bungee is a proxy

#

the player only connects the proxy for the auth

#

and either gets kicked because they're cracked

warm shell
#

they can player with each other, a same server can be connected on multiple proxy

tribal jacinth
#

or is funneled into the backend server

#

where they are auto logged in and then play with the other players

warm shell
#

is it possible to set online mode to false, and use a plugin trick to check if a player is crack or not and set the mojang uuid is it's a premium account ?

tribal jacinth
#

yeah

#

you will have to have the backend server in offline mode

#

and then communicate with the bungeecord server to figure out the player's actual online mode UUID

#

and use that

warm shell
#

how i give the mojang uuid

tall canyon
#

FastLogin can use Mojang UUIDs for the server

#

It also has a bungee version

tribal jacinth
#

set it using the player profile in asyncprelogin event

warm shell
#

how ?

tribal jacinth
#

using java

warm shell
#

there is no "set uuid" on asyncplayerprelogin bungee

tribal jacinth
#

there sure is

#

not on bungee

warm shell
#

oh, it's on spigot ?

tribal jacinth
#

on the backend

#

and the method is on the profile, not the event

#

the event just exposes the profile

warm shell
#

what do u mean by profile ?

warm shell
#

it make sense now

tall canyon
#

there's a plugin i mentioned that can do just that

warm shell
#

yeah, but i prefer to keep a hand on what my server is doing lmao

tribal jacinth
#

he's asking how to implement this, not what plugin to use

tall canyon
#

k

tribal jacinth
#

i implemented it myself as well, there's nothing wrong with making your own solutions for things

warm shell
#

so, i need to send a message from bungee to paper and change the profile if it's a premium account ?

tribal jacinth
#

myes

warm shell
#

or paper alone can do it ?

tribal jacinth
#

well, you need to contact the proxy to know if it's a premium player

#

you can't ask the player, because that'll kick the player if they're cracked

#

just making sure that the player is connecting from the proxy is enough

#

because if they are, they are for sure premium

warm shell
#

they is a method on bungee to see if it's a premium account ?

tribal jacinth
#

no

tall canyon
#

you need to see if the player is connecting from the proxy

tribal jacinth
#

the player connecting through bungee and not getting kicked means they are a premium player

tall canyon
#

because if they are, that means they passed the authentication

tribal jacinth
#

if they are cracked, they will be kicked before they get to your backend server

warm shell
#

but i want to only have one ip for the premium and the cracked

tribal jacinth
#

well

#

like already discussed

#

not reasonably possible

#

to do that you need to dive deep into packet fucknuggetry and the network protocol

#

and figure out a smart way to tell a premium and a cracked player apart

#

tbh; just use fastlogin at that point

warm shell
#

hm, ok, i have idea of how doing it now

sturdy nymph
#

@wide maple I don't know when you will be online, but can I ask you some questions about the changes in 1.16 that affected my AutoReconnect plugin? I will probably sleep sometime soon though, and I'm guessing it's very early in the morning for you when I am sending this, so idk what would be best.

wide maple
#

@sturdy nymph generally- If you switch servers you will need to resend a joingame that is a mirror of the joingame packet form the server. If you’re just reconnecting to the same server you can send a respawn packet instead but ONLY if you kept track of the current dimension and the registry that was in the succeeding login packet from the server stays the same and ONLY if there is more than one dimension which you tracked and ONLY if you fake switch to that first and back will this be correct

#

Here it’s like this:
Login: Server sends LoginSuccess
Proxy: copies and relays LoginSuccess
...
All good.

Or: Reconnect
Server sends LoginSuccess;
Proxy: Check if the received registry has the exact same contents as the one which was present previously
Proxy if false; Relay LoginSuccess
Proxy if true:
Check if registry contains two or more dimension types;
If false: relay LoginSuccess
If true: Send a respawn packet to the dimension the player is not in currently, send the entire clear status packets bungee sends, send a respawn packet to the dimension the client is supposed to be in;

...
All okay then

#

^ this only all applies for 1.16+

#

Also: world names and biome registry is part of the connection client registry

#

So either always relay LoginSuccess

#

Or go with the difficult route

#

Which forces you to parse and compare the registries

#

Bungeecord does not do that. I implemented it in velocity but md_5 refuses to use this

ashen saffron
#

Is an idea if we can make a anti netty exploit for Waterfall? πŸ˜…

#

Bungeecord API is not secure

sturdy nymph
#

@wide maple what I ended up doing in 1.16.1 and before, is I realized people could kinda "no-clip" in a sense, because all the plugin does is send keep alive packets until they can be reconnected to the server, so I respawned them in a new dimension and never sent chunk data so that they would be floating in a void, unable to explore the world and maybe see something they weren't supposed to.
So in the 1.16.2 testing I was doing, I looked at that switching branch you made and I sent a login packet with a single custom dimension and I respawned them in there while they wait for the server to come back online.
Because BungeeCord doesn't actually bother tracking anything, as you said, it just sends another login packet for the reconnected server once it comes back online.

#

That should be good enough to at least avoid the issues you talked about, correct?

#

For context, if you've ever been on Hypixel, this plugin does something very similar to their limbo, but I didn't bother sending the chunk data like they did, and you end up floating in a void instead, while waiting for the original server to come back online.

trail plume
#

There is no "netty exploit"

#

There was an issue in netty where an exception ended up hurting much more than it needed to, but this is literally "process exposed on the internet"

#

Making the logic more robust to deal with this is ideal, but, at the same point, we don't wanna be throwing more exceptions for this, nor can we mess with the netty pipeline too much because plugins are fun

dry pulsar
#

wrong channel

#

srry

manic briar
#

its ok babe

rancid edge
#

Hey anyone know how to set up Waterfall?

chilly coral
#

just like BungeeCord

rancid edge
#

ok

vivid bronze
#

Hi guys, how can I send TextComponent to player in Waterfall?
i dont have the .spigot().sendMessage()

lean gobletBOT
#

the normal sendMessage takes components

vivid bronze
#

okay... this works
i was wishing to send pure string message + multiple TextComponent in one sendMessage
nvm i think i will have to split them πŸ˜›

#

thank you

lean gobletBOT
#

just use the component builder

vivid bronze
#

thanks for the suggestion, i will take a look 😁

low moon
#

Hey, just wanted to make sure of something before I dive into Waterfall. The Waterfall API is similar to the Bungeecord API, same as Paper, right?

lean gobletBOT
#

it extends bungeecord, yes

modest meadow
#

hi. does anyone know how i can get if a server on my waterfall network is online through a plugin? i've tried querying the plugin messaging channel with various things but all work regardless of the server's state, so i'm kinda lost

trail plume
#

use the ping method

vivid bronze
#

hello, how can i do the plugin message channel?
i dont really see resources / tutorials on how to do it... most of them are outdated
cause i want to change a player's server with a spigot plugin

thanks!

trail plume
#

The APIs for it literally haven't changed in years

vivid bronze
#

the only change i notice is the channel name
changed to something like "namespacedkey:name"
i did this too and no errors, but not moving to other servers

outer cosmos
#
public static final String CHANNEL = "BungeeCord"; private JavaPlugin javaPlugin; public BungeeServerAdapter(JavaPlugin javaPlugin) { this.javaPlugin = javaPlugin; } @SuppressWarnings("UnstableApiUsage") public void send(Player player, String server) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeUTF("Connect"); out.writeUTF(server); player.sendPluginMessage(javaPlugin, CHANNEL, out.toByteArray()); } 
trail plume
#

That's not needed for the BungeeCord channel, md hacked that requirement out

outer cosmos
#

My snippet should work. At least it works in production 1.16.1

Mobile formatting is a little bad.

vivid bronze
#

My snippet should work. At least it works in production 1.16.1

Mobile formatting is a little bad.
@outer cosmos thanks, can I send u a DM for more details of my code?

outer cosmos
#

No, do it here so everyone can help when I'm at sleep and everyone learns something.

vivid bronze
#

okay

#

But I tried some channel name like yours, it doesnt work
does it has to be BungeeCord?
(Im using Watrefall)

outer cosmos
#

For bungeecoord/waterfall integrated functions like sending players to other servers, yes.

vivid bronze
chilly coral
#

You can use PluginMessage only if there is at least one player connected to the server

outer cosmos
#

Your plugin is likely null.