Scans a file or folder recursively for jar files that may be vulnerable to Log4Shell

Overview

Velocity

Build Status Join our Discord

A Minecraft server proxy with unparalleled server support, scalability, and flexibility.

Velocity is licensed under the GPLv3 license.

Goals

  • A codebase that is easy to dive into and consistently follows best practices for Java projects as much as reasonably possible.
  • High performance: handle thousands of players on one proxy.
  • A new, refreshing API built from the ground up to be flexible and powerful whilst avoiding design mistakes and suboptimal designs from other proxies.
  • First-class support for Paper, Sponge, and Forge. (Other implementations may work, but we make every endeavor to support these server implementations specifically.)

Building

Velocity is built with Gradle. We recommend using the wrapper script (./gradlew) as our CI builds using it.

It is sufficient to run ./gradlew build to run the full build cycle.

Running

Once you've built Velocity, you can copy and run the -all JAR from proxy/build/libs. Velocity will generate a default configuration file and you can configure it from there.

Alternatively, you can get the proxy JAR from the downloads page.

Comments
  • Modern Forge (1.13+) support

    Modern Forge (1.13+) support

    Adds a fix for https://github.com/PaperMC/Velocity/issues/248

    Updates the Forge connection logic for the new Forge client handshake and adds the "reset packet" sending implementation. There is a pending Forge fix for interpreting this packet, however this has to come first (especially given the fix doesn't have to exist in Forge for the solution to work to begin with).

    This has all been tested with Vanilla, Spigot, and Forge (and Forge with mods) clients and servers interchangeably.

    opened by danorris709 52
  • Unable to join any server, stuck on

    Unable to join any server, stuck on "Joining World..."

    Hello,

    Every time I attempt to join a server, I get stuck on the "Joining World..." screen. I am running build #384, with a new install and no plugins. I have query disabled, and am using the legacy player info forwarding mode.

    bug 
    opened by espidev 29
  • Help debugging

    Help debugging "A packet did not decode successfully (invalid data)"

    Problem

    I'm getting this error when entering certain locations on my modded server:

    [00:41:54 INFO]: [server connection] azokthedefiler1 -> dwr1 has connected [00:42:13 ERROR]: [server connection] azokthedefiler1 -> dwr1: exception encountered in com.vel[email protected]16432293 com.velocitypowered.proxy.util.except.QuietDecoderException: A packet did not decode successfully (invalid data). If you are a developer, launch Velocity with -Dvelocity.packet-decode-logging=true to see more. [00:42:13 INFO]: [server connection] azokthedefiler1 -> dwr1 has disconnected

    Adding "-Dvelocity.packet-decode-logging=true" to java when starting velocity does nothing. There above error is replaced with:

    [00:10:30] [Netty epoll Worker #1/INFO]: [server connection] azokthedefiler1 -> dwr1 has connected [00:10:33] [Netty epoll Worker #1/INFO]: [server connection] azokthedefiler1 -> dwr1 has disconnected

    Minecraft server console logs error as:

    [00:58:02] [Server thread/INFO] [minecraft/DedicatedServer]: azokthedefiler1 joined the game [00:58:02] [Server thread/INFO] [minecraft/NetHandlerPlayServer]: azokthedefiler1 lost connection: Internal Exception: java.io.IOException: Connection reset by peer [00:58:02] [Server thread/INFO] [minecraft/DedicatedServer]: azokthedefiler1 left the game

    Version

    Velocity: velocity-proxy-1.1.0-SNAPSHOT-all.jar build #206

    Next steps

    • How do I enable debugging to get more info about what is happening here?
    • What other info do you need to fix this issue?
    bug 
    opened by azokthedefiler1 27
  • Relicense the Velocity proxy under the terms of GPLv3

    Relicense the Velocity proxy under the terms of GPLv3

    This PR relicenses the Velocity proxy under the terms of the GNU General Public License v3, with the exception of the Velocity API (which remains MIT-licensed).

    Code contributed to the Velocity project prior to March 24, 2021 will remain available under the MIT license, but future contributions outside of the API will be GPLv3-licensed. Although I have unilateral ability to relicense Velocity in one fell swoop, I wish to get other contributors on board who may or may not want this to happen. This change, though targeted at Velocity 1.1.0, will also apply to Velocity 2.0.0.

    Why are you doing this now?

    The reason for doing so is largely so that Velocity remains free, open source, and a valuable contribution to the Minecraft community, whilst also allowing the team to keep contributing to the project in the face of pressure from our real-life jobs. In addition, certain developers have been taking our work and reselling it commercially. While they did nothing necessarily wrong legally, in practice they are leeches unwilling to contribute back to the Velocity project (instead taking our code and shoving it into poor-quality BungeeCord and ancient forks of Paper), which has precipitated this move.

    Since the Velocity project was started in 2018, we've moved the needle on what a Minecraft proxy can do. We want to go further and have some big, unique features planned - but this licensing change is a necessary step for doing so.

    meta 
    opened by astei 22
  • Much error when use velocity

    Much error when use velocity

    forge 1.12.2 spongeforge 7.15 velocity latest plugin: bungeequack

    The following problems are all generated after the use of velocity, So I think this has something to do with velocity.

    1. Sometimes connect player from ServerA to ServerB , the ServerA will print "abc moved too quickly! 716.0050468618773,-18.5,-952.4585183223486",then print NPC exception, see gist "server A log" line 129.

    2. Server B crash more easily when player connect from Server A. see gist "server B log". And player will kick back to server A: You were moved from the server you were on because you were kicked

    The logs are all at the same time, so they can be viewed in combination

    https://gist.github.com/zhourui123/d372e2dff1fee3ffe816826d9373d8ca

    bug 
    opened by zhourui123 21
  • Error when connecting to a server.

    Error when connecting to a server.

    This error occurred when connecting to an Engimatic 2: Expert Skyblock server AFTER connecting to a Sponge Vanilla lobby. Put here for tracking purposes.

    https://paste.ubuntu.com/p/yqJf7ydb8d/

    bug help wanted 
    opened by PurpleIsEverything 20
  • A plugin tried to cancel a signed chat message.

    A plugin tried to cancel a signed chat message.

    So I'm preparing to upgrade my servers to 1.19.1, I decided to start with my network-wide-chat plugin and I immediately run into this problem:

    A plugin tried to cancel a signed chat message. This is no longer possible in 1.19.1 and newer. Disconnecting player

    Added in this line: https://github.com/PaperMC/Velocity/blob/c57fb489f3cc664fe05cdbdbb24fdca1347ef446/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java#L200

    Is there a technical reason why Velocity wants to turn this into an error? Because if I simply disable that line and rebuild, my original plugin works fine. Player chat messages are actually sent to all players across all servers as a simple system message.

    opened by skerit 19
  • New command API

    New command API

    Introduces a new command framework that supports both legacy String[] args commands and 1.13+ Brigadier commands.

    As discussed in https://github.com/VelocityPowered/Velocity/pull/329#discussion_r454969425 and https://github.com/VelocityPowered/Velocity/issues/232, the current command framework lacks support for new command features. This PR adds 3 subinterfaces to Command: BrigadierCommand, LegacyCommand and RawCommand. All execution-related methods such as execute and hasPermission now take a single CommandInvocation argument that includes the command source and additional execution metadata such as the String[] args for legacy commands.

    TODO:

    • [x] Decide on command execution context name. Candidates so far are CommandExecutionContext, CommandContext and CommandInvocation
    • [x] Move built-in commands to Brigadier
    • [x] Test all the things!!1!
      • [x] Brigadier aliases as redirects (see https://github.com/Mojang/brigadier/issues/46, do we need to create our own redirects system?)
    enhancement 
    opened by hugmanrique 16
  • Kick on joining

    Kick on joining

    Basically we have this one player that every time he joins it kicks only him and 2 other players at random and then throws all these errors in the console log.

    [19:11:48] [Netty epoll Worker #1/ERROR]: [server connection] Josua27176 -> pixel: exception encountered in com.vel[email protected]22ebfecd
    java.lang.IllegalStateException: java.io.UTFDataFormatException: malformed input around byte 17
    	at com.velocitypowered.proxy.protocol.util.ByteBufDataInput.readUTF(ByteBufDataInput.java:107) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.backend.BungeeCordMessageResponder.processForwardToServer(BungeeCordMessageResponder.java:224) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.backend.BungeeCordMessageResponder.process(BungeeCordMessageResponder.java:292) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler.handle(BackendPlaySessionHandler.java:101) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.protocol.packet.PluginMessage.handle(PluginMessage.java:81) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:113) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:191) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:153) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
    Caused by: java.io.UTFDataFormatException: malformed input around byte 17
    	at java.io.DataInputStream.readUTF(DataInputStream.java:656) ~[?:1.8.0_252]
    	at com.velocitypowered.proxy.protocol.util.ByteBufDataInput.readUTF(ByteBufDataInput.java:105) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	... 41 more
    [19:11:48] [Netty epoll Worker #1/INFO]: [connected player] Josua27176 (/24.34.161.59:43539) has disconnected: Your connection to pixel encountered an error.
    [19:11:48] [Netty epoll Worker #1/INFO]: [server connection] Josua27176 -> pixel has disconnected
    [19:11:48] [Velocity Event Executor - #0/INFO]: Josua27176 has left the proxy
    [19:11:50] [Netty epoll Worker #1/ERROR]: [server connection] Kobrakill00 -> pixel: exception encountered in com.vel[email protected]735ee552
    java.lang.IllegalStateException: java.io.UTFDataFormatException: malformed input around byte 17
    	at com.velocitypowered.proxy.protocol.util.ByteBufDataInput.readUTF(ByteBufDataInput.java:107) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.backend.BungeeCordMessageResponder.processForwardToServer(BungeeCordMessageResponder.java:224) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.backend.BungeeCordMessageResponder.process(BungeeCordMessageResponder.java:292) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler.handle(BackendPlaySessionHandler.java:101) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.protocol.packet.PluginMessage.handle(PluginMessage.java:81) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:113) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:191) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:153) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:425) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
    Caused by: java.io.UTFDataFormatException: malformed input around byte 17
    	at java.io.DataInputStream.readUTF(DataInputStream.java:656) ~[?:1.8.0_252]
    	at com.velocitypowered.proxy.protocol.util.ByteBufDataInput.readUTF(ByteBufDataInput.java:105) ~[velocity-proxy-1.1.0-SNAPSHOT-all.jar:1.1.0-SNAPSHOT (git-e83662e8-b117)]
    	... 43 more
    [19:11:50] [Netty epoll Worker #1/INFO]: [connected player] Kobrakill00 (/184.188.64.175:58698) has disconnected: Your connection to pixel encountered an error.
    [19:11:50] [Netty epoll Worker #1/INFO]: [server connection] Kobrakill00 -> pixel has disconnected
    [19:11:50] [Velocity Event Executor - #0/INFO]: Kobrakill00 has left the proxy
    
    bug 
    opened by josua27176 16
  • Add ability to play sounds and send particles via the API

    Add ability to play sounds and send particles via the API

    As the title say, I suggest to add ways to play sounds and to send particles to a player using the API. In my case I want to write a note block music plugin. Why can't I write my plugin at the server level ? Because I want the music the keep playing when the player changes server. Anyway, these functionalities could be also useful for a lot of other applications until then impossible at the proxy level. Sending sounds or particles almost always requires a position as parameter. And this position is often relative the player position. So I also suggest to add a way to get the player position. This position would be deduced by Velocity by tracking position packets. I don't know how heavy it would be to track these packets so if it's a potentially heavy task it could be interesting to make it optional and controlled by a config file or by plugins using the API, or both.

    enhancement 
    opened by Yeregorix 16
  • French translation

    French translation

    Hello, I translated Velocity in French. I want HookWood and Shawiz to verify my work as soon as they can.

    About the translation:

    • I didn't include the feminine variations of the sentences (it's just impossible to handle). If you want to help me to do that in another pr you can add me on Discord (toinouH#0780) :)
    • There is also no question of inclusive writing, which is currently the subject of so much debate in France. If and only if this "inclusive writing" is passed by parliament, implemented by the executive and approved by language academics, I will do a pr to remedy this. Thank you for your understanding and do not debate it here since this is not the place.
    localization 
    opened by toinouH 15
  • Pin libdeflate version

    Pin libdeflate version

    Libdeflate changed to cmake which prevents compile-linux.sh from running as is. Instead of compiling against head, let's compile against a tag at least.

    opened by romanalexander 0
  • [Suggestion] Custom player info forwarding mode

    [Suggestion] Custom player info forwarding mode

    It would be helpful to include a CUSTOM enum value in PlayerInfoForwarding, which would do nothing and leave the UUIDs alone. Here's the context:

    I've been developing a custom player info forwarding system for my server network, using both a Velocity plugin and Spigot plugin. I was able to get everything working, but I had one issue with the Velocity proxy:

    Line 135 of the AuthSessionHandler changes the player's UUID to the offline version when the forwarding mode is set to none. This made it so the player couldn't see their own skin, and the chat messages weren't signed properly, as the server expected the player to have their real UUID.

    I was able to avoid this issue by compiling the PlayerInfoForwarding file with an additional CUSTOM entry. I could then copy this modified file into the normal velocity.jar, and change the config option to CUSTOM. This left the UUIDs alone, allowing the system to work properly.

    Having this enum value be a part of the proxy itself by default would be more convenient. Thanks!

    enhancement WIP 
    opened by mega12345mega 2
  • BungeeCord channel - Forward doesn't support

    BungeeCord channel - Forward doesn't support "ONLINE" target

    Velocity doesn't handle the "ONLINE" target when sending messages to "Forward".

    This is how BungeeCord handles it: https://github.com/SpigotMC/BungeeCord/blob/2d369e894546b3c180ecf931317c6fabff3149c0/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java#L347

    opened by RoinujNosde 0
  • BackendPlaySessionHandler exception

    BackendPlaySessionHandler exception

    I have no clue why this happening, players got kicked to fallback server (from specific gamemode to lobby).

    Today I got this:

    Nickname -> megadrop: exception encountered in com.vel[email protected]1884469e
    io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.PlayerListItem Direction CLIENTBOUND Protocol 1.8 State PLAY ID 38
    	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.handleDecodeFailure(MinecraftDecoder.java:128) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:83) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:58) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.1]
    	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.1]
    	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[velocity.jar:3.1.1]
    	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.1]
    	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.1]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.1]
    	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity.jar:3.1.1]
    	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) ~[velocity.jar:3.1.1]
    	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480) ~[velocity.jar:3.1.1]
    	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[velocity.jar:3.1.1]
    	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[velocity.jar:3.1.1]
    	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.1.1]
    	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.1.1]
    	at java.lang.Thread.run(Thread.java:833) [?:?]
    Caused by: io.netty.handler.codec.CorruptedFrameException: Trying to read a string that is too long (wanted 63, only have 1)
    	at com.velocitypowered.proxy.protocol.util.NettyPreconditions.checkFrame(NettyPreconditions.java:78) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.ProtocolUtils.readString(ProtocolUtils.java:191) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.ProtocolUtils.readString(ProtocolUtils.java:182) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.ProtocolUtils.readString(ProtocolUtils.java:170) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.ProtocolUtils.readProperties(ProtocolUtils.java:382) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.packet.PlayerListItem.decode(PlayerListItem.java:73) ~[velocity.jar:3.1.1]
    	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:81) ~[velocity.jar:3.1.1]
    	... 24 more
    

    but mostly I got this, single line "kick":

    Nickname -> megadrop: exception encountered in com.vel[email protected]4ed63528
    io.netty.channel.unix.Errors$NativeIoException: readAddress(..) failed: Connection reset by peer
    

    On the main (gamemode server) I just got: Nickname lost connection: Disconnected

    opened by fire7d 1
Owner
PaperMC
PaperMC is a Minecraft Software organization focusing on improving the Minecraft ecosystem with faster and more secure software.
PaperMC
gophertunnel is composed of several packages that may be of use for creating Minecraft related tools

gophertunnel is composed of several packages that may be of use for creating Minecraft related tools. A brief overview of all packages may be found here.

Sandertv 298 Dec 3, 2022
Log4Shell is a middleware plugin for Traefik which blocks JNDI attacks based on HTTP header values.

Log4Shell Mitigation Log4Shell is a middleware plugin for Traefik which blocks JNDI attacks based on HTTP header values. Related to the Log4J CVE: htt

Traefik Labs 34 Oct 21, 2022
EDR-Recon scans Windows services, drivers, processes, registry for installed EDRs.

EDR-Recon EDR-Recon scans Windows services, drivers, processes, registry for installed EDRs. Install Binary Download the latest release from the relea

FourCore Labs 408 Nov 17, 2022
Detect nmap TCP SYN scans (-sS) using gopacket in golang.

Setup Fetch dependencies using apt (PRs welcome for concise instructions for other package managers): sudo apt install libpcap-dev git clone https://

null 2 Apr 27, 2022
Turning a folder into a gallery website to share your videos, songs and images in the local netwrok.

What Carp Web Gallery Turning a folder into a gallery website to share your videos, songs and images in the local netwrok. Browser videos and audios i

Kaihua Liu 1 Mar 14, 2022
File Collector is an application that uses HTTP protocol to collect homework and files.

File Collector File Collector is an application that uses HTTP protocol to collect homework and files. Usage When filecollector is run, it will automa

毛亚琛 1 Jun 16, 2022
View, edit, and save text files via http to the file system.

go-wiki View, edit, and save text files via http to the file system. (DONE) https://golang.org/doc/articles/wiki/ Instructions go run main.go In a web

Clint Vidler 0 Nov 25, 2021
DeepCopy a portable app that allows you to copy all forms of specified file types from your entire file system of the computer

DeepCopy a portable app that allows you to copy all forms of specified file types from your entire file system of the computer

subrahmanya  s hegade 1 Dec 20, 2021
Generates file.key file for IPFS Private Network.

ipfs-keygen Generates file.key file for IPFS Private Network. Installation go get -u github.com/reixmor/ipfs-keygen/ipfs-keygen Usage ipfs-keygen > ~/

Camilo Abel Monreal Aguero 0 Jan 18, 2022
A C/S Tool to Download Torrent Remotely and Retrieve Files Back Over HTTP at Full Speed without ISP Torrent Limitation.

remote-torrent Download Torrent Remotely and Retrieve Files Over HTTP at Full Speed without ISP Torrent Limitation. This repository is an extension to

Bruce Wang 59 Sep 30, 2022
Protobuf files manager

Prot - protobuf files manager. It application can help your manage protobuf files and generate code based on him. !!! Before use Prot you must install

Maksim Pavlov 6 Jun 22, 2022
A simple way to share files and clipboard within a local network.

Shortcut Simple way to share files and clipboard with devices within a local network. Usage Run the ./shortcut executable. A browser window will be op

Dhamith Hewamullage 17 Mar 13, 2022
UnixFS DAG files offset-based proofs

go-unixfs-proof Go implementation of offset-based native UnixFS proofs. Note: this is a side-project and not be considered production-ready. It isn't

Ignacio Hagopian 5 Nov 2, 2022
Transfer files between machines in the same network

GoTrans Transfer files from computer A to computer B. The program have a sender and a receiver, if you choose a sender you'll need to provide the ip a

Danilo Marques 0 Nov 7, 2021
Grab your files periodically from a remote FTP or SFTP server easily

About FTPGrab is a CLI application written in Go and delivered as a single executable (and a Docker image) to grab your files from a remote FTP or SFT

CrazyMax 408 Dec 4, 2022
Client - Server TCP Chat For String Messages And Random Files

GoChat Client - Server TCP Chat For String Messages And Random Files GoChat is a chat for string messages and random files using Golorem by Derek A. R

Brian GL 0 Sep 29, 2021
Traefik config validator: a CLI tool to (syntactically) validate your Traefik configuration filesTraefik config validator: a CLI tool to (syntactically) validate your Traefik configuration files

Traefik Config Validator Note This is currently pre-release software. traefik-config-validator is a CLI tool to (syntactically) validate your Traefik

Thomas Klinger 0 Dec 16, 2021
This plugins watches and builds the source files continiusly in-memory

Caddy Esbuild plugin This plugins watches and builds the source files continiusly in-memory. It includes a etag to cache in the browser to save bandwi

Richard Hagen 3 Jun 17, 2022
GoHTTPdirlist - Serve files and directories with Golang based http server

List Files and Directories with GoLang based HTTP Server TO MAKE IT WORK: go run

EMRE ASLAN 0 May 18, 2022