#waterfall-dev

1 messages · Page 10 of 1

warped loom
keen cave
civic valve
#

prob just a pr

#

they wouldn't github fork to make an actual fork

keen cave
#

ikik

civic valve
#

weekly reminder for cat to convert byof to a template repo

coarse chasm
#

i'm in the process of updating an init.d script to support paper/waterfall

#

was wondering what the proper way to shut down waterfall is?

#

presently I send CTRL+C but I feel like there has to be a better way

trail plume
#

that's basically it

#

either that or you send stop/end depending on the target

#

don't really see what the pro is for making byof a template repo

#

the idea of the "fork" setup is that if I ever get into fixing up the scripts, people can just pull them

lean gobletBOT
#

github limiting features for forks is a pretty good reason, lol

wide maple
#

@ electronicboy a config Option to turn off rewriting for forge over waterfall should do the trick already or am I mistaken?

trail plume
#

The intent is to try to retain the race condition fix where possible, but, not fuck over things tryna actually throw extra data in there

wraith idol
#

Has anyone successfully got a mocking interface for a bungee plugin...

#

I had a test plugin working fine until someone added a Precondition check to the Plugin init

#

a static one

wide maple
#

@ the project developers; Regarding the 1.16 tracking I’ve been doing; I want a vote for wether I should finally target Travertine or Waterfall in the end. It won’t matter much in the end when md_5 inevitably obsoletes this entirely, but till then it does have some relevance.

shut glacier
#

I hope this is the/a right place to ask

I would like to send a sound effect from the bungee. For that I know I need to create my own Packet class. Now how can I register and send it?

bleak current
#

uhhh honestly it'd be easier to use plugin messaging to tell backend server to play a sound

shut glacier
#

I can only find PluginMessage stuff

bleak current
#

because playing a sound usually requires that you know where players are located

#

and then you need to start tracking players as well

#

it's not that easy

#

sure, if you have plenty of time to burn and also want to maintain position packets (and also pray that other plugins don't want to do the same thing)

shut glacier
#

Considering I don't have a plugin to talk to on the backend it would not be easier

bleak current
#

if you say so

#

people rarely do that or realize pretty quickly that this is not what they want

#

but

#

lemme see...

shut glacier
#

And why would other plugins doing the same interfer?

bleak current
#

because you can't register a packet twice

shut glacier
#

You mean the packet ID?

bleak current
#

yes

shut glacier
#

That's some BS

bleak current
#

no

#

that's not bs

#

that would not make sense at all

shut glacier
#

If multiple plugins can send messages why wouldn't multiple plugins be able to send the same packet?

bleak current
#

it's not like that

#

if you want to send a packet what bungee does not process out of the box

#

what do you do?

#

you register your own packet class, right?

shut glacier
#

Sure

bleak current
#

now imagine that there's another plugin

#

doing exactly the same thing

#

assuming that nobody else does that

#

💥

#

sure, you can work that around

#

but you're making your life harder

shut glacier
#

I don't see the issue tbh. All that would need to happen is that both packet classes resolve to the same ID

bleak current
#

if you really want to step into that rabbit hole

#

maybe this can help you

#

have fun

shut glacier
#

If it's for incoming packets then it can be deserialized for all registered packets

#

Frankly don't see the issue

bleak current
#

If it's for incoming packets then it can be deserialized for all registered packets

#

wdym

shut glacier
#

Like before I was talking about registering outbound packets

bleak current
#

honestly tad safer way would be to register your own handler into netty pipeline

shut glacier
#

There really is 0 issue with using a MultiMap for packets

bleak current
#

which will bypass bungee's packet registry

shut glacier
#

Now for inbound packets you'd have to serialize the packet for every registered packet handler

#

But that really shouldn't matter either

#

Smells like bad API design to me

#

Ngl

bleak current
#

packets aren't part of bungee api

shut glacier
#

They clearly are

bleak current
#

or at least shouldn't be

shut glacier
#

That's a different story

#

Having a half assed implementation doesn't make anything better

bleak current
#

whatevs, imo you're making your life a lot harder

#

and shitty api giving you a way to do that won't make it better

shut glacier
#

I like making my life easier for my users

#

As many are struggling already with installing the plugin on the bungee

#

I don't want to deal with all the confused people asking for help how to install the bridge so they can have a ping sound effect

#

I'd rather spend two days doing it bungee only

tribal jacinth
#

more like brainbone

bleak current
#

don't be rude

#

yeah my suggestion stays the same. if you want to burn your braincells and time on potential upcoming issues then sure. however, don't come back to say that nobody warned you about this :p

shut glacier
#

I'm not like that

#

Do you happen to have resources for netty handlers?

#

Seems easier tbh

bleak current
#

no, not really

#

i'm speaking theoretically also

jade wedge
#

anyone know what class extends bungeecords ProxyServer class?

bleak current
#

net.md_5.bungee.BungeeCord

potent lichen
#

i wonder why BungeeCord uses JUL

#

md_5 had an opportunity to use a better logging api

#

i know waterfall has slf4j, but i'm just unsure why one would ever knowingly choose jul in this day and age

bleak current
#

same reason why bungee still uses plain reflection for event handlers

#

"no noticeable improvement"

deep haven
bleak current
#

provide the info please

deep haven
#

Can I provide you with a crash client in PM? I do not want to distribute it.
I want to say right away that I tested it on two versions 1.8 and 1.12

winter sky
#

Hey? how do i get the instance to Waterfall like in Bungeecord, in bungeecord it was BungeeCord# and that is missing in waterfall

bleak current
#

provide the solution

#

instead of the crash client

#

i've seen what the .figure does

#

Johni, it'll work exactly the same as in bungee

#

unless you did something wrong

winter sky
#

well i cant use BungeeCord#getInstance

#

it says bungeecord doesn't exist

bleak current
#

why are you using implementation classes at first place?

#

ProxyServer#getInstance is what you should use

winter sky
#

ohh i didn't know about that one, can i find a player using the uuid with ProxyServer?

bleak current
#

well why does the API exist at first place?

#

basically everything you need to do can be done via an API

#

but if you *really really* and *really* must use implementation, then make sure you've declared the proxy dependency properly

#

and built waterfall at least once on your machine

#

because paper repository does not provide waterfall-proxy artifact

winter sky
#

okay thank you

deep haven
#

My client has the names EndlessWar and he has the command .crash4 1000
I don’t know how to fix such a problem, but I checked the FiguresFix plugin and it worked. But I can’t use it since it has a problem with the number of shulkers in the inventory 😦

#

Dangerous crash
.crash4 1000
.crash5 2
.crash6 2

winter sky
#

one question, in Waterfall i can't use YamlConfiguration, is that normal in Waterfall / Bungeecord and what is the workaround?

#

i cant use YamlConfiguration#load(file) i get this error Non-static method 'load(java.io.File)' cannot be referenced from a static contex

bleak current
#

.>

#

that's basic java

winter sky
#

i understand the error, but i just wanted to say why i can't use it, in case i should be able to use it

#

so is there a workaround?

bleak current
#

yes, use that class in a way it was intended to use

winter sky
#

well i am more experienced with Spigot, i just switched to Paper and waterfall, and i haven't used configs in bungeecord much

#

could you maybe tell me what i could change?

bleak current
#

Configuration configuration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(getDataFolder(), "config.yml"));

winter sky
#

Woah thats a big line

bleak current
#

overengineered shitty api but it is what it is

winter sky
#

tbh i like the spigot way Yamlconfiguration configuration = YamlConfiguration.load(file) its much easier that that ^

bleak current
#

yeah open an issue in BungeeCord repository

winter sky
#

i bet a ton of people already did that

#

wtf is this config api, it has getSection() but no createSection()

#

sorry but where the people drunk when making this?

bleak current
#

your other option is not to use that

#

and use e.g Configurate

winter sky
#

well i need config

bleak current
#

.g spongepowered configurate

lean gobletBOT
#

(DiscordBot) https://github.com/SpongePowered/Configurate -- SpongePowered/Configurate: A simple configuration library...: "Configurate is a simple configuration library for Java applications that provides a node-based representation of data, able to handle a wide variety..."

bleak current
#

downside is that final jar is larger and you need to relocate the dependency

#

if you're able to do that, you know how to continue

winter sky
#

or i could make a custom yamlConfiguration class

potent lichen
#

or make your own cross-platform config API you can use anywhere which only depends on snake yaml

lean gobletBOT
#

if you want cross platform just use hocon/typesafe config

near hamlet
#

First sorry for my bad English. I'm from Germany. I need help. I've tried to make a BungeeCord Scoreboard Plugin but when I try to join with 1.14.4 I get following error. There isn't an Error in Console and I can join with 1.8.8 and 1.12.2 (Other versions aren't tested)

wide maple
#

@near hamlet ||schau dir die änderungen zwischen 1.12+ und älter in den packets an. Es hat sich was verändert. Sieh zu das das packet für alle versionen sich anpasst die du unterstützen willst. wiki.vg ist hilfreich ||

#

^ boils down to: format of the packet changed, the packet needs to be correct for the versions you want to support and wiki.vg is helpful

near hamlet
#

How can I change the format?

#

My Code

#

I cant post it in a codebox

keen cave
#

switch statements are cool

rustic oriole
#

does anyone know which packet from waterfall's packet implementations causes client to reset scoreboard teams?

bleak current
#
  1. team update packet or w.e it is called - unregistering all teams one by one
#
  1. join game packet - client resets everything itself (used when entity meta rewrite is off)
rustic oriole
#

join game sounds promising, thanks

lime walrus
#

I want to switch my BungeeCords over to Waterfall.
Do I need to change my pom to import Waterfall instead of BungeeCord?
If so, is there any public repo?

weary grove
#

Waterfall is API-compatible with BungeeCord, but if you want to use new Waterfall APIs you need to add the waterfall-api

#

The Maven repo to use is the same as for Paper itself

trail plume
#

The server itself still does the profile lookup

trail plume
#

yes

potent lichen
#

Just noticed 0051-Speed-up-packet-construction 👀

#

Did not know Bungee used reflection in everyday code...

bleak current
#

;)

trail plume
#

Yea, it's not one of those things which is likely a real concern, but, I was testing and it just looked like an easy win \o/

lean gobletBOT
#

I just wish waterfall was usable r/n

#

runs

potent lichen
#

why is it unusable ?

lean gobletBOT
#

issue 512, kicks all players if the write too much into the chat input

#

*they

stone fiber
#

didnt we already fix that in paper

#

wasnt someone going to port that to wf

lean gobletBOT
#

apparently someone didn't

#

I personally don't know how to fix it beyond just removing the validation that aikar put in, lol

stone fiber
#

yeah you dont want to do that

lean gobletBOT
#

(mainly because that commit contained zero info about why it was put there so ¯_(ツ)_/¯)

potent lichen
#

SecurityManager methods should be thread safe, right?

#

I thought they can be called from many places in the JDK, which means possibly from other threads

trail plume
#

~waterfall-512

bleak current
potent lichen
lean gobletBOT
#

probably

potent lichen
#

Well good thing Waterfall removes it

lean gobletBOT
#

I doubt it matter much there though

bleak current
#

is it hard to change

#

motd in waterfall?

#

xd

#

.docs

#

i'll take a look

sly crown
#

please don't spam

bleak current
#

my bad :/ I have this "enter" problem xd

bleak current
#

How can I update te motd from command (I want help to create the command xd)?

bleak current
#

I got it

bleak current
#

Hey guys, i am forking in waterfall, but i was wondering are the patches already in the code itself or do i have to use all those .patch files?

potent lichen
#

run the build to apply the patches

lean gobletBOT
#

I suggest reading the contribution guide of paper, it goes into more detail how the patch system works

bleak current
#

My dev was trying to make some small customizations but wasn't able to create the .patch file using IntelliJ's create patch option, how can that be done?

trail plume
#

covered in papers contrib guide

#

if you wanna maintain patches over waterfall, you'd /really/ wanna fork travertine

wide maple
bleak current
#

Ok thanks

jade wedge
#
19.06 22:59:02 [Server] WARN No client connected for pending server!
19.06 22:59:02 [Server] Startup 0d00

what exactly does this mean? when a player disconnects from the proxy, the ServerConnect event is fired (no idea why) and then it says this after

trail plume
#

the client disconnected

jade wedge
#

but when the client disconnects, the server connect event is fired

#
ME JOINING
19.06 13:23:15 [Server] INFO [/5.66.66.166:57213|Swalbert] -> UpstreamBridge has disconnected
19.06 13:23:38 [Server] INFO [SwalbertManagementPanel]: Successfully created session for Swalbert!
19.06 13:23:38 [Server] INFO [SwalbertManagementPanel]: Sent packet 'new_session' out to server .Hub-1'. Session = true
CONNECTING TO PRISON
19.06 13:24:12 [Server] INFO [SwalbertManagementPanel]: Sent packet 'new_session' out to server .Prison'. Session = true
DISCONNECTED FROM PRISON
19.06 13:24:16 [Server] INFO [SwalbertManagementPanel]: Successfully saved session for Swalbert.
19.06 13:24:16 [Server] INFO [SwalbertManagementPanel]: Successfully removed session for Swalbert.
19.06 13:24:16 [Server] INFO [/5.66.66.166:57215|Swalbert] -> UpstreamBridge has disconnected
19.06 13:24:17 [Server] INFO [SwalbertManagementPanel]: Sent packet 'new_session' out to server .Hub-1'. Session = false
19.06 13:24:17 [Server] WARN No client connected for pending server!
19.06 13:24:17 [Server] Startup 0d00
#

Sent packet 'new_session' out to server .Hub-1'. Session = false the only place in my code this message is logged is in the ServerConnect event

trail plume
#

Would need to know when/where the connect event is fired from

jade wedge
#

when they leave the proxy

#

like when they fully disconnect

#

@trail plume any reason for why that might happen?

wide maple
#

Was it seriously necessary to ping electronicboy because of that? 👀

jade wedge
#

huh

#

they asked me something so I replied lol

trail plume
#

I need a stack trace or something

#

You've literally given me 0 additional information

#

You don't even have a "they've connected" log message or anything

tall gyro
#

How can I create a .patch file for waterfall?

trail plume
#

read the contributing guide in the paper repo

tall gyro
#

I tried doing so with IntelliJ with no luck, it says something about SHA1 is useless

lean gobletBOT
#

commit and rebuild patches

trail plume
#

You use the scripts to do it, not your IDE, etc

#

if you're tryna maintain patches ontop of waterfall, fork travertine

bleak current
#

sooo quiet. what are the devs plannin

#

btw, it would be exceptional if snapshots were included her

#

atleast id give u more insight than mohang

trail plume
#

0 interest in trying to maintain support for snapshots

wary inlet
#

A guy called Five does that already. Check out his PR

stable owl
#
$ ./waterfall b
fatal: not a git repository (or any of the parent directories): .git
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Child module C:\Users\marek\Desktop\Waterfall-master\Waterfall-Proxy of C:\Users\marek\Desktop\Waterfall-master\pom.xml does not exist @
 @
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project io.github.waterfallmc:waterfall-super:dev-SNAPSHOT (C:\Users\marek\Desktop\Waterfall-master\pom.xml) has 1 error
[ERROR]     Child module C:\Users\marek\Desktop\Waterfall-master\Waterfall-Proxy of C:\Users\marek\Desktop\Waterfall-master\pom.xml does not exist
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
``` does anyone know where the problem lies?
trail plume
#

clone the repo

#

Not download it

stable owl
#

can you provide me the full link to the .git repository?

trail plume
#

Go grab it from the github page

stable owl
#

thanks bro

stable owl
#

@trail plume I cloned a repository, what should I do now?

trail plume
#

Don't ping

#

and run the script, like it says in the readme

stable owl
#

The Waterfall-Proxy folder has been created. Is this the end of the process?

ornate jasper
#

yes

jade wedge
#

@trail plume there is like no other information I can give you. after the player disconnects, the ServerConnectEvent is fired.

#

when the player exits the game, the ServerConnectEvent is fired

sly crown
#

don't ping devs please

jade wedge
#

im replying to something he said to me

sly crown
#

i'm well aware

near hamlet
#

Is it possible to write a client in java which can use CustomPluginChannels?

bleak current
#

yes

near hamlet
#

Do I need a library or can I use java only? Can Ifind some help in wiki.vg?

bleak current
#

yes to all three

near hamlet
#

So I need no library?

bleak current
#

you don't

near hamlet
#

Thanks

weary grove
#

Looks like you already have the source code there. Just open the root pom.xml in your preferred Java IDE.

#

Please open the root pom.xml, one directory up

#

That's not in the directory I asked you to open up

#

You need to go one level up

#

No, you went down a level, not up!

#

Click on "Waterfall" on the address bar and it'll take you to the right place

#

Yes, that's the correct directory. The pom.xml you need is in there.

harsh harbor
#

what problem

#

you say that there is a problem but you did not tell what's wrong

weary grove
#

Install the Lombok plugin for your IDE

#

You need to actually configure it

#

Turn in annotation processing

harsh harbor
#

it does not require it now (or is it?)

#

because it worked for me all the time without configuring anything

bleak current
#

nice, dude deleted all the text

#

hate it when people do that

wary inlet
near hamlet
#

hey guys, how can I use org#json in a plugin?

outer cosmos
#

Recommend using GSON instead.

near hamlet
#

ok I'll try to use this thanks

wide maple
#

@ zzzCat want me to take part of the load off of you to update waterfall or travertine to 1.16 once md5 gets it shipped?

#

If so I just need to know what I should focus on (ie which patches or parts)

trail plume
#

honestly, am still waking up

wide maple
#

That’s quite alright. Just @ me when you got an answer or something to add

random comet
#

travertine the poor abandoned child

#

jokes

fiery wedge
#

@trail plume Is someone else handling the Waterfall update?

#

I'm willing to try it

#

Oh wait

trail plume
fiery wedge
#

I see @wide maple just said the exact same thing

molten jackal
#

How can I add waterfall as a dependency using gradle? (I'm new to gradle so be easy on me 🙂 )

grizzled thistle
#

dur?

civic valve
#

clear your cache

grizzled thistle
#

I did

#

still happening

trail plume
#

works fine here

grizzled thistle
#

whenever I download it straight to my server from the url it doesn't even work

#

paper downloads work, it's just waterfall

trail plume
#

maybe CF is being dumb

grizzled thistle
#

guess I'll have to just use Jenkins

molten jackal
trail plume
#

the api is in the repo

#
    <groupId>io.github.waterfallmc</groupId>
    <artifactId>waterfall-api</artifactId>
    <version>1.16-R0.4-SNAPSHOT</version>
#

Same repo as paper

molten jackal
#

for version, do I use 354?

#

or 1.15.2-R0.1-SNAPSHOT

trail plume
#

<version>1.16-R0.1-SNAPSHOT</version>

molten jackal
#

oh?

bleak current
#

Hello dear people,
I have a custom servermanager with custom fallbackservers, it works great but i face one problem when a server lags or just takes long to shutdown. Can anyone tell me what listener is connected ConnectTimeoutException ? i try to send player to lobby when the ConnectTimeoutException is too long

#

Nvm i am stupid

quiet vigil
#

So 1.16.1 was released

#

Are you serious

grizzled thistle
#

as expected from Mojang

quiet vigil
#

Should be a matter of adding the protocol number to the constant file

#

Since we already support 1.16 and it appears to be fixes with realms

tribal jacinth
#

implying the state of realms can somehow be fixed

little wadi
#

Im more annoyed that they changed the protocol version for some small client-side fix

weary grove
#

R E A L M S

wide maple
#

eta later

upper plinth
#

Is there a waterfall patch that adds the new protocol version number (or do we have to wait until bungee cord?)

little wadi
#

Just use ViaVersion on the proxy. Waterfall will probably have to wait for Bungee

quiet vigil
#

Just use ViaVersion on the proxy. Waterfall will probably have to wait for Bungee
@little wadi not really, easy patch

#

Depends on if md_5 releases it later today or not

ornate jasper
wide maple
#

@vestal trellis bonk. Have a look

#

thats at the people in vc too if they have an opinion on this

vestal trellis
#

poggers

wide maple
#

@ zzzCat too- and @ Aikar because this is how the hybrid switching method would look like

trail plume
#

this is the type of BS which makes me just wanna rip out metadata rewriting

wide maple
#

The funny thing is

#

Velocity is still faster

#

Even with resending join every time

trail plume
#

Ik, bungee throws in a lot of extra crud to manage

wide maple
#

Well let’s now see what md_5 has to say

trail plume
#

I think I can pull out one of the respawn calls, iirc; It was just a tad shaky

wide maple
#

This time it needs all of them

trail plume
#

but, heavily irrelevant as the rest of the process throws out crap

wide maple
#

Well we will see

trail plume
#

My brainsed goosed, but looking at it the overall concept looks fine

wide maple
#

If he considers it I need to implement a proper registry comparison method

#

@chilly coral you’re responsible for this btw

chilly coral
#

😰

chilly coral
#

wow, so sad

eager hill
trail plume
#

Before, iirc

eager hill
#

On Paper I know it's before, some people reported the function using that working on Spigot...

#

:needtogodeeper:

trail plume
#

That event is fired when the server conenctor hits login

eager hill
#

When was that changed tho?
Or did something else change?
Anyway, what event would be fired after the player actually joins?

trail plume
#

Wasn't changed

#

Don't think that there really is an event specific to that one

#

ServerSwitchEvent maaybe?

eager hill
#

I'll retest on 1.12.2 since I know it worked back then.

lean gobletBOT
#

pretty sure that event was never fired after the player fully joined

trail plume
#

The events thrown as soon as we hit the login protocol

lean gobletBOT
#

and you would have to test with an old bungee

eager hill
#

Will.

trail plume
#

It's right where bungee starts actually doing the switch over

lean gobletBOT
#

"this event is called once a connection to a server is fully operational, and is about to hand over control of the session to the player. It is useful if you wish to send information to the server before the player logs in."

#

if anything it was broken in the past

eager hill
#

Wouldn't surprise me.

vestal trellis
#

oh wow five you mad lad, he actually pulled your pr

lean gobletBOT
#

because it's more work to get it working

weary grove
#

Is the sky falling?

ornate jasper
wide maple
#

I did my goddamn best to explain in excruciating detail

#

Worked

weary grove
#

wow, finally we have some out of the box thinking from md_5

outer cosmos
#

Is md ill? Or why is he doing that now? Probably afraid of the state that Paper could easily take over everything if Mojang Mappings get relicensed.

zenith raptor
#

whats the dependency/repo for the waterfall api?

#
        <repository>
            <id>papermc-repo</id>
            <url>https://papermc.io/repo/repository/maven-public/</url>
        </repository>```
#

is that the repo

zenith raptor
#

oh dope

#

thanks

#

also - is there any documentation available anywhere on the new chat color features?

lean gobletBOT
#

it's really just ChatColor.of(hexString) or ChatColor.of(Color)

#

(of course it only works in components, not legacy strings)

molten jackal
#

We have to wait for the PR to be confirmed and merged for colored item named and lores right

#

Cuz it doesn’t work in legacy strings

#

RGB colored I mean

lean gobletBOT
#

the proxy doesn't have items and lores

molten jackal
#

I understand that!

tribal jacinth
#

thonk

#

how do edits carry over to irc anyway

molten jackal
#

The thing I’m saying is items names and lores on bukkit can’t be RGB colored because they expect legacy strings

tribal jacinth
#

does it send one of those "correction" messages over there as well

trail plume
#

no

lean gobletBOT
#

yes, item meta needs setters for the components

molten jackal
#

Yes

ornate jasper
#

erm

#

what

#

how do i get the IP of the player thonk

trail plume
#

You'd basically wanna (safely) cast to an INetSocketAddress or something like that

ornate jasper
#

do i have to do an instanceof first

#

getAddress() doesn't so im gonna go with that

weary grove
#

BungeeCord can accept connections via Unix domain sockets

#

Who asked for this feature?!?

bleak current
#

i guess it's useful when you use haproxy or nginx

wide maple
#

I used that with nginx

#

👀

bleak current
#

man of a culture

lean gobletBOT
#

T​ux​; iirc Aesix asked for that, lol

#

for usage with haproxy ;D

bleak current
#

while that's probably fine if you do manual deployments, then fully automatic ones are.... questionable

distant laurel
#

lmao there are actual server owners putting paper into PROD lmao

tribal jacinth
#

lol i know right who would want the better performance and stability on prod

distant laurel
#

I meant the 1.16 paper build right now

sly crown
distant laurel
#

oof wrong section

potent lichen
#

About the deprecation of getAddress, doesn't that mean there is no determinate way to get a player's IP address?

#

However, that doesn't make sense, because every player must have some IP address.

sly crown
#

iirc you just have to get it through some other method

#

there's another class that holds address data

potent lichen
#

Obviously I am just going to use the deprecated method or cast the other method, etc.

sly crown
#

socketaddress

potent lichen
#

But this seems to imply players do not necessarily have IP addresses.

sly crown
#

yes

#

a player could be connecting through a socket that's not over ip

#

this just forces you to check yourself

potent lichen
#

Well, then their IP address would have to be localhost?

#

Practically speaking

sly crown
#

intederminate

#

there are sockets which are not ip sockets

potent lichen
#

How does one determine the IP address of a player connecting through unix domain sockets?

slender heart
#

sry, wrong channel

remote condor
#

Even if it's over a socket, if you're using something like HAProxy it will tag the user with their address that is later used for IP forwarding, you could just get that.

#

Unless that's also socket which was deprecated

ornate jasper
#

after i have fixed a patch that did not apply correctly whats the next command i have to run?

#

git suggests git am --continue

wary inlet
#

that yes

potent lichen
#

Does Bungee really not have a services manager?

wide maple
#

A what now?

#

A module to hook into Linux style systemd or launchcontrol?

potent lichen
#

No

#

Something like the Bukkit services manager

#

Bukkit.getServicesManager

quiet vigil
#

Hey ummm

#

I have an issue regarding switching servers and dimensions

#

When you switch to server A to server B, server A being in the nether and server B being in the overworld, it stays indefinitely in "Downloading Terrain"

#

I'll do more tests but not sure if it's on my end

trail plume
#

That commits not in waterfall right now, but, can be mimicked with metadata rewriting being disabled by waterfall.yml

#

But, stuck in downloading terrain means that you're not getting data from the server to continue somehow

quiet vigil
#

It happens on every server that has different dimensions

#

I do have disable_entity_metadata_rewrite: true

trail plume
#

god knows, maybe they busted something, but that was defo working fine for people

#

best guess falls into "replicate without plugins", etc

quiet vigil
#

Yeah imma do that, just need to setup the test env

quiet vigil
#

Can confirm it happens on waterfall proxy without plugins, but it only happens with disable_entity_metadata_rewrite turned on.

trail plume
#

god knows

#

Was working fine for everybody else

quiet vigil
#

Is it working fine now?

trail plume
#

I don't have a test server setup

#

Really don't have the brain juice to mess around to set up an environment for it, need to also try to wrangle in bungees changes, but, there is defo some oddities around 1.16

quiet vigil
#

I'll do some messing around and see if I can fix it

#

But disable_entity_metadata_rewrite: false fixes it

trail plume
#

That commit in bungee literally just brings that that option does

#

hm, extra respawn packet, maybe...

quiet vigil
#

Might be that

quiet vigil
#

Found the issue @trail plume

#

It was using the login dimension rather than the user's dimension for the fake respawn packet.

#

made a pr if you wanna merge or not, if you aren't planning on merging upstream yet

trail plume
#

ah, cheers

#

lgtm

wide maple
#

@quiet vigil can you please explain to me what kind of issue you fixed here?

#

In 1.16 you need to resend JoinGame if the servers dimension registry and world name list is not 100% exactly identical to the last server you were on. That also implies that double world switching is dead in 1.16 with one small exception

#

That’s what I explained in the PR to the commit on bungeecord you linked

quiet vigil
#

The issue was affecting all versions 1.8-1.15 (dunno 1.16), but the dimension change it was trying to do was not working since it was getting the wrong dimension

#

This was the case when disable entity metadata was turned on

#

In 1.16 you need to resend JoinGame if the servers dimension registry and world name list is not 100% exactly identical to the last server you were on. That also implies that double world switching is dead in 1.16 with one small exception
@wide maple If this is the case we can definitely add a patch for this

#

It does resend the joingame

#

with entity metadata turnd off

wide maple
#

Of course without meta rewriting I’d have to approach it differently

#

1.16 isn’t new yet so all of this isn’t final

quiet vigil
#

What happens to the client?

#

Does it cause any issues the way it's doing it right now?

wide maple
#

After waterfall is upstreamed I’ll take this all into account

quiet vigil
#

I upstreamed waterfall

wide maple
#

Ultimately it’s up to @ zzzCat though

quiet vigil
#

In the PR they sqashed both commits

wide maple
#

I see

#

Idk yet if it’s worth proposing the correct fix or approach again

#

Or if I should directly PR that to waterfall

#

I’m so happy none of this is an issue with Velocity thwoncc

quiet vigil
#

Oh I see the issue now

#

Your fix is interesting

wide maple
#

It’s a hack that uses an edge-case

#

It doesn’t help very much in terms of speed but it stays true to bungeecords workings

quiet vigil
#

It doesn’t help very much in terms of speed but it stays true to bungeecords workings
@wide maple but the stability may be preferred here

wide maple
#

Stability of which one? In terms of stability both are at least equal

#

Sending join game without a delayed write is the approach that’s even a bit more problematic

#

But since bungee sends and flushes immediately it’s not a big concern

quiet vigil
#

The video you sent makes it feel like the client struggles to do the dimension change

wide maple
#

The second one?

quiet vigil
#

the first one

wide maple
#

Ah. The first one was prior to the commit included in this PR

#

The second video further down is how it behaves with this fix that’s now merged in WF

#

Again this is to please edge-cases

#

But as you can see it’s easy to run into one

#

Alas it looks exactly the same in the second video as it would with the switching rework I proposed

quiet vigil
#

Is the respawn packet necessary after sending the join packet?

#

when switching servers

#

Oh wait

#

In 1.16+ you only need one respawn packet

#

not two

quiet vigil
#

oh wait nvm it's broken

#

It works for 1.16

#

but I broke it for the older versions

quiet vigil
#

I believe this is a much simpler alternative to what you were trying to achieve @wide maple

#

(It should've said without metadata rewrite fyi, not with)

wide maple
#

// Only send if we're in the same dimension @quiet vigil do remember that you’re comparing objects with == here and not primitives

#

Nvm I just woke up. Looks fine

#

Yea this should just work for non rewriting

unborn sparrow
#

https://hastebin.com/imaqonuyad.css
When joining my 1.16.1 survival serveThen it says ingame to me in chat ‘the server you were previously om went down’ even tho its still up. So,etimes i can join but after a few mins it ends up kocking me too.

quiet vigil
#

@unborn sparrow A scoreboard plugin on your server is conflicting with waterfall

unborn sparrow
#

Ye i fixed it

#

It was a nametag plugin on my spigot server

pulsar ibex
#

hello can anyone help me out? i need a DIRECT LINK to paper 1.16 (preferably latest but any will work) that i can download with wget, my internet is down and i can't seem to upload large files thru phone tethering

#

please... kind of an emergency as i have 0 working paper jars on my server right now

sly crown
#

wrong channel

pulsar ibex
#

accidentally corrupted the o-

#

sorry sir

#

wait this is paper help where should i go?

sly crown
#

this is waterfall dev

pulsar ibex
#

oh

#

sorry

#

:I

#

big apologies

grizzled thistle
#

why is this showing for 1.16-1.16.1 clients?

#

when using 1.15.2 or any other version client it shows the server icon properly

wide maple
#

Share your exact server icon please

#

On 1.16 there is a known cache issue. Try with another launcher

grizzled thistle
#

what launcher should I use then?

#

@wide maple here's the server icon

grizzled thistle
#

I think waterfall is currently collapsing, might need to fork it to fix the issues

#

hover events are fucked, just kicks players

lean gobletBOT
#

downgrade

grizzled thistle
#

server icons are still fucked for 1.16 clients

lean gobletBOT
#

it's a bungee back pulled with the last upstream merge

#

yeah, vanilla servers seem to have the similar issue

#

SLP doesn't seem to have that

grizzled thistle
#

SLP?

lean gobletBOT
#

ServerListPlus

grizzled thistle
#

oh, I don't use that but I might to temp fix this

slender heart
#

I have 2 questions about Waterfall, since I always had a well feelable delay between a shot and the actual response in my arena plugin, I was trying to connect to the dev server directly. Now is much better, how much delay/latency will Waterfall cause in general? Will "((CraftPlayer) player).getHandle().ping;" actually get the correct value behind Waterfall or just ping between Waterfall and Server?

lean gobletBOT
#

pretty sure it will get the correct png

#

*ping

slender heart
#

Hmm it also has less latency now after the restart of Waterfall

upper plinth
#

does getHostname on PlayerJoinEvent get hostname even if behind waterfall/bungee? is there a way to get hostname connected with from individual servers?

violet saffron
#

I mean, the individual backend servers fire the PlayerJoinEvent

upper plinth
#

it only gets the bungeecord ip, is there a way to get the one from the server menu?

lean gobletBOT
#

do you have your bungee setup to ip forward?

upper plinth
#

Yes

#

I can get players ips fine, I’m looking for the ip they connected with

lean gobletBOT
#

oh, the proxy ip

#

I thought you wanted it the other way around

upper plinth
#

is there an easy way to send data from bungee or request data from a server to the proxy easily?

molten jackal
#

I see that BungeeCord's chat api includes the font attribute in ComponentBuilder now, but I don't have it when depending on waterfall version 1.16-R0.1-SNAPSHOT, is there a new version to use that includes these changes?

#

I compiled from source and it includes it there

lean gobletBOT
#

R0.2?

molten jackal
#

I just saw that in the build log

#

LOL

#

Trying now

#

I changed it to 1.16-R0.2-SNAPSHOT and it still doesn't exist for me ... should I try invalidating my caches and restarting on intellij?

lean gobletBOT
#

maybe

molten jackal
#

yeah still not there

lean gobletBOT
#

I guess you could always manually downlaod from teh repo and check the jar file xD

molten jackal
#

ill try that after i eat

molten jackal
#

I see a bunch of different waterfall repos, waterfall-api, waterfall-chat, etc. I checked all of them for which one would be the "universal" that would include both the api and chat, but now I'm confused on how I even have the waterfall-chat since I only depend on waterfall-api...

#

I also just tried depending on waterfall-chat on top of waterfall-api and it still doesnt have font() even though the repo includes it?

#

I figured it out I think

#

I was depending on paper-api 1.16.1-R0.1-SNAPSHOT and that did not have ComponentBuilder#font(String)

#

Swapped to R0.2 and it works

#

Wait nvm

#

It doesn't exist

#

Lol

#

somehow paper-api is overriding ComponentBuilder even though it doesn't exist in the repo

#

Ok I've figured out the issue. The paper-api repo's shaded jar has the ComponentBuilder class, which doesn't include the font method!

lean gobletBOT
#

S​we​dz​: yeah, Spigot does not include bungee-chat R0.2 yet

sage cradle
#

lol

lean gobletBOT
#

as far as I can tell md just forgot about font in the builder ¯_(ツ)_/¯ compoenents supported it already in R0.1 xD

tribal jacinth
bleak current
#

Hi

#

I found a waterfall / travertine bug

#

Where can I report it?

lean gobletBOT
#

on the github issue tracker

ornate jasper
#

I mean bungeechat is now a dependency in maven central so just add the new version

lean gobletBOT
#

doesn't make it magically work on spigot though, lol

slender grotto
#

How come when I run java ProxyServer.getInstance().getPlayer(uuid).connect(server); from a plugin message i get
DownstreamBridge <-> [lobby] - bad packet ID, are mods in use!? Did not read all bytes from packet class net.md_5.bungee.protocol.packet.PlayerListItem 51 Protocol GAME Direction TO_CLIENT?
If I run it twice almost instantly after it works the second time..

#

Using latest waterfall version

#

nevermind, it's not just that theres something wrong with my spigot server.

shut glacier
#

Alright, I'm about to lose my mind. I'm getting nagged to death about that lovely 1.16 RGB color feature and especially "but what about older clients". So my question, if I send a message with RGB colors to an older client will Bungee or Waterfall translate that to the nearest stock color?

trail plume
#

Nope

#

afaik, they default to the first color as they're considered in valid, which was black from what I recall

lean gobletBOT
#

kyori adventure has that afaik

#

I personally only care about that in the server list MOTD and check the client version manually

molten jackal
#

Yeah it defaults to black because its the first color in the legacy chat color enum

vapid cargo
#

This might be a long shot, but is it possible to change how SIGTERM is handled with a plugin? I want the server to do a /stop on such requests..

lean gobletBOT
#

doesn't it already do that?

#

pretty sure it stopped gracefully last time I did ctrl+c xD

vapid cargo
#

hmm, as far as ive heard ctrl+c isint the same as sigterm, being a sigint or something like that

#

butt ill double check, just assumed it didint after reading some forumposts about it

vapid cargo
#

Just double-checked, sigterm is handled by /stop, mb..

quartz turtle
#

Hey guys I have a few questions, where do I get the jars needed to develop for bungee, and would I go about sending a player to a server and then executing a command or function on the server that the player was teleported to

quartz turtle
#

Is it possible to get the name of the world the player is in?

#

From bungee?

harsh harbor
#

Plugin messaging.

wide maple
#

^ As for world names- Since 1.16 the world or level name is sent in the respawn packet

#

But since md_5 didn’t care about this even multiverse can’t send the level names without breaking api

glass horizon
#

wait is plugin messaging just for proxy/server to Player and vice versa or can you use it for messaging between proxy and server as well?

ebon atlas
#

plugin messages are meant for communication between server and player, but obviously the proxy can intercept that

glass horizon
#

Is there an actual supported way of messaging between proxy and game server or will I have to do it myself?

ebon atlas
#

Well you can use the plugin messages, but it requires a player on the server

stone rover
#

Is there an actual supported way of messaging between proxy and game server or will I have to do it myself?
@glass horizon In some cases you can use Plugin Messages, but I recommend you to use some external solutions like Netty, NATS, Kafka, Redis Messaging or MqTT

lean gobletBOT
#

also nice: RabbitMQ

bleak current
#

on the github issue tracker
@phoenix616#0000 Ok i report on the github

trail plume
#

property files don't support multiline

#

Issue here is gonna be down to how bungee translates that into a component (or, likely just basically doesn't)

bleak current
#

Many Forks of Waterfall do this

#

Ah, actually the fork of waterfall have a separate file called for example message.yml, can't you add it too?

trail plume
#

if somebody wants to PR it, sure

#

But, pulling all the messages out into a seperate file is far from a high priority

bleak current
#

By now many servers also modify those messages found on message.properties. I think it is useless for everyone to extract the file every time, you could directly file a file that is automatically generated, it would be much more convenient, if instead the person does not want to modify anything, leave it as it is.

#

But, pulling all the messages out into a seperate file is far from a high priority
Mh.. Ok

trail plume
#

I mean, I always suggest using plugins for this stuff, pulling it out into a yaml file won't fix anything here

#

\n works fine for new lines, etc; Issue here is that the parsing is just bleh

#

It's probs just stuffing it into a single chat component vs creating multiple

bleak current
#

The message.properties would also be fine, however, it would have been nice if you could change the message entirely, Colors (which you can already do) but also add other lines as many do. Actually, it may not be for everyone but for those who try to create a well-made server, they are sure they look a lot at aesthetics and they also take this into account

lean gobletBOT
#

you would either need to change how sendMessage parses strings or return components on ProxyServer#getTranslation. both would be breaking changes

#

(if you want to keep the diff small)

trail plume
#

Yea, that's part of why it's far from a high priority

#

I fucking hate chat compoents

#

all of this stuff, I literally just did with a plugin

lean gobletBOT
#

it's fine if you use a wrapper for loading it from configs thinksmart

#

but there sure are some oddities in the API. like how you can't really create component arrays that aren't just chained extras with the builder :S

#

at least the legacy parser actually tries to parse it as components instead of stuffing it into the value of the TextComponent (which technically works but breaks on new lines)

bleak current
#

But if I create a plugin can I edit all the messages from message.properties?

#

or do I have to have a fork?

lean gobletBOT
#

you can theoretically just make a plugin that converts a yml to the messages.properties, lol

#

or just auto-extracts the included messages.properties I guess

bleak current
#

and allows me to create multiple lines?

lean gobletBOT
#

I would assume you can just put a \n in there?

bleak current
#

yes, but I have already tried it, the problem is not that. Sonk the lines that I am going to create with / n

#

Yes but

#

Read please

#

This is the problem

trail plume
#

That issue is purely with how bungee handles chat components

bleak current
#

so nothing can be done? Instead of creating a fork of Waterfall

lean gobletBOT
#

use a plugin

#

also the screenshot looks like a bug in the Minecraft client, reproduce on vanilla (on latest) and report to mojang I guess

trail plume
#

Seems like they toyed with \n recently

#

It used to just "work", but, clearly something changed here

bleak current
#

in reality this does not happen with waterfall fork that I tried, other forks allow you to put | - which in my opinion is even better> use a plugin
@phoenix616#0000

trail plume
#

Well, yes

#

They probably ditched bungees translation stuff or made a breaking change there

bleak current
#

It used to just "work", but, clearly something changed here
@trail plume , Oh, ok

trail plume
#

Basically, it's fixable

#

It "just" needs a change to how bungee handles those translations

bleak current
#

Basically, it's fixable
it would be great

#

It "just" needs a change to how bungee handles those translations
Mh.. Ok

#

Are you thinking of trying? It would be perfect

trail plume
#

low priority

#

Currently ill and was kinda observing a dumcord blackout

#

Not to mention that i've got a ton of paid work to get through before I touch some of the other more important crud in waterfall

lean gobletBOT
#

feel free to open a PR or pay someone to do that, lol

#

or, you know, get upstream to do it 👀

bleak current
#

low priority
Ok, it would have been nice to have multi-line support

#

feel free to open a PR or pay someone to do that, lol
The Fix?

trail plume
#

yes

#

I mean, "nice to haves" are much less priority than some of the other issues I need to look into

#

This is an open source project, people are more than welcome to submit a PR, or even try to file an issue upstream and then we can get a more compatible fix across the entire ecosystem than having to diverge from upstream behaviour

bleak current
#

ok, as you want, maybe in a few weeks you will make a fix, I am away for 1 month maybe on my return it may already be fixed, in case I would also be willing to pay, I am fixated with aesthetics and design I can not do without multi lines

#

This is an open source project, people are more than welcome to submit a PR, or even try to file an issue upstream and then we can get a more compatible fix across the entire ecosystem than having to diverge from upstream behaviour
Ok

zinc falcon
#

Hey guys! Having an issue with Tab autocomplete bringing up more player names instead of the information provided. I've been having this configuration issue for a bit now but I can't seem to figure out where it's from.

Tab autocomplete works for my commands, but as soon as I get to Args it pulls up a list of every user on the Waterfall network. Once you start typing in an actual Arg that should be tab-completed, it pulls it up, but that obviously doesn't help the players. I've been removing plugins to see if it's an issue with something like ViaVersion or what-not, but to no avail.

Wondering if I keep missing something in the Waterfall config or if I mucked up command implementation somehow. Apologies if I'm just blind.

Example;
https://i.imgur.com/fymMW0L.gifv

trail plume
#

return an empty list or something

#

I don't recall if bungee just slaps the player list out by default

#

If that's actually a bukkit plugin, paper.yml has an option for that behavior, but, better off being fixed in the plugin

zinc falcon
#

If I return an empty list for the auto-complete won't that just disable it entirely?

#

Also I played with the Paper settings on it and didn't find any change. On a different server to the one those players are on, which is why I bring it up for Waterfall

#

None of those players are on the same server I'm testing from

trail plume
#

Well, what are you returning when you get to the args?

zinc falcon
#

It's supposed to be a list of the options (in the example case, 'always, explicit, quoations' are the three options) which are sent back as a list of Strings to auto complete with iirc

#

Yeah it takes the list of args, sets them lowercase, then using a SuggestionsBuilder it combines them all up then builds a CompletableFuture to send through. Let me test it without it being connected to the Waterfall for a moment to verify that it works without Waterfall overlooking it.

zinc falcon
trail plume
#

waterfall won't even touch those

#

suggest-player-names-when-null-tab-completions

#

paper.yml

zinc falcon
#

Yeah I swapped that around to no avail. Kinda wacky

#

Let me try stripping out my plugins and only having 3rd party ones to see if it's Waterfall or if it's my plugin intercepting it somehow.

#

Yeah it's still throwing it up with Essentials and Plugman being the only plugins installed. Sender is OP so it shouldn't return null on the tab completion for Plugman, and suggest-player-names-when-null-tab-completions is false to prevent that.

#

Also happens with /warp. It has to be Waterfall since there's no other way for it to get those usernames other than through the network.

trail plume
#

No idea, but, waterfall on its own won't do that

#

best guess would be check your proxy plugins

zinc falcon
#

Hmmm, would a tab list do that, you think?

#

BTLP

trail plume
#

no idea

zinc falcon
#

Alright, I'll keep testing and poking things. Thanks for the help. Frustrating to have tab completion not work, makes players ask way more questions than needed a lot of the time haha

wide maple
#

Can literally not do anything

grim nimbus
#

is Travertine and Waterfall working for 1.16?

#

oops wrong channel.

trail plume
#

Five, you're tryna brain on the internet

#

That's not how it works

bleak current
#

@long jolt the minecraft development plugin is broken when you make a new waterfall plugin. It sets the version of waterfall-api to 1.16-SNAPSHOT when it should be 1.16-R0.1-SNAPSHOT

#

I'll make a github issue in a sec but I'm busy atm

violet saffron
#

It's cause md5 changed the way he versioned it for some random reason.

bleak current
#

That's nice

potent lichen
#

another md5 moment

#

i'm still thinking of that securitymanager bungeecord has

dusky swallow
#

Dare I ask

trail plume
#

bungee screams at you if you as a plugin create a new thread, etc

#

It's just, super nice, 10/10, thx for making life easy

lean gobletBOT
#

G​lä​ré​: it's not random, it indicates release versions to maven central

potent lichen
#

waterfall is released to central? 👀

trail plume
#

no

potent lichen
#

oh

#

Bungee's scheduler implementation seems that it creates a new mostly-sleeping thread for every task

#

wouldn't this overload the proxy with unnecessary threads?

#

I guess I should ask tux from velocity

trail plume
#

Yes

#

I think that the idea is that you shouldn't really be doing too much where that is relevant

potent lichen
#

i wasn't planning on running many tasks, only 1

trail plume
#

if you do have to schedule stuff, etc, skip bungee and just use your own scheduled executor

potent lichen
#

yep, that's my plan

tribal jacinth
#

what a great scheduler

#

i bet it's lightweight

#

because nobody uses it

potent lichen
#

how incredibly amazing i find the bungeecord proxy api and implementation the more i use it

ornate jasper
#

I thought it was discouraged to create threads and schedulers and instead use the bungee api

trail plume
#

"discouraged"

#

Only by md5

fiery wedge
#

that scheduler implementation is incredibly stupid

#

go with the JDK one

weary grove
#

We have a scheduler in Velocity 🤢

#

though I am firing repeating tasks from ScheduledExecutorService at least

trail plume
#

was actually sitting on the pooper before and wondering "how much of a headache would it be to just turn that to a ScheduledExecutorService"

fiery wedge
#

A surprisingly large amount good Dev ideas come from the toilet

#

I'll go submit a patch for that

tribal jacinth
#

'the toilet patch'

weary grove
#

@trail plume just you wait, p sure there's a plugin that's doing something stupid with BungeeTask pepega

#

I know RedisBungee did something absolutely dumb when it replaces the BungeeCord-provided plugin executor with its own

trail plume
#

PMSL

weary grove
#

To be fair, I had a problem to solve and this, crazy enough, solves it

fiery wedge
#

Hmm yeah

#

Not sure why md_5 reimplemented ScheduledExecutorService himself

#

And each thread blocks using Thread.sleep

#

Can we consider just switching to a ScheduledExecutorService?

trail plume
#

That's what I was wondering, assuming stuff uses the API, they literally won't even notice it

#

LOL

fiery wedge
#

what?

trail plume
#

first bullet point ;P

#

The fact you linked it too

fiery wedge
#

Well I mean I wanted people to know I wasn't stalking you

#

This was second-hand info

trail plume
#

Well, true

bleak current
#

How to add waterfall api as dependency?

trail plume
#

pins

#

same repo was paper

bleak current
#

compileOnly 'io.github.waterfallmc:waterfall-api:1.16-SNAPSHOT'
this ain't working

weary grove
#

Version got changed, I think it's 1.16-R0.1-SNAPSHOT now

bleak current
#

Yeah did it

#

and it worked

weary grove
#

md_5 being pepega

trail plume
#

miiight be .2 now, I forget

#

kinda been debating on dropping the R, it means nothing to us anyways

wary inlet
#

its 0.2 yes

bleak current
#

can anyone tell me why I need that common project when make a waterfall and paper plugin?

glass horizon
#

Is it okay to simply open a connection between a game server and proxy or is it recommended to use something like redis pub sub for communications between server and proxy?

bleak current
#

Hello?

trail plume
#

because that's how that plugin was structured?

#

you throw the logic in -common

scarlet arrow
#

was there an API change recently?

#

Noticed one of the plugins I've been using is throwing a java.lang.IllegalStateException: java.lang.NoSuchFieldException: byListenerAndPriority

#

looking at the code I don't see any glaring issues but it was working on older waterfall builds

stone rover
#

Which one are you using?

#

And which one did you used for compilation?

weary grove
#

I can see someone wanted to do some stupid registration stuff

#

We need this hack too, and I'm not giving my code for that, but needless to say, PLEASE PLEASE PLEASE switch to Velocity for your own sanity

#

Registering a non-method event listener in Velocity is a single line of code.

scarlet arrow
#

weirdly enough the exception stopped being thrown after I removed a bungee plugin manager

#

no idea why a different plugin would break another in such a way

#

though I may just rewrite the plugin that was having issues anyway, it's written in Kotlin with a lot of broken libs

weary grove
#

"bungee plugin managers"

#

yeah, that sounds like a problem

remote condor
#

I've been trying to convince Skybounds to try out Velocity.

#

But we've changed the login pipeline recently so we'd have to replicate that.

harsh harbor
#

@bleak current it rewrites entity ids in minecraft packets

#

made for forge support (it sucks)

harsh harbor
#

no

bleak current
#

Dhdhskxbxbznnznxnxnmskxk

bleak current
#

With ProxyPingEvent is it possible to change the motd/description for individual forced hosts? (e.g. have the main domain.com say something seperate to creative.domain.com)

trail plume
#

yes

bleak current
#

I tried using the port 25565 via the virtualHost but that didnt seem to work

trail plume
#

wat you mean, "using the port"

bleak current
#

connection.getVirtualHost().getPort()

trail plume
#

That's all extracted from the handshake packet

bleak current
#

ah ok so ideally i should be using the server address for this (getHostString())

trail plume
#

basically, yes

#

(or, well, yea)

bleak current
#

Cheers 🙂

potent lichen
#

Is the new non-enum ChatColor with hex capabilities released yet? Although I've tried specifying 1.16-R0.2 and 1.16-R0.3-SNAPSHOT as the version of BungeeCord, the class still resolves to an enum.

trail plume
#

yes

#

ChatColor.of iirc

potent lichen
#

hmm, for some reason i'm still seeing an enum in my ide

#

i'll try again later

trail plume
#

reimport, chech your dep tree

outer cosmos
#

Check your imports. Most time it's just a wrong import.

potent lichen
#

turns out I accidentally had the spigot-api which was pulling an older version of bungeecord-chat

#

this is why i usually separate bungee/spigot deps, but it all worked out

plucky zenith
#

What does this mean? Getting this

#

Caused by waterfall

harsh harbor
#

Bad packet

potent lichen
#

Is it just me or is BungeeCord making breaking changes left, right, and center to the chat API?

harsh harbor
#

plus this is not related to waterfall, is this Via** @plucky zenith

jade wedge
#

question. when I do something async and it throws an error, why does it print with a line in between? https://prnt.sc/thyups

Lightshot

Captured with Lightshot

trail plume
#

that's your terminal being weird

jade wedge
#

oof

plucky osprey
#

So maybe this is better here: We've got stupid QueryHandler spamming, and I wonder if it's worth to implement connection blacklisting in QueryHandler#channelRead0? I fear since it's UDP the whole package is in memory anyway, but at least we don't read two bytes and don't log (which on that scale could've also been the delay, the logger logging to stdout)

#

Also how would I make this configurable in the waterfall.yml? I could use ConfigurationPrtovider#load but I don't want a different file

potent lichen
#

@jade wedge Would you mind providing a little more context behind that? I know someone who has the same issue, but 1.) it only occurs with songoda plugins 2.) it only happens on java 14

#

It was a curious case to say the least, which I'd like to know more about

jade wedge
#

it happens on my own plugin and yes i’m using java 14. maybe that’s why. i mean it doesn’t affect anything apart from my ocd lol

#

@potent lichen

#

i’ve only tested it with putty but i’ll try command prompt later on java 8 as well

plucky osprey
potent lichen
#

ConcurrentHashMap with AtomicInteger inside? just use ConcurrentMap#compute

#

also, it's generally bad practice to make your logging statements do anything functional. You should be able to remove them without introducing a bug.

trail plume
#

Congratulations

#

You just added a way to ddos yourself and crash your servers, woooo

bleak current
#

zzz being zzz

potent lichen
#

yeah MeFisto, you make a new AtomicInteger() in channelRead0. I am no networking expert but I do not think that is cheap

trail plume
#

creation of that is not the issue

#

What happens when you have an object which stuff isn't freed from?

#

What happens when that object is soooo easy for people to stuff data in there

potent lichen
#

memory leak

long remnant
#

does anyone know how to change the phase

#

of an EntityEnderDragon

#

this obfuscation is fucking with my brain

trail plume
long remnant
#

shit

#

the categorys are the exact same 😂

plucky osprey
#

Well it has no eviction because we're restarting daily, but a Guava Cache might indeed be good. However it takes a lot of ips to fill the Memory I guess?

#

And I used AtomicInteger because I wasn't sure if compute happens within that atomic/lock, because if it doesn't, counting could go wrong

plucky osprey
trail plume
#

yes, software doesn't really like it when you hammer it with requests

#

the issue is "how do you deal with it"

plucky osprey
#

Yep, and I guess skipping logging on recurring bad requests at least prevents stdout backpressure

weary grove
#

Inet4Address is at least 56 bytes in memory. A single /8 (that's 16,777,216) of IP addresses will occupt at least 872MB of memory.

plucky osprey
#

Couldn't an IPv4 compressed down to one integer, though?

#

Also this only mitigates small attacks as these (i think they just took a few offshore vps), anything else is overloading switches etc, which would however probably trigger our DDOS Protection

#

So my question is do you have any interest in upstreaming this "concept" at all, so are we talking about concepts or implementation?

trail plume
#

Not really

#

We added an event for plugins to be able to deal with that much better

plucky osprey
#

Invalid Queries? Logging?

harsh harbor
#

Easy solution: disable query completely.

plucky osprey
#

the vote sites don't even support changing the port though

harsh harbor
#

just blacklist everyone except voting site ip?

#

profit?

plucky osprey
#

and I guess a lot of other invalid packets could be sent which trigger a warning, couldn't they?

weary grove
#

I "fix" this issue in Velocity 1.1.0 now by just noticing errors and swallowing them

plucky osprey
#

and yeah we're currently looking into iptables for that

harsh harbor
#

@weary grove I saw your commit to Velocity, instead of adding checks to packet decoder you may just add outbound handler to the pipeline

weary grove
#

I went down a rabbit hole and figured a solution that worked, I kinda don't want to revisit it.

harsh harbor
#
@ChannelHandler.Sharable
final class ChannelDiscardHandler extends ChannelOutboundHandlerAdapter
{
    static final ChannelDiscardHandler INSTANCE = new ChannelDiscardHandler();

    @Override
    public void read(ChannelHandlerContext ctx) throws Exception
    {
    }

    @Override
    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception
    {
        ReferenceCountUtil.release( msg );
        promise.setFailure( Errors.discard() );
    }

    @Override
    public void flush(ChannelHandlerContext ctx) throws Exception
    {
    }
}

            channel.config().setAutoRead(false);
            pipeline.addFirst(DISCARD_HANDLER, ChannelDiscardHandler.INSTANCE);
            channel.close();
weary grove
#

Yeah, I know about that. That was my initial solution.

#

Ok, I didn't do it the way you did. Your solution is probably going to be slightly more efficient.

harsh harbor
#
    public void shutdownChannel(Channel channel, boolean force) {
        if (force) {
            channel.unsafe().closeForcibly();
            return;
        }
        val pipeline = channel.pipeline();
        if (pipeline.get(DISCARD_HANDLER) == null) {
            channel.config().setAutoRead(false);
            pipeline.addFirst(DISCARD_HANDLER, ChannelDiscardHandler.INSTANCE);
            channel.close();
        }
    }
weary grove
#

However, I also rewrote FlowControlHandler to make it work better with Velocity

#

So I'll just stick similar logic there

#

But not right now.

harsh harbor
#

plus i'm doing some... unsafe things

#
    static {
        try {
            MethodHandles.publicLookup();
            val field = MethodHandles.Lookup.class.getDeclaredField("IMPL_LOOKUP");
            field.setAccessible(true);
            val lookup = LOOKUP = (MethodHandles.Lookup) field.get(null);
            GET_STACK_TRACE = lookup.findVirtual(Throwable.class, "getOurStackTrace", MethodType.methodType(StackTraceElement[].class));
        } catch (IllegalAccessException | NoSuchFieldException | NoSuchMethodException ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }
#

not sure if that's improves something, but at least it removes copying

plucky osprey
#

so Velocity solves this while being api compliant with bungee?

weary grove
#

Nope

#

Not even close

#

We reject the BungeeCord API

harsh harbor
#

md_5 rejected my PR D:

plucky osprey
#

oh okay

worldly ore
#

Is it possible to get the UUID of an offline player?

trail plume
#

not without calling mojangs API or maintaining your own cache

gusty quest
#

I'm making a command that uses an http request to get data, but I can't figure out how to make it not block the main thread but still return the response

I've used ```java
Plugin.getPlugin().getProxy().getScheduler().runAsync(Plugin.getPlugin(), new Runnable(){

        @Override
        public void run() {
            do http request();
            return response;
        }
        
    });```

But I can't figure out how to get the response out and send it to the player's chat

trail plume
#

you can't go async and return the result

#

Only thing you could do is return something like a future or use a callback, but, really; just send the message to them from the async thread

gusty quest
#

Ok

worldly ore
#

How do I add tab completion for online players to a command?

shrewd vortex
#

How do I add tab completion for online players to a command?
@worldly ore are you using TabCompleteEvent to implement it?

trail plume
#

I keep debating about the rev number in waterfall; We don't release to central, I don't think that we have any plans to release to central either, do we really need to/should we keep the R number? my personal vote is no, it seemingly just adds extra noise, it's not like he really cares tomake changes to break API vs just relying on plugins to deal with his shit, so, does it really matter?

potent lichen
#

I mean does anyone use a rev version other than the latest one once it has come out?

lime walrus
#

How do I get the proxys IP address?
I saw that it is located in the Config Listener so I'm trying to get ProxyServer.getInstance().getConfig().getListeners() which is a stream.

Can I simply findFirst and then get the Host from the Optional?
Or is there any sweeter possibility in getting the port?

trail plume
#

Well, it's a collection, but, basically, yes

lime walrus
#

Alright, Imma give it a try
Thanks!

lime walrus
#

Worked like a charm btw (:

night grotto
#

lol wanted a clickable link to see

wide maple
topaz lotus
#

I'm trying to make a spigot/bungee plugin that has a hacky "guaranteed-ish message delivery" of sorts between proxy and server using plugin channels; from what I can tell it works at all times the player is fully connected and in control, but not during (/immediately after?) the time ServerConnectedEvent listeners are running their code.
To clarify, I'm trying to send a pluginchannel message to the server in a ServerConnectedEvent listener, then receive a pluginchannel response to that message which might be received before the ServerConnectedEvent listeners finish running/the proxy "[hands] over control of the session to the player"
The plugin will be able to support a more reliable external messaging service as well but the idea was that that would only be optional, and I'd be able to drop the plugin in and use plugin channels as a less-gooder, no-dependencies-or-extra-setup solution.

Is this a "why the hell are you doing that, no, just no, stop being bad" situation or an actual bug I should report?

trail plume
#

ServerConnectedEvent is probs just too early

#

There are many varying risks of desync around there between the proxy and the client that might not work out too well, often delaying stuff and such is what people go to

#

at the end of the day, if you need something relyable, use something relyable; or, try to aim for some level of "expecting the plugin message system to be crap"

#

*reliable

#

god, this brain of mine

topaz lotus
#

the reason for the question is ServerConnectedEvent's docs saying "this event is called once a connection to a server is fully operational ... It is useful if you wish to send information to the server before the player logs in"
which I realize explicitly only says "send", but also that it's "fully operational". the sending works just fine, it's the receiving that's a problem.
<more excessive use of words> tl;dr are plugin channels meant to only have one-way communication until <shortly after> ServerConnectedEvent?

trail plume
#

"fully operational" doesn't entirely mean much iirc

#

"before the player logs in"

#

is likely the key aspect here

#

honestly, bungee is full of so many weird and janky issues around this system....

topaz lotus
#

the "before the player logs in" part was what I was kind of hoping for

#

ie I wanted to send something to the server and the server respond with "got it!" before the player can see and interact with the world

trail plume
#

last I recall, CB doesn't expose that stuff to plugins in the states you're likely wishing it would

topaz lotus
#

already had to admit partial defeat when I saw that a commit by md_5 in... 2013? to make ServerConnectedEvent a delayable AsyncEvent was reverted a whole 2 days after it was made

hmm...

trail plume
#

Yea, there are probs many things that could be done to improve this mess

#

Just, we can't do it all, not without potentially breaking lots of other stuff in the process

weary grove
#

In Velocity 1.1.0, we have a ServerPostConnectEvent that can cover this case

#

inb4 "tux, his md free lifestyle, and his better than bungee proxy"

bleak current
#

ah, tux, his md free lifestyle, and his better than bungee proxy is happening again

potent lichen
#

At this point, I honestly can't count how many issues, sharp points, and hazards in BungeeCord I've noted, all of which are solved in Velocity. Some of them are very elementary, too.

trail plume
#

the way I see it was, bungee was a POC hack that turned into this big huge thing

#

It's got so many issues which are fundimental to it because nobody really cared to take the time to make it more robust, etc

potent lichen
#

fundamental (sorry)

trail plume
#

Issue we have at waterfall is that practically every large plugin in existence had some hack to cope with limitations/moronity of bungee

#

e.g. team prefixes in the bungee API will give you raw json since vanilla made that change

#

I did want to handle that properly, md basically veto'd that one by refusing to deal with it

#

it's a pretty crushing experience working on WF at times, because you have to consider even the stupidiest of changes as potentially being a killer to plugins

#

e.g. we could add a resource pack API in WF

#

That will break literally every bungee resource pack plugin

potent lichen
#

why?

trail plume
#

because those plugins hijack in a resource pack packet

topaz lotus
#

Minecraft: is bad
Minecraft mod/plugin APIs: try to be good, but Minecraft is bad
Minecraft mods/plugins: Netty!

bleak current
#

Is there a way to use translatealternatecolorcodes with bungee? componentbuilders are a paint to deal with

weary grove
#

You shouldn't be dealing with legacy color-coded messages

#

Well, and I can say the BungeeCord API is also a pain to deal with.

#

In part that's why I abandoned BungeeCord years ago.

#

My advice is to suck it up and learn the new component way

trail plume
#

take a look at adventure

bleak current
#

Ok, thanks

trail plume
#

.g kyori adventure

lean gobletBOT
#

(DiscordBot) https://github.com/KyoriPowered/adventure -- KyoriPowered/adventure: A user-interface library for ... -...: "<dependency> <groupId>net.kyori</groupId> <artifactId>adventure-api</artifactId> <version>4.0.0-SNAPSHOT</version> </dependency>. Gradle...."

weary grove
#

If you want a saner text API, take a look at Adventure

bleak current
#

ok ill look at that

#

thank you

weary grove
#

It works with all the major platforms, including BungeeCord/Waterfall

versed dove
#

My fishing rod isnt working

#

without plugins

#

is there any option in paper or spigot that might changed that?

twilit pewter
trail plume
#

waterfall version?

versed dove
#

waterfall version?
@trail plume 357

trail plume
#

update...

versed dove
#

lastest is 366 ?

trail plume
#

yes

versed dove
#

that would fix?

trail plume
#

should do, yes

versed dove
#

omg

#

ty

#

and pistons arent working proper

#

could be also waterfall?

trail plume
#

🤷‍♂️

versed dove
#

k

bleak current
#

How does the module /find and /ip have tab completions for player names? I looked at the code and couldn't find anything

trail plume
#

They extend PlayerCommand which does that

bleak current
#

I completely missed that, thanks

#

oh rip thats deprecated

trail plume
#

just copy the code out of it 🤷‍♂️

bleak current
#

k

lean gobletBOT
#

the args parameter contains the arguments that were typed

gentle burrow
#

I'm just wondering...

#

automated?

#

or is actually someone updating patches by hand?

#

asking about "Updated upstream" commits in general

harsh harbor
#

it's automated

gentle burrow
#

woah, nice 😮