#waterfall-dev

1 messages · Page 18 of 1

frank meteor
#

What package should I look in for researching this?

lean gobletBOT
#

it's not really doable with just the API afaik

frank meteor
lean gobletBOT
#

see BungeeTabListPlus basically xD

trail plume
#

He's not sure if the stuff you'd need to do it is exposed in the API

#

^^

frank meteor
#

No i mean like

#

why is he is a bot

wide maple
bleak current
#

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

frank meteor
#

Sure

#

Lets go to dms to not flood the channel

bleak current
#

understandable

formal coral
#

what build is suitable for 1.16.5?

trail plume
#

just use latest

formal coral
#

having weird connection issues lately

trail plume
#

and?

#

Pretty much nothing has changed with the networking stuff in time

#

I really doubt that using an unsupported version is gonna fix anything.

random vector
trail plume
#

No

bleak current
random vector
#

found out its only SocketAddress when its coming from a UNIX system, so for the most part playerwise itll be an inet

bleak current
#

so if it’s platform dependent maybe you could@handle the address separately based on the object type

random vector
#

yeah I have, shoulda updated that msg

#

thank you though

bleak current
#

sure np

flint haven
#

Help me

trail plume
#

X:

#

is that a network drive? if so, don't

#

Otherwise, i got no idea, make sure git is updated, etc, etc

flint haven
#

Could it be because I am building in Java 17?

trail plume
#

nothing to do with java there

flint haven
#

Git has just been updated and it is not a network drive, how can I fix this problem?

trail plume
#

If that's a modified version of waterfall, basically, 'good luck'

flint haven
#

How to build via PowerShell

trail plume
#

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

flint haven
trail plume
#

can't clone in windows and then run in a *nix environment

flint haven
#

Tried to run on linux But again failure

trail plume
#

clone it in the environment you run it

flint haven
wide maple
# flint haven

You could have fixed this error by reading it. The solution is on your screen. Do that and run the command again

atomic kelp
#

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

lean gobletBOT
#

the /team command is from the Minecraft server, it's not influenced by the proxy

atomic kelp
#

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?

lean gobletBOT
#

not sure if that command actually shows the teams that the client knows but I would assume that the api is somewhat functional

trail plume
#

!ban @sharp geyser scam

inner birchBOT
#

:raised_hands: Banned Heirloom#7817 (scam) [1 total infraction] -- electronicboy#8869.

dry panther
#

does the ServerConnectedEvent get fired everytime a player connects to a server, or only when the player makes an initial proxy connection ?

bleak current
#

every time a player connects to a server

dry panther
#

is there an event only for initial proxy connection ?

bleak current
#

PostLoginEvent

#

(or preloginevent)

dry panther
#

thanks

brazen hamletBOT
somber prism
lean gobletBOT
#

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

wicked lantern
#

Hey, what's the patch to make messages.properties enable when The proxy load?

tawdry narwhal
#

It's not a paper patch, it's upstream

wicked lantern
#

Well, im speaking about proxy

wicked lantern
#

I renember Waterfall did a patch or im bad.

tawdry narwhal
#

BungeeCord#reloadMessages does so

wicked lantern
tawdry narwhal
#

That may be better PepeLaugh

gusty dove
#

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?

gusty dove
#

The Breakpoint never gets hit on the first line

wide maple
#

Ignore case I’m pretty sure it’s stupid like that

wide maple
wide maple
gusty dove
#

The ignore case and event handler did not work

junior chasm
#

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!

trail plume
#

You can use waterfalls API on bungee so long as you don't use any waterfall specific API

jade quiver
#
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 ^
trail plume
#

all we can tell you is what jakarta is telling you

bleak current
#
        PluginManager manager = new PluginManager(ProxyServer.getInstance());
        manager.dispatchCommand(ProxyServer.getInstance().getConsole(), command);
#

would that work, for making the plugin execute a command?

bleak current
#

cause its not working rn

chilly coral
#

ProxyServer.getInstance().getPluginManager()

#

lol

bleak current
#

the params are ProxyServer though

#

not PluginManager

lean gobletBOT
#

you don't create a new instance... you get it from the server

frank meteor
#

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

trail plume
#

that's from the actual servers themselves, you'd need a plugin on the servers to disable those messages

frank meteor
trail plume
#

don't mention

frank meteor
#

mb

trail plume
#

they're still connected to the server they switch from until later on

frank meteor
#

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

trail plume
#

the reconnect handler is also only used on initial connections to the proxy, so that thing makes little sense

frank meteor
#

What should I use instead?

trail plume
#

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

frank meteor
#

So the join/leave messages shouldn't be sending?

trail plume
#

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

frank meteor
#

And is there any way to differentiate between a player login event thats real vs one that has a player thats gonna be dced

trail plume
#

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

frank meteor
#

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

alpine stag
#

any recommended .SH presets for running a waterfall instance?

#

a template or something

trail plume
#

pins in -help.

alpine stag
#

thanks homie

marsh furnace
#

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

trail plume
#

you can't

wide maple
#

You can’t make the client authenticate again

warm pagoda
#

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

trail plume
#

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

zinc falcon
#

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?

wide maple
#

Otherwise it’s easily possible

#

But also very unsupported

zinc falcon
wide maple
# zinc falcon 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

zinc falcon
#

And I assume there's no way to tell the client you've changed their username/uuid?

wide maple
hybrid vine
#

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

lean gobletBOT
#

iirc you can achieve the same with waterfall events without doing some internal changes

grand goblet
#

how does one come up with plugin ideas?

lean gobletBOT
#

easiest is to run a server and can't find proper plugins to do what you want

grand goblet
#

hmm, okay, thanks

alpine stag
#

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 😄

wide maple
#

the bungee commands are only available to the players when they connect through bungee

#

anything else requires plugins

alpine stag
#

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)

wide maple
alpine stag
#

thank you. and do you have any recommendations for said plugin?

#

im struggling to find any that do such a thing

wanton tapir
#

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

alpine stag
#

is there no maven repo for waterfall?

lean gobletBOT
#

it's in the paper repo

alpine stag
#

thank you

alpine stag
# lean goblet it's in the paper repo

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

#

😐

lean gobletBOT
#

that's not part of the API

alpine stag
#

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?

lean gobletBOT
#

non-api artifacts are not distributed via the repos as they shouldn't be used by plugins, use the API

alpine stag
#

hm okay fair i guess

#

(commandSender instanceof ConsoleCommandSender) this is where i was using that, i cant find a replacement for it though

lean gobletBOT
#

just check if the sender is a player if you need to know that, anything else doesn't really matter anyways

timber vapor
warm pagoda
#

has anything changed with waterfall between 1.16.5 -> 1.17.1 that would make the ServerConnectEvent fire twice?

bleak current
#

@heavy sinew you are the author of automatic server reconnect?

simple sage
#

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?

trail plume
#

that's what the "Async" events are for

simple sage
#

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.

simple sage
trail plume
#

.g waterfall javadocs AsyncEvent

trail plume
#

Don't mention

#

The idea is that you go off to another thread and complete the event when you're done

simple sage
#

ok, thx

wide maple
#

In other things

simple sage
trail plume
#

with the async events, correct

#

Just be warned that the client doesn't like waiting there for too long

wide maple
#

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

simple sage
#

It's fine without it.

trail plume
#

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

simple sage
#

thank you

bleak current
#

is there like

#

a resource pack event i cant find one

trail plume
#

no

bleak current
#

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

lean gobletBOT
#

Well, no, the server doesn't know that

#

pretty sure that's what part of the hash is there to resolve

mortal escarp
#

How to update my config? Like how do I add all the new sections that are created? There's no copyDefaults() option.

bleak current
#

oh shid nice

ionic inlet
#

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]]

trail plume
#
  1. your code on the repo doesn't like up
#
  1. anyways, you hit the end of the data stream and tried to keep reading
ionic inlet
ionic inlet
#

consistently

trail plume
#

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

ionic inlet
#

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

ionic inlet
#

"fixed" it (not really) by returning the function when the subchannel is SetPerWarpFlag

lean gobletBOT
#

I mean... one shouldn't read channels of other plugins to begin with 👀

lucid jasper
#

is there a way to get the tps of a paper server via the proxy?

trail plume
#

built in? no

#

otherwise? you can do whatever you want with plugin messaging channels, etc

lucid jasper
#

what do you mean?

trail plume
#

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

lucid jasper
#

no. what are plugin messaging channels?

trail plume
#

Google

#

The bungee wiki has a set of tutorials over how to use them, etc

lucid jasper
#

okay thanks

humble hull
#

is there a way to have bungeecord/waterfall hexcolors? without plugin messages?

trail plume
#

wat?

humble hull
#

like sending hexcolor with bungeecord messages

trail plume
#

yea

#

it's just components

humble hull
#

but its only possible for the whole message not only for one word in example

trail plume
#

I'd heavily suggest learning how components actually work

#

you can nest components to affect formatting, coloring, etc

cursive wasp
#

In case you didn't know for today, the protocol number for 1.18.0 is 757

simple sage
#

Is there any way to get the offline user's uuid from bungeecord?

wide maple
lone wagon
#

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...

round current
#

Is there any way to store datas used in multiple servers?

ruby python
#

it depends

#

config file, yes by using a plain file
data of players ? By using a database

proper nexus
#

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```
lean gobletBOT
#

there's nothing special about that tbh

#

generally speaking removing credit is a bit frowned upon though

proper nexus
#

damn it

#

if I do server name (brand)

#

?

lean gobletBOT
#

I mean it's your server, you can do whatever you want

proper nexus
#

yeah, but how do I do it

novel wedge
#

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?

lean gobletBOT
#

yes

wide maple
novel wedge
wide maple
# novel wedge 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

novel wedge
#

So pressing TAB could show all players on all connected servers using the proxy api?

trail plume
#

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

novel wedge
#

So whenever someone requests the tablist, I should send a request to every server through bungeecord what players they have online?

trail plume
#

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

novel wedge
#

hmmm, I'll search around some more then, thanks for the nudge in the right direction

bleak current
#

Hey, wondering if anyone has a good alternative to BungeeCord Messaging Service for custom plugin messages?

trail plume
#

easy to just use the bungee channel and use a custom thing instead of the one on the page

#

otherwise, it gets more fun...

bleak current
#

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

lean gobletBOT
#

really depends on what you need and want what the best solution is though

bleak current
#

That would be what I'm obviously missing 😄

lean gobletBOT
#

(although I doubt any basic solution would really break/need an update ¯_(ツ)_/¯)

bleak current
#

So a few use cases.

  1. 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

  2. Cross-server teleportation. Player on server1 teleports to location on server2, we need to tell server2 they are teleporting to them co-ords

violet saffron
lean gobletBOT
#

well my solution has a couple of utility functionality like teleporting built-in

#

hard coding Rabbit smh

bleak current
#

Lol amazing, thank you so much all!

lean gobletBOT
#

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 👀

bleak current
#

Hey, does the teleport function of ConnectorPlugin work on Plugin Messages if the target server has no online player?

lean gobletBOT
#

it works but not as good

#

(like the player will be teleported after they logged in instead of changing their spawn location)

bleak current
#

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

lean gobletBOT
#

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

bleak current
#

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?

lean gobletBOT
#

(also the MQTT stuff is untested in ConnectorPlugin, I should probably put that somewhere lol)

bleak current
#

I feel like Redis is what we should go with for the use cases, just wanna double check 😂

lean gobletBOT
#

both redis and mqtt have all features, there's no difference between them

bleak current
#

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

lean gobletBOT
#

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)

bleak current
#

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

lean gobletBOT
#

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

dusk heart
#

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?

dusk heart
#

thx

#

but how i use 1.18?

lean gobletBOT
#

put in 1.18?

dusk heart
#

1.18-R0.1-SNAPSHOT?

lean gobletBOT
#

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
#

?

#

i'm trying

wicked lantern
#

@dusk heart What's happening

ocean sand
#

sting for 1.12.2 paper for fix exploit?

bleak current
#

this bungee update good

#

exposing the bad plugins

#

Plugin listener de.staticred.discordbot.bungeeevents.PostLoginEvent took 551ms to process event PostLoginEvent(player=Zooper)!

near tinsel
#

is there a way to get a player's protocol version with the 1.18 api?

pastel hill
#

One message removed from a suspended account.

somber prism
#

you need to make a commit, and then rebuild patches

#

i'd assume ./waterfall rb

pastel hill
somber prism
#

with your changes, yes. In Waterfall-Proxy

pastel hill
#

One message removed from a suspended account.

pastel hill
trail plume
#

yes, or just build with maven

pastel hill
#

One message removed from a suspended account.

#

One message removed from a suspended account.

lean gobletBOT
#

did it correctly create a patch after the rebuild step?

trail plume
#

if your changes disappear you'remissing something

#

make sure that you actually added files, etc

#

see the contrib guide on the repo

pastel hill
#

One message removed from a suspended account.

flint haven
#

I want to build a waterfall with my patch, but I get this error in the screenshot what should I do?

lean gobletBOT
#

your patch points to a non-existing commit hash

#

iirc

flint haven
#

And how to fix this problem?

lean gobletBOT
#

how exactly did you create the patch?

flint haven
#

I can throw you a patch if it is required

lean gobletBOT
#

just answering the question could go a long way

flint haven
#

need it?

flint haven
wide maple
#

Essentially your changes to the Pom.xml are now conflicting because the file was changed in a patch before this one

balmy perch
#

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

trail plume
#

Wat

#

The bukkit logger is not your logger...

#

Use the one given to you by your plugins main class ...

sterile stirrup
#

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

trail plume
#

they work the exact same as bukkit plugins

#

Just, they run on the proxy

sterile stirrup
#

Okay

trail plume
#

you only need a spigot and a bungee plugin if you need to share data between the two things

sterile stirrup
#

What do you mean with data?

#

What data

trail plume
#

like, data, data

#

idk what data you'd specifically need to transfer

#

depends on what you meab by "survival"

sterile stirrup
#

survival server

trail plume
#

I mean, if it's just a server on the network, you could easily do it as a bukkit plugin

sterile stirrup
#

Okay

#

But how do i send a message to other servers?

trail plume
#

plugin messaging channel

sterile stirrup
#

never heard of that

#

Do you have any examples?

trail plume
#

the spigot wiki has a bunch of examples

sterile stirrup
trail plume
#

yes

#

theres also many plugins out there which use messaging channels for sending data around, etc

sterile stirrup
#

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

trail plume
#

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

sterile stirrup
#

So i cant send helpop message to other staff members who are in the other server?

trail plume
#

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

quaint topaz
#

how can i edit waterfall i can't do it from intellij

#

I can't run it in intellij it gives an error

limber berry
#

what error

quaint topaz
#

how can i convert java

trail plume
#

Read the readme.

quaint topaz
trail plume
#

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

quaint topaz
trail plume
#

from bash

#

powershell is not bash.

quaint topaz
sterile stirrup
#

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.

bleak current
trail plume
#

Once again

#

use luckperms

sterile stirrup
#

i use..

trail plume
#

luckperms literally lets you query permissions however you want

sterile stirrup
#

But how i check perms in all servers

trail plume
#

tf do you mean by "all servers"

quaint topaz
#

I did not understand anything

sterile stirrup
#

in survival, kitpvp, skyblock and hub at the same moment

trail plume
#

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

sterile stirrup
#

ya but how i specify the server what im checking....

trail plume
#

read the docs for luckperms

sterile stirrup
#

okay

bleak current
trail plume
#

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

quaint topaz
#

please help me i couldn't install

quaint topaz
trail plume
#

Do not ping.

#

open a bash prompt

#

run the script, literally as it says

quaint topaz
#

i try it gives error

sterile stirrup
#

i read the luckperms api usage wiki and didnt found how i check perms in specific server. Can you send link or something please?

trail plume
#

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

trail plume
#
  1. Read It tells you you don't have maven installed
quaint topaz
#

from which file can i change the commands

bleak current
#

which commands

quaint topaz
#

/restart

trail plume
#

well

#

there is no restart command

quaint topaz
#

/server

trail plume
#

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

quaint topaz
#

I know other commands /send /alert /server

quaint topaz
#

so how do i get it as a jar

wide maple
quaint topaz
wide maple
#

You could just have put a modified message.properties in your proxy folder if messages are all you need to change

balmy perch
trail plume
#

don't mention

balmy perch
#

And could you plz tell me the name of that method...

trail plume
#

well, theres the logger, but, setting up debug levels to actually log is a pita often

#

but, can be done

balmy perch
#

😭

#

Sry for that

#

I m new to Java and new to Bungee, so plz forgive if I have asked any silly questions🥺

quaint topaz
#

how can I get it as a jar

wide maple
quaint topaz
wide maple
#

?? the jar will be under bootstrap if I am not mistaken

quaint topaz
#

I can't import .jar as jar

trail plume
#

er

#

wat

#

literally run mvn package

#

the jar will be in the -Proxy/bootstrap/target folder

quaint topaz
trail plume
#

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.

quaint topaz
trail plume
#

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

quaint topaz
#

How difficult are your projects?

wide maple
quaint topaz
#

because i've never done it before

wide maple
#

all I can say is that you want to run the maven goal ‚build‘ from waterfall-parent

wide maple
# quaint topaz

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

wide maple
#

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

quaint topaz
wide maple
#

otherwise the command is mvn clean build

quaint topaz
#

can i contact you privately please i really need you

wide maple
#

Sorry I don’t do that

quaint topaz
dusky raven
#

There are lots of other places to hire people if you need them!

dusky raven
#

HelpChat, for one. Spigot forums also have a for hire section.

trail plume
#

that's the template

#

do not touch the template

quaint topaz
#

ohh okay

#

so how do i do

sterile stirrup
#

How does rgb colors work in waterfall? For some reasons rgb colors doesn't work for me. They are just black.

trail plume
#

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

lean gobletBOT
#

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

sterile stirrup
#

Okay

#

doesn't work with components too.

sterile stirrup
trail plume
#

using the method on the Component

#

as said, use the builder

#

spigots wiki goes over how to use their component stuff

sterile stirrup
#

ok

shut steeple
#

so, incredibly dumb question

#

I assume the reason the travertine 1.7 patch isnt in waterfall is to keep consistency with the bungee upstream?

trail plume
#

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

shut steeple
#

valid

still trellis
#

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

lean gobletBOT
#

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)

still trellis
lean gobletBOT
#

why hide it then? thonk

#

it's not like System32 is some special phrase 👀

still trellis
#

you right

#

theres the version without the lines

lean gobletBOT
#

glad I got that right, lol

#

as for your actual issue: please show the code with the command

still trellis
#

they don't exists

#

its giving error on logging on the start

#

for some reason

lean gobletBOT
#

then please provide the error

still trellis
#

it dosn't give any compile error but doesn't load

#

and the worst part its that it worked before

lean gobletBOT
#

well... the jar file is not a valid zip file

still trellis
#

and the we tried to add the command it failed i deleted the command and its still not working

lean gobletBOT
#

delete it and rebuild (also make sure to clean your build space before rebuilding)

still trellis
#

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

lean gobletBOT
#

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

still trellis
#

we delete the file in the plugins folder before copying the new one

#

and the jar seens to be right

#

too

lean gobletBOT
#

so what does the content of the jar file in the plugins folder look like?=

still trellis
lean gobletBOT
#

that's in your build output

still trellis
#

could it be that intellij its running the cmd that copys the file before it finish writing it to the disk?

lean gobletBOT
#

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

still trellis
#

windows copy has the problem

#

it has not copying it corretly

#

move works for some reason

#

It worked

lean gobletBOT
#

odd

#

I have no issue with copying

still trellis
#

how do you do a utf-8 text?

trail plume
#

make sure that your compiler/file encoding is set to utf8

still trellis
#

the file it, how do i set gradle to utf8?

#

if its this, its already utf8, the same for the file encoding

trail plume
#

assuming the file was set that way should be fine

#

make sure that whatever is reading that file uses utf8

wide maple
#

When in doubt -Dfile.encoding=UTF-8

still trellis
#

this line resolved it 😄

heavy sapphire
#

Oi you stole my kiwi gag ;)

spring oriole
#

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?

trail plume
#

how are you changing the perms?

spring oriole
#

In game? Using luckperms web editor

trail plume
#

Yea, that's not how that works, basically

#

you don't define commands in the yaml file for bungee/waterfall

spring oriole
#

Oh

still trellis
#

Interesting...

trail plume
#

You can pass the perm to the command using the super constructor

spring oriole
#

Right! Thank you

still trellis
#

@spring oriole i said it

spring oriole
#

I just wanted everything organized :(

kind hill
#

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?

trail plume
#

with ip forwarding setup, no

simple sage
#

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.

trail plume
#

it's done over the network and takes time, so, no idea what you mean by atomically there

simple sage
#

This means that the teleport operation proceeds through the simplest routing.

trail plume
#

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

simple sage
#

thanks you

simple sage
#

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'?

lean gobletBOT
#

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 👀

simple sage
#

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.

lean gobletBOT
#

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

simple sage
#

thanks you

lean gobletBOT
#

if you want proper teleportation I suggest using the SpawnLocationEvent and not plugin messages (as their delay might not be fast enough)

simple sage
#

What exactly is it?

lean gobletBOT
#

what do you mean by "it"?

simple sage
#

it is SpawnLocationEvent

#

I don't know how to use it.

lean gobletBOT
#

well the docs are pretty clear

#

(imo)

#

you basically specify the location the player should spawn in on join

simple sage
#

thx

lean gobletBOT
#

instead of first loading all the chunks around the player and then teleporting them to the new chunks if teleporting on the join event

simple sage
#

Thanks for your kind reply!

lean gobletBOT
#

can you sure your reconnect handler code too?

simple sage
#

im using kfka

vagrant prawn
lean gobletBOT
#

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.

wicked lantern
#

Something like ch.close(); If it's detected invalid.

wide maple
wicked lantern
lean gobletBOT
#

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)

wicked lantern
#

nose yeah low layer firewall its fine

wicked lantern
#

ill do one with MAXMIND it's "unlimited"

tough sierra
#

ProxyDefineCommandsEvent does this include commands from backend?

trail plume
#

no

tough sierra
#

how can i control the ones from backend

trail plume
#

do it on the backend

#

or basically modify the packet

tough sierra
#

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

trail plume
#

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

tough sierra
#

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

tough sierra
#

how can i get command owning plugin

quaint topaz
wide maple
# quaint topaz

Exactly what it says; I assume you’re developing a plugin here, check the parent type

quaint topaz
wide maple
#

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

quaint topaz
wide maple
#

Just as clarification; you can’t change a methods signature and keep its functionality from the supertype

quaint topaz
#

how so?

wide maple
# quaint topaz 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?

quaint topaz
#

how to fix please help

wide maple
# quaint topaz

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

jagged crag
#
    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?

trail plume
#

No, that thing just picks the first player and shoves a packet down their connection

supple bane
#

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

trail plume
#

yes

supple bane
#

thx

supple bane
#

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?

trail plume
#

I just poop json around and have an "action" tag in there to say what it's tryna do

supple bane
#

thanks

supple bane
#

Any idea why the PluginMessageListener wont trigger?

cinder pilot
#

how can i stop this?

supple bane
#

Are all bungee schedueler async?

trail plume
#

Ther is no main thread

near tinsel
#

is there an easy way to make my plugin override another plugin's command?

cinder pilot
trail plume
#

disable ping logs in the config?

#

work out what's pinging and yeet it?

cinder pilot
quaint topaz
#

how can i solve this problem

bleak current
#

You're assigning nothing to action

#

if you want the variable to stay uninitialized, remove the =

quaint topaz
outer cosmos
quaint topaz
bleak current
#

what are you trying to do

quaint topaz
ruby python
#

I think you should learn java before attempting to code bukkit plugins

tame vapor
#

Just wondering how you guys made bungee generate spigot servers… seen many methods, which do you recommend?

tame vapor
#

Remove the ‘=‘ sign and try running it

quaint topaz
#

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

tame vapor
quaint topaz
tame vapor
quaint topaz
#

maven

tame vapor
#

What build goal are you using?

quaint topaz
tame vapor
#

Maven has build goals such as eg. "clean package", "clean install", etc...

quaint topaz
#

clean install

#

after

#

clean package

tame vapor
#

have you tried to run ./waterfall b from bash, get jar from Waterfall-Proxy/bootstrap/target/

quaint topaz
#

there are some errors in maven side

trail plume
#

I mean, if that's the case, you broke it

#

as for how, idk

#

but, it tells you the issue in plain english

quaint topaz
#

what?

wide maple
#

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

trail plume
#

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

quaint topaz
#

pom.xml etc

wide maple
#

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

kind hill
#

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?

trail plume
#

chat is not commands

#

use the dispatch command or whatever it was method

kind hill
#

thanks, I'll do that

quaint topaz
#

I compiled the original, it gives an error again why

#

I cloned it and got the jar directly, it still gives an error

trail plume
#

"an error"

quaint topaz
trail plume
#

those are warnings, not errors

quaint topaz
trail plume
#

wrong jar probs

#

use the shaded one

quaint topaz
#

Don't I need to use waterfall proxy jar?

trail plume
#

oh, that is the shaded one

#

No

#

you use the bootstrap jar, as you've been told multiple times

quaint topaz
#

finally worked

#

How can I change the cmd-alert command

#

I just want to change the alert command

trail plume
#

write a plugin and replace the command?

quaint topaz
#

where can i update these messages

bleak current
#

messages.properties

quaint topaz
#

thank you ❤️

quaint topaz
#

how can i remove the by message it seems very confusing

lean gobletBOT
#

where does that even show besides the startup log?

quaint topaz
#

console

lean gobletBOT
#

well yes, but why would that matter?

quaint topaz
#

bungeecord

#

I want to close the very confused in-between version

lean gobletBOT
#

it's literally just the version of the specific cmd module

quaint topaz
#

yes ı know

#

but I still want to remove the version

lean gobletBOT
#

modify how the version is included in the module I guess

quaint topaz
#

which one should i remove

wide maple
# quaint topaz

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

quaint topaz
#

From which file can I edit these messages?

warm spoke
#

How do I listen to PluginMessages using waterfall?

warm spoke
torpid rampart
warm spoke
#

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)

warm spoke
warm spoke
#

or if someone here did this stuff successfully could they share how they registered stuff?

trail plume
#

the sender registers stuff

#

i.e. if the proxy wants to send stuff to the server, it needs to register it

kind hill
#

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?
warm spoke
#

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

wide maple
warm spoke
#

?

wide maple
#

Regardless; you need to register an outgoing and an incoming namespaced:key formatted channel for either

warm spoke
#

If you mean in the spigot plugin, I did.

wide maple
# warm spoke ?

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

warm spoke
#

Do you mean ip forward?

wide maple
#

player.getAddress().getHostName()
If that doesn’t work and forwarding is enabled then let me know

trail plume
#

you'd need a plugin for that, but, yea, it's doable

simple imp
trail plume
#

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...

simple imp
#
[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

trail plume
#

That's the network pipeline.

#

Like

#

you've literally got plugins blocking the network pipeline

simple imp
#

it's on the same machine communicating within pterodactyl dockers

trail plume
#

literally irrelevant

violet saffron
#

The problem is the data being sent / how it's sent. It would be more in the place of the plugin developers to optimize.

simple imp
#

sorry my knowledge on networks is limited to outside connexions i have trouble when it's internal

trail plume
#

You have plugins doing things which are stupidly expensive

simple imp
#

yeah always the same issues: user experience VS plugin performance/code quality

trail plume
#

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

simple imp
#

only for the chat, gameplay do not seems to be affected

trail plume
#

No

#

each player has a pipeline

trail plume
#

bungee pretty much always fires events in the pipeline

bleak current
#

[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?

torpid rampart
#

Does that happen regularly or just once

bleak current
#

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```
torpid rampart
#

is the port right?

bleak current
#

The port needs to be the same as the hub servers right?

torpid rampart
#

as the hub server

#

you can't have multiple servers on the same port

bleak current
torpid rampart
high pier
#

Can anyone tell me how to make this happen on bungee?

bleak current
#

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.

trail plume
#

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

bleak current
trail plume
#

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 🤷‍♂️

bleak current
#

So it is possible to create something which'll fix this issue?

wide maple
bleak current
wide maple
bleak current
wide maple
#

A mod for client and server, or some sort of unified client reset protocol (which both dont really exist yet)

simple imp
#

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

pastel hill
#

One message removed from a suspended account.

#

One message removed from a suspended account.

trail plume
#

in the bootstrap/target folder

pastel hill
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

trail plume
#

how am I to know?

#

Look at the build log

pastel hill
#

One message removed from a suspended account.

spring oriole
#

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?

trail plume
#

make your own end command and replace the proxies, basically

spring oriole
#

ok, thanks

#

It's possible to play a sound to all players from proxy?

north pelican
#

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

grave fulcrum
#

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

vocal phoenix
#

is this wrong or why doesnt it get called

outer cosmos
vocal phoenix
#

is that wrong?

outer cosmos
vocal phoenix
lean gobletBOT
#

you use the proxy event

outer cosmos
lean gobletBOT
#

then it should work if you registered it

outer cosmos
vocal phoenix
#

its in the main class

vocal phoenix
bleak niche
#

hi

#

im currently trying to send a player to another server

#

is there documentation on the channel sysem for plugin messages

brazen hamletBOT
bleak niche
#

I looked at that page already, their examples there dont even work due to them changing how the channels work

trail plume
#

changing how the channels work?

#

use bungeecord:main i think it was if not on some spigot fork

#

think it was called that

bleak niche
#

from what ive seen yes

#

ah im using bungeecord:legacy

#

ill give that a try, thanks

bleak niche
# trail plume changing how the channels work?

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

trail plume
#

I mean, vanilla changed the format

#

spigot just did some stupid hacks instead

#

wooo

bleak niche
#

I wouldn't mind it if I could find updated information about those changes :(

trail plume
#

legacy uses BungeeCord

bleak niche
#

spigot update notes haven't mentioned it from what ive seen

trail plume
#

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

bleak niche
#

ahh

bleak niche
#

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

trail plume
#

use BungeeCord

#

(as the channel)

#

the entire thing is basically janky due to upstreams workarounds for that

#

it can act... odd..

bleak niche
#

alright

#

I think I got an error when I tried using uppercase chars

#

ill send the errror if I get that lol

trail plume
#

explictly BungeeCord

#

the translation logic there is stupid

bleak niche
#

im using BungeeCord exactly

trail plume
#

using bungeecord:main will try to convert it to BungeeCord when it tries to send

bleak niche
#
[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]```
trail plume
#

remove :main

bleak niche
#

That worked , thank you

gritty thicket
#

hey

sonic glen
#

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.

trail plume
#

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

balmy perch
#

how can i get all proxyservers and judge if each of them is connected to bc?

lean gobletBOT
#

ProxyServer#getServers then check if they have players or ping them

balmy perch
#

Oh thanks, i will try 👆

#

💕

#

Aww, how can i ping a server?

verbal turret
#

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)

trail plume
#

waterfall has nothing to do with xbox players

verbal turret
#

wait am i getting it mixed up with soemthing else? i thought it was the one for bedrock support on bungee

trail plume
#

no

#

that's geyser

verbal turret
#

then yes i am mixing myself up XD

#

sorry bout that

wide maple
verbal turret
#

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

bleak current
#

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

wide maple
cobalt otter
#

Ok but plugins

#

Maybe do that

#

Like plugins on paper server

cobalt otter
bleak current
#

online-mode: true?

cobalt otter
bleak current
#

You set your backend servers to offline mode, not the proxy

cobalt otter
#

point is i am saying creating proxy in ofline mod

#

but it should work in a way some gamemodes only premium players can acces

cobalt otter
#

anyone can hellp?

lean gobletBOT
#

with what?

bleak current
#

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?

trail plume
#

the entire config class is deprecated

bleak current
#

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.

trail plume
#

using that method you highlighted

#

the class is deprecated because it can change often

bleak current
#

Okey I see, thanks. Is Waterfall the approach to go, as I'm creating a new thing should I transition to Velocity instead?

trail plume
#

waterfall in general is deprecated and velocity is much more shiny and robust

bleak current
#

Oo shiny, I do like that. I'll have a look at it, thanks.

graceful kestrel
#

I really want to know how to setup multi bungee someone pls hlp

trail plume
#

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

edgy hedge
#

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?

trail plume
#

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, ^

edgy hedge
#

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

lean gobletBOT
#

never had that happen tbh, how are your servers connected?

edgy hedge
lean gobletBOT
#

and they are definitly connecting through localhost connections?

edgy hedge
#

in all server properties I have 127.0.0.1

#

so only local connection is possible

lean gobletBOT
#

odd

edgy hedge
#

like 3 in 100 connections are failed cuz of null error