#velocity-dev

164 messages · Page 10 of 1

magic forum
#

sry

fossil sundial
#

See this

magic forum
#

ok

fossil sundial
# magic forum ok

You can send a login plugin message during this event. The login plugin messages will only ever stop back and forth if there is no message left pending

#

So what I did is chain another message while handling the last one

magic forum
#

Ok, it can maybe work then

magic forum
#

But what happens in the mean time velocity waits?

#

What is keeping it from moving on?

fossil sundial
#

The connection holds.
It will only resume after the last pending message has been answered by the client

#

The queue is what holds it

magic forum
#

It's weird cuz I thought of doing it this way before I started modifying velocity, maybe I missed something

#

I can't think of what it was keeping me from doing it this way

fossil sundial
#

In my defense this api isn’t well documented or widely used

magic forum
#

Yeah

fossil sundial
#

I knew what it did. And since it’s an obscure part of the api I can’t blame you

#

Feel free to dissect my poc plugin

#

With the exception of the horrible connection tracking it should be easy to understand

#

Note to self: fix that

magic forum
#

Night

raven rock
#

Is there a good place to checkout velocity development?

#

As in learn the basics from?

magic forum
raven rock
#

yeah

magic forum
#

There is a "quick start guide" on their website

raven rock
#

The official docs seem incomplete

magic forum
#

If you want to know all the possibilities of velocity i suggest you read the javadoc. One sec

raven rock
#

I found the docs they are in the Topic of this channel

#

thnx tho

magic forum
#

Otherwise I suggest looking at other plugins and their source code

raven rock
#

Any plugin you could recommend for me to checkout as a basic one

magic forum
#

https://forums.papermc.io/threads/kickredirect-redirect-your-players-to-a-server-after-a-server-shutdown.162/ This is a useful one. You can experiment with it using the debug feature in you IDE which can be very educational

#

Not maybe the most basic

#

But It can get you started

#

Do this one ^^^ it's very easy to understand since it's only 1-2 class files

ashen fiber
#

Nudge

lilac minnow
#

Another pre login event.. lol? Does this have to do with chat msg signing?

fossil sundial
#

Probably going to be called KeySetupEvent

lilac minnow
#

Lol, you see, what mojang are actually trying to do is figure out how many requests you can feasibly have the server make before people start noticing that it takes them 30 minutes to join a server..

#

_ _
But, for real, being able to change the vhost would be great... Currently I just modded the velocity server to allow this but this is gonna get old pr fast when we do updates 🙃. I probs won't bother making a pr for this as I imagine that I did it in a way that no one here wants to see.. cough removing final modifier on virtualHost in Player and adding a setter

fossil sundial
#

This has been on my list anyway to support connector plugins that implement some sort of proxy protocol that’s not widely used

#

notably as support for a few more complicated RRDNS setups

polar onyx
#

WARN Advanced terminal features are not available in this environment

#

Is this because Im using Intellij's console?

burnt dragon
#

yes

polar onyx
#

What are the said "Advanced terminal features"

agile ore
#

stuff like using the arrow keys for previous commands

polar onyx
#

:(

#

There be way to fix?

bold wharf
#

it's not broken

#

The terminal stuff is working 100% as expected, we can't do the fancy stuff in IJs terminal because IJs terminal is broken

magic forum
#

@fossil sundial I have tested a modpack containing 178 mods with my velocity fork with crossstich

#

It worked after some tweaks to crossstich

#

The most stupid fix to the most stupid problem

#

One of the 178 mods registered a argumenttype IN MINECRAFTS NAMESPACE

#

Causing crossstich to not wrap it

#

My solution?

fossil sundial
#

That’s just stupid

magic forum
bold wharf
#

Be nice if we could get fabric/forge to enforce shit around that

magic forum
#

Yeah, the funny thing is that I have no idea which mod of the 178 mods in the modpack, caused it

#

It takes more time and energy to hunt down that mod and scream at it's devs than just making a ignore list in crossstich

magic forum
#

@fossil sundial Does the preloginevent fire after or before the authentication?

magic forum
#

ok, I don't know if it matters, but forge server does the handshake after the authentication

fossil sundial
#

You can also hold the connection in the postlogin event but it’s easier in pre

magic forum
#

Yeah, It sends the EncryptionRequestPacket before the LoginPluginMessagePacket(handshake)

#

I just tested it

fossil sundial
#

Client doesn’t care is what I meant

#

There’s no check for order there

magic forum
#

Have you checked?

fossil sundial
#

Otherwise my proof of concept wouldn’t be working

magic forum
#

Ok

#

That's a fair point

eager rapids
#

Why is there a .getPlayer() method in DisconnectEvent?
Isn't the player supposed to be offline when this event is triggered?

agile ore
#

hence the javadoc

#

Operations on the provided player, aside from basic data retrieval operations, may behave in undefined ways.

eager rapids
#

So I might try to get the player's UUID hopefully 🤞

#

or their name

agile ore
#

getting uuid/name should probably be fine

eager rapids
#

Great, thanks

elder ridge
#

hi so i am making so i have a gui and can click on a online player head a taky money from them but i can't get it to work i have this code

                    String name e.getClickedInventory().getItem(4).getItemMeta().getDisplayName();
                    economy.withdrawPlayer(name, 1000);
--other file---
        for (Player p2 : Bukkit.getOnlinePlayers()) {
            String n = p2.getName();

            ItemStack skull = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3);
            SkullMeta meta = (SkullMeta) skull.getItemMeta();
elder ridge
fossil sundial
elder ridge
#

oh

#

thx

last geode
#

Hello,

I can't seem to use MiniMessage (version 4.10.1) with Velocity (version 3.0.1).
I keep getting a "NoSuchMethod" or "ClassNotFoundException" error.

I know this means I'm shadowing wrong... But I've been looking in the existing messages and in the docs for three hours and I can't find the problem.
I use Gradle, shadow version 7.1.2 and my project compiles in Java 16.

In my dependencies, I add MiniMessage:
implementation 'net.kyori:adventure-text-minimessage:4.10.1'
And then I relocate MiniMessage:
relocate 'net.kyori.adventure.text.minimessage', 'group.hevelius.minimessage'

I tried in Java 11, with different versions of Velocity and MiniMessage, relocating all Adventure... I definitely didn't get it.
Would someone please tell me what I did wrong, or what I need to do more?

Thanks a lot!

burnt dragon
#

well there's a few issues you're encountering

#
  1. latest minimessage versions require the latest adventure version which older versions of velocity do not include
  2. you cannot shade and relocate the adventure api if you intend to use native velocity methods that accept/return components
#

the solution to your problem is to only run velocity versions that include adventure and minimessage, thus ensuring you don't have any issues and you don't have to shade or relocate anything

last geode
#

Thank you so much for your answer.

But we agree that the latest version of Velocity available is 3.1.1? Even with this one, I have access to Adventure elements, but MiniMessage is not one of them...

#

Damn it, I just had to use the version 3.1.2-SNAPSHOT. That's terrible 😭
Thank you so much!

burnt dragon
#

yeah there should really be another minor release some point soon but

#

ig there'll be one with 1.19

fossil sundial
#

I’ll be steaming myself on velocity update duty in about an hour

deft torrent
sacred ice
#

Is there any method in Velocity to get the current path from the plugins folder like in spigot?

strong nest
sacred ice
strong nest
sacred ice
#

And how? 😂

strong nest
#

Wait i will show

strong nest
#

You can get velocity's "plugins" folder by editing the path here.

sacred ice
strong nest
fossil sundial
reef tiger
fossil sundial
#

You can implement ResultedEvent if you want to mark your event as one that has a generic result

#

But other than that there’s nothing

reef tiger
#

got it, thank you

finite marsh
#

Does Velocity support Java 18? (Unsupported class file major version 62)

median kraken
#

Error when trying to create custom ArgumentType for brigadier "Don't know how to serialize *.RulesetNameArgumentType".
Question is it possible to create your own ArgumentType?

hazy marsh
#

is there a way to create custom argumenttypes? I've created one like minecraft but it says

Don't know how to serialize command.arguments.PlayerArgumentType

fossil sundial
#

@median kraken @hazy marsh no- and the client can’t deal with those anyway unless you use a mod
Even if it’s not supported on velocity itself you can encapsulate custom types and pass them through velocity (if you have a modded server & client)
See the crossstitch mod for how to do that

fossil sundial
finite marsh
#

You may consider updating dependencies to the latest ones.

fossil sundial
finite marsh
fossil sundial
#

no problem

hazy marsh
#

does anyone know how to fix this error?

magic forum
#

yo, I got forge to send the modlist over the server ping. This is my velocity plugin writing that to the console.

craggy pecan
#

Don't place classes in the root directory, create a package and put them there

#

This is a known issue 😔

languid rover
#

Hi, any idea why this.config might not be initialised?

burnt dragon
#

initialise that variable in your constructor?

finite marsh
#

I needed to code a velocity plugin that prevented connection to the bukkit server from another proxy in the old days. Do I need to code it or does "modern forwarding" configuration solve this issue?

agile ore
#

Latter, ideally with a firewall on top

finite marsh
fossil sundial
finite marsh
magic forum
#

@fossil sundial That idea you had with sending the handshaking information using statusPings is working. I have successfully got it to work on the Forge server side with some few new discoveries along the way. The max size for a status ping is 32767 bytes, this is a problem since the modlist+registry+config packet takes up more bytes than that. The solution?

#

My velocity plugin will then have to ping the server multiple times. This is the handshake data download.

#

It only needs to do this one time. Everytime the forge server starts

fossil sundial
#

at this point it may be quicker to open another socket

#

... maybe

magic forum
#

hmm

fossil sundial
#

but since this works I dont see anything wrong with it

magic forum
#

👍

signal jasper
#

which interface to I implement for commands?

#

the docs are outdated

bold wharf
signal jasper
#

oh

#

thanks

eager rapids
#

I'm trying to use Plugin Messaging between my paper server and my velocity proxy, but it seems like the PluginMessageEvent listener is never triggered.
1st screen is how I register the listener
2nd screen is how I send the message from Bukkit

bold wharf
#

you don't need to register the BungeeCord channel yourself

eager rapids
#

Ah?

bold wharf
#

velocity implements the bungeecord channel

#

you just need to make sure that you follow the correct format as per the spigot wiki

#

The bungeecord channel is the bungeecord channel

#

if you want a channel for doing your own messages you need to create your own channel as per the pins

eager rapids
#

If I create my custom channel using MinecraftChannelIdentifier.from("velocityplugin:friendcommand"), what would be the channel's name that I should use in my Bukkit plugin?
"friendcommand"? "velocityplugin:friendcommand"?

bold wharf
#

the latter

eager rapids
#

thanks

ruby spear
#

@hidden gale was that pull request for velocity related to the exploit was that fixed in netty 4.1.77.Final?

bold wharf
#

You mean the CVE?

ruby spear
#

yes

bold wharf
#

no

ruby spear
#

why then

#

because that only effected <= Java 6 kek

bold wharf
#

my guess would be to just keep it updated

ruby spear
#

but that's not even latest netty

bold wharf
#

it is

ruby spear
#

ah well I guess final wise

bold wharf
#

Unless you're talking about the alphas

#

(which, apparently hasn't even been touched since 2015)

bold wharf
#

yea, am confussled

ruby spear
#

no ur right if you don't count the 2nd alpha

hidden gale
hidden gale
ruby spear
hidden gale
#

4.1.blabla-Final is always stable stuff

#

I see

craggy pecan
magic forum
#

keep getting this error

#

what does it mean?

#

I'm trying to build velocity after checking out a new commit

#

It's right here

#

Wtf

agile ore
#

are you running the right jar?

#

you need the -all jar in proxy/build/libs

magic forum
#

ah, It doesn't seem to exist a -all jar in there

#

Well, that's unfortunate since I don't know how to get one

agile ore
#

Which build task did you run?

magic forum
#

jar

agile ore
#

Try running build

#

That should properly include the dependencies

magic forum
#

Oh now it works, Thank you

cyan dew
#

Hi, does velocity have a permissions system for the commands we create?
In order to manage permissions for players

fossil sundial
#

Velocity does have a permission api
We don’t provide a permission system however.
That is up to plugins to implement
And we also made the conscious choice of not allowing other plugins to control permission plugins as part of the lessons leaned from Bungeecord

cyan dew
#

Oh okay I see, thanks.

cyan dew
#

but just how can I disable /server and other velocity commands to players

craggy pecan
#

Most servers use LuckPerms

amber ridge
#

how do i make scheduler execute X times then cancel?

full crescent
#

quick question how can I connect a player to another server?

craggy pecan
magic forum
#

@fossil sundial I'm done with the modern forge support plugin

#

With the server side forge mod

#

it works

#

Using the status ping to download the handshake

fossil sundial
brave knoll
#

is there a way to access a file from the velocity file directory as a plugin from a backend server? would be cool to know :)

bold wharf
#

Well, no

#

Like, the other thing can be running in an entirely isolated environment from the other

#

best you could do is transfer such files over the network somewhere

opal bay
#

nvm

magic forum
#

When I run it in regular velocity, I get this:

#

How do I fix it?

#

It says "OutOfMemoryError"

#

Wtf

oblique haven
magic forum
#

This is at line 63

#

I cant see the problem here

oblique haven
#

Ima assume this is trolling

bold wharf
#

your heap space ran out

#

jesus lol

magic forum
#

It work before

#

In idea

#

It ran fine

oblique haven
#

That’s a huge byte array friend

bold wharf
#

You're creating a huge byte array

#

you apparently don't have enough memory for that

magic forum
#

Can I allocate more?

sweet zodiac
#

no just dont make the buffer that big lol

bold wharf
#

You ran out of heap space

oblique haven
bold wharf
#

but, allocating a buffer that huge is just bad

magic forum
#

but I need it to be atleast that size. I need to store that many bytes

oblique haven
#

Use a circular buffer then

#

But definitely don’t be doing that

magic forum
bold wharf
#

ByteBuf, etc

magic forum
#

Or am i stupid

oblique haven
#

DirectByteBuffer is usually good

#

What electronic is suggesting is good

#

Honestly - you should be reading in chunks - you should never be throwing all that data in memory, it doesn’t make sense to

#

And if it’s over your head you may consider doing some more basic networking problems to train up

magic forum
#

I do read in chunks, but I allocate it all at once

oblique haven
#

Don’t

bold wharf
#

don't allocate it all at once

fossil sundial
#

Adde that’s just over a gigabyte of ram the array will take up

bold wharf
#

lol

fossil sundial
#

That one array

bold wharf
#

I was tryna brain the memory thingy but didn't wanna

oblique haven
magic forum
#

Wait, it's 1 000 000 000, oh

#

I see

fossil sundial
#

It’s at least 8 trillion bit

magic forum
#

it's 100x more than i wanted

oblique haven
#

Good god it’s a lot

magic forum
#

1000 even

oblique haven
#

1mb is more sensible but still a lot

magic forum
#

I think I counted wrong

oblique haven
#

Probably

fossil sundial
#

I think so too

magic forum
#

It's still weird how idea ran it

#

It's should be impossible

vernal compass
#

I mean, if you have that amount of RAM available and no limits set, it should run

magic forum
#

Yeah, windows also have a page file

fossil sundial
#

Well the default jvm in IJ has around 1.5gb

vernal compass
#

not sure if a single byte array can use the ram and the page file, that might not work

fossil sundial
#

So it’s not impossible

bold wharf
#

active ram can't be paged, not without joyous swapping and stuff will generally scream if it can't fit what you're playing with back into active ram

#

direct vs on heap is always a fun one, direct is faster but you've gotta remember that you're going off the heap, so you especially wanna be reasonable efficent with your buffers

languid rover
#

Hi! I can't find in the docs how to run command as player. Clues?

bold wharf
#

pretty sure that the thin to dispatch a command let you provide a sender?

languid rover
bold wharf
#

you get it from the ProxyServer iirc?

languid rover
#

i'll check again

#

there's getConsoleCommandSource only

bold wharf
#

CommandManager

languid rover
#

thank you

fossil sundial
fossil sundial
magic forum
#

Yeah, But that will be easier i think.

#

I know the way around forge better now than I did before

lapis warren
#

How can I make a user execute a command in the proxy?
I'm using the spoofChatInput method, but when testing I see that the command is executed on the paper/spigot server and not on the proxy

bold wharf
#

get the command manager and use the methods on there

lapis warren
#

Thanks

timber matrix
#

I just started using Velocity - I can work out how to receive a plugin message but how would I get the sender of the plugin message so I can send a reply? .getSource() returns an empty class which I can't find any use case for

craggy pecan
#

You need an instanceof and a cast

timber matrix
#

What do I cast it to?

#

OHHH got it thank you so much

craggy pecan
#

To Player

lethal garnet
#

does velocity shade minimessage? (since when?)

oblique haven
#

because iirc adventure started shading in minimessage? idk

lethal garnet
#

adventure shades minimessage? I doubt that

fossil sundial
torn fable
#

So I can see the logic as to why I cannot get what world the player from the PlayerQuitEvent is in... But how would I go about doing so?

@EventHandler
public void PlayerJoin(PlayerQuitEvent e){  
    final Player p = e.getPlayer();
    if(p.getWorld().getName().contains("Lobby"))
    //Some code......
}
#

I'm trying to update scoreboards for online players, but only want that number to reflect who is in the Lobby world

bold wharf
#

I mean

#

they should still be in the world

torn fable
#

Hmm then maybe I have other issues

#

brb debugging

#

Ah I found the issue

#

Bukkit.getOnlinePlayers().size() was still counting them. Had to change it to Bukkit.getOnlinePlayers().size() - 1 in the PlayerQuitEvent

#

Thanks for the sanity check

oblique haven
simple urchin
#

is there a way to update a users permission function without them reconnecting?

bold wharf
#

The perm function thing is supposed to be like an interface into your own logic

#

You don't update the function, you update whatever that function calls into

simple urchin
#

ahhhhh

#

you smart

torn fable
#

I'm trying to make players not be able to collidejava player.setCollidable(false); But this doesn't seem to work? I have this in PlayerJoinEvent

#

No errors, it just doesn't work

burnt dragon
torn fable
#

zzzz I clicked the wrong one

#

ty

hazy marsh
#

is there an url to always get the latest velocity version?

fossil sundial
languid rover
#

Is there no unload event?

#

should resources be released on ProxyShutdownEvent?

bold wharf
#

I mean, it's good practice to do so

#

but, outside of weird environments, the JVM is about to be destroyed

languid rover
#

Yeah I realised the default behaviour is that plugins are loaded once the proxy starts and unloaded when it's shutting down. I'm using a plugin manager to load/unload plugins without the necessity to restart the proxy. I will check with the plugin manager to verify what events are being sent

craggy pecan
#

That's heavily discouraged, I wish you good luck with classloading issues

fossil sundial
languid rover
#

I'm using ServerUtils

#

i have not spotted any memory leaks so far

bold wharf
#

full output?

#

are you sure that you're building with the latest version of velocity?

#

I mean, on the surface, that doesn't look like the normal velocity annotation processor

#

Oh, wait

#
  1. looks like outdated java
#
  1. You're using a 3rd party annotation processor, not ours, velocity utils?
languid rover
#

I am having problems with mariadb jdbc class not found on run time. Do I shade the dependency?

agile ore
#

yes

#

Velocity doesn't include any database drivers afaik

#

unlike spigot

languid rover
#

I see. So i need to use some maven plugin to compile the dependency and bundle it with my jar?

hidden gale
#

shadow instead?

languid rover
#

yeah I will be using maven shade plugin. Trying to understand how to work with it from the docs right now

warm bay
#

Hi! If i’m making a paper plugin with velocity proxy, how can I send a player to another server within the paper plug-in?

#

Essentially is there an equivalent of the BungeeCord messaging channel for velocity?

bold wharf
#

velocity implements the bungee messaging channel

warm bay
#

oh, great

#

would that also work though if the forwarding mode is set to “modern” rather than “bungeecord”?

bold wharf
#

forwarding mode is irrelevant

fossil sundial
eager yoke
#

Hi. Where is this text?

river shoal
#

hi, is it possible to make a velocity plugin that allows network administrators to login as other players?

#

theoretically it should be

fossil sundial
boreal shore
#

oh, so sorry 😄

fossil sundial
#

You can spoof the UUID just fine but your name won’t be correct

river shoal
#

well if I spoof the UUID won't the name also be correct as the server will send out the spoofed game profile packets to everybody else online

#

I basically just want top level /nick haha

frosty roost
boreal shore
#

What if change the gameprofile while GameProfileRequestEvent?

river shoal
#

I could just join on offline mode if I can get velocity to allow a certain IP to connect from offline mode

#

and use a client that lets me choose my name

fossil sundial
fossil sundial
eager yoke
fossil sundial
eager yoke
#

Yes, I know, but I don't want to use a plugin. One due to text.

fossil sundial
#

Well then I can’t help you.

silent pilot
#

Hello Guys,

does anyone know, what causes this error?

[03.06 23:23:23.260] INFO: [Proxy-1] [23:23:22 ERROR]: Can't create plugin ancient-proxy
[03.06 23:23:23.260] INFO: [Proxy-1] com.google.inject.ProvisionException: Unable to provision, see the following errors:
[03.06 23:23:23.260] INFO: [Proxy-1] 1) [Guice/ErrorInjectingConstructor]: NullPointerException: getInstance().servicesRe…layerManager::class.java) must not be null
[03.06 23:23:23.260] INFO: [Proxy-1]   at AncientProxy.<init>(AncientProxy.kt:23)
[03.06 23:23:23.260] INFO: [Proxy-1]   at VelocityPluginModule.configure(VelocityPluginModule.java:48)
[03.06 23:23:23.260] INFO: [Proxy-1]   while locating AncientProxy
[03.06 23:23:23.260] INFO: [Proxy-1] Learn more:
[03.06 23:23:23.260] INFO: [Proxy-1]   https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
[03.06 23:23:23.260] INFO: [Proxy-1] 1 error```
river shoal
fossil sundial
#

Fair warning though

#

You’ll have to query and provide the data for the player (from mojang?) on the gameprofilerequestevent yourself

river shoal
#

yup, i got it working

#

it’s very nifty, i’ll post it on github soon

#

just a bunch of http requests for the profile

languid rover
#

is there a method to stop all tasks by a plugin?

eager yoke
craggy pecan
raven rock
#

change name and uuid and all that

river shoal
#

oh how so

raven rock
#

Its the PlayerProfile class

fossil sundial
raven rock
#

Just changing the name couldnt be bad could it be

fossil sundial
#

Well the player refers to itself by name & UUID on the playerlist and if there is no match funny things start happening

raven rock
#

That emoji is cute, makes it hard to focus on wht you said lol

fossil sundial
#

It’s a stupid design choice in my opinion
I think it’s fair for mojang to use the playerlist to define other players states
Well- They also take a lot of the data for yourself from the playerlist

#

It’s broken to the point that packets like the player capabilities packet are literally redundant and will cause a desync if they don’t match what is on the list

raven rock
#

Thats why those methods are subject to remove I see

fossil sundial
#

If you use a tablist plugin that changes a players display name without using scoreboards then you can expect more problems

#

Most of this is old code and even if I complain again it will fall on deaf ears

raven rock
#

I guess but I do know there is another way just cant remember it

fossil sundial
#

Bungeecord rewrites the list even if a plugin touches it so it doesn’t break

#

One of the more problematic features of bungee if I say so

raven rock
#

That sucks ngl

fossil sundial
#

We don’t do that on velocity

raven rock
#

Wait will disguises fail too

#

I have a historic friend who uses bungeecord for some reason

fossil sundial
#

Disguises only make you look like someone else to players that aren’t you
That is perfectly fine

raven rock
#

Cool

fossil sundial
#

This is the fundamental reason velocity will always assign you an offline mode UUID if you disable forwarding
I spent way too much time figuring out why my client was absolutely broken and desynced in some scenarios only to learn- well- no I am not insane

fossil sundial
# raven rock Wait will disguises fail too

I wrote a fabric mod a year or two ago that “detects” such tampering
A perfect disguise or vanish plugin of some kind needs to do a whole lot more than meets the eye

raven rock
#

gib me name

fossil sundial
#

I wager it’s nearly impossible to not leave traces

#

I didn’t publicize that; at the time I was just trying to prove a point

raven rock
#

i see

#

Should look into that ngl

fossil sundial
#

But to say this; Even I can’t detect some of the better vanish plugins

#

Some of it is clever to the point that even baffles me
Those people really should contribute to the protocol wiki

#

Would’ve helped me a ton when I was dealing with that desync problem but alas

bold wharf
#

I mean, plugins rarely care to deep dive into how the server works

#

they just do whats needed for the client to be happy

fossil sundial
#

Meanwhile I’m over here debugging an RSA signature issue

#

I really need to finish the 1.19 update but I also have a uni paper that I desperately need to finish

bold wharf
#

u r so duuuum

#

u rr sooo duuuum

#

(jkily)

raven rock
#

1.19 has a few changes for server right

#

or is it just that chat thing

bold wharf
#

nothing really big, tbqh

#

well, outside of the headache

fossil sundial
#

The changes aren’t really big but they fundamentally screw you over if you’re doing a proxy

raven rock
#

yeah paper is gonna be enjoying those

fossil sundial
#

At least I have control over how modern forwarding handles this

bold wharf
#

goes back to crying

fossil sundial
#

And this update makes it comically easy to re-encrypt the protocol between server and proxy

raven rock
#

take that electroniccat lol

fossil sundial
#

I was wagering putting an AES encoder in place

#

if I have the time I will do that

raven rock
#

How long has Aikar been inactive for

bold wharf
#

some time

#

mojang killed him

raven rock
#

I expected that to be md 5 ngl

ebon trellis
#

hi, is it possible to create my own playerargumenttype with brigadier?

bold wharf
#

Well, yes

#

Don't know how well that stuff is exposed in the API if you're tryna do it on the proxy

#

the client also needs to have a mod which registers that type

fossil sundial
#

It’s supported by velocity but not on velocity
I highly recommend not doing it though

bold wharf
#

^^

fossil sundial
#

If you have a server with a custom brigadier type you’ll need to wrap it in a container like crossstitch does for fabric modded servers

#

Then it’ll work just fine

ebon trellis
fossil sundial
#

adde did also develop the same thing for forge (although currently rather useless)

#

Wdym accepts a player

ebon trellis
#

/command <Playername> like /command Greenman999 or /command @a etc

bold wharf
#

either use the standard selector for that or handle it as a string

#

You literally can't send a custom brigadier argument to a client without a client mod

#

so, anything like that is basically gonna be just using the built in types

ebon trellis
bold wharf
#

Well, standard argument

fossil sundial
#

Something like that

#

Hope I’m remembering that right

ebon trellis
#

and what is T?

fossil sundial
#

Not sure if velocity has custom type bindings

#

So I assume it’d be String

#

I’m a rookie at brigadier

#

I’m probably remembering it wrong

ebon trellis
#

hm

ebon trellis
#

@fossil sundial

opaque escarp
slender onyx
#

What's the easiest way to get into velocity plugin development?

#

Like is there a guide like there is for spigot, And is it newbie friendly?

mild crest
#

should be an easy start if you already know how to develop spigot plugins

slender onyx
vernal compass
#

You should know Java first, but if you do the rest should be quite easy

#

doesn't really matter if you start with Bukkit API or Velocity, although bukkit API has more tutorials and resources

slender onyx
#

And I've made one incredibly simple spigot plugin before. 20 lines.

vernal compass
#

yep, going from c# to java should be pretty easy

slender onyx
bold wharf
#

The proxy is the proxy, I'd say that velocities API is maybe marginally more complex vs bukkit, given bukkit was designed to be "easy"

#

(Server plugins also give more space for interaction, whereas proxies are just, well, a proxy)

slender onyx
thick belfry
#

is there a way to essentially broadcast events to all backend servers or specific ones. either from the proxy or one of the backend servers

bold wharf
#

plugin messages

#

or, use a message broker, i.e. rabbit, redis pubsub, etc, etc

ember panther
#

is it possible to track a player's movement by coordinates through Velocity plugin?

naive patrol
#

i guess you could inspect packets

#

but a plugin message from the backend server might be less upkeep

hidden gale
maiden hawk
#

Can I have a command with a permission that is granted by default?

fossil sundial
#

Or /server

maiden hawk
#

👍

ebon trellis
#

hi, how can i create a brigadier command with a permission?

fossil sundial
ebon trellis
opaque escarp
ebon trellis
#

ahhh, thx

lilac minnow
fossil sundial
# lilac minnow So it turns out, the person I am working with has a server host which won't dare...

You can work around that for the time being by replacing the channel initializer and modifying the packet using that.
This addition won’t make the 1.19 update and I’m rather busy at the moment so it might be a while before we are able to tackle that issue. There are a few more design considerations for this event but if you want you can PR something; just expect me to want a lot of changes.
That’s mainly down to that part in the connection being really delicate

#

I would much rather have this be a set-able field on the profile request event

#

But also keep the original address retrievable

lilac minnow
#

I will try the first one for the time being bc... people want things yesterday but this would be nice to have anyway so I might attempt a pr anyway at some point ^^

strong nest
#

is there here some method like that ChatColor.translateAlternateColorCodes()

burnt dragon
#

you can use the legacy component serializer

#

although it's highly recommended you transition to a modern format like minimessage, which is also shipped alongside velocity

magic forum
#

@fossil sundial I am done. It works as it should. It caches the downloaded handshake so it doesn't need to be downloaded every time. The plugin and mod both has a config file. On the proxy side, you can specify what server to download the handshake from. On the server side, you can input the forwarding secret if you want to use modern forwarding. I have also implemented error handling like if the forge server doesn't have the mod installed.

#

Ofc vanilla works fine and is untouched

#

Right now I'm working on the "VersionConnector" thing so it can connect to diffrent server depending on if the client is 1.18.2 forge, 1.16.5 forge or just vanilla. Giving the server admins more freedom

fossil sundial
#

Well I’m not quite there yet
Dang it I didn’t think I’d be struggling this much with the 1.19 update

#

There’s a list of what still needs to be done at the bottom

fossil sundial
oblique haven
#

Curious what the issue is

fossil sundial
#

I’ll be continuing once I ate breakfast

maiden hawk
#

Hmm, I've just taken a quick look at the commit and saw some RSA stuff, what's that for?

fossil sundial
maiden hawk
fossil sundial
#

It’s an absolute fuckton of stuff

#

I’m probably halfway there

maiden hawk
#

What's the purpose of it?

fossil sundial
#

Being able to report other players messages

#

But that’s not in the game yet

maiden hawk
#

Oh no

maiden hawk
fossil sundial
#

Yes

#

It’s still fundamentally flawed atm but I can’t talk about that.

maiden hawk
#

Ohh so this is done so that the proxy can not manipulate with the chat message?

fossil sundial
maiden hawk
#

Oh, how does this work out with plugins that alter the chat messages? (For example, censoring curse words)

fossil sundial
#

If you do manipulate it then it won’t show up on a client that’s set to only allow signed messages

fossil sundial
#

You can send them back as system messages

fossil sundial
#

Those will always display

#

It’s a very stupid system if I do say so myself

#

But I’d rather have it implemented properly

maiden hawk
#

Well I hope this doesn't get abused by mojang

#

Thanks for the info

fossil sundial
#

I know md_5 is gonna have a hot take on this

#

That’ll be interesting to watch

maiden hawk
#

md_5 is like the clown of the MC community

#

Can't wait to see his reaction too

fossil sundial
maiden hawk
#

I guess

languid rover
#

i see that when a player doesn't have permission to use a command, it's passed to the spigot server. is there a method to do this automatically or do I just get the player, get the command string and send it to their server manually (spoofChatInput I assume)?

#

im using SimpleCommand

fossil sundial
#

otherwise youll have to do it yourself

languid rover
#

thank you

restive idol
#

Hi, in ServerKickEvent how am I supposed to use event.getKickedReason?

burnt dragon
#

uh call the method ? what are you asking?

oblique haven
#
  public Optional<net.kyori.adventure.text.Component> getServerKickReason() {
    return Optional.ofNullable(originalReason);
  }```
#

shrug docs are a thing

inner surge
#

is LoginEvent async?

robust mural
#

All events are async

clear lion
#

When will velocity 1,19 release? tmmrw?

atomic leafBOT
#
__There Is No ETA__

Updates to Paper do not have any sort of estimate for when they release, ever. Any and all updates will arrive when they are ready, and the only thing to do is wait for them patiently along with everyone else.

clear lion
#

is there any other way for my velocity server to allow 1.19

#

since i do have via version

#

but that doesn't work with velo does it

oblique haven
#

yeah - put viaversion on the proxy

clear lion
#

does that work..?

oblique haven
#

kinda

#

like it works

clear lion
#

but?

oblique haven
#

at scale it's not very friendly to have on a proxy

clear lion
#

Because?

oblique haven
#

so if you're on a large scale then you might see a whole lot of lag

oblique haven
#

for the players

#

the players ping will usually just shoot up

clear lion
#

but it does work for the time being?

oblique haven
#

yeah, should work

clear lion
#

max 250 players on the proxy

oblique haven
#

there's a known bug with switching dimensions but shrug

clear lion
#

350 network total

clear lion
oblique haven
ruby spear
#

I guess that wouldn't be smart to put that on a 2k server

clear lion
#

Alright

#

2k?

#

max 250

ruby spear
#

was talking about another server

clear lion
#

Ah

#

already have errors with viaversion :/

#

Alright then just wait for a release ig

#

sad

untold viper
#

same I am waiting

vestal prawn
#

is there a maven dependency to have the whole velocity jar and not only the api please ?

#

i need to have access to the ConnectedPlayer class but the api doesnt have it

vestal prawn
#

(You can mention me)

oblique haven
#

okay, it looks like I have everything working so far

#

going to push a commit and people can feel free to play with it - it looks like everything is ok

craggy pecan
#

This is an XY problem, what do you need to access?

hollow merlin
#

Is there any documentation on how Velocity Modern Forwarding Protocol works? I'd like to implement it into my server software. One could obviously read the paper code but maybe there is a lib or some documentation 😄 .

oblique haven
#

kewl

#

1.19

radiant pasture
#

I'm using 1.19 Client -> the Velocity fork -> ViaVersion 4.3.1 on 1.18.2 Paper

oblique haven
#

there was an artifact of some dev testing with V2 forwarding

radiant pasture
#

Ah sweet, thank you!

oblique haven
#

@radiant pasture please let me know if there's any more bugs

#

we're doing production testing ourselves as well

radiant pasture
oblique haven
#

ahhhhhh okay, weird

#

putting all the hotfixes in a branch - one moment

frigid rivet
#

Just got a report, have yet to test - does Velocity default to enforcing secure profiles at this moment?

ashen pawn
#

I believe we do enforce them

exotic sigil
#

Can it be turned off?

oblique haven
#

it can be

#

1.19* is unstable though - I don't recommend using it in production for now

ashen pawn
#

Velocity support for 1.19 is currently unstable, don't use it for now

oblique haven
#

give me like ~ 1 hour and it should be production ready - I missed a few big pieces which weren't hitting through our tests

frigid rivet
#

No rush, mate.

ashen pawn
#

I got back to my apartment not long ago

#

on top of that, I get plenty of work on my plate from my IRL job

frigid rivet
#

Yup, totally fine.

exotic sigil
#

Sorry, did not mean to cause stress^

oblique haven
#

there's something weird with the argument property deserializer

#

it doesn't like whatever via is transforming it to

#

so I'm working on figuring out why

#

then there's another dimension registry issue with 1.18.2 clients I think? but that code didn't really change so I'm unsure - but I'll take a peak when I fix the argument parser

frigid rivet
#

From what I've seen on the Via end, that's only for 1.18.2 -> 1.19.

#

So it shouldn't be an issue for you anymore.

#

Or, at least not urgent.

oblique haven
#

the argument parser is funky - it's sending 47 as an argument parser type but that doesn't exist think

#

let's see what via thinks it is

#

Thonk so there's nothing which should be sending a 47

#

okay it looks like we're missing 2 properties in arguments

#
[21:30:26] [Render thread/INFO]: [CHAT] Your connection to lobby-1 encountered a problem.
[21:30:26] [Render thread/WARN]: Not all defined tags for registry ResourceKey[minecraft:root / minecraft:block] are present in data pack: minecraft:ancient_city_replaceable, minecraft:mangrove_logs_can_grow_through, minecraft:mangrove_roots_can_grow_through, minecraft:nether_carver_replaceables, minecraft:overworld_carver_replaceables
#

yikes

#

but the connection error is somewhere else not being logged

radiant pasture
#

I had to add -Dvelocity.packet-decode-logging=true to log some of the errors

oblique haven
#

but it's not kicking me or logging a refusal

#

going to debug the channel to see what's being passed

ruby spear
#

what's the new gradle/maven dependency url for the velocity api for 1.19

oblique haven
#

can you try running this fork

#

picked up this update in the middle of it - missed a few parsers it looks like, I can now join fine on a large network

#

will get my playerbase to run testing on it to see if anything breaks

radiant pasture
#

HeldItemChange is definitely not 8 bytes

radiant pasture
#

Ah, gotcha

#

I missed that

#

Seems to be working on my test server :D

#

I'll try it out on production now

oblique haven
#

no no no don't do that

radiant pasture
#

best way to find bugs!

oblique haven
#

lol I suppose

#

there's one more which will be put into that fork in a minute

radiant pasture
#

Ah, I'll wait for that at least

oblique haven
#

2 minutes

#

okay - @radiant pasture you're good to test

#

just make sure to pull ^

#

lol

visual adder
#

is latest velocity dev good for prod? or no

oblique haven
#

but like, you can

visual adder
#

ah the previous issue with joining on 1.18 client fixd, now just having that geyser error, ill just wait

oblique haven
#

I'm pretty sure it's stable - but it's still new & it's a very large update

visual adder
#

1.18 spigots, latest velocity, latest via ver, latest geyser atm

#

could be geyser issue? ill check with them

south garden
#

This server requires secure profiles.

#

seeing that in my bedrock console as well

oblique haven
#

it's true by default

visual adder
#

does it generate in toml? or needed to be added manually

south garden
#

didn't even generate lol

#

for me

exotic sigil
#

manually

oblique haven
#

added manually - it doesn't auto populate yet

visual adder
#

okok sec

oblique haven
#

can be fixed later - not a priority for me

south garden
#

fair enough

oblique haven
#

need to make sure the update is stable with all the internals before I can do that

#

it's all looking good though

south garden
#

# Should the proxy enforce the new public key security standard? By default, this is on. force-key-authentication = false

#

put under online mode

oblique haven
#

yeh

#

this is safe to change to false (afaik)

visual adder
#

works 👍

frigid rivet
#

I’m going to head off pretty soon, but if there’s a reason that it wants to stay enabled I’m happy to work with an API call or something to force disable it per-player.

#

I don’t think Floodgate players can generate the keys required by Velocity. But I am happy, and I believe the rest of the Geyser team shares this sentiment, to work on a long-term solution instead of short-term.

visual adder
oblique haven
visual adder
#

ahh kk ❤️

radiant pasture
#

Lunar Client doesn't give the users the public keys, just like geyser, for some reason

rich hawk
#

wouldn’t be the first chat related thing they break

oblique haven
#

try again

#

with the latest build ^

visual adder
#

145? testing now

radiant pasture
oblique haven
visual adder
#

chatting on bedrock fixed.

oblique haven
#

🎉

#

nice

#

only a few minor bugs missing a few things

#

not too bad for a version update, Five is awesome

oblique haven
#

production server with ~ 3.2k players is running smoothly on velocity 1.19, no reported bugs thus far from our production 🙂

#

can you put the flag on and see the exception more clearly

#

also are you on a modded client / backend

#

what's the client and backend server type/version

visual adder
#

action bar is sent to chat instead on bedrock

oblique haven
#

0.0

visual adder
#

those should be action bar, not sure if geyser or velocity problem

oblique haven
#

@frigid rivet for tomorrow, curious if you know what's up

oblique haven
#

can you tell?

visual adder
#

yeah java is workign fine

oblique haven
#

interesting

#

yeah that'll have to be a Camotoy thing to look into I think

visual adder
#

mkmk

oblique haven
#

I know very little about bedrock - sorry

visual adder
#

can see it on java above

#

all good 🙂

#

ty for all the work, ima head to bed

oblique haven
#

g'night, I'm gonna call it soon once I get my host updated to spigot 1.19 while it's out

ashen pawn
#

Connections will use NIO channels, libdeflate (macOS ARM64 / Apple Silicon) compression, native (macOS ARM64 / Apple Silicon) ciphers
I have done a very cursed thing

#

and it actually works

#

pushing in a bit so you can marvel at the madness

oblique haven
#

this has taught me I need to learn C

ashen pawn
#

soon I'll do this for Windows 🙃

oblique haven
#

I understand none of it

#

it's glorious

ashen pawn
#

of course you could already have natives on Apple Silicon if you virtualized Linux or figured that Asahi Linux kinda works

#

we don't support that plugin

#

ah, yes - I have a strategy for Windows now 😱

#

oh god this is going to be so bad

copper cargo
bold wharf
#

I mean, bearing in mind that there are generally 2 ways to send an action chat bar thingy

#

one which uses the chat packet

#

one which uses the actual packet for action bars

vestal prawn
#

and there is no other way i believe

#

and i want to have access to the netty channel in order to retrieve channel options to print them

copper cargo
craggy pecan
vestal prawn
copper cargo
#

Cool, a PR to fix the actionbar has been made

#

Saw that a similar PR was accepted in Bungee

quasi gale
#

If you're on about #732 that PR is just swapping the action bar issues for new different issues. If you used that logic on a server that has the vanilla chat type registry, system messages would end up as chat messages and therefore have <> before them.

bold wharf
#

Yea, that PR caters for via specifically

#

I'm kinda looking into a proper fix for it

oblique haven
#

@craggy pecan about 727 - it’s a pending feature during the completion of 1.19’s features - the initial 1.19 was to implement connection and a basic blanket implementation of the protocol - more will come soon

craggy pecan
#

Ah my bad

#

Wasn't sure if it was a mistake

oblique haven
#

No worries, always good to check on those always true statements heh

bold wharf
#

wrong jar

#

proxy/.../...-all.jar

#

yea, that's wrong

#

that's the API

oblique haven
#

(ignore the one line which goes straight down - that's just an api resolution failure thing we had happen)

visual adder
#

has action bar been fixed?

#

Noticed that it's every single plugin that uses action bars, spamming chat for bedrock

oblique haven
visual adder
#

ah gotcha mk ❤️

#

camo still zzzz

oblique haven
#

or a spigot issue?

#

idk

#

it's still very unclear to me what the issue is boiled down to

visual adder
#

i see a lot of plugins updated to fix action bar rn for 1.19

#

so could be spigot yeah

#

dev build

oblique haven
#

it... what

#

literally

visual adder
#

i dont think action bar to chat issue is geyser if problem is present on lunarclient too.. right?

rich hawk
#

try vanilla

#

lunar breaks chat stuff a lot

visual adder
#

yeah that doesnt help my question

burnt dragon
#

yes it does, lunar is known to break chat stuff all the time

fossil sundial
#

I’m still failing to see how any of this is a velocity issue even remotely
Velocity doesn’t intercept title packets at all
It is capable of sending them and does so if told to by the api
And velocity doesn’t intercept any chat that is sent by the server either

bold wharf
#

I think it's the via issue where their chat registry is basically bork

fossil sundial
#

I’m amazed at how this is supposed to be a velocity issue in any capacity though
Btw if you do do the chat registry properly please also ensure that the default types velocity needs are always present and it not, add them

bold wharf
#

Yea, I've been on and off (probs gonna crash soon), was debating on what to do for legacy in regards to the registry, as I'd prefer to like, use that instead of having to maintain two sets of lookups

fossil sundial
#

Might also have to store the original registry in the upstream handler

#

If that’s going to be exposed to api

bold wharf
#

Yea, I wanted to mostly focus on getting passthrough parsing working, then dealing with that stuff, not 100% how I want some stuff to look, I was mostly just kinda tryna model of the existing stuff, tbqh

#

(and fighting checkstyle, because apparently the darn IJ plugin won't parse the config...)

fossil sundial
#

Also for the paper dev team
The velocity forwarding mode 2:
The server currently asks for forwarding with no data added
Forwarding v2 and newer will write a Byte to it indicating the highest supported forwarding version
Velocity may respond with a v1 forward or a v2 if the byte is 2
Server has to support older versions too

#

Still needs implementing on both sides

#

I kinda flunked that

#

Forwarding mode 2 is just the extra key data at the end

bold wharf
#

Really shoulda just used json in retrospect

fossil sundial
#

I’d rather eat a brick

bold wharf
#

I mean, wait, is the forwarding logic already versioned?

fossil sundial
#

Yes

bold wharf
#

Ah, nvm them

fossil sundial
#

But currently there’s no way to request a version higher than v1

bold wharf
#

But, yea, that sounds okay

fossil sundial
#

So this would add that without breaking backwards compat

#

If no indicator for highest version then always use v1

#

That way via servers will also work

#

Its important that the indicator is just that, an indicator.
Proxy is expected to respond with any version matching or lower than the indicated version

copper cargo
#

As you may have heard already Floodgate doesn't really work well with the force key auth option being true by default and it not being per-player.
So we were thinking about making our own impl of the IdentifiedKey class just to pass these checks and immediately after set the player key back to null.
But before we start working on this I wanted to ask if the current behaviour (it being globlal and enabled by default) is going to remain the same.

bold wharf
#

Stuff is still moving, and so it's too early really to say

frigid rivet
#

Thanks for the response. For now we'll just tell people to disable the setting.

fossil sundial
#

Just don’t have time till mid July

#

To note

#

Nvm

#

Actually I’m dumb

#

This would probably be better suited for the preloginevent

#

Not sure if that’s in the right place

bold wharf
#

key checks are done right before prelogin fires

#

Would need an earlier event or moving into there, but, moving it into there would allow for plugins to see/manipulate that stuff

fossil sundial
visual adder
#

issue when trading with villagers on 1.18 spigot, velocity build 148, not sure if fixed yet or planned, just putting out there : s

frigid rivet
#

Villager trading is very likely not a Velocity issue since it doesn't touch that.

#

More likely, it's a Via end. Make sure you're using their latest build from their CI (I saw Kenny touched it; I don't know if it's fixed).

rich hawk
#

protocolize? @visual adder

visual adder
#

oooh lemme try updating via

#

oh yup my bad it was via

raven rock
copper cargo
#

#736 should do the trick yeah, thanks :)

quasi gale
#

If anything id say it's a good thing via did trigger the problem as it could've gone unnoticed for a whwhile otherwise

bold wharf
#

We already knew it was an issue

#

There was just the expectation that we'd just be able to blindly pass that stuff through without having to care too much in the meantime

#

(But, that registry is basically hard-coded*, many things are relying on the fact that those IDs haven't changed in years) - *At least for the vanilla range

quasi gale
#

I am suprised the client didn't crash without a chat type of chat defined tbh. I'd have expected that after seeing how it deals with missing biomes

bold wharf
#

Yea, mojangs often very inconsistent in how they deal with that stuff

#

I mean, to be fair, biomes where in part a shoe horn, they didn't even have a palette for them

#

had to pester them for a little while over that one too

wary minnow
#

Hello, I have a question about Velocity API
So, i am running a proxy with online mode disabled, If I use event.setResult(PreLoginEvent.PreLoginComponentResult.forceOnlineMode()) on PreLoginEvent, will this set player's UUID to mojang's one or I need to write another code to assign his premium UUID from Mojang API?

fossil sundial
wary minnow
fossil sundial
wary minnow
lilac elbow
#

With .displayName(int i) how do I change the display name? Trying to for an enchant

robust mural
#

Right channel?

maiden hawk
#

Hey, what is this new modern forwarding?

bold wharf
#

it's just a version increment which sends more data in the handshake

maiden hawk
#

oh lol

fossil sundial
# maiden hawk Hey, what is this new modern forwarding?

If you don’t need the key data you don’t need to change anything
otherwise write a 2 as byte into the request buffer and you may get a v2 forwarding message but it may also be v1
V2 just has the key data at the end in the same format encoding as tablist or the server hello packet have

maiden hawk
#

Thanks for the detailed response, but fortunately, I do not need to implement anything. I was just curios

fossil sundial
#

if the player didn’t key auth then you’ll always get v1

opaque escarp
magic forum
#

What advantages does V2 have? Is it worth implementing?

#

I'm talking server side.

fossil sundial
# magic forum I'm talking server side.

may be necessary in the future-
but not required atm since you do get the key in the hello packet anyway
some hacky setups require it in the forwarding data so it is there if its present and requested

uneven wraith
#

hey guys

#

what was the name of this plugin for pterodactyl API request / server start on connect?

ruby spear
#

will there be a announcement when velocity for 1.19 becomes stable enough for production?

torpid panther
#

when i join a backend server which is on 1.19, these <> letters appear in front of all velocity plugin messages, however, it does not happen on servers which run on any older version

fossil sundial
#

Hurrr durr will be fixed once chat registry is implemented on velocity

willow bone
bold wharf
#

Theres nothing really there for us to go off

#

Can't serialize unregistered packet

willow bone
#

I can provide all of our data, we've got profiles and whatever else you need

bold wharf
#

I mean, that's an error on the server itself, more than likely a joyous race condition on the backend server or something

willow bone
#

We thought so too, so we removed Velocity entirely from the equation in our prod server for a few days, not a single failed connection
Reintroduced it and stripped all the Velocity plugins, same deal. Same situation on multiple Java distributions among other attempts

The two things we've spotted consistently during failed connections in the profiling is a cipher function appears to take a full second of CPU time longer during a failed connection (https://i.cwlf.uk/akKYB.png), and the function ProtocolUtils.writeVarInt is called only during a failed connection (https://i.cwlf.uk/mQJlr)

Other than that we'd need some more guidance on what data exactly we should collect, but this issue is absent with Waterfall, and without the proxy; we've attempted stable and snapshot versions of Velocity.

It appears to mostly occur when a new user joins, only on their first connection.

faint dome
#

can velocity run wtih geysermc?

bold wharf
#

Basically, I don't see a justification for re-opening that issue unless you have any form of concrete evidence pointing towards something; We don't have the means nor the capacity to try to diagnose an issue which only occurs within a single specific environment, in which the only error which we can see is an error purely on the backend server due to something trying to send an unregistered packet or something out of phase

#

best guess would be to modify the server and see what that packet is, but, I don't think that theres too much we specifically can offer here

lucid halo
#

Curious; would anyone be interested in Velocity taking on a full SLF4J & Logback stack?
I do have something more or less ready for that at this point, while still keeping the terminal console with JLine & JANSI around.

pseudo cradle
#

does velocity allow you to use minimessage

sour current
#

yes

#

if you're using 3.1.2-SNAPSHOT you won't even need to shade it in yourself

robust mural
#

CommandExecuteEvent

#

This are the latest docs

fast canyon
#

is it a difference in speed and performance between player-info-forwarding-mode = "MODERN" and player-info-forwarding-mode = "LEGACY" ? seems like MODERN v2 broke Bedrock support with Geyser but only to 1.19, works fine to 1.18, unless there is a setting I am missing on 1.19 paper test builds somewhere?

bold wharf
#

broke it how?

#

I mean, it's not a performance thing

#

Like, modern forwarding has to send like an extra message between the server and the proxy and another one back

lucid halo
#

Ideally, not much if at all.
If you're running it off thread, then it shouldn't do anything to performance, assuming, well, your CPU isn't fully used up

#

Memory should be fine for SQL then

#

Unlikely that you'll hit a lot of usage

wary minnow
#

Depends

#

Also It's prefered to async mysql tasks or make a dedicated thread for it

pseudo cradle
#

if u send a message like GetServer in channel BungeeCord will it work? is the plugin message system exactly the same for velocity?

wary minnow
#

Yes

pseudo cradle
wary minnow
#

Since events are async you should be fine

pseudo cradle
#

oh and when is rhe earliest i can send a resource pack?

#

ahh nm ill just use ServerPostConnectEvent

magic forum
#

Why is this file created but never used?

#

It's in VelocityConfiguration.java

#

wtf

lucid halo
#

That's... interesting

#

Shouldn't it be possible to inline that entire chunk to just feed the inputstream from the classloader directly into the parser?

#

Oh... no

#

It seems that file is used to generate the default data because the builder doesn't accept another form

#

So, it's used, only because the code around the builder doesn't allow anything else

fossil sundial
#

Loading the file after that is just to ensure the copy succeeded

pseudo cradle
#

is @Inject from the constructor in the plugin like

#

where is it from???

#

is it com.google.inject

#

or the javax one

bronze yoke
#

google

fallen storm
pseudo cradle
#

how would i make a configuration in a velocity plugin

#

a yaml configuration

#

idk if velocity has any api for that...

wary minnow
#

It clearly shown in Velocity dev docs

pseudo cradle
#

where

#

no it doesn't

#

oh i thought you mean the config one

#

how do I make a yaml config

#

configurate? ok

#

is thee any javadocs

pseudo cradle
#

ty\

pseudo cradle
#

how are you supposed to get a ChannelIdentifier

opaque escarp
lucid halo
#

Velocity but is it running on Logback or Log4J? 🍍

#

Did had to squish out a bug with, uh, ANSI where it shouldn't be

manic obsidian
#

Did whitelist plugin for velocity exists?

how I understand I need to write it here

nova sparrow
#

just make a plug-in with a file of UUIDs

#

add a listener for when players connect and deny connection if they’re not on the list

mild crest
#

or use a permission plugin and block logins based on missing permissions (might be easier)

agile ore
#

After updating Velocity to the latest version all chat messages plugins send to the player have a "<>" prefix, is this a bug?

rich hawk
#

yes

dusk timber
dusk timber
bold wharf
#

If using via, use the latest dev version of it

dusk timber
bold wharf
#

wut

agile ore
lethal garnet
#

Has anyone considered adding more command-line arguments to velocity? specifically --host, --online-mode, etc

#

just thought I'd ask before creating an issue/pr

pseudo cradle
#

i feel like brigadier is missing something

#

how would i get a player as an argument?

opaque escarp
# pseudo cradle how would i get a player as an argument?
LiteralArgumentBuilder.<CommandSource>literal("command")
.executes(cmd -> {
  CommandSource source = cmd.getSource();
  //With casting:
  if(source instanceof Player player){
    String playerName = player.getUsername();
  }
  //With pointers
  String name = cmd.getSource().pointers().get(Identity.NAME).orElse("Console");
  return Command.SINGLE_SUCCESS;
}).then(RequiredArgumentBuilder.<CommandSource, String>argument("player", StringArgumentType.word())
.suggests((ctx, builder) -> {
  proxy.getAllPlayers().forEach(player -> builder.suggest(player.getUsername());
return builder.buildFuture();
})
.executes(cmd -> {
  //Player from an argument
  String playerName = StringArgumentType.argument("player", cmd);
  Player player = proxy.getPlayer(playerName);
})
pseudo cradle
#

tysm

craggy pecan
#

That's for getting the player that executed the command. If you meant getting <player> from /command <player>, you need to add a RequiredArgument node to the tree

pseudo cradle
#

how many wikis are there

craggy pecan
#

For now, they mostly host the same contents

pseudo cradle
#

okay ty

valid gazelle
#

oh that doc is sooo much better than i remember it being

lethal garnet
opaque escarp
#

Unless it is used for a bungeecord plugin or in older versions of bukkit, I would personally prefer to use brigadier. In some cases I even access nms only to use brigadier 😅

lethal garnet
#

its all a matter of preference ig ¯_(ツ)_/¯

pseudo cradle
#

whatever makes the plugin run

rugged pine
#

can anybody tell how if there's a way to either obtain a list of all registered Commands on the server or get a registered command by name?

burnt dragon
#

no, velocity doesn't store that info

#

what's the xy?

#

unless you mean proxy commands

rugged pine
#

uh yep i mean proxy commands

burnt dragon
#

there's a getAliases method on the command manager

#

but that only tells you if a command is registered

rugged pine
#

mhm i saw that one.. thanks thou :D