#velocity-dev
164 messages · Page 2 of 1
You can still do that but it has to be open-source
Well, i won't public my api, and bungee improvements
So i guess, backport again to the other thanks too.
Anyone used the Velocity API to launch containerised servers on-demand?
I'm hoping to use Velocity as a launch proxy, and if the server isn't running, launch it (moving players from void lobby to their requested server once it reports online)
Hi I'm developing a ban plugin, and I'm trying to check if the player is banned, and everything works grate, but when I deny the connection, it doesn't send any kick message, it just stays loading:
I check this in with the PreLoginEvent.
This is the code I use to deny the connection, but its not working:
e.setResult( PreLoginEvent.PreLoginComponentResult.denied( announcements.banPlayerKickMessage( ban ) ) );
any solution here?
moment i am stupid what does he want from me
Plugin ids should be lowercase
ok
thanks
This is my first velocity plugin
and puhh
hopefully i got all wright
is there no chatcolour?
Velocity uses Kyori Adventure
what
Hi, I raised the issue yesterday but can someone fix the Velocity website to not point to a vulnerable version?
you can skip the Getting Started step as it's build in Velocity!
Quick question, is there a way to add permissions like you can in the plugin.yml in Paper plugins? That LuckPerms for example is able to auto-complete them?
i get this error but i havent even imported the plugin for the api in my plugin
ok fixed that
Did something about Velocity build break recently? I'm trying to build the code from git (as I've done many times) and it's crashing on me, with a spotbugs error: https://pastebin.com/V6q7cJAn
Update: I removed spotbugs from the build and I got a working jar, but this still perhaps should be looked into?
woah i never knew i am a dev
what does he wants to say me
Send /velocity dump url and your build file
either your Pom.xml or build.gradle
/velocity dump
console*
That but without the slash
where does he dump it?
in a file because the console isnt showing anything
idk id it is just cloudnet
Type that command
pom.xml by @vestal nymph: https://paste.gg/1404664922ef4192bc2345a25f563c4b
Don’t use 4.0.0
Use 3.1.1
ok
after 300 maven errors i got it
Sometimes i want to throw maven against a wall
Just print out the entire source code of maven, then tie it to a rock
3.1.1 didnt work for me
???
how do I build a simple text component?
for waterfall I did new TextComponent("text") but I can't figure out how to do it in velocity
Component.text("text")
When exactly is the TabCompleteEvent being fired? I'm debugging my listener right now because it seems like The TabComplete isn't being fired at all.. Docs are saying "This event is fired after a tab complete response is sent by the remote server" so technically if I'm tab completing a Player Name on the Server the Event should be fired right?
pretty sure that only works for 1.12.2 and older
That would explain a lot hhaha.. So Is it even possible to Interfere with the TabComplete in any version above 1.12.2?
Could some one help me out with this? plzz
can you show what this method is returning: "announcements.banPlayerKickMessage( ban )"
How can I get the SQLite driver running on Velocity?
You will need to shade it (there are plugins for both Maven and Gradle)
Hi, is it required to shade the velocity API or can I just set it to compileOnly?
You don't have to shade it
alright thanks
You can't safely shade the SQLite driver in a public plugin, because it is impossible to relocate JNI libraries
use h2 (Well, take a look at)
iirc it's faster than sqlite and is generally much more stable
hey is the velocity to 1.18?
yes
Could I ask you for a link?
I'm trying to write a plugin for velocity and I'm getting the following error
Did not find a valid velocity-plugin.json
can't find anything on google
or on the actual documentation
I'm using Velocity 3.1.1
how would i use color here in this message? https://github.com/PaperMC/Velocity/blob/292b2f96ab8d65a9982dd787c626d1060e5472be/proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java#L533
would it be Component.text("Proxy shutting down").color(TextColor.color(123456));?
https://docs.adventure.kyori.net/
The Adventure docs are currently a work in progress and supplement the Javadocs. Some areas may have limited coverage or may not be entirely up to date.
thanks 🙂
I got it working thanks
very pog
Is there a way to depend on maven dependencies without shading? I try to avoid making mega-jars
Yes slimjar or make your own (or just shade :p)
where would i find a list of TextColor.color codes then? im a noob at this
i think the docs made me more confused than it should of 😄
ah
so would Component.text("Example text here").color(NamedTextColor.GREEN)); work for example?
Yes
@fossil sundial Btw, do you have specification/example implementation of that networking thing you talked before?
Hi, can I send a message plugin to velocity so that it will transfer the player from server to server?
I am trying to migrate to Velocity 3.0.0 and have this problem
If I change the data type to Component it will complain that it cannot import String to Component from Config
it only has midimessage
what?
javax.sound.midi
yes so add the library
learn java first then
the legacy serialiser has methods to parse the legacy formatted strings into Components
thk
Where can I find them and how do I use these?
is there a way to get a players inventory on the proxy? Im guessing not
No.
Yeah figured as much. Can you talk with a mod on a server?
Huh?
Like have your plug-in send and receive data from say a fabric mod on a server
Yeah, you can use plugin messages.
A Spigot plugin will also work.
I don't know the best place for documentation on either.
Oh perfect. Is there any examples of this being used? If not I’m sure I can figure it out
Oh this is very cool. Is there similar things for like player health and xp and other info? If not no worries
Oh it has custom packet support liiiit
Hi, how do I get a Player that executes a command?
CommandExecuteEvent
and you can do it inside the command code:?
Invocation#sender
I don't see it
That depends on the type of command you create, if you are using SimpleCommand or RawCommand see https://jd.velocitypowered.com/3.0.0/com/velocitypowered/api/command/CommandInvocation.html
I don't understand what should I use so that I can get a player executing a command
https://jd.velocitypowered.com/3.0.0/com/velocitypowered/api/command/CommandInvocation.html#source() check instanceof Player and then you can cast to player if true
the api-provided possible senders are ConsoleCommandSource and Player
if its neither it was likely added by a plugin
if its a brigadier command you already have the source provided
another question for some reason I don't have a command written in velocity on my servers associated with it (it only works in the velocity console)
Yes. The commands are only available to players connected through the proxy or to the proxy console. If you need to trigger a command from a server on the proxy you should look into plugin messaging (to make a message that triggers it on the proxy from the server) which requires a plugin on the server.

How can you send plug-in messages from a server to the proxy? I figured out the other way round
Thanks 👌
Does the API allow to listen for packets from players? I want to analyse and possibly block some packets from players on a proxy level
you can maybe do some reflections
How do I issue permissions to a player?
Hey, a question, which event is called first PlayerChooseInitialServerEvent or LoginEvent.
Login
thx
Is there a plugin that will make velocity show the names and player counts of each server instead of the ~12 players normally shown in the multiplayer server list (which velocity seems to never give a listing of)?
Is velocity thread safe ?
depends on what you're doing
calls like getting all players, kicking player, changing player's server
I believe all of this is thread safe
yes
ok thx
please someone correct me if I'm wrong
Unless you’re blocking an event you’re good.
no, i won't block, thx
tho no guarantees that properties of the players stay the same while you’re executing stuff
do keep in mind that the connection request is also a type of event callback; but you’re likely only hurting yourself by blocking somewhere there
and with the scheduler ?
but shouldn't datas be accessed by one thread at a time ?
the proxy itself is designed to be reasonably safe
as for anything else, it's 100% on you to ensure that your own logic is thread safe, etc
oh ok
Velocity/proxy updates its available commands when I run "https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Player.html#updateCommands()" on the Paper/server. Is there an easy way to do this directly on the proxy knowing that it wont fetch the available commands for the Paper/server that the player may be connected to?
declaration: package: org.bukkit.entity, interface: Player
Iirc issuing updateCommands from the backend server also rebuilds the command tree in the proxy, so the proxy commands also get updated
There's no current way (other than switching servers or reconnecting). You can also send a message requesting the backend to send an update
I'm not sure about the safety aspect of this, Five probs knows more about this
the proxy would need to store every players command structure from the server in order to recalc it on its side
You generally shouldnt update that at all. The client only expects it once but velocity tolerates it nonetheless
I'm 90% sure that's not true and that the vanilla server resends the list to a player when they're opped/deopped
I’d love to be proven wrong; if you know more do please correct me
it does
otherwise when you're op'd you'd need to relog to see the commands you're able to use now
Yea, I do understand that, however, I’m not connecting the user to any backend server, and just wish to display and update the players available commands on the proxy accordingly, but understand it is not possible atm
basically, it's doable
Just, you'd need to hook in somewhere and store the command structure from the client
to update it, you'd then need to pipe it through the logic in velocity which adds its commands
which, for the sole purpose of potentially needing to resend commands what is often once in a blue moon, is pretty bleh
if this is for personal use, can just basically get a plugin setup to send a message over to the backend to resend the structure def
Can you give log messages a color like you can do on Spigot and BungeeCord?
I think this was discussed, and Tux essentially said the same: it isn't worth it to cache the entire command tree from the backend
Does Velocity have some sort of ServerSwitchEvent?
update: realized ServerConnectedEvent contains a previousServer field
that was fast
How would you apply a certain permission to a player?
I see hasPermission and getPermissionValue within the PermissionSubject class, but I cannot find how to update permissions for a player.
Basically you don’t do that within a non-permissions-plugin
The cleanest way to do it anyway would be to depend on your permission plugin like LuckPerms
Yeah, I ended up making my own permission handling class which hooks into one of my other plugins
Hey,
I got the following error: https://pastebin.com/pvhMVwQT
This is the source code: https://github.com/Katzen48/minecraft-ingress
I don't quite understand, where that error comes from.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Could you please open a ticket on https://github.com/LanternPowered/Lmbda?
i'm literally in love with velocity and its api
same
hi guys
i wanna make a multi-platform plugin
and i have plans to support velocity
i never made a velocity plugin before
from docs
it says there is no plugin.yml at all
and from some open source plugins
99% of plugin code is in 1 class
im wondering why
does velocity not load other classes or something
what
see this
the whole plugin in 1 class
well since its a multi-platform its not "the whole plugin" but still confusing
i see subclasses instead of just new classes
this is a very unique way of doing it
https://github.com/CoreyShupe/MinecraftProxyLoadBalancer something like this is multi platform but probably more understandable
@Plugin(
id = "velocity-load-balancer",
name = "VelocityLoadBalancer",
authors = {"Corey Shupe (FiXed)"},
url = "https://github.com/CoreyShupe/VelocityLoadBalancer",
description = "Simple load balancer plugin for velocity networks.",
version = "0.0.1"
)
public class VelocityLoadBalancerPlugin {``` the main part which replaces the plugin.yml is this
the @Plugin dec makes it auto-generate a json file in the root
you should never write your own json file
interesting
thx for letting me know about that
im already in this wiki lol
It's a good one 😉
goes over everything you'll need to know
for everything else you can dig into the javadocs
(don't know where they're hosted though)
thx anyways
👍 sure thing
can we see how you declared the event listener
and the imports
Glad I could help 🙂
so since i do it with an annotation
@Plugin
processResources {
from(sourceSets.main.resources.srcDirs) {
filter ReplaceTokens, tokens: [version: version]
}
}```
will this work
this should replace @version@ with the version
WARNING VELOCITY NOOB
Minecraft Server Target Version: 1.18
Java Version: 17
Information Source: https://docs.velocitypowered.com/en/latest/developers/command-api.html
ERROR: NoSuchMethodError: 'void CommandManager.register(Command, String[])'
log: https://pastebin.com/kNDFZEvu
pom.xml: https://pastebin.com/0fubjyYe
VelocityTest.java (Main Class): https://pastebin.com/imbF4fLm
** CommandTest.java (Test Command class):** https://pastebin.com/vvT9j9Yc
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
You're building against api 1.0.0 but running on a 3.1.1 proxy
When setting the Dependency version to: 3.1.0 I get : Cannot resolve method 'register(com.vatoka.basic.CommandTest, java.lang.String)' (VelocityTest.java - line 13) as an intellij error along with Cannot resolve method 'of' in 'TextComponent (CommandTest.java - line 13) and Method does not override method from its superclass (CommandTest.java - line 11)
cos those methods no longer exist
Are there updated docs?
Yes, they're linked somewhere but I don't really track velocity
Ok, thanks ill look for them
tho I am having trouble finding the new methods...
Nevermind... I figured it out. The docs are very outdated most of the methods used in the examples there no longer exist.
hmm thanks. The docs I was looking at were still on version 1.0.0
How do I check the server the player will be sent to when he gets kicked from a server? I can't find a option for that in the KickedFromServerEvent
(Ping me)
ah set the result to RedirectPlayer class I guess
No one responded to this..
It looks like a plugin doesnt even spectify the version
Is that allowed in velocity?
how can i send a colored message that also support &
thx
Yes, however it is discouraged
That doesn’t fire on commands. If you need to use tab-complete with commands please look into BrigadierCommands or the simple velocity commands
i would like to get the event
when client asks for the tab complete
/paper <version>
as soon as i click space after paper
the event should be fired
but this doesn't happen
if this isn't possible tell me i can use packets from protocolize
what's your end goal?
That doesn’t fire because it’s a command that belongs to the brigadier structure downstream. Interjecting there would be hacky at best which is why we don’t support it
remove some players
so simply i will have to go look into packets, right?
sounds like you're trying to do stuff proxy-level which should be handled at the backend level in the implementing plugins
im trying to help the user so he doesn't have to install the plugin on every backend
ok well my minecraft crashed, my pc can't handle all of this at the same time
It won’t be that simple because brigadier isn’t exactly a very easy subject.
You’re way better off doing this with a plugin on the backend. But we can’t stop you from attempting it anyway
its a multi-platform
it works on backend
(with packets)
i just know the user will not like installing the plugin on every backend*
If you register a command with the same name on velocity then it won’t ever go through to the backend
That is if I’m not mistaken and the overlap bug doesn’t exist anymore
this isn't how it will work at all
ok ill do it with packets
PlayerAvailableCommandsEvent is fine?
its fired
It’s fired but there is no result
That might have been introduced sometime but the user can still run the command but it won’t complete
running the command is not an issue at all
I forgot this isn’t a transparent event anymore
im sorry but what is a transperent event
how do u test velocity plugins, my game is now crashing bc of ram overload
An event that is fired just to inform plugins of something. There is no result and the code just continues running
oh okay
i am afraid there is no way to modify the tab complete from proxy
im waiting for protocolize support to help me with this
Well
This event works for 1.13+ while the tab complete event works for everything older
im also making a free version of a premium plugin so
wait
if i use 1.12
tab complete event will fire?
ok well, i will stick with packets
does it even support velocity?
Yes. Even better than it supports Bungeecord
I would know seeing as I’m on the Via team

how can I make a plugin that can load on multiple platforms
i.e. velocity, paper, waterfall
i want it to work on all of the above
i know bungeeapi
each of them have different files to say what is the main class
so, you basically have different main classes for each of them, each with their own module, and shade/shadow it all into one jar, basically
1.13+ clients don't even send packets asking for tab completions in most cases. That's why TabCompleteEvent no longer fires for these clients.
Your solution seems like the best option
what would a good multi-module structure look like i dont do that often with maven
right now i just have a couple classes thrown into one
obviously this isnt perfect
ignore how theres only one class im using this as a learning tool
also how the hell do configs work in velocity it hurts my brain 
we arent in kansas anymore
Not necessarily
no idea but i use a liv
it is
Sponge configurate
In what way?
so u dont accidently use bukkit stuff in velocity classes
so it break on velocity
That’s not necessary it just protects you from your own stupidity
As long as you don’t have any static fields in those classes you’re good
if our ide is stupid
i tried making a plugin this way
and i broke it
ik its my own mistake
but i still dont like it
btw since velocity support is active does anyone know how to use protocolize
its been 11 hours no one responded in their discord
i need help
Can’t really help you with that
Don’t know anything about it and plus I don’t like the concept
I’m still firm on believing packet manipulation is best done downstream
looks like i need to find another packet lib
my game crashed after im done with testing, my pc is 85% ram without minecraft
this is painful when debugging
?
You’re developing a plugin if I’m not mistaken? Velocity provides the sponge configurate library including the most common drivers like hocon
Is there a guide or an example for using that library
We don’t have one but sponge has one in their how to create a sponge plugin wiki
It doesn't make the most sense to me since it uses a lot of Sponge classes that arent available, is there an example in Velocity?
Check the wiki of Configurate on GH
with PlayerChatEvent, if i return an EventTask, will it wait for the task to finish excuting before it reads isCancelled
(im asking if i can cancel the event asynchronously)
wait
com.velocitypowered.api.plugin.InvalidPluginException: Did not find a valid velocity-plugin.json
heh
Why?
Either you didn't run the annotation processor, or you excluded the result from your build somehow
are you using maven or gradle?
gradle (kotlin)
plugins {
id("com.github.johnrengelman.shadow") version "7.1.1"
kotlin("jvm") version "1.6.10"
}
repositories {
maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") }
mavenCentral()
}
dependencies {
compileOnly("com.velocitypowered:velocity-api:3.0.1")
annotationProcessor("com.velocitypowered:velocity-api:3.0.1")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.1")
implementation("net.dv8tion:JDA:5.0.0-alpha.2")
}
you've got to do something special for kotlin, what that is I'm honestly not sure though
pretty sure you've got to use https://kotlinlang.org/docs/kapt.html
although tbqh I'm not 100% sure, I haven't used kotlin
Yes
Is Velocity updating to 2.17.0 on Log4J, it seems like it shouldn’t affect servers out of the box, but I’m also not certain
Ah there we go lol
Howdy - currently making a player balancing system for hubs but ehhh, I appear to have done a yikes. If one of the servers cached as a hub server is offline, velocity basically bricks itself and crashes - is there any way to check if a server is online before a player connects without putting masses of stress on the proxy? TIA!
Something like a server start event / server quit event that I've missed maybe?
ping the server and wait for the response
Will that not be quite intensive on high player counts moving around the network though?
As in if a server closes and like 300 players move from one server to another, will that not kill it a bit?
Is there like a built in way that I can check if a server is online? Something like a #isOnline method?
This is driving me insane 🤣
make it ping every x time and cache if it’s online or not
The proxy can only do the same thing if you think about it; it’s not ideal sadly
How do you listen to packets directly on velocity?
Is there an existing api for it?
No.
Generally if you're trying to listen for packets on the proxy you should consider if your application is better purposed for the backend servers.
But there are APIs such as Protocolize that allow you to work with packets, though it's generally frowned upon.
Hey, is there a way to disable this try section.
I'm trying to develop a hub spreader plugin, but it's forcing me to hub1 now
No; but you can just listen to the ChooseInitialServerEvent to modify the behavior
Alrighty, thanks
Next question,
Is there a way to check if the player specifically has a permission node, without hooking into a permission plugin like LuckPerms?
hasPermission ?
That'll include * permission
well, that depends on the permission plugin
Well, we use luckperms
I wnat to use the plugin on every proxy, no matter what permission plugin
whether or not a star node is resolved depends on your permission plugin
Hm okay
but the hasPermission check will delegate to your permissions plugin (if it's doing stuff correctly)
That’s by design of the permission plugin.
Velocity doesn’t interfere here
I'm trying to migrate a plugin that used plugin message channels from bungeecord to velocity.
I've found that the implementation of the message channels differs between the two. For server related queries bungeecord writes the requested subchannel name to the buffer before checking if the server exist and adding the rest whereas velocity does not return anything if a non-matching server is not found.
https://github.com/SpigotMC/BungeeCord/blob/master/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java#L414-L428
https://github.com/PaperMC/Velocity/blob/dev/3.0.0/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/BungeeCordMessageResponder.java#L103-L108
I had used this to detect if a server had been removed when polling for "PlayerCount" to remove a clickable NPC in the lobby. Should the velocity implementation work in the same way as bungeecord? Is there a native way to check for this? or should I search for a solution outside of plugin messaging channels. Cheers.
It should work the same. I’m going to take a look at it later and get back to you
What event is called when some of my spigot servers restarts? @fossil sundial
I don't see how Velocity would have context that a server restarted.
KickedFromServerEvent
You can set a server to redirect the player too
How would I be setting the server?
You set the result as KickedFromServerEvent.RedirectPlayer
Basically setResult(KickedFromServerEvent.RedirectPlayer.create(server));
Thanks for the response - this is the conclusion I came to! I've decided that I'll probably use some sort of redis cache to communicate between the proxy and spigot server so that I can keep information updated and balance accordingly. Appreciate the help!
Does speed support multithreading?
velocity*
now you too can calculate displacement over time async
There is no main thread context in velocity and the rest uses a thread pool; so having multiple cores available is best for velocity
As for events; they roll as their own thread
They only differ in if they block or not
How can i get a resource from jar
Im velocity
Without messing with other plugins that have same resource file
you get the classloader of the jar and then you can get a stream or something from the classloader to a file in the jar
No idea where to get the class loader
don't mention
Oh sorry
getClassLoader on a Class object iirc
I mean, velocity is nothing special here, this is something easily googleable as it's a 'basic' java thing
Do i get class loader on main instance?
of your plugin? sure
Sorry i didn't know its java thing
I dont interact with class loading lol
Hey, I need some clarification. If I used EventTask.async() on my PreLogin listener, would PostLogin wait for it to finish or no? Because I have my PreLogin listener grab data then have it put in a hash map. The PostLogin listener would then get the data from the hash map. But how I have it currently, sometimes the data wouldn't be present for PostLogin to access.
How is it PostLogin supposed to wait?
The answer is no but I have a proper solution for you.
Fire a CompleteableFuture with the get-code and the value you want as return from the PreLogin, put that future in the map and then on PostLogin/Login block the listener with the same future (get it from the map) using .complete() on that future
It’ll wait for the task in the future to complete if it hasn’t already completed and then return the data
Ah, tysm!
If you aren’t adept with using Futures feel free to ask
I'll mess around with it in my free time
Hi, does velocity have any main thread? If not, will blocking on a event not marked async slow down the proxy?
Using debugger I have noticed that the original "main" thread is used for console input, tho that doesn't mean there isn't any other main thread.
It will not slow down the proxy, but it will block the event (as implied)
That only happens on ResultedEvents, the other events aren’t waited for (for obvious reasons)
Also if you wait too long on some events then the client or server will time out
OK, so what if another one of the same type fires while the first is still blocked? Will it just run on another thread, or wait until the one before is done?
If will just run. Events and everything else uses a thread pool and there isn’t a hard limit to the amount of things running at once (except for processing power and memory)
Does this also include commands?
Yes.
Great! Also will the command event on bukkit run even when a velocity command was executed? And vice-versa?
No; if you register a command on velocity it will not be forwarded to the server
You can make a plugin do that though
Vice-versa- velocity doesn’t handle command that aren’t registered, those are just passed through
So when I would want a player to not execute any command, I would need to block the event both on velocity and bukkit (Paper)?
Don’t misunderstand; There is no event for that on Velocity
If you want to block/remove a proxy-provided command you either need to deny the permission to use it or you have to overwrite or unregister the commands
But the paper part is true
if there isn't an event for it, what does this do?
https://jd.velocitypowered.com/3.0.0/com/velocitypowered/api/event/command/CommandExecuteEvent.html
Oof
It may do what you want; though I haven’t ever used it before so I’m not aware
Tho
Even if that event does what you want
It won’t stop commands from completing for the user
To put this in context, I am creating an authentication plugin, which should be ideally placed only on Velocity
I am aware that I cannot block events like move etc.
But I would love to at least block the commands, otherwise I would need to add a counterpart for Bukkit.
That’s possible; but blocking player from tab-completing commands will be a lot harder
Mainly because that’s not supported in the api
oof
couldn't I make use of this?
Since that isn’t a resulted event I need to check if the output of that is ignored
Well that wouldn't really match this description:
Allows plugins to modify the packet indicating commands available on the server to a Minecraft 1.13+ client.
Would you look at that; this has to be the one exception to the rule of blocking non-resulted events
Yea that event is going on the list to be a bit more proper for polymer

Well, is a better documentation planned?
Because the one on https://velocitypowered.com/wiki/developers/
Is pretty... brief.
Well I do agree
But at the same time the team is lacking the time for more
Plus I have a mountain of features waiting to be implemented
Which I’ll be crunching away at over after Christmas
I completely understand that, but it really sucks for new users. I needed to go through 3 velocity plugin source codes to at least understand how to do some thingies.
thank god I am using ACF so I do not need to mess much with commands
You’re not alone with that
The only people that I haven’t seen complain are the people coming from sponge
Well afaik the Sponge docs aren't really great either, so it makes sense.
The api concepts are similar;
I guess, I've never developed thingies with Sponge.
And we do use a lot of sponge libraries
Including configurate and quite a few other things
Oh configuration api
I've just imported external YAML lib
To make configurations
:)
Yea that works; but you should shade and relocate that ideally
I should, but considering my plugin will be probably the only next to LP running on velocity
I do not really care
But maybe when I'm done with this, I will take a look on Velocity and try to contribute somehow. I see you guys really need help.
@fossil sundial Also, are there some large networks that actually use Velocity? If yes, how much can a single proxy handle? (assuming unlimited cores, RAM and bandwidth)
From my experience the limit on Bungee was about 500-1000 players
So I hope it's better on Velocity
Java does have a point of diminishing return with a single instance; that said I had a scenario in which I ended up pushing a single instance to about 1800 players
So, clustering is still a must have for large networks?
No idea where the absolute limit is
For availability alone yes;
I mean it all depends on HW, in ideal world more cores would mean more performance
But I am afraid this ain't the case
But velocity still does provide a good amount of resource usage reduction over bungeecord
But is it able to utilize very powerful machines tho?
Depends on how you define powerful, the more cores you have and the faster the memory speed the better
But even that somewhere has a limit
Well would it be able to fully utilize a 64core EPYC CPU?
or it will reach it's architectural limits by then?
The 1800 player benchmark was achieved on a 2017 32-core Xeon with 3200mhz ECC ram
You can probably push it a lot more with that kind of processing power though
Did those even exist in 2017?
Wasn't it 16c/32t?
Can you get a players coordinates from a velocity plug-in?
No, velocity doesnt track that data
no, it was a 64-core cpu but half disabled, those were sold as such in the scaleable-phi lineup
the phi-lineup scaleable processors at that time only had 2400mhz memory, this chip was "special" for having a different controller
theyre fom Q4'16
if I end up having access to that again Ill get the serial number
Is there a way to deny login and also prevent the particular connection from being logged?
With a custom log filter that should be possible
But I don’t think there is another reasonably supported way
Do you know the exact model?
I would like to see how it compares to a modern EPYC cpu
Or was it an Engineering Sample?
@fossil sundial Oh god, it looks like ACF is only for Velocity 1.x, do you know any other solid command api?
Velocity has brigadier

But I have to confess I still dont have a clear grasp of how to use that myself
Well, from my today first use impression, it looks like Velocity is very chaotic
And I might consider using Waterfall
:(
I may be one of the few velocity developers but that doesnt mean I have grasp of the entire project
im not sure if cloud works with velocity 3, you could try that
Hmm, I was recommended https://github.com/Revxrsal/Lamp this on ACF discord
all I can say is that updating from 1.x to 3.x requires about two modifications at most
Really? I will fork ACF and attempt to repair it
I looked at just now and it seems to me like it is already updated for 3.x
It ain't
it fucks up on load because it uses wrong Component api packages
Here is their pom
https://github.com/Revxrsal/Lamp/blob/master/velocity/build.gradle compileOnly 'com.velocitypowered:velocity-api:3.0.0'
Yh Lamp is updated to 3.0
But ACF isn't which would suck
I will try to update it
ah
Ill run my update script on it to see if that produces something usable
¯_(ツ)_/¯
I will do it manually, thanks for the effort!
So far it looks like only the Component api is broken
a lot
But I hope I will figure it out
just replaced with kyori/adventure
also simplecommand changed a bit
not sure if thats applicable still
ACFVelocityUtil, VelocityCommandCompletions are broken
And others probably too
But I didn't check them, cause I am currently fixing completions
Unfortunately there were more fundamental changes than references
Specially the Chat Color
which is RGB in new
But the api used standard §x
But I fixed that
@fossil sundial It's far worse than I thought
3/4 classes are broken
And it has literally no documentation
cloud supports velocity 3, if you're looking for a command framework
I know, but it would be nice to use ACF, cause I am already used to it
yeah that's understandable, although they're really not super different, especially if you use cloud annotations
So Components fixed, Command api remaining
Aand done
@fossil sundial So it looks like 3 people already did the same thing as me lol
Well there goes 4th PR for velocity update
@fossil sundial BTW, commands executed which do not match any velocity command appear in the event too
And you can cancel them.
Also that command list thingy is completely useless
Hello, is there any full documentation for velocity 3.1.1? I need it to develop plugins for my server. Thank you!
Unfortunately this is the only documentation available, however it is pretty brief.
https://velocitypowered.com/wiki/developers/creating-your-first-plugin/
But javadocs will help you: https://jd.velocitypowered.com/3.0.0/index.html
Well...
Maybe you can say me, how can I send player to another server...
This is only for velocity 1.x.x https://velocitypowered.com/wiki/developers/porting-from-velocity-1/
No idea
But I need it to
Lemme check
Take a look at this
Having a bit of a weird issue, I'm listening to the KickedFromServerEvent so that I can catch any players that get kicked from a server and balance them in the best hub accordingly. Issue is, for some reason, it doesn't actually connect them to the hub. All the logic processes, and the code listening for initial player join hub balancing also balances them correctly, but the KickedFromServerEvent just kicks the player from the proxy when I #createConnectionRequest(server). Anything I've missed? Thanks!
are you using the redirect player result?
Usually use player#createConnectionRequest(server)#fireAndForget, but you're also able to set the server in some specific events, such as the PlayerChooseInitialServerEvent (#setInitialServer).
No, I'm just listening to the KickedFromServerEvent and then creating a connection request to the hub that is deemed ideal.
the event accepts a result that tells velocity where to send the player
you should be using that
ehh, quick question:
Just HOW breaking is Velocity 1.1.10 -> 3.1?
I've been very inactive over the last few months
I'm asking because of my plugin (shameless self-advert while I'm at it https://github.com/itsTyrion/AntiVPN)
I just added Waterfall/Bungee support but realized it's still on Velocity 1.1
ty
Just out of interest, would you recommend using iphub for an AntiVPN? I know of a few servers that do but I've never been certain quite how reliable / up to date it is. Have you had a good experience?
Can't comment on that.
I barely tested it but it seems decent on the first glance.
I'd heavily prefer to still have iplegit.com around (I actually planned to combine both!), but, very unfortunately, they shut down without a trace at some point in the last few months :/
But the fact that the API docs state to NOT cache for more than 24h, or 1h if it's really critical, seems to indicate that they're updating regularly
Thank you!
Dang, NOTHING red, just a recompile
Very, Components and Commands will probably break completely, tho Components only need reimport.
I mean I already used the new components in all my Velocity plugins as soon as 1.1.x had them.
(And in this plug-in, I only use the serializer and 2/3 events)
only had to recompile
So did you upgrade without an issue?
yup
well I don't use any commands, only the LegacyComponentSerializer, and 3 events ((Pre)Login and ProxyPing) in this plugin
Well then you should be fine, but if I were you I would check whether it really works
I think I should make a forum post.
6 DLs is not a whole lot
actually.. there's probably already a WAY better plugin out there sooo
it looks like permission checks cannot be done on some packets sent before join (returns false when true)
is there a way to bypass this
Can you elaborate please?
let me commit my changes and tell u wait
using protocolize listening to that packet
permission check return false
goes badly
player.hasPermission("plhide.blacklist-mode")
Well first of all direct interaction with packets is unsupported for this exact reason
Secondly
i had to cancel the packet as this is a security problem
GameProfileRequestEvent has to be completed for the PermissionsSetupEvent to fire
if player is not active, event not sent
PermissionsSetupEvent luckperms listen for that?
ok nice works
Yes, LuckPerms listens for that and registers itself. But the event is not fired before the player has a UUID assigned yet
it doesn’t make sense otherwise
ok time to let my friend test the plugin
I can already tell you that this will only stop low-skill players
wdym low-skill
the point of this plugin is to hide information about your server
yeah
Well, proxies are terrible at being hidden
uhh it doesn't currently hide the proxy
my plugin would do all it can to make players unable to find plugins
only way left would be guessing
by the way the docs for isActive is not clear, does it check if player is online on a server?
that’s for the channel, tho you really shouldn’t be touching that
i trust that boolean for checking if perms are loaded
hope it goes fine
if this check goes wrong then exploit is made
Since the event should be fired before the player is in the PLAY protocol stage that shouldn’t be an issue
though you are treading in unsupported territory so I can’t tell you
Do i need a check for paper too?
Listening to COMMANDS and TAB_COMPLETE with protocolib
With no checks before perms
Is it fine for paper/spigot
honestly, have you considered just negating the permission for that command and changing the spigot.yml setting to not send command namespaces?
spigot.yml's option is dumb
also no, i do more than just removing plugin:name
good its working
@fossil sundial Hey, how would I make the / completion commands disappear
Brigadier has a predicate requirement function. If that isn’t matched it will not display
That was broken in the past but is now working correctly
So it won't appear even when I type / ?
Will the command just not be there?
they’re not sent in the available commands if the sender predicate you can set isn’t met; that’s essentially it
like try /velocity dump for example
without permissions vs with
To put this in context, I want the commands to not appear when player doesn't have permission to execute them. It works like this normally on bukkit
yes, but the velocity still appears
then you just have to supply the permission as predicate when registering the command, and not check it when the command is executed
oof ok
That’s how brigadier works on vanilla too
@fossil sundial This seems to work, however the root command is still visible.
how would I make that one dissapear?
I am using the List<String> suggest function
And returning an empty list when the sender doesn't have permission
which should I use then?
did you set a predicate on the root?
Considering I do not know how, probably not.
don't mention
oof, sorry, I have it turned on by default
anyway, any tip on how to do that?
@fossil sundial This is kinda awkward, but how do I set a predicate on root?
Is @Subscribe(order = PostOrder.EARLY) the eqivalent to @EventHandler(priority = EventPriority.HIGHEST) ?
nope, EARLY is equivalent to LOWEST,
HIGHEST is equivalent to LATEST
Hmm alright, thanks!
There is no latest so I'm guessing late.
yup, sorry
No problem, you helped good enough where I could put the last pieces together, thanks so much
Where would I find that? Here it says that it supports 1.1
https://github.com/Incendo/cloud/tree/master/cloud-minecraft
that's what it says yeh, but it works fine on 3
does it also block players from viewing commands when they do not have permission to run them?
yes
Great
assuming you set the permission on the command
good choice :p
Of course, is it any fundamentally different to ACF?
i mean, the fundamentals are very similar but there are a lot of differences, some big some small
Okay, gonna read the docs, I hope I won't have much work to migrate from ACF, fortunately I only have like 15 commands.
they have a discord as well if you need support
Perfect, gonna join it, thanks for the info!
Is there a easy way to send a Plugin message?
cloud commandframework is the future!
Regardless, is there anything similiar to getResource or getResourceAsStream for Velocity?
Isn't getResourceAsStream just part of a class in general?
Well, getResourceAsStream is from Bungeecord, getResource is from Bukkit, I was wondering if there is somehting like that in Velocity because all I'm trying to do is implement Velocity support for BanManager
they are part of java
can be obtained from a class or classloader
so MyClass.class.getClassloader().getResourceAsStream("etc")
Thanks! Still learning Java somewhat, may of skipped past a few sections 😛
Hey,
Is there a way to check if the player was connecting to the proxy in a KickedFromServerEvent?
did you have a look at the javadocs of that event?
there's a kicked from connect property
Looking at the JavaDocs right now, I don't see any method to get a player class from CommandSource
I would search for this in the Discord, but you know, new Discord thing
instanceof ?
I don't want to check if the CommandSource is a player- wait would that work?
Okay, i think i confused myself.
command source is an interface that is implemented by things that can be the source of a command
one of those things is the Player object
Ah okay, so it's basically similiar to CommandSender like in Bungeecord?
That's what I was generally thinking, but I'm also thinking I'm gonna need to rethink this for a bit.
essentially yes
Where can I find the resetting of a players information when they disconnect/transfer servers? Specifically resource pack, I can only seem to find the handling of them connecting
probs the client does that when it's sent the login packet again
that packet causes the client to reset a good chunk of state
loverfella manage to make it so the client doesn't change resource packs when switching between servers
or is that only possible on lilypad?
that's possibly on lily and the default behavior on bungee/waterfall
it basically involves a lot of extra crud in order to pull of that way, e.g. rewriting the metadata for entities, etc
Bungee doesn't do it either, well not the newer versions at least, so a fork of velocity which does that is very unlikely/would be hard to maintain?
bungee doesn't resend the login packet, it basically just makes it look like a dimension switch
no idea what lilypad does, that doesn't seem to have logic for doing the rewriting stuff
but, no reason they couldn't be doing that sorta magic on their own
In part am just theorising on it based upon past knowledge of how some stuff works
Yeah well its pretty annoying with the way I've got multi instances setup that when switching between zones you load the texture pack twice, once for leaving and once for joining, its a massive problem tbh
if it's what I think it is, velocity has no real control over that
so how do you think loverfella get around the loading screens of it?
as I said, they won't be using the join packet
hmmmm, okay, thanks
there we go https://i.imgur.com/9U7VgUI.png
and no I was not just stuck on this for like a hour.. I was doing other stuff that was easier
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:142) ~[velocity.jar:3.0.1]
at com.velocitypowered.proxy.util.VelocityChannelRegistrar.register(VelocityChannelRegistrar.java:40) ~[velocity.jar:3.0.1]
at de.lacodev.staffcore.StaffCoreLoader.initChannels(StaffCoreLoader.java:50) ~[?:?]
at de.lacodev.staffcore.StaffCoreLoader.initialize(StaffCoreLoader.java:43) ~[?:?]
at de.lacodev.staffcore.StaffCore.onProxyInitialization(StaffCore.java:41) ~[?:?]
at de.lacodev.staffcore.Lmbda$1.execute(Unknown Source) ~[?:?]
at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:47) ~[velocity.jar:3.0.1]
at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:585) ~[velocity.jar:3.0.1]
at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:466) ~[velocity.jar:3.0.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[?:?]
at java.lang.Thread.run(Thread.java:831)```
Could anyone help me? 😅
`ProxyServer#getChannelRegistrar().register(() -> "labymod3:main");`
<@&748618676189528155> ?
Unless the help you want is getting punished. 😄
oh boy free warning
You want register(MinecraftChannelIdentifier.create("labymod3", "main"))
thank you 😄
A small price to pay for a faster response time 🤣 /s dont ban me
Is it possible to dispatch commands to the proxy like Bungeecord?
Looked through the Javadocs a bit where I thought it would be, but I don't see anything like that
Found it. commandManager
Is there anyway to get a command from the commandManager or at least get all the commands registered under the commandManager?
what's the xy?
You can get all of the aliases, and with that you can get the command meta using CommandManager#getCommandMeta(alias)
Ah okay! Thanks!
What would be a similar solution to event.setCancelled(true) for PlayerChatEvent?
This whole ChatResult doesn't say what I should be setting the value as
AHAH!
it's PlayerChatEvent.ChatResult.denied()
I'm so smart.
server = ProxyServer
Oh sorry! I forgot to turn off the ping option.
how do i go about using the plugin messaging channel
i'm trying to port a bungeecord plugin to velocity that fowards a plugin message and saves it
Where is Velocity Javadocs? I want to disable tab completions completely
https://jd.velocitypowered.com/
Velocity Javadocs. Pick a version: Velocity 3.0.0 (latest) · Velocity 1.1.0 (LTS until December 2021) · Velocity 1.0.0 (unsupported) · Velocity Polymer ...
I'm having a problem with sendResourcePackOffer... basically I'm sending this in the ServerPostConnectEvent, but when joining a server, the resourcepack prompt appears for a moment but then it seems the server (or client) forcefully close the prompt during the join process - will delaying this method by a second ensure the player is shown the prompt?
Yes. I consider this a bug because I’m still not entirely sure what causes it or how I can prevent it without arbitrarily delaying it
I am, but, it appears to be not showing for me. But onto more pressing matters, my lovely Velocity plugin doesn't function at all!
Did you try to refresh your dependencies?
Trying now
Nope. And yes, I checked my pom.xml and it's currently set to 3.0.0, it was previously set to 3.0.1
Any 3.x should have it
Also you sure you didn’t change the version of the annotation processor and forgot to update the api?
I’ve made that mistake too many times to count
I don't believe so? I just have Velocity as a simple dependency with the type of jar and javadocs :hmm:
You’re using IJ right?
Intellij?
Yea
Yep
Ok, thanks
You can check the imported dependency under libraries in the tree on the left
If that’s still on the old version you might have to re-import the maven project
Do you have an overlapping dependency on the root module?
Or is a dependency overshadowing your imports?
ok i got it
how do I use config
I looked at the sponge config but it didn't make much sense to me
so
Maybe, but it's not my most crucial problem at the moment.
But generally, I think it's fine since my functions accept null from the function, moreover to the more important thing that is preventing me from testing the plugin..
@Plugin(
id = "banmanager",
name = "BanManager",
version = "7.6.0",
url = "https://banmanagement.com",
description = "A suite of moderation plugins & apps for Minecraft servers",
authors = {
"confuser"
}
)
public class BMVelocityPlugin {
@Getter
private BanManagerPlugin plugin;
@Getter
private VelocityConfig velocityConfig;
private final String[] configs = new String[]{}; // this is filled with stuff u dont need 2 see
// private final Metrics.Factory metricsFactory;
public final ProxyServer server;
@Inject
private Logger logger;
private final File dataDirectory;
@Inject
public BMVelocityPlugin(ProxyServer server, Logger logger, @DataDirectory final Path directory) {
this.server = server;
this.logger = logger;
this.dataDirectory = directory.toFile();
// this.metricsFactory = metricsFactory;
}
@Subscribe
public void onProxyInitialization(ProxyInitializeEvent event) {
onEnable();
}
@Subscribe
public void onProxyShutdown(ProxyShutdownEvent event) {
onDisable();
}
}```
Error: https://paste.gg/p/anonymous/0751adaddd83480e9fdf31f30217a8ff
Velocity uses log4j and you can’t inject a logger type from a library velocity doesn’t have
Well that is unless you provide it appropriately
Epic, thank you
is it possible to bind in ipv4 and ipv6 ?
Velocity does that by default if the v4 and v6 network stack is available with your configuration and JVM/system
Though the minecraft client doesn’t support it without modifications
Odd, I changed my imports to import log4j but it's still giving a similar error: https://paste.gg/p/anonymous/066c11cbcb444a3cba90634e7dbe3986
My apologies, left the ping on
Hi guys Im trying to open a book to a player but it isnt shown here is my code:
this.proxy.getServer().getScheduler().buildTask(this.proxy, () -> {
player.openBook(Book.builder()
.title(Component.text("News"))
.author(Component.text("Pseudow"))
.addPage(Component.text("§c§lNOUVEAUTES: \n§cSoon").asComponent())
.build());
}).delay(1500, TimeUnit.MILLISECONDS).schedule();
It is fired in the PostLoginEvent
afaik you can’t do books on velocity
what? why are they inside so?
From adventure
what?
The text-library velocity uses has that feature, but Velocity doesn’t provide it as a feature. I still think it should be removed from the adventure api proper or moved to a separate module
The reason this isn’t a feature is that it would require velocity to have a full implementation for the player inventory
which isn’t good for performance and isn’t really a good idea for a proxy which doesn’t track states
Heyo, did you get a chance to look in to this?
can i use color codes (like &c) in log messages?
Yes but it's not recommended. You would have to construct the messages as a component and serialize them as legacy text. Just don't bother with colored output.
also, don't put legacy formatting codes inside components
what is the event when player joins the proxy
Pre/PostLoginEvent
can i send messages here?
should be fine in the post login event
pre probably not since the player isn't actually logged in yet
ok thx
getClass().getClassLoader().getResourceAsStream("version-config.json") NPE
i just need to read a resource bruh
Hey, can I use plugin messaging channel on a spigot plugin when the proxy is running on velocity?
You sure your path is correct?
Depends on what you mean by that
Velocity supports both bungeecord:main (and its commands) as well as custom plugin channels (which require a plugin on velocity to function obviously)
The home of Spigot a high performance, no lag customized CraftBukkit Minecraft server API, and BungeeCord, the cloud server proxy.
Thats possible right?
Without any velocity things in my spigot plugin
Yes but I’m currently in dialogue with people from spigotmc about if this is a bug in bungeecord which should be fixed instead
Cool, when I first found the 'feature' in bungeecord I thought it was a tad weird that you got an almost incomplete response but at least it was a response.
Is there any other native way to see if a server exists from a plugin? Or should I look for alternate methods than a velocity plugin channel message?
Bungeecord has the GetServers subchannel command which id much recommend over your approach
GetServer should also work; the response should be empty on that one
Though I’m not quite sure in that case
I will switch out some logic and use one of those then. I can always store the last time I got a PlayerCount response back from a server and ping off a GetServer if its been a long period to check if it still exists (that's if the GetServer responds I'll shout if not). Thanks again for looking in to it.
there's no way to do it automatically, you'll have to use the replacement system matching a url regex
or just construct the component with correct click events in places
hey so
trying to add velocity as a dependency and intellij is angy
this is the correct dependency right?
<dependency>
<groupId>com.velocitypowered</groupId>
<artifactId>velocity-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>```
We are at 3.1.0 currently; you seem to have stumbled upon the old documentation which has long since been abandoned
How do you kick someone from the network programmatically?
(from a paper plugin, not a velocity plugin)
When will velocity support forge 1.13>?
Using the bungee plugin messaging channel; Assuming you didn’t disable it you can use that to kick a player from the proxy with a plugin message.
We didn’t bother reinventing the wheel and this way we stay somewhat compatible to downstream plugins that just need basic proxy functionality.
You can read about that here
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#kickplayer
Discord decided to be dumb and didn’t process that as a reply, see ^
?
Velocity 4.x barely exists right now
Yes
okay 😄
Just wondering is there anyway to send a message between a server and the proxy without using a player? or does velocity have its onw messaging channel i can access within a pluign)
nope, you have to send it through a player
ok
You can just encrypt the message if u don't want them to see, i think
Is it possible, to get the ClassLoader, which loaded the plugin?
It's possible in PaperSpigot and I need this, to use the ServiceLoader
Yes u can getClass().getClassLoader()
is there a way like bungeecord to be able to talk to the proxy via server side. I'm asking as i want to be able to send players cross server on server-side
the bungeecord or bungeecord:main plugin channel is supported on velocity. If you didn’t disable it in the velocity.toml it should behave the exact same way as on bungeecord
Hi I have a question regarding velocity.
Does Velocity natively support the bedrock protocol?
no
okay thanks
You need geyser mc and floodgate
Follow-up to my earlier question - is there a way to test if the BungeeCord plugin channel is available? I basically want it to do a proxy kick if it is, and a server kick if not so I need to know if its available
Yes i know, but i need only bedrock (no java edition bridge)
Ah
Don’t think so, you’d have to send a message and see if you get a response in X seconds, otherwise kick them on the paper server
Most plugins seem to handle this with a config option
Is there any way to not have certain servers included in the /server command?
^
No, basically, you'd need to implement your own /server command with its own stuff and implement your own restrictions, etc
how can you run a velocity server in a dev environment?
If you're running IntelliJ you can just add it as a JAR Application in Run/Debug Configurations
At least, that's how I do it
Any way to handle when a player joins from an outdated client? Velocity poos itself when that happens
Yeah that’s what I ended up doing. Is there a way I can make it automatically use the new build without having to manually move the plug-in jar every time?
Depends on the build system
if you use maven
you can do it the same way as I do
and use the maven jar plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>test/plugins</outputDirectory>
</configuration>
</plugin>
Is there a similar tool for gradle?
i have no idea
probably google something like
gradle specify jar location
or smth like that
Okay lit thank you
np
Outdated as in? Velocity supports 1.7-1.18.1 currently and there are events for legacy handshakes
Does ChatResult#message not support coloring? Because I’m having an issue with it
Sorry I was just being slow
One issue I can't seem to figure out though is litebans not working properly on velocity. Bukkit seems to override any litebans commands, and there is no way to stop it doing that. I'd have presumed that the proxy would handle commands first, but and commands in litebans that are also on a bukkit instance (e.g. /ban) is used as the bukkit command rather than the velocity one. Any ideas? TIA
You misconfigured Litebans then
Normally litebans on bukkit override /ban of bukkit
But the override thing of bukkit has nothing to do with the proxy
Oh my goodness I've had a MASSIVE yikes
Any chance we can just delete these messages and forget about it? 
i already screenshot the messages, these messages will stay forever in our minds
@trim forge did you encounter issue with Litebans on Velocity ? Because it's pretty new and i want to switch to Velocity
No issues apart from ones that I made myself
Hi! I'm trying to create a plugin that removes commands from the / command menu.
Bukkit has an event called PlayerCommandSendEvent to get the list and remove commands from it.
The only thing I can find in the velocity javadocs is TabCompleteEvent, but the description says it's below 1.12.2 and it doesn't exist in the maven dependency (intellij intellisense cannot import it).
Is there an event for it, or is there another way to remove commands from the menu?
Although you should use permissions to remove suggestions, your idea is a really ugly hack
Thanks for your help!
how do you create a listener to listen for messages on a MinecraftChannelIdentifier?
I'm trying to make a method that falls players back to a hub server if a main server goes offline, as for some reason velocity doesn't always do that, but the KickedFromServerEvent isn't catching it - any ideas what's best to do? Thanks
In velocity, is there a way to open inventory menus for players, for example a custom /server command with an inventory to select a server?
Sometimes the player is in a state you cant recover from if the server looses connection; That does happen; But I am not following on your question here
Generally these kinds of things should be handled by the server as inventory and player-state-tracking isnt done by velocity
Ok, thanks for your response!
https://gist.github.com/Xernium/95c9262c5f70b8791557861bbc09be1b see this for an example in both sending and receiving messages
how to delete the log of the initial disconnected connection, it spams that when my anti-bot plugin denied the result from preloginevent
or how to disconnect from preloginevent without any log
Hey, is there a velocity plugin messaging system? I've found this - https://jd.velocitypowered.com/3.0.0/com/velocitypowered/api/proxy/messages/package-summary.html - but not sure how to accessi t from Paper
Our Bungee Messaging plugins which worked on latest BungeeCord aren't working on latest Velocity, so just trying to fix it. Using the channel BungeeCord
In velocity.toml, we've set player-information-forwarding to legacy in order to support it, too.
In the [advanced] section we've also set bungee-plugin-message-channel = true
Maybe we're missing something?
No; that should just be it. What’s your game version?
1.17.1
Not possible without a custom log filter
The channel for connections using 1.13 and above is bungeecord:main
Latest BungeeCord supports BungeeCord but Velocity only supports bungeecord:main?
I'll try swap all chan names to bungeecord:main, tyty
This is md_5 breaking game design again if true
1.13+ requires the namespaced:key format for channels
Which is why just BungeeCord shouldn’t work
Alright thanks, I've encountered new errors but moving to #paper-dev for that 😄
Hey, does velocity account for this? https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java#485
I've changed my code now so that there's an outgoing channel - "BungeeCord" (as this method will make it bungeecord:main) and an incoming channel - bungeecord:main (as this method will make it "BungeeCord" for some reason)
honestly that is a genuinely terrible method that needs to be split into incoming/outgoing
I mean it's deprecated. It's still just used.... alot
I'm just going to fuck it and set up a Velocity plugin/channel to handle forwarding messages to servers lol
No it doesnt; and nothing should account for that, because the result of this method is wrong either way
Idk where my problems lie but for now I'm just going to blame that lol. Thanks for all the help
are you using ViaVersion or ProtocolSupport?
yee that's the proxy
my brain is fried; server
