#waterfall-dev
1 messages · Page 18 of 1
it's not really doable with just the API afaik
Explain yourself .w.
see BungeeTabListPlus basically xD
Discord <-> Paper-IRC bridge
phoenix just doesnt like discord
yo off topic but I am currently trying to switch from java to kotlin for plugin dev and I know kotlin basics but im completely lost on setting it up with my intellij/maven environment and workflow
could you point me in the direction of how to do that
understandable
what build is suitable for 1.16.5?
just use latest
having weird connection issues lately
and?
Pretty much nothing has changed with the networking stuff in time
I really doubt that using an unsupported version is gonna fix anything.
can getSocketAddress be casted to InetSocketAddress 100% of the time from ServerInfo? https://gyazo.com/82aefc292eb0bfc44e16e98f7f3d6877
No
cant you just get the info you need from the socket address object?
has no methods sadly
found out its only SocketAddress when its coming from a UNIX system, so for the most part playerwise itll be an inet
so if it’s platform dependent maybe you could@handle the address separately based on the object type
sure np
Help me
X:
is that a network drive? if so, don't
Otherwise, i got no idea, make sure git is updated, etc, etc
Could it be because I am building in Java 17?
nothing to do with java there
Git has just been updated and it is not a network drive, how can I fix this problem?
If that's a modified version of waterfall, basically, 'good luck'
How to build via PowerShell
You'd need to work out how the patch broke
You can't build via powershell
basically, either you need to reclone the repo as something went wrong with it, or, I mean, I got no idea, easiest option is often to just resolve the patch issue
can't clone in windows and then run in a *nix environment
Tried to run on linux But again failure
clone it in the environment you run it
You could have fixed this error by reading it. The solution is on your screen. Do that and run the command again
how does the scoreboard api and teams api work? using addTeam just seems like it stores it locally but never has it networked?
and the client doesn't show the team name when tabbing for /team modify
the /team command is from the Minecraft server, it's not influenced by the proxy
yeah i know that, but i use it's tab predictions to see if the client knows about the team, cause im fairly certain it shows teams the client knows about
but idk that could just be me not knowing better
either way, does the scoreboard api actually do things?
not sure if that command actually shows the teams that the client knows but I would assume that the api is somewhat functional
!ban @sharp geyser scam
:raised_hands: Banned Heirloom#7817 (scam) [1 total infraction] -- electronicboy#8869.
does the ServerConnectedEvent get fired everytime a player connects to a server, or only when the player makes an initial proxy connection ?
every time a player connects to a server
is there an event only for initial proxy connection ?
thanks
message.txt by @maiden kindle: https://paste.gg/c035d48cda2743a5be7cd8e0bdb8aae8
why not just get the UUID directly from the sender?
oh, it's a Connection, yeah check if it's a ProxiedPlayer and cast it
Hey, what's the patch to make messages.properties enable when The proxy load?
It's not a paper patch, it's upstream
Well, im speaking about proxy
Nope, BungeeCord just won't apply messages on default
I renember Waterfall did a patch or im bad.
BungeeCord#reloadMessages does so
I just think u don't understand me
That may be better 
Hello, I am trying to use plugin message channels to get the server name from waterfall, I am using the bungeecord:main channel and the GetServer subchannel, but I never receive any messages back/ my onPluginMessageReceived method is never called, would anyone be able to help me with what I am doing wrong?
Show your receive method?
The Breakpoint never gets hit on the first line
Equals bungee channel name
Ignore case I’m pretty sure it’s stupid like that
Also I think there is an event for this you could use an event handler and the PluginMessageEvent and see if that works
I will try that thank you
Cat correct me if I’m wrong but I remember there being a bug in the namespaced:key format that caused issues here
The ignore case and event handler did not work
this is going to be a very stupid question.... ofc then again i am new to coding so i have a lot of them compared to a pro. If a plugin uses the waterfall api, will it still work with bungeecord plugins?
ie
<dependency>
<groupId>io.github.waterfallmc</groupId>
<artifactId>waterfall-api</artifactId>
<version>1.17-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
Instead of:
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.17-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
you see, the net.md-5.bungeecord-api repo is not yet updated to 1.17.... you folks seem to be faster at that. We use waterfall anyway but the issue i ran into with this is that since the bungeecord-api repo is still for 1.16 and yours isnt, i had to basically make a backdoor and create a libs folder with the latest waterfall.jar in it. Which, turns out, causes issues when uploading to github as there are too many files. So if i can make it work for 1.17 the correct way (as seen above) then that will remove a ton of files thus limiting the data size for github
i am
does it work that way for private organizations?
(the other reason is a more personal preference one... that is to say the way this is currently done is janky af lmao if changing the dependency in the pom.xml as seen above will clean it up a bit while leaving it fully functional as it is now then that is what i want to do)
Does it matter if i have over 100 files if i upload it that way?
ok
ok so basically leaving it the way it is now in the pom.xml will allow both bungeecord and waterfall users to use the plugin but my way will only limit it to waterfall users.... right?
that's what i thought... but i need to find another repo that has the 1.17.1R01 snapshot api version on it that is not part of the maven repo.... since that last one only goes up to 1.16 mc
that way i can get it to work in the pom.xml
thanks!
You can use waterfalls API on bungee so long as you don't use any waterfall specific API
00:43:16 [SEVERE] java.lang.RuntimeException: Could not find an implementation class.
00:43:16 [SEVERE] at jakarta.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:59)
00:43:16 [SEVERE] at eu.hexasis.helixchatwaterfall.websocket.WSEndpoint.Connect(WSEndpoint.java:17)
00:43:16 [SEVERE] at eu.hexasis.helixchatwaterfall.websocket.WSConnect.run(WSConnect.java:16)```I'm trying to implement a websocket into my plugin, but when loading it, it shows this ^
all we can tell you is what jakarta is telling you
PluginManager manager = new PluginManager(ProxyServer.getInstance());
manager.dispatchCommand(ProxyServer.getInstance().getConsole(), command);
would that work, for making the plugin execute a command?
cause its not working rn
you don't create a new instance... you get it from the server
Im trying to make a custom reconnect handler.
package xyz.fragbots.handlers
import net.md_5.bungee.api.ProxyServer
import net.md_5.bungee.api.ReconnectHandler
import net.md_5.bungee.api.chat.ComponentBuilder
import net.md_5.bungee.api.config.ServerInfo
import net.md_5.bungee.api.connection.ProxiedPlayer
import net.md_5.bungee.api.event.PlayerDisconnectEvent
import net.md_5.bungee.api.event.PreLoginEvent
import net.md_5.bungee.api.plugin.Listener
import net.md_5.bungee.event.EventHandler
import xyz.fragbots.SandboxServerManager
import xyz.fragbots.player.ProxiedPlayerExtensions.isStaff
import xyz.fragbots.utils.ChatHelper
import xyz.fragbots.utils.Config
import java.util.*
import kotlin.collections.HashMap
class SandboxReconnectHandler(val main:SandboxServerManager) : ReconnectHandler, Listener {
val onlinePlayers = HashMap<UUID,ServerInfo>()
init {
ProxyServer.getInstance().reconnectHandler = this
}
override fun getServer(player: ProxiedPlayer): ServerInfo? {
if(!player.isStaff()&&Config.maintanence){
player.disconnect(ComponentBuilder(ChatHelper.format("&cServer is in maintanence mode!")).currentComponent)
return null
}
val server = main.serverHandler.getHub()
if(server==null){
player.disconnect(ComponentBuilder(ChatHelper.format("&cNo hubs online!")).currentComponent)
return null
}
onlinePlayers[player.uniqueId] = server
println("Player ${player.displayName} is being sent to hub: ${server.name}")
return server
}
override fun setServer(p0: ProxiedPlayer?) {
}
override fun save() {
}
override fun close() {
}
@EventHandler
fun onDisconnect(event: PlayerDisconnectEvent) {
onlinePlayers.remove(event.player.uniqueId)
}
}
But for some reason when a player gets disconnected in the get server it still shows their join and leave messages
that's from the actual servers themselves, you'd need a plugin on the servers to disable those messages
But why is the message sending when im disconnecting the player b4 they get sent to a server
don't mention
mb
they're still connected to the server they switch from until later on
will the login event still be called, if so how can i differentiate from a player thats about to be dced by the proxy and a player that can connect
the reconnect handler is also only used on initial connections to the proxy, so that thing makes little sense
What should I use instead?
the server doesn't know if the player is connecting from a fresh join or a from a server transfer
oh, wait, i misreadwhat you where doing there
I mean, that things only used on initial connections so you should never have an online player who has a server already assigned to them when that code is called
So the join/leave messages shouldn't be sending?
the leave/join messages are still irrelevant to that
You'd need to stop those on the server itself
if you still want global leave/join messages best to just do that on the proxy itself
And is there any way to differentiate between a player login event thats real vs one that has a player thats gonna be dced
I mean, you could send a plugin message to the server before you disconnect them to tell the server that the dc is gonna be a switch, but, otherwise, no
well, I mean, for login, sanely, no
I assume the message would send after the login event.
I guess i could just do it the other way and tell the server to send the join message when its valid
any recommended .SH presets for running a waterfall instance?
a template or something
pins in -help.
thanks homie
How would I transfer a proxied player to an external server (not on the proxy) such as Hypixel.net? I don't need them to remain on proxy
you can't
That will only work if the server you’re trying to send the player to is in offline mode
You can’t make the client authenticate again
is there an event that picks up on the player logging into a server theyre being kick-redirected to? AsyncPlayerPreLoginEvent doesn't seem to fire on the target server we're sending them to
server connect or something
I mean, if they're kicked to a server which they're not already connect to, then the server will go through the login process; The server they tried to connect to will fire whever events it will fire until they're kicked from it
Howdy folks, looking to do something a little bit screwy. How possible is it to take a connection to one's waterfall and pass it on to a paper sub-server but with a different username/uuid? Ideally triggering paper to think of them as a completely unique user for usage in local plugins, inventory, location, etc? Allowing users to have multiple 'accounts' as it were. From what I can find online no-one is really trying this as of yet, any ideas other than just forking a copy of Waterfall?
That’s a bad idea for one reason mainly:
If the UUID the server uses to refer to the player isn’t the same as the player got assigned during login then game features will start to break. Bungeecord has a feature that may allow to partially fix this but I highly advise against it.
Otherwise it’s easily possible
But also very unsupported
When it refers to it where? In the paper server, or in the bungee/waterfall side?
When you log into a server (or bungee in this case) it will tell the client a name and UUID
Both those are normally what mojang assigns you but they don’t have to be
The server ideally knows you by the same UUID/name
If the UUID the server knows for you doesn’t match the UUID you have been assigned then things start breaking:
Including but not limited to: Skins, teleporting, sounds, entities around you, certain gamemodes, certain abilities, certain commands and so on
This is why disabling info forwarding partially bugs your game
On bungee it only happens partially because bungee hacks the player list to fix a few of these issues
And I assume there's no way to tell the client you've changed their username/uuid?
No. After that’s been set it’s final. You can’t re-set it till you disconnect and connect again.
I assume a plugin like FastLogin does some fuckery behind the scenes to change your UUID to UUIDv4 if you've got an account in minecraft.net
I'm not sure how that can help you but yeah
iirc you can achieve the same with waterfall events without doing some internal changes
how does one come up with plugin ideas?
easiest is to run a server and can't find proper plugins to do what you want
hmm, okay, thanks
setting up waterfall network. connected the first server working alright, but that servers console is unaware of the bungeecord commands
any bungee command like "/send player server" just returns "unknown command". i had this set up before and working like a year back, but i forgot how 😄
you need a plugin for that.
the bungee commands are only available to the players when they connect through bungee
anything else requires plugins
thank you. almost figured that i was lacking a plugin. at any rate i dont remember which one i mustve been using back then - any recommendations?
and i take it that its normal for me not to have permission to use the bungee commands as a player despite being op? (since im not gonna bother use username-based permissions in the bungee config)
bungeecord has its own permission system that doesnt have a concept of "operators". To manage it I would recommend installing a permissions plugin like LuckPerms on the bungee
thank you. and do you have any recommendations for said plugin?
im struggling to find any that do such a thing
okay u have luckperms bungee version in ur bungee plugin folder correct
if so do /lp edit in the console on the proxy it will give u a link that link is a online menu to help setup ur ranks and perms more easy
now u also want a data base if u have a vps etc u can make one database will be needed to share the data global aka across all ur servers
is there no maven repo for waterfall?
it's in the paper repo
thank you
is there something extra i would have to add to them pom ? it's the first time im using maven. the paper stuff is working just fine, but expected to get the waterfall things aswell after what you said and its not there
oh i think i found it <dependency> <groupId>io.github.waterfallmc</groupId> <artifactId>waterfall-api</artifactId> <version>1.17-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency>
for some reason some classes are missing though
😐
that's not part of the API
it worked before when i was using the compiled jar as a dependency, do i need to add something extra?
a bungee maven repo or something?
non-api artifacts are not distributed via the repos as they shouldn't be used by plugins, use the API
hm okay fair i guess
(commandSender instanceof ConsoleCommandSender) this is where i was using that, i cant find a replacement for it though
just check if the sender is a player if you need to know that, anything else doesn't really matter anyways
ProxyServer.getConsole(); or ProxyServer.getInstance().getConsole();
don't know the exact object it returns right now, but it's easy to find out
has anything changed with waterfall between 1.16.5 -> 1.17.1 that would make the ServerConnectEvent fire twice?
@heavy sinew you are the author of automatic server reconnect?
Hello, I have a question.
I'm trying to make a plugin that gets ban related data from mysql from the plugin when a player connects in 'bungeecord' and blocks the player's access before being switched to the server.
But what I am worried about is that the blocking that occurs when retrieving data from mysql causes delays in other players' access or problems.
Does anyone know of a solution for this?
that's what the "Async" events are for
I tried to refer to other open sources that implemented this before asking the question, but it was difficult for me to figure out the principle due to the complex structure of the source code.
Wouldn't everything that works on async events block the netty or work thread?
.g waterfall javadocs AsyncEvent
Don't mention
The idea is that you go off to another thread and complete the event when you're done
ok, thx
fair warning, if you make the player wait to long the player will time out
In other things
So, while delaying in one event is there no negative impact on the rest of the players?
with the async events, correct
Just be warned that the client doesn't like waiting there for too long
Depends on the event; but this event has only an effect on the target player. Effect being that if you wait for too long they time out
Thanks for your kind reply. If you have a simple code example, could you show it?
It's fine without it.
you call registerIntent on the event in your event handler
go run off and do your work on another thread, and then call completeIntent or whatever it was on the event
thank you
no
do u know if there's a way between paper or waterfall to not send the resource pack to a player if the resource pack from the server they're being sent to has the same resource pack as the server they're coming from
Well, no, the server doesn't know that
pretty sure that's what part of the hash is there to resolve
How to update my config? Like how do I add all the new sections that are created? There's no copyDefaults() option.
getOrDefault
oh shid nice
I'm getting a EOFException in this API, go the exception breakpoint output in the screen.
Here is the code:
https://github.com/leonardosnt/BungeeChannelApi/blob/master/src/main/java/io/github/leonardosnt/bungeechannelapi/BungeeChannelApi.java
At line 447 is where the error happens.
The code is not mine its an open source API I'm trying to use. This is the error:
[[ java.lang.IllegalStateException: java.io.EOFException at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readShort(ByteStreams.java:336) ~[patched_1.13.2.jar:git-Paper-655] at me.luseres.geocraft.georace.georace.functions.BungeeFunctions.onPluginMessageReceived(BungeeFunctions.java:465) ~[?:?] at org.bukkit.plugin.messaging.StandardMessenger.dispatchIncomingMessage(StandardMessenger.java:436) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:2625) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.PacketPlayInCustomPayload.a(SourceFile:45) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.PacketPlayInCustomPayload.a(SourceFile:9) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:15) ~[patched_1.13.2.jar:git-Paper-655] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at net.minecraft.server.v1_13_R2.SystemUtils.a(SystemUtils.java:108) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:1018) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:439) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:940) ~[patched_1.13.2.jar:git-Paper-655] at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:837) ~[patched_1.13.2.jar:git-Paper-655] at java.lang.Thread.run(Thread.java:829) [?:?] Caused by: java.io.EOFException at java.io.DataInputStream.readShort(DataInputStream.java:320) ~[?:?] at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readShort(ByteStreams.java:334) ~[patched_1.13.2.jar:git-Paper-655] ... 14 more]]
- your code on the repo doesn't like up
- anyways, you hit the end of the data stream and tried to keep reading
I see that now, let me diff see if that makes a difference
the function seems to function normally the rest of the time and I don't know why it only happens at this message
consistently
You hit the end of the stream
whatever data you're tryna read is not formatted how you think it is
version mismatch? I mean, given that the code doesn't like up to the stack trace shows that the code that's on the repo is not what's running
I ran a diff it does indeed differ a bit, but unfortunately not in the parts that matter. I guess I'm going to try decode it as much as I understand and see if readUTF instead of short helps or maybe check if its unsigned. Or if I can skip over this once in a rare occurrence by checking if there's something in "in" left to read.
Just annoying it only happens after SetPerWarpFlag which is a message by some other plugin.
Thanks for your help!
I'm diving in
"fixed" it (not really) by returning the function when the subchannel is SetPerWarpFlag
I mean... one shouldn't read channels of other plugins to begin with 👀
is there a way to get the tps of a paper server via the proxy?
built in? no
otherwise? you can do whatever you want with plugin messaging channels, etc
what do you mean?
what?
It's data?
Waterfall doesn't have an automatic way to get the TPS of a server, it doesn't know, it's not told that
no. what are plugin messaging channels?
okay thanks
is there a way to have bungeecord/waterfall hexcolors? without plugin messages?
wat?
like sending hexcolor with bungeecord messages
but its only possible for the whole message not only for one word in example
I'd heavily suggest learning how components actually work
you can nest components to affect formatting, coloring, etc
In case you didn't know for today, the protocol number for 1.18.0 is 757
Is there any way to get the offline user's uuid from bungeecord?
Not without using the usercache or querying the mojang api
I guess you could manually script a sync of the playerdata, not 100% sure how to do it off the top of my head, but I've done dumber things...
Is there any way to store datas used in multiple servers?
it depends
config file, yes by using a plain file
data of players ? By using a database
How do I get the backend server name the player is currently on and put it here?
DefinedPacket.writeString( bungee.getName() + " <- " + serverBrand, brand ); // server instead of brand```
there's nothing special about that tbh
generally speaking removing credit is a bit frowned upon though
I mean it's your server, you can do whatever you want
yeah, but how do I do it
anyone?
question about waterfall/bungeecord: where should I start looking for how to let people message/tpa/talk to eachother from different servers and show up in TAB?
So say person A and B are on servers 1 and 2 respectively, how can I have person B show up in person's A playerlist when they press TAB, or that person B can see what person A says between servers
would plugin messaging channels suit my need?
yes
Wtf no?
Why not?
That can all be done on the proxy with the api;
You’ll still need a plugin with the plugin channel downstream to enable the correct coordinate teleportations
So pressing TAB could show all players on all connected servers using the proxy api?
I don't think that's covered in the API
oh, wait, maybe it can with the tab list api stuff in there
forget how BTLP does it exactly
So whenever someone requests the tablist, I should send a request to every server through bungeecord what players they have online?
you don't "request" the tab list
the server sends it to you
the proxy has some mechanism in the API for toying with that stuff iirc as there was an old bungee feature which did that in the past
hmmm, I'll search around some more then, thanks for the nudge in the right direction
Hey, wondering if anyone has a good alternative to BungeeCord Messaging Service for custom plugin messages?
easy to just use the bungee channel and use a custom thing instead of the one on the page
otherwise, it gets more fun...
Yeah, looking for the more fun stuff where a player doesn't need to be online ahah. Rn I'm looking at DeltaRedis on GitHub, but not sure if I'm missing an obviously good alternative
That would be what I'm obviously missing 😄
(although I doubt any basic solution would really break/need an update ¯_(ツ)_/¯)
So a few use cases.
-
Data tracking, i.e. plugin stores player has key: variable, then player swaps server, I want the server they swap to to receive that data too. (Aware PlayerQuitEvent is called post JoinEvent) Data is updated too often to justify pushing to db each update
-
Cross-server teleportation. Player on server1 teleports to location on server2, we need to tell server2 they are teleporting to them co-ords
https://github.com/egg82/Messenger might be an option
well my solution has a couple of utility functionality like teleporting built-in
hard coding Rabbit smh
Lol amazing, thank you so much all!
Messenger has some interesting concepts though, probably gonna improve my solution with some of those ideas
although I'm not sure if queueing packets should be global or based on the messenger method
e.g. I would hope redis can handle messages properly on its own without requiring queueing
and I should probably also do packet versioning 👀
Hey, does the teleport function of ConnectorPlugin work on Plugin Messages if the target server has no online player?
it works but not as good
(like the player will be teleported after they logged in instead of changing their spawn location)
Would you recommend Redis or Rabbit? Both look like they get the job done of allowing cross-server data communication. We've got a dedi but no one who's got experience setting up redis/rabbit, so if one is easier we'll probably go with that
well I personally only have used redis but if you don't ever need their key-value storage then a pure mqtt server is probably the better choice
but lots of stuff can use redis over mqtt or RabbitMQ
Would Redis be the more sustainable solution for the cross-server teleport & saving player data while they're online on the network and swapping servers often?
(also the MQTT stuff is untested in ConnectorPlugin, I should probably put that somewhere lol)
I feel like Redis is what we should go with for the use cases, just wanna double check 😂
both redis and mqtt have all features, there's no difference between them
I've seen more MC plugins mention Redis than MQTT so I'll go with redis. Now to learn how to set it up, nice one very much for the help lol, just saved hours of my life
MQTT is a communication standard for IOT devices, seeing as RabbitMQ supports it natively I decided to just use a library that supports all possible MQTT servers ¯_(ツ)_/¯
(rather than depending on specific pubsub servers)
Thank you
I just want to double check I'm not causing an xyproblem before I go too far.
I want to store "CustomData: 1" and "MoreCustomData: 5", essentially I want to store key-value data for every player. The data is loaded really often for every player, e.g. used for in-chat placeholders when you hover over their name, so it's queried often. It could be updated up to 6 times a second or once every 30 minutes and anywhere in between. Expected player count on average is ~20, but want to be able to handle up to 100 ish preferably
I want players to be able to swap servers on a Waterfall network and their data load quickly.
My current thought process is:
- Player Join server on network
- Load data from SQL, push to Redis
- Every time they data is updated, push to redis (anywhere from 6 times a second per user to 30 minutes per user)
- Player joins server on network, queries Redis, loads
- Player quits network or X time passed since last update -> push redis to SQL, clear from redis
Alternative is have the data stored on the proxy, and use netty/plugin messaging instead of Redis
I mean yes, you can use redis as a distributed cache but you could also just store and keep the data directly in redis
this doesn't sound like sending data via messages/packets in a pubsub system though
Hello! How can i use waterfall w/Maven?
<dependency>
<groupId>io.github.waterfallmc</groupId>
<artifactId>waterfall-api</artifactId>
<version>1.16-R0.4-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
This should work?
put in 1.18?
1.18-R0.1-SNAPSHOT?
pretty sure it uses a versioned scheme now though, check the repo for the correct one I guess. don't know it of the top of my head but the API really didn't change anyways
if it works, yes?
@dusk heart What's happening
sting for 1.12.2 paper for fix exploit?
?
this bungee update good
exposing the bad plugins
Plugin listener de.staticred.discordbot.bungeeevents.PostLoginEvent took 551ms to process event PostLoginEvent(player=Zooper)!
is there a way to get a player's protocol version with the 1.18 api?
One message removed from a suspended account.
One message removed from a suspended account.
with your changes, yes. In Waterfall-Proxy
One message removed from a suspended account.
One message removed from a suspended account.
yes, or just build with maven
One message removed from a suspended account.
One message removed from a suspended account.
did it correctly create a patch after the rebuild step?
if your changes disappear you'remissing something
make sure that you actually added files, etc
see the contrib guide on the repo
One message removed from a suspended account.
One message removed from a suspended account.
I want to build a waterfall with my patch, but I get this error in the screenshot what should I do?
And how to fix this problem?
how exactly did you create the patch?
I can throw you a patch if it is required
just answering the question could go a long way
need it?
I didn't understand a little
Essentially your changes to the Pom.xml are now conflicting because the file was changed in a patch before this one
Hey, i m a newcomer and i m wondering how can i use the bungee logger
Similiar to the bukkit.getlogger() method
I did not find such a method in bungee api, so i come for some help xd
Wat
The bukkit logger is not your logger...
Use the one given to you by your plugins main class ...
Hello. I need help with helpop command. I have low-level experience with plugin development and absolutely 0 experience with bungeecord plugin coding. Can someone tell me how does bungeecord plugins actually work? Do i need both of bungee plugin and spigot plugin?
My point is to make plugin that allows members use /helpop <message> command in survival and it sends the helpop message to discord channel with webhook (I have done that and it works) and it also sends the helpop message to the survival chat for the staff members + it sends message to other servers too.
I dont know how to do it, i have been thinking and trying almost like a 8hours and i just cant figure it out...
Like i said, i dont know ANYTHING about bungeecord plugin development and very little about spigot development so please dont yell at me when i dont understand something lmao.
If i have to use both of bungeecord and spigot plugin, then how do i connect them? I have a lot of more questions.
Also sorry for bad english
Okay
you only need a spigot and a bungee plugin if you need to share data between the two things
like, data, data
idk what data you'd specifically need to transfer
depends on what you meab by "survival"
survival server
I mean, if it's just a server on the network, you could easily do it as a bukkit plugin
plugin messaging channel
the spigot wiki has a bunch of examples
with fast google research i found that: https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
yes
theres also many plugins out there which use messaging channels for sending data around, etc
So um.. i dont understand.. I need to use plugin messaging channel but how do i check for players permission in every server and then send the message to right players
sanely? you don't
ideally for stuff like that you use luckperms to sync perms across the network
they're two seperate pieces of software
the proxy cannot access data on the server, the server cannot access data on the proxy
You can use messsaging to send info around the place as you desire, but, theres no transaction system, etc; you can't "ask" for data and wait for it without complex setups, and, it's generally not worth it
if you don't specifically need anything on the proxy, theres already a communication channel setup for shooting messages around the network if you so desire
So i cant send helpop message to other staff members who are in the other server?
Never said or implied that you can't?
You can literally send whatever the heck you want around your own network
if you just want a /helpop command, theres pretty much 0 reason, with LuckPerms, that you couldn't just do the entire thing on the proxy though unless you had specific requirements
e.g. they've gotta be in a specific world on the server to use it
how can i edit waterfall i can't do it from intellij
I can't run it in intellij it gives an error
what error
how can i convert java
Read the readme.
I couldnt learn
don't mention
run the script it tells you to run
if you run a build, it will setup all of the sources and compile
contrib guide has more info
you're gonna need to learn how to use the scripts to work with waterfall
okay. ugh, i dont get it. Only requirment i have is if player has permission... I want to send message to only players who has the permission. And no matters what server they are playing on. Literally the only thing i need... But i dont undestand how i still do it... How do i check permissions in all network servers and then send the message to all network servers. I have atm 4 servers total. Hub, Survival, KitPvP and SkyBlock. Of course i have waterfall too. Now all staff members should get notification when player executes /helpop command, no matters what server staff member is playing.
Third one
i use..
luckperms literally lets you query permissions however you want
But how i check perms in all servers
tf do you mean by "all servers"
I did not understand anything
in survival, kitpvp, skyblock and hub at the same moment
So
that's just global perms
nothing special there
unless you're actually doing weird stuff there, in which you'd probs need to do 4 permission checks
ya but how i specify the server what im checking....
read the docs for luckperms
okay
contributing.md is literally unreadable, smh my head
people hardly ever look at that thing
I mean, I guess people do look at it from time to time, but, it's "basic" git below it all
please help me i couldn't install
it asks how do you want to open the file
i read the luckperms api usage wiki and didnt found how i check perms in specific server. Can you send link or something please?
the LP api wiki tells you how to use contexts
of which you'd use contexts to specify the server, basically
there is much documentation on their wiki and they have a discord
from which file can i change the commands
which commands
/restart
/server
and restart would be dumb as that would interfere with the servers version of that command
take a look at CommandServer or whatever it was called
I mean, if you're just replacing commands, write a plugin
I know other commands /send /alert /server
so how do i get it as a jar
compile the project and the submodules for those respectively contain the jars
There are texts written in green, can I update them all?
You could just have put a modified message.properties in your proxy folder if messages are all you need to change
oh... By the way is there any methods better than sout to print debug messages?
don't mention
And could you plz tell me the name of that method...
well, theres the logger, but, setting up debug levels to actually log is a pita often
but, can be done
😭
Sry for that
I m new to Java and new to Bungee, so plz forgive if I have asked any silly questions🥺
how can I get it as a jar
get what as a jar? https://papermc.io otherwise
i have built the open source code but how do i jar it
?? the jar will be under bootstrap if I am not mistaken
er
wat
literally run mvn package
the jar will be in the -Proxy/bootstrap/target folder
I can't run mvn
Don't mention
"i can't" gives 0 info
if you don't have it installed on your system, use the maven tool window
otherwise, install maven on your system.
wat
I told you to do one of two things
you just sent a random useless screenshot?
At this point, I can't help you
How difficult are your projects?
if you’re on windows you need to have maven in your path
I can't do it
because i've never done it before
all I can say is that you want to run the maven goal ‚build‘ from waterfall-parent
and that is the pom.xml from the Bungeecord folder. Don’t use that
you edit sources in the Waterfall-Proxy folder and nothing else
Which command should we type?
are you using intellij ?
you can run the maven goal build from IJ, just click maven in the top left and clock goals, you should find it there
yes
otherwise the command is mvn clean build
can i contact you privately please i really need you
my bad I have my screen flipped, top right
Sorry I don’t do that
I have an offer for you
If it's a for hire type offer, this isn't really the kind of server for that.
There are lots of other places to hire people if you need them!
no don't worry
like where
HelpChat, for one. Spigot forums also have a for hire section.
How does rgb colors work in waterfall? For some reasons rgb colors doesn't work for me. They are just black.
set the color properly...
ChatColor is not designed to be treated as a string, the client doesn't understand spigots stupid chat format and so it'll just use whatever the last hex value is as the color
(You shouldn't be putting formatting in the text itself either, use the components styling....
the spigot wiki should have an article on how to use their component system
yeah, that's not how you use components 😅
either use the builder or convert from legacy but directly setting legacy text inside component strings isn't even fully supported by the client anymore
what do you mean properly
using the method on the Component
as said, use the builder
spigots wiki goes over how to use their component stuff
ok
so, incredibly dumb question
I assume the reason the travertine 1.7 patch isnt in waterfall is to keep consistency with the bungee upstream?
it's a patch which is generally a PITA to maintain vs the rest of the codebase and is a "feature" which has wider implications on compat, so not suitable for waterfall
valid
So, me and a friend were working to create a simple plugin, but for some reason we are getting inconsistent results when we try to run the plugin
so we start with a simple log to test if it has working and it worked
but then when we tried to create a command
it only work if the command has explicitly called "LobbyCommand" whathever other name won't work
even if we change class name
and now i just delete the command and nothing works
and it says the main class isn't called
This is the whole plugin basicly
this is the bungee.yml
I mean you don't register any command in your plugin?
(also just fyi if you ever have to hide important infromation then you should cover the whole thing including potential top and bottom of the words with something. I won't waste my time here but your way is easily reversible lol)
nop
i know, its not that sensitive
glad I got that right, lol
as for your actual issue: please show the code with the command
then please provide the error
it dosn't give any compile error but doesn't load
and the worst part its that it worked before
well... the jar file is not a valid zip file
and the we tried to add the command it failed i deleted the command and its still not working
delete it and rebuild (also make sure to clean your build space before rebuilding)
thats what the build task does
it runs gradle clear rebuilds it delete the jar from waterfall and then put the new one there and run it
well check if the built jar file is actual a valid file in the gradle output
and if it is check if however you are copying it doesn't mess up the file in your plugins folder
we delete the file in the plugins folder before copying the new one
and the jar seens to be right
too
so what does the content of the jar file in the plugins folder look like?=
that's in your build output
could it be that intellij its running the cmd that copys the file before it finish writing it to the disk?
seeing as it's correct there my guess would be that something in the copy process corupts it
unlikely if you have the steps set to run after each other
never had issues with that when using maven and copying with IJs external tools
windows copy has the problem
it has not copying it corretly
move works for some reason
It worked
how do you do a utf-8 text?
make sure that your compiler/file encoding is set to utf8
the file it, how do i set gradle to utf8?
if its this, its already utf8, the same for the file encoding
assuming the file was set that way should be fine
make sure that whatever is reading that file uses utf8
When in doubt -Dfile.encoding=UTF-8
Oi you stole my kiwi gag ;)
Hello, I'm developing a plugin to waterfall and I tried to setup permissions using this (on bungee.yml), but it doesn't respect (I'm using LuckPerms on server). Can anyone help me?
how are you changing the perms?
In game? Using luckperms web editor
Yea, that's not how that works, basically
you don't define commands in the yaml file for bungee/waterfall
Oh
Interesting...
You can pass the perm to the command using the super constructor
Right! Thank you
@spring oriole i said it
I know
I just wanted everything organized :(
In a bungee network with Bungeecord online mode on, and all other spigot servers with online mode off, will Player#getUniqueId (on spigot/paper servers) and ProxiedPlayer#getUniqueId (on bungeecord/waterfall) return different results?
with ip forwarding setup, no
In the server of bungeecord connected to each other,
What would be the most concise algorithm that would allow player A to move to player B on another server via the target's nickname?
I'd like to know how to do that as atomically as possible.
it's done over the network and takes time, so, no idea what you mean by atomically there
This means that the teleport operation proceeds through the simplest routing.
basically, the server itself needs to do the final tp, so, generally you'd send some message over the network to it so that it can do the final move, and just send the player over there using
thanks you
I have a question.
If ConnectOther of bungee channel function
If 'Light', a user on server B, is connected,
Is it possible to run ConnectOther on server A and move it to server A by entering the nickname 'Light'?
only if you have a player online on server A
also if you are fine with using existing solutions then I have a plugin for that too 👀
Assume there are enough players to send messages to both servers.
To simplify my question,
Is it possible to move the target's player to another server by entering the nickname of a user who is not connected to server A? is about.
the BungeeCord plugin message channel supports sending a player by their name to any server in the network, yes
(if that was your question)
and they don't need to be connected to the server sending the message
thanks you
if you want proper teleportation I suggest using the SpawnLocationEvent and not plugin messages (as their delay might not be fast enough)
What exactly is it?
what do you mean by "it"?
well the docs are pretty clear
(imo)
you basically specify the location the player should spawn in on join
thx
instead of first loading all the chunks around the player and then teleporting them to the new chunks if teleporting on the join event
Thanks for your kind reply!
can you sure your reconnect handler code too?
im using kfka
Shameless self-advert:
My AntiVPN plug-in (previously Velocity only) now supports Waterfall/Bungee, too (and is now on Velocity 3.1).
https://github.com/itsTyrion/AntiVPN/releases/latest
not too sure how I feel about blocking the event instead of using the intent system
also I would strongly recommend either running the listener at lowest priority or at least make that configurable so one can adjust it for other plugins that might also listen on those events
(e.g. if you have a heavy plugin listener on one of those events and don't want that to activate when someone with VPN tries to spam you)
also checking on ping seems a bit wastefull.
Would be cool implement it on Wf, to avoid fast-bots.
Something like ch.close(); If it's detected invalid.
That’s a very bad idea. That kind of jank leads to a lot of issues
Well u can do it on the initialhandler too its already geting disconected if its something not good.
or, you know, use a proper firewall 👀
could easily set something up with fail2ban just reading a log file that a plugin generates when it detects odd behaviour (like vpn/too many requets etc)
I didnt Speak about firewall
yeah low layer firewall its fine
I saw it, 1000 requests/s it's nothing so just forget that.
ill do one with MAXMIND it's "unlimited"
ProxyDefineCommandsEvent does this include commands from backend?
no
how can i control the ones from backend
i do modify the packet
but protocolize is just dumb
i don't get packets sent too fast so i just got an exploit in my plugin i cant fix
it works fine on velocity
i use viaver
viaver sends the commands translatted to tab complete to 1.12- clients and when the client request too fast causing the command list to be exploited
define commands is irrelevan tfor 1.12 clients
as for how that interacts with stuff like via, idk
that's outside of the scope of this channel
in packet i modify either the Suggestions or the list string depending on protocol version
am i doing something wrong
i dont think so, when the same packet is sent later i get the correct response
tbh velocity hopefully does not have this issue
atleast i get the packet on velocity
well on velocity i have Offer so
looks to happen also on velocity, ok its a protocolize problem
or tbh via problem
how can i get command owning plugin
Exactly what it says; I assume you’re developing a plugin here, check the parent type
I am editing waterfall but there is a problem
Alright but that doesn’t change anything
You changed something that is required by a supertype
You have an extra @override that shouldn’t be there is what this is saying if I’m not mistaken
Just as clarification; you can’t change a methods signature and keep its functionality from the supertype
how so?
Because there won’t be anything left to override or implement. The supertype defines the method signature (but not always the modifiers)
Then you’re down an implemented method but still need to replace it back
What exactly are you even trying to do here in on one of the packet handlers?
i have a very bad problem
how to fix please help
You tried to modify the handle method for the team packet in that class
And I assume you also changed something with that packet itself
We highly discourage that unless you know exactly what you’re doing
Which is also why you’ll only get very limited help with what you’re doing here
public static void broadcastMessage(String message){
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Message");
out.writeUTF("ALL");
out.writeUTF(message);
Bukkit.getServer().sendPluginMessage(CoreBukkitPlugin.getInstance(), BUNGEECORD_CHANNEL, out.toByteArray());
}
Hi, is it normal that the message is broadcast as many times as the number of players online?
No, that thing just picks the first player and shoves a packet down their connection
Is it possible with Messaging Channel to send data from the bungee plugin to a spigot plugin? Yes right?
For example if you handle commands with the bungee and create/open the inventory with the spigot plugin
yes
thx
Is it common practice to create a new subchannel for each task? or is it better to have one subChannel and maybe send an json in which there is a specific value where i can determine what to do with the data?
I just poop json around and have an "action" tag in there to say what it's tryna do
thanks
Any idea why the PluginMessageListener wont trigger?
how can i stop this?
Are all bungee schedueler async?
Ther is no main thread
is there an easy way to make my plugin override another plugin's command?
anyone?
Thanks it worked! <3 Merry christmas btw
You're assigning nothing to action
if you want the variable to stay uninitialized, remove the =
so what should i do
read again
do i need to remove the code?
what are you trying to do
I want to get the jar but I can't, it gives an error
I think you should learn java before attempting to code bukkit plugins
Just wondering how you guys made bungee generate spigot servers… seen many methods, which do you recommend?
You are improperly assigning the variable… do you want it to have a null value? Or do you want it be uninitialized?
Remove the ‘=‘ sign and try running it
i can't get the jar for weeks please someone help
I really don't know what I have to do to get the jar
there is something missing i can't figure it out
Did you compile it yourself?
yes
Using maven or gradle?
maven
What build goal are you using?
what?
Maven has build goals such as eg. "clean package", "clean install", etc...
have you tried to run ./waterfall b from bash, get jar from Waterfall-Proxy/bootstrap/target/
there are some errors in maven side
it gives an error
I mean, if that's the case, you broke it
as for how, idk
but, it tells you the issue in plain english
From what I’m seeing looks like you broke the pom.xml somehow
Good luck fixing it, we don’t provide support for that kind of modification
i didn't break
I mean, clearly something is broke
We don't really provide support for modifications of our software, you're expected to know what you're doing
pom.xml etc
Get yourself a clean Waterfall repo clone
Better yet if you cloned it with --recursive
Run ./waterfall b to build it (you need maven in your $path and a JDK)
or ./waterfall p and change what you need to in the Waterfall-proxy folder
git add and git commit your changes, ./waterfall rb to make your changes a patch
That is the correct way to modify Waterfall, again, more extensive guide in the CONTRIBUTING.md
I have a small question: why does ProxiedPlayer#chat doesn't work when using it to make the player use other commands (if the command belongs to a Bungeecord/Waterfall plugin?
And is there a way to make a player use a command from a bungeecord plugin?
thanks, I'll do that
I compiled the original, it gives an error again why
I cloned it and got the jar directly, it still gives an error
"an error"
those are warnings, not errors
Don't I need to use waterfall proxy jar?
oh, that is the shaded one
No
you use the bootstrap jar, as you've been told multiple times
finally worked
How can I change the cmd-alert command
I just want to change the alert command
write a plugin and replace the command?
messages.properties
thank you ❤️
how can i remove the by message it seems very confusing
where does that even show besides the startup log?
console
well yes, but why would that matter?
it's literally just the version of the specific cmd module
modify how the version is included in the module I guess
You can keep it and set it yourself; but also you’re in the wrong place for that, the file you’re editing is for the module downloads
Regardless, the flag -Dbuild.number=number will set that, you can just add it to the maven build command
How do I listen to PluginMessages using waterfall?
Use the PluginMessageEvent.
https://papermc.io/javadocs/waterfall/1.18/net/md_5/bungee/api/event/PluginMessageEvent.html
Do i need to register incoming/outgoing channels beforehand for this?
Since it is an Event, i don't think so.
Im trying to send a PluginMessage by doing
event.getPlayer().sendPluginMessage(DraelCraftHub.getInstance(),"dch:joins",
event.getPlayer().getUniqueId().toString().getBytes(StandardCharsets.UTF_8));
and
getServer().getMessenger().registerOutgoingPluginChannel(this, "dch:joins");
it doesn't show up on the proxy, i.e. it doesn't go through (i suppose)
it doesn't show up on the proxy
public class HubJoinEvent implements Listener {
@EventHandler
public void onHubJoin(PluginMessageEvent event) {
System.out.println(new String(event.getData()));
System.out.println("tag"+event.getTag());
}
}
I get a lot of random messages from other plugins but not from mine
or if someone here did this stuff successfully could they share how they registered stuff?
the sender registers stuff
i.e. if the proxy wants to send stuff to the server, it needs to register it
Every time I start my waterfall plugin, these messages are printed in red because I think Waterfall/Bungeecord doesn't like having other loggers being used
[19:17:09 ERROR]: [main] INFO com.github.secretx33.dependencies.friends.hikari.HikariDataSource - HikariPool-1 - Starting...
[19:17:09 ERROR]: [main] INFO com.github.secretx33.dependencies.friends.hikari.HikariDataSource - HikariPool-1 - Start completed.```
Logger used
```kt
runtimeOnly("org.slf4j:slf4j-simple:1.7.32")```
But I just put it there because otherwise Hikari prints a huge complain about operating in "no-op" mode or whatever. Is there a way to make Hikari (and others `sl4j` consumers alike) use Waterfall default logger, and if so, how can I do that?
I want to do the opposite
My specific use case is i want my spigot plugin to message my proxy telling it a player has successfully joined the server, to which the proxy will respond by telling the spigot plugin with which subdomain it connected with, i.e. survival1.example.com/survival2.example.com, so that the player can be joined to a queue appropriately
But that data is forwarded already to the server when you have forwarding enabled?
?
Regardless; you need to register an outgoing and an incoming namespaced:key formatted channel for either
If you mean in the spigot plugin, I did.
The server should have the hostname the client joined from if you have forwarding enabled. Getting it should be the same as getting it on a server without bungee
Do you mean ip forward?
And how would I do that?
player.getAddress().getHostName()
If that doesn’t work and forwarding is enabled then let me know
you'd need a plugin for that, but, yea, it's doable
is it usefull to ask for upstream? my console is screaming a lot 😉 https://ci.md-5.net/job/BungeeCord/1627/
screaming?
oh
I already did an upstream locally but didn't push
That's like, 20ms though?
if you've got shit blocking for THAT long, you've got issues...
[18:56:12 WARN]: Plugin listener com.loohp.interactivechat.proxy.bungee.InteractiveChatBungee took
47ms to process event PluginMessageEvent(super=TargetedEvent(sender=net.md_5.bungee.ServerConnection@438a17ff, receiver=ZenCoolDodo), cancelled=true, tag=interchat:main)!
i may have issues yes still struggling with tab and interactivechat using pluginmessaging a lot
if you have advices on how to optimize thoses delays (cpu is ok, ram is ok) i get thoses messages when more than 60 players in my bungee network
That's the network pipeline.
Like
you've literally got plugins blocking the network pipeline
it's on the same machine communicating within pterodactyl dockers
literally irrelevant
The problem is the data being sent / how it's sent. It would be more in the place of the plugin developers to optimize.
sorry my knowledge on networks is limited to outside connexions i have trouble when it's internal
You have plugins doing things which are stupidly expensive
yeah always the same issues: user experience VS plugin performance/code quality
That means that when interactive chat runs, your player is gonna be a full tick behind where of packets
and that can impact other players
only for the chat, gameplay do not seems to be affected
The underlying code being ran here is part of the problem https://github.com/NEZNAMY/TAB/blob/884b5755ece5ca7ed16aa9dbdaa38bc7e1c16c38/bungeecord/src/main/java/me/neznamy/tab/platforms/bungeecord/BungeeEventListener.java#L34
bungee pretty much always fires events in the pipeline
[23:03:47 WARN]: [/127.0.0.1:57327] <-> InitialHandler - overflow in packet detected! A string had more data than allowed. For more information, launch Waterfall with -Dwaterfall.packet-decode-logging=true
Anyone know how to fix this?
Does that happen regularly or just once
Every join
I think it was a fallback server error
I changed the address to my hub IP and now i get this error in the picture attached
lobby:
address: 127.0.0.1:25570
motd: '&1Welcome to Safehouse!'
restricted: false```
is the port right?
The port needs to be the same as the hub servers right?
Is there a step by step guide on waterfall?
Maybe you can use the installation instructions for Bungeecord: https://www.spigotmc.org/wiki/bungeecord-installation/
https://www.spigotmc.org/wiki/bungeecord-configuration-guide/
Waterfall is a fork of Bungeecord, so taht should work.
Can anyone tell me how to make this happen on bungee?
Hey!
Is there a way to allow players with a modpack instance to login to a spongeforge server? They'll need to join the hub (has 0 mods installed), in order to pass through and get to their modpacks servers.
you can't, basically; Not if the thing requires mod packs
1.12 and before where somewhat more accepting but modern forge just doesn't work
Isn't there some sort of bypass? Or a mod/plugin that can be coded to help bypass this check?
Don't mention.
It's not down to there being a check
You need data to line up, you do that by making sure that the expected crap is there, i.e. the mods
for modern forge support, if you see the issue tracker, there is an issue tracking this, and in there there is a waterfall fork and a mod which apparently works but looked kinda dead so 🤷♂️
So it is possible to create something which'll fix this issue?
Without modifying the client? Possible; kinda, but limits the player to either forge only or vanilla only
Well the player would be joining the spongeforge server (or whatever works) with a modpack instance and then going from there to their relevant server...
Would this be something you have the skillset to code?
If so i'd love to commission you maybe?
Even if I did that it would barely be usable, mods freeze at random, client glitches out, inventories desync and so on. No, this isnt a workable solution
What kind of solution would be workable then?
A mod for client and server, or some sort of unified client reset protocol (which both dont really exist yet)
for your information, my issues with interactivechat and tab were almost instant solved by the devs that gave me an updated better version of their plugins
One message removed from a suspended account.
One message removed from a suspended account.
in the bootstrap/target folder
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
Is it possible to detect when the end command is executed and delay the proxy closing to, for example, warn users that the proxy will close in X seconds?
make your own end command and replace the proxies, basically
when I try to connect bungee to bungee
I get this error that i send too many packets
1222 bytes (max is like 1k)
can i set the max or smthn?
[21:31:13 WARN]: [/172.18.0.1:50790] <-> InitialHandler - overflow in packet detected! Cannot receive string longer than 1020 (got 1222 bytes)
woops
wrong channel
is config stuff safe to do async
also how do async tasks work
if (minsSinceLastPaid >= countTime) {
main.getProxy().getScheduler().runAsync(main, () -> {
final int existingPoints = main.getMySQL().getPoints(player.getUniqueId());
main.getMySQL().setPoints(player.getUniqueId(), player.getName(), existingPoints + countReward);
player.sendMessage(Main.replaceAmpersand(config.getString("CreditsReceived")));
main.getLastPaidMillis().put(player.getUniqueId(), System.currentTimeMillis());
});
}```
i have this but it doesnt work
LastPaidMillis is a map with UUIDs and longs
is this wrong or why doesnt it get called
PlayerJoinEvent seems to be a bukkit event.
Bukkit events are not triggered by a proxy.
so how do i fix that?
you use the proxy event
By either running that plugin on a Paper server or switching to the proxy event.
its on a paper server
then it should work if you registered it
Then you're in the wrong channel.
its in the main class
oh sry
hi
im currently trying to send a player to another server
is there documentation on the channel sysem for plugin messages
I looked at that page already, their examples there dont even work due to them changing how the channels work
changing how the channels work?
use bungeecord:main i think it was if not on some spigot fork
think it was called that
there were definitely changes, they use BungeeCord as the example channel though that will not work as they require it to be all lowercase now, in my testing using bungeecord as the channel doesn't work either
I wouldn't mind it if I could find updated information about those changes :(
legacy uses BungeeCord
spigot update notes haven't mentioned it from what ive seen
can't send BungeeCord over the pipeline anymore
and, so, spigot basically made some logic which transforms BungeeCord to bungeecord:main and then back on the other side
ahh
Hey so im still trying to send players to another server on spigot```java
//registering, this is in the onEnable
getServer().getMessenger().registerOutgoingPluginChannel(this, "bungeecord:main");
// sending the user later via a function
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(server);
player.sendPluginMessage(Main.getInstance(),"bungeecord:main", out.toByteArray());```
Im running latest Waterfall
use BungeeCord
(as the channel)
the entire thing is basically janky due to upstreams workarounds for that
it can act... odd..
alright
I think I got an error when I tried using uppercase chars
ill send the errror if I get that lol
im using BungeeCord exactly
using bungeecord:main will try to convert it to BungeeCord when it tries to send
[20:51:45 ERROR]: Error occurred while enabling GridBedwars v1.0-SNAPSHOT (Is it up to date?)
java.lang.IllegalArgumentException: Channel must be entirely lowercase (attempted to use BungeeCord:main)
at org.bukkit.plugin.messaging.StandardMessenger.validateAndCorrectChannel(StandardMessenger.java:507) ~[patched_1.17.1.jar:git-Airplane-106]```
remove :main
That worked , thank you
hey
Hello,
I wanted to ask a quick question:
How can I manually update the commands available to tab complete for a player.
Currently the player receives only commands he has access to, which is done with the event "ProxyDefineCommandsEvent". Now I coded my own Permissionsystem and I want to update the commands manually, when a permission is added or removed.
You can't
You'd need the entire command structure to resend, which, unless you save a copy when the server sends it, you don't have, and, is a nice chunk of memory if you did
how can i get all proxyservers and judge if each of them is connected to bc?
ProxyServer#getServers then check if they have players or ping them
is there a helper method/library for translating a string username into a uuid (or returning does not exist) for xbox players? particularly useful if it can be called independent of a waterfall-enabled server (standalone java app tied to a webpage for whitelisting)
waterfall has nothing to do with xbox players
wait am i getting it mixed up with soemthing else? i thought it was the one for bedrock support on bungee
When you use geyser and floodgate it will generate a usable UUID for the player based on the XUID of the account logged in. There is a way to get the XUID back from the UUID but I’m not sure why you wanted to do that
i just wanted to be able to whitelist somebody who was not currently on the server
ideally from an app that was not itself required to be installed on the geyser server directly
xuid, uuid, idrc so long as i can reliably whitelist. haven't done much digging yet but it's on my list of things to do in the next month or so
Hey I need help proxy can someone help me my plan is to create 2 waterfall network 1 is cracked and 1 is premium and make a 3rd waterfall to collect those 2
Piracy isn’t supported and stacking proxies isn’t possible with waterfall/bungeecord without modifications to the proxy directly.
Will not let the crack players enter the server can that possible
online-mode: true?
Well idk if you know bungee don't work when server is in online mod
You set your backend servers to offline mode, not the proxy
point is i am saying creating proxy in ofline mod
but it should work in a way some gamemodes only premium players can acces
anyone can hellp?
with what?
ServerInfo addServer(ServerInfo server) is deprecated. How should I interpret that, that it's soon is removed completely or is there an alternative function I can use?
the entire config class is deprecated
Alright, if I want to dynamically allocate a server to my proxy, do you know a reasonable way to do that? The idea is if a server is offline on connecting to the proxy, it will provision a new server instance at arbitrary cloud platform and link it to the proxy.
using that method you highlighted
the class is deprecated because it can change often
Okey I see, thanks. Is Waterfall the approach to go, as I'm creating a new thing should I transition to Velocity instead?
waterfall in general is deprecated and velocity is much more shiny and robust
Oo shiny, I do like that. I'll have a look at it, thanks.
I really want to know how to setup multi bungee someone pls hlp
depends exactly on what you even mean by that
proxy in proxy is not supported
running multiple proxies side by side is, and, like, you just do that
connect(ServerInfo target, Callback<Boolean> callback, boolean retry) how does retry logic work? does it retry only once or does it retry X times? Is the callback executed on each failure/success or is it executed only once at the end?
er
off recollection, that's called for when the proxy itself is retrying
or is a signal to use the priorities list for fallback or something
oh, no, that's api one, er
no idea, you'd need to look at the impl
I mean, it says it retries the connection, as for how many times it retries, I think it was only once but, ^
ok, I will see, it was unclear to me because javadocs have description copied from the other methods without any new info regarding reconnection part
for some reason sometimes I cannot connect players to the target server that is 100% healthy and the error in the callback is null O_o
So I now think about implementing some retry logic, probably my own
never had that happen tbh, how are your servers connected?
all are on the same machine connected through the waterfall
and they are definitly connecting through localhost connections?
odd
like 3 in 100 connections are failed cuz of null error

