#waterfall-dev
1 messages · Page 10 of 1
https://canary.discordapp.com/channels/289587909051416579/555462249750331403/720116123609333820
oh god, Purpurfall coming soon
weekly reminder for cat to convert byof to a template repo
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
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
github limiting features for forks is a pretty good reason, lol
@ electronicboy a config Option to turn off rewriting for forge over waterfall should do the trick already or am I mistaken?
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
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
@ 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.
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?
uhhh honestly it'd be easier to use plugin messaging to tell backend server to play a sound
I can only find PluginMessage stuff
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)
Considering I don't have a plugin to talk to on the backend it would not be easier
if you say so
people rarely do that or realize pretty quickly that this is not what they want
but
lemme see...
And why would other plugins doing the same interfer?
because you can't register a packet twice
You mean the packet ID?
yes
That's some BS
If multiple plugins can send messages why wouldn't multiple plugins be able to send the same packet?
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?
Sure
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
I don't see the issue tbh. All that would need to happen is that both packet classes resolve to the same ID
if you really want to step into that rabbit hole
maybe this can help you
have fun
If it's for incoming packets then it can be deserialized for all registered packets
Frankly don't see the issue
If it's for incoming packets then it can be deserialized for all registered packets
wdym
Like before I was talking about registering outbound packets
honestly tad safer way would be to register your own handler into netty pipeline
There really is 0 issue with using a MultiMap for packets
which will bypass bungee's packet registry
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
packets aren't part of bungee api
They clearly are
or at least shouldn't be
That's a different story
Having a half assed implementation doesn't make anything better
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
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
more like brainbone
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
I'm not like that
Do you happen to have resources for netty handlers?
Seems easier tbh
anyone know what class extends bungeecords ProxyServer class?
net.md_5.bungee.BungeeCord
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
same reason why bungee still uses plain reflection for event handlers
"no noticeable improvement"
Solved this problem?
https://github.com/PaperMC/Waterfall/issues/429
I can provide all the information about it together with a crash client
provide the info please
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
Hey? how do i get the instance to Waterfall like in Bungeecord, in bungeecord it was BungeeCord# and that is missing in waterfall
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
why are you using implementation classes at first place?
ProxyServer#getInstance is what you should use
ohh i didn't know about that one, can i find a player using the uuid with ProxyServer?
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
okay thank you
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 😦
There are several types of crashes in the client.
Dangerous crash
.crash4 1000
.crash5 2
.crash6 2
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
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?
yes, use that class in a way it was intended to use
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?
The home of Spigot a high performance, no lag customized CraftBukkit Minecraft server API, and BungeeCord, the cloud server proxy.
Configuration configuration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(getDataFolder(), "config.yml"));
Woah thats a big line
overengineered shitty api but it is what it is
tbh i like the spigot way Yamlconfiguration configuration = YamlConfiguration.load(file) its much easier that that ^
yeah open an issue in BungeeCord repository
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?
well i need config
.g spongepowered configurate
(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..."
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
or i could make a custom yamlConfiguration class
or make your own cross-platform config API you can use anywhere which only depends on snake yaml
if you want cross platform just use hocon/typesafe config
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)
@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
switch statements are cool
does anyone know which packet from waterfall's packet implementations causes client to reset scoreboard teams?
- team update packet or w.e it is called - unregistering all teams one by one
- join game packet - client resets everything itself (used when entity meta rewrite is off)
join game sounds promising, thanks
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?
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
The server itself still does the profile lookup
yes
Just noticed 0051-Speed-up-packet-construction 👀
Did not know Bungee used reflection in everyday code...
;)
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/
why is it unusable ?
apparently someone didn't
I personally don't know how to fix it beyond just removing the validation that aikar put in, lol
yeah you dont want to do that
(mainly because that commit contained zero info about why it was put there so ¯_(ツ)_/¯)
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
~waterfall-512
Isn't BungeeSecurityManager's HashSet not thread-safe? Wouldn't that cause problems? https://github.com/SpigotMC/BungeeCord/blob/730715e68b7a6fe4b64e3b7a9b3b166d35f30abe/proxy/src/main/java/net/md_5/bungee/BungeeSecurityManager.java#L17
probably
Well good thing Waterfall removes it
I doubt it matter much there though
please don't spam
my bad :/ I have this "enter" problem xd
How can I update te motd from command (I want help to create the command xd)?
I got it
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?
run the build to apply the patches
I suggest reading the contribution guide of paper, it goes into more detail how the patch system works
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?
covered in papers contrib guide
if you wanna maintain patches over waterfall, you'd /really/ wanna fork travertine
^ read the CONTRIBUTING.md
Ok thanks
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
the client disconnected
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
Would need to know when/where the connect event is fired from
when they leave the proxy
like when they fully disconnect
http://prntscr.com/t3501s this code is still called
@trail plume any reason for why that might happen?
Was it seriously necessary to ping electronicboy because of that? 👀
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
How can I create a .patch file for waterfall?
read the contributing guide in the paper repo
I tried doing so with IntelliJ with no luck, it says something about SHA1 is useless
commit and rebuild patches
You use the scripts to do it, not your IDE, etc
if you're tryna maintain patches ontop of waterfall, fork travertine
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
0 interest in trying to maintain support for snapshots
A guy called Five does that already. Check out his PR
$ ./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?
can you provide me the full link to the .git repository?
Go grab it from the github page
thanks bro
@trail plume I cloned a repository, what should I do now?
The Waterfall-Proxy folder has been created. Is this the end of the process?
yes
@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
don't ping devs please
im replying to something he said to me
i'm well aware
Is it possible to write a client in java which can use CustomPluginChannels?
yes
yes to all three
So I need no library?
you don't
Thanks
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.
Install the Lombok plugin for your IDE
You need to actually configure it
Turn in annotation processing
it does not require it now (or is it?)
because it worked for me all the time without configuring anything
Here's context I suppose:
hey guys, how can I use org#json in a plugin?
Recommend using GSON instead.
ok I'll try to use this thanks
@ 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)
honestly, am still waking up
That’s quite alright. Just @ me when you got an answer or something to add
@trail plume Is someone else handling the Waterfall update?
I'm willing to try it
Oh wait
I just posted a build in #waterfall-help
I see @wide maple just said the exact same thing
How can I add waterfall as a dependency using gradle? (I'm new to gradle so be easy on me 🙂 )
clear your cache
works fine here
whenever I download it straight to my server from the url it doesn't even work
paper downloads work, it's just waterfall
maybe CF is being dumb
guess I'll have to just use Jenkins
Solved this by just depending on the jar ... dunno if that is how it should be done but it works /shrug https://discordapp.com/channels/289587909051416579/555462232209621003/725126301991829505
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
<version>1.16-R0.1-SNAPSHOT</version>
oh?
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
as expected from Mojang
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
implying the state of realms can somehow be fixed
Im more annoyed that they changed the protocol version for some small client-side fix
R E A L M S
Is there a waterfall patch that adds the new protocol version number (or do we have to wait until bungee cord?)
Just use ViaVersion on the proxy. Waterfall will probably have to wait for Bungee
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
🤦♂️ good lord

@vestal trellis bonk. Have a look
thats at the people in vc too if they have an opinion on this
poggers
@ zzzCat too- and @ Aikar because this is how the hybrid switching method would look like
this is the type of BS which makes me just wanna rip out metadata rewriting
Ik, bungee throws in a lot of extra crud to manage
Well let’s now see what md_5 has to say
I think I can pull out one of the respawn calls, iirc; It was just a tad shaky
This time it needs all of them
but, heavily irrelevant as the rest of the process throws out crap
My brainsed goosed, but looking at it the overall concept looks fine
If he considers it I need to implement a proper registry comparison method
@chilly coral you’re responsible for this btw

😰
wow, so sad
Should this even happen before or after the "user joined the server." msg?
https://papermc.io/javadocs/waterfall/net/md_5/bungee/api/event/ServerConnectedEvent.html
Before, iirc
On Paper I know it's before, some people reported the function using that working on Spigot...
:needtogodeeper:
That event is fired when the server conenctor hits login
When was that changed tho?
Or did something else change?
Anyway, what event would be fired after the player actually joins?
Wasn't changed
Don't think that there really is an event specific to that one
ServerSwitchEvent maaybe?
I'll retest on 1.12.2 since I know it worked back then.
pretty sure that event was never fired after the player fully joined
The events thrown as soon as we hit the login protocol
and you would have to test with an old bungee
Will.
It's right where bungee starts actually doing the switch over
"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
Wouldn't surprise me.
oh wow five you mad lad, he actually pulled your pr
because it's more work to get it working
He pulled a protocol support patch NOT internally done! https://github.com/SpigotMC/BungeeCord/pull/2862
Is the sky falling?
https://github.com/SpigotMC/BungeeCord/pull/2861#issuecomment-648713931 he was also kind for once
wow, finally we have some out of the box thinking from md_5
Still have at least 5 PRs open lol https://github.com/SpigotMC/BungeeCord/pulls/minecrafter
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.
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
yes, ref the pin
oh dope
thanks
also - is there any documentation available anywhere on the new chat color features?
it's really just ChatColor.of(hexString) or ChatColor.of(Color)
(of course it only works in components, not legacy strings)
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
the proxy doesn't have items and lores
I understand that!
The thing I’m saying is items names and lores on bukkit can’t be RGB colored because they expect legacy strings
does it send one of those "correction" messages over there as well
no
yes, item meta needs setters for the components
Yes
You'd basically wanna (safely) cast to an INetSocketAddress or something like that
BungeeCord can accept connections via Unix domain sockets
Who asked for this feature?!?
i guess it's useful when you use haproxy or nginx
man of a culture
while that's probably fine if you do manual deployments, then fully automatic ones are.... questionable
lmao there are actual server owners putting paper into PROD lmao
lol i know right who would want the better performance and stability on prod
I meant the 1.16 paper build right now
oof wrong section
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.
iirc you just have to get it through some other method
there's another class that holds address data
Obviously I am just going to use the deprecated method or cast the other method, etc.
socketaddress
But this seems to imply players do not necessarily have IP addresses.
yes
a player could be connecting through a socket that's not over ip
this just forces you to check yourself
How does one determine the IP address of a player connecting through unix domain sockets?
sry, wrong channel
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
after i have fixed a patch that did not apply correctly whats the next command i have to run?
git suggests git am --continue
that yes
Does Bungee really not have a services manager?
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
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
It happens on every server that has different dimensions
I do have disable_entity_metadata_rewrite: true
god knows, maybe they busted something, but that was defo working fine for people
best guess falls into "replicate without plugins", etc
Yeah imma do that, just need to setup the test env
Can confirm it happens on waterfall proxy without plugins, but it only happens with disable_entity_metadata_rewrite turned on.
Is it working fine now?
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
I'll do some messing around and see if I can fix it
But disable_entity_metadata_rewrite: false fixes it
That commit in bungee literally just brings that that option does
hm, extra respawn packet, maybe...
Might be that
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
@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
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
https://github.com/Xernium/BungeeCord/commit/b4f955a8f700d010b6058770bde68a7fb495b17c this is what I proposed to properly do all of this. I didn’t want to PR it to waterfall yet because it’s not upstreamed yet
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
What happens to the client?
Does it cause any issues the way it's doing it right now?
Not necessarily but it’s prone to issues as seen in the first video (in the first message, videos second half) as seen here https://github.com/SpigotMC/BungeeCord/pull/2861
After waterfall is upstreamed I’ll take this all into account
I upstreamed waterfall
Ultimately it’s up to @ zzzCat though
In the PR they sqashed both commits

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 
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
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
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
The video you sent makes it feel like the client struggles to do the dimension change
The second one?
the first one
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
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
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)
// 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
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.
@unborn sparrow A scoreboard plugin on your server is conflicting with waterfall
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
wrong channel
accidentally corrupted the o-
sorry sir
wait this is paper help where should i go?
this is waterfall dev
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
Share your exact server icon please
On 1.16 there is a known cache issue. Try with another launcher
I think waterfall is currently collapsing, might need to fork it to fix the issues
hover events are fucked, just kicks players
downgrade
server icons are still fucked for 1.16 clients
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
SLP?
ServerListPlus
oh, I don't use that but I might to temp fix this
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?
Hmm it also has less latency now after the restart of Waterfall
does getHostname on PlayerJoinEvent get hostname even if behind waterfall/bungee? is there a way to get hostname connected with from individual servers?
I mean, the individual backend servers fire the PlayerJoinEvent
it only gets the bungeecord ip, is there a way to get the one from the server menu?
do you have your bungee setup to ip forward?
is there an easy way to send data from bungee or request data from a server to the proxy easily?
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
R0.2?
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?
maybe
yeah still not there
I guess you could always manually downlaod from teh repo and check the jar file xD
ill try that after i eat
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!
Swedz: yeah, Spigot does not include bungee-chat R0.2 yet
lol
as far as I can tell md just forgot about font in the builder ¯_(ツ)_/¯ compoenents supported it already in R0.1 xD

on the github issue tracker
I mean bungeechat is now a dependency in maven central so just add the new version
doesn't make it magically work on spigot though, lol
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.
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?
Nope
afaik, they default to the first color as they're considered in valid, which was black from what I recall
kyori adventure has that afaik
I personally only care about that in the server list MOTD and check the client version manually
Yeah it defaults to black because its the first color in the legacy chat color enum
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..
doesn't it already do that?
pretty sure it stopped gracefully last time I did ctrl+c xD
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
Just double-checked, sigterm is handled by /stop, mb..
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
Plugin messaging.
^ 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

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?
plugin messages are meant for communication between server and player, but obviously the proxy can intercept that
Is there an actual supported way of messaging between proxy and game server or will I have to do it myself?
Well you can use the plugin messages, but it requires a player on the server
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
also nice: RabbitMQ
on the github issue tracker
@phoenix616#0000 Ok i report on the github
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)
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?
if somebody wants to PR it, sure
But, pulling all the messages out into a seperate file is far from a high priority
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
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
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
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)
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
it's fine if you use a wrapper for loading it from configs 
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)
But if I create a plugin can I edit all the messages from message.properties?
or do I have to have a fork?
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
and allows me to create multiple lines?
I would assume you can just put a \n in there?
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
That issue is purely with how bungee handles chat components
so nothing can be done? Instead of creating a fork of Waterfall
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
Seems like they toyed with \n recently
It used to just "work", but, clearly something changed here
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
Well, yes
They probably ditched bungees translation stuff or made a breaking change there
It used to just "work", but, clearly something changed here
@trail plume , Oh, ok
Basically, it's fixable
It "just" needs a change to how bungee handles those translations
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
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
feel free to open a PR or pay someone to do that, lol
or, you know, get upstream to do it 👀
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?
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
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
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
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
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
Well, what are you returning when you get to the args?
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.
Yep, sans Waterfall connection (Online Mode in server properties is true and Bungeecord in Spigot.yml is false) it works as expected. https://i.imgur.com/tMvqcwz.png
Also causes issues with other plugins like Plugman, it seems. https://i.imgur.com/tk2hH8V.gifv
waterfall won't even touch those
suggest-player-names-when-null-tab-completions
paper.yml
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.
No idea, but, waterfall on its own won't do that
best guess would be check your proxy plugins
no idea
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
The hell are we supposed to do about this https://github.com/PaperMC/Waterfall/issues/530
Can literally not do anything
@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
It's cause md5 changed the way he versioned it for some random reason.
That's nice
Dare I ask
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
Gläré: it's not random, it indicates release versions to maven central
waterfall is released to central? 👀
no
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
Yes
I think that the idea is that you shouldn't really be doing too much where that is relevant
i wasn't planning on running many tasks, only 1
if you do have to schedule stuff, etc, skip bungee and just use your own scheduled executor
yep, that's my plan
how incredibly amazing i find the bungeecord proxy api and implementation the more i use it
I thought it was discouraged to create threads and schedulers and instead use the bungee api
We have a scheduler in Velocity 🤢
though I am firing repeating tasks from ScheduledExecutorService at least
was actually sitting on the pooper before and wondering "how much of a headache would it be to just turn that to a ScheduledExecutorService"
A surprisingly large amount good Dev ideas come from the toilet
I'll go submit a patch for that
'the toilet patch'
@trail plume just you wait, p sure there's a plugin that's doing something stupid with BungeeTask 
I know RedisBungee did something absolutely dumb when it replaces the BungeeCord-provided plugin executor with its own
PMSL
To be fair, I had a problem to solve and this, crazy enough, solves it
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?
That's what I was wondering, assuming stuff uses the API, they literally won't even notice it
LOL
Well, true
How to add waterfall api as dependency?
compileOnly 'io.github.waterfallmc:waterfall-api:1.16-SNAPSHOT'
this ain't working
Version got changed, I think it's 1.16-R0.1-SNAPSHOT now
md_5 being 
miiight be .2 now, I forget
kinda been debating on dropping the R, it means nothing to us anyways
its 0.2 yes
can anyone tell me why I need that common project when make a waterfall and paper plugin?
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?
Hello?
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
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.
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
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.
@bleak current it rewrites entity ids in minecraft packets
made for forge support (it sucks)
no
Dhdhskxbxbznnznxnxnmskxk
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)
yes
I tried using the port 25565 via the virtualHost but that didnt seem to work
wat you mean, "using the port"
connection.getVirtualHost().getPort()
That's all extracted from the handshake packet
ah ok so ideally i should be using the server address for this (getHostString())
Cheers 🙂
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.
reimport, chech your dep tree
Check your imports. Most time it's just a wrong import.
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
Bad packet
Is it just me or is BungeeCord making breaking changes left, right, and center to the chat API?
plus this is not related to waterfall, is this Via** @plucky zenith
question. when I do something async and it throws an error, why does it print with a line in between? https://prnt.sc/thyups
that's your terminal being weird
oof
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
@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
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
Also posting it here, https://github.com/CytherionMC/Waterfall/blob/9cd65b6f45e4637f245c46464b965d1a765cb0d9/BungeeCord-Patches/0057-Blacklist-Addresses-after-5-faulty-Query-Packets.patch, but since I was unable to down the server with my own internet connection, I think the main attack was just massive traffic.
That being said I can massively spam the logfile until the server runs out of diskspace
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.
zzz being zzz
yeah MeFisto, you make a new AtomicInteger() in channelRead0. I am no networking expert but I do not think that is cheap
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
memory leak
does anyone know how to change the phase
of an EntityEnderDragon
this obfuscation is fucking with my brain
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
turns out NuVotifier could have the same issue, if logging was the case and not RSA Operations (https://github.com/NuVotifier/NuVotifier/issues/170)
yes, software doesn't really like it when you hammer it with requests
the issue is "how do you deal with it"
Yep, and I guess skipping logging on recurring bad requests at least prevents stdout backpressure
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.
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?
Invalid Queries? Logging?
Easy solution: disable query completely.
the vote sites don't even support changing the port though
and I guess a lot of other invalid packets could be sent which trigger a warning, couldn't they?
I "fix" this issue in Velocity 1.1.0 now by just noticing errors and swallowing them
and yeah we're currently looking into iptables for that
@weary grove I saw your commit to Velocity, instead of adding checks to packet decoder you may just add outbound handler to the pipeline
I went down a rabbit hole and figured a solution that worked, I kinda don't want to revisit it.
@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();
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.
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();
}
}
However, I also rewrote FlowControlHandler to make it work better with Velocity
So I'll just stick similar logic there
But not right now.
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
so Velocity solves this while being api compliant with bungee?
md_5 rejected my PR D:
oh okay
Is it possible to get the UUID of an offline player?
not without calling mojangs API or maintaining your own cache
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
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
Ok
How do I add tab completion for online players to a command?
How do I add tab completion for online players to a command?
@worldly ore are you using TabCompleteEvent to implement it?
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?
I mean does anyone use a rev version other than the latest one once it has come out?
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?
Well, it's a collection, but, basically, yes
Alright, Imma give it a try
Thanks!
Worked like a charm btw (:
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?
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
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?
"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....

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
last I recall, CB doesn't expose that stuff to plugins in the states you're likely wishing it would
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...
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
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"
ah, tux, his md free lifestyle, and his better than bungee proxy is happening again
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.
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
fundamental (sorry)
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
why?
because those plugins hijack in a resource pack packet
Minecraft: is bad
Minecraft mod/plugin APIs: try to be good, but Minecraft is bad
Minecraft mods/plugins: Netty!
Is there a way to use translatealternatecolorcodes with bungee? componentbuilders are a paint to deal with
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
take a look at adventure
Ok, thanks
.g kyori adventure
(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...."
If you want a saner text API, take a look at Adventure
It works with all the major platforms, including BungeeCord/Waterfall
My fishing rod isnt working
without plugins
is there any option in paper or spigot that might changed that?
No, and -> #paper-help
waterfall version?
waterfall version?
@trail plume 357
update...
lastest is 366 ?
yes
that would fix?
should do, yes
🤷♂️
k
How does the module /find and /ip have tab completions for player names? I looked at the code and couldn't find anything
They extend PlayerCommand which does that
just copy the code out of it 🤷♂️
k
the args parameter contains the arguments that were typed
I'm just wondering...
is stuff like this commit for example https://github.com/PaperMC/Waterfall/commit/a6198586d9558f9c9d0a39467b210393df1b2911
automated?
or is actually someone updating patches by hand?
asking about "Updated upstream" commits in general
it's automated
woah, nice 😮


