Giter Club home page Giter Club logo

signedvelocity's Introduction

SignedVelocity

Latest Version Discord Modrinth Downloads

Allows you to cancel or modify messages or commands from Velocity without synchronization problems

Requirements

  • Java 21+
  • Velocity 3.3.0+

Backend:

  • Java 17+
  • Paper 1.19.4+ or Sponge 1.16.5+ (API 8.1+)
  • Sponge API 8.1/10+
  • Minestom 1.20.4+
  • Fabric 1.20.5+

Features

  • Transmit the modification and cancellation status of Velocity messages and commands to your backend server using plugin messages. This avoids chat chain synchronization problems and avoids Velocity's security check by correctly synchronizing messages.

  • Chat reporting support using Velocity (can be disabled using external plugins like FreedomChat, not recommended)

  • Ability to remove the unsecured chat warning when logging into each server. Requires VPacketEvents or PacketEvents

    SignedVelocitySignedStatus

Installation

In order for SignedVelocity to work, you must install it on both Velocity and all your servers

Velocity

  • Download SignedVelocity-Proxy
  • Drag and drop on your Velocity plugins folder
  • Start your proxy

Paper

  • Download SignedVelocity-Paper
  • Drag and drop on your Paper plugins folder
  • Start your server

Sponge

  • Download the version of SignedVelocity-Sponge that is compatible with your server. SignedVelocity-Sponge-8 supports API 8.1 and 9, SignedVelocity-Sponge-10 supports API 10 and 11
  • Drag and drop on your Sponge plugins folder
  • Start your server

Minestom

  • Download SignedVelocity-Minestom
  • Drag and drop on your Minestom extensions folder
  • Start your server

Downloads

Why SignedVelocity if UnSignedVelocity already exists?

UnSignedVelocity is a plugin that removes the limitation in Velocity to block or modify chat or commands executed by players with versions 1.19.1 or higher and who have a valid SignedKey. Although this works most of the time, there are issues that have arisen since version 1.19.3, which, as Mojang has implemented more security checks in the chat reporting system, has driven players kicked out of the proxy.

SignedVelocity solves all these problems, synchronizing the blocking and modification of chat and commands to the backend server, where it is possible to modify the chat.

Watch the video

Metrics

metrics

signedvelocity's People

Contributors

4drian3d avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

signedvelocity's Issues

Plugins on backend are not aware of chat event being cancelled.

My setup

Backend

SignedVelocity 1.2.2
Purpur Latest 1.20.4
FreedomChat 1.5.2 (can reproduce without)

Proxy

SignedVelocity 1.2.2
Velocity 3.3.0-SNAPSHOT (git-9450e660-b310)

How to reproduce the bug

  1. Add a plugin that cancels chat on velocity. For example, LibertyBans.
  2. Add DiscordSRV for example in your backend
  3. Mute yourself, and send a chat message. The message will not be shown in chat however you will be able to see it on discord (note: DiscordSRV does check if the event is cancelled)

Messages are not sent

When a user sends a message to the chat, nothing happens, I use the plugin on the proxy and on the backend server (Velocity + Purpur).

Chat messages are getting duplicated

Hello there, i am currently using a plugin that is dependent on SignedVelocity. I'm encountering an issue that is not present when i used to use UnSignedVelocity, that causes all chat messages to be duplicated twice on my servers.

image

My environment :
HuskChat 2.7.1
SignedVelocity 1.1.0
Velocity Build 276

I have talked with the developer of HuskChat and made sure this was not a configuration issue on my side.

1.12.2 version

Hey would signedvelocity work for me if I'm running velocity proxy, 1.20.1 hub server and 1.12.2 prison server? I have installed the plugin with vpacketevents on my proxy & on the hub. but it seems like there is no version for older mc servers would I be fine with running it or would newer players connecting to my prison eventually get kicked?

Couldn't pass CommandExecuteEvent to signedvelocity

I have an error for this piece of code:
commandManager.executeAsync(player,"/tp 20 20 20");

Error:
[12:41:48 ERROR]: Couldn't pass CommandExecuteEvent to signedvelocity java.util.NoSuchElementException: No value present at java.util.Optional.orElseThrow(Optional.java:377) ~[?:?] at io.github._4drian3d.signedvelocity.velocity.listener.PlayerCommandListener.lambda$executeAsync$0(PlayerCommandListener.java:40) ~[?:?] at com.velocitypowered.api.event.EventTask$2.execute(EventTask.java:91) ~[velocity.jar:3.2.0-SNAPSHOT (git-19abb909-b265)] at com.velocitypowered.proxy.event.VelocityEventManager$ContinuationTask.execute(VelocityEventManager.java:545) ~[velocity.jar:3.2.0-SNAPSHOT (git-19abb909-b265)] at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:604) ~[velocity.jar:3.2.0-SNAPSHOT (git-19abb909-b265)] at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[velocity.jar:3.2.0-SNAPSHOT (git-19abb909-b265)] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?] at java.lang.Thread.run(Thread.java:1623) [?:?]

Issue warning, if possible, when behavior changes due to backend plugin handling

In the pre-existing Velocity API, canceling a chat event prevents it from being sent to the backend servers. Chat canceled on the proxy is therefore invisible to Bukkit plugins. However, using SignedVelocity fundamentally alters this behavior by forwarding all chat events, even if canceled, to the backend servers. While this makes the plugin work, it is a behavioral change from the prior status quo, and leaks the abstraction SignedVelocity employs to shore up chat handling in a post-1.19.4 world.

This can be confusing for users who are acquainted to the previous behavior. For example, it may cause certain proxy plugin features to stop working when switching from pre-1.19.4 to post-1.19.4 with SignedVelocity, since the behavior of chat events is now different.

Most of the time, however, uncanceling a canceled chat event doesn't make sense. Fortunately, SignedVelocity is in the unique position of knowing exactly when a chat event was canceled by the proxy but uncanceled by the backend server. I therefore propose SignedVelocity add another listener on EventPriority.HIGHEST to log a brief warning if behavior has fundamentally changed as a result of a backend plugin uncanceling the event. It should be relatively straightforward given you already have a queue of chat data, so no additional data structure overhead would be incurred. If you want to avoid annoying users, the brief warning can be one-time, or it can be disabled by a config option. However, I argue it should be enabled by default, because it presents a behavioral change from the typical Velocity API proxy plugins are used to.

Not compatible with latest version of Velocity 3.3.0-b329+

Hi,

Since I did update from b327 to b330 of Velocity proxy, this plugin is not compatible anymore :

This is what I can get in the server log :

[11:45:37 INFO] [signedvelocity]: Starting SignedVelocity
[11:45:37 ERROR]: Couldn't pass ProxyInitializeEvent to signedvelocity
com.google.inject.ProvisionException: Unable to provision, see the following errors:

  1. [Guice/ErrorInjectingConstructor]: NoClassDefFoundError: com/velocitypowered/proxy/protocol/packet/ServerData
    at VPacketEventsAdapter.(VPacketEventsAdapter.java:12)
    while locating VPacketEventsAdapter
    Learn more:
    https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
    1 error
    ======================
    Full classname legend:
    ======================
    VPacketEventsAdapter: "io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter"
    ========================
    End of classname legend:
    ========================
    at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:251) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1151) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1186) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at io.github._4drian3d.signedvelocity.velocity.packet.PacketAdapter.register(PacketAdapter.java:19) ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.SignedVelocity.onProxyInitialization(SignedVelocity.java:48) ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.Lmbda$8.execute(Unknown Source) ~[?:?]
    at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:597) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
    at java.lang.Thread.run(Thread.java:833) [?:?]
    Caused by: java.lang.NoClassDefFoundError: com/velocitypowered/proxy/protocol/packet/ServerData
    at io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter.(VPacketEventsAdapter.java:17) ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter$$FastClassByGuice$$175ded2.GUICE$TRAMPOLINE() ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter$$FastClassByGuice$$175ded2.apply() ~[?:?]
    at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1148) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    ... 10 more
    Caused by: java.lang.ClassNotFoundException: com.velocitypowered.proxy.protocol.packet.ServerData
    at com.velocitypowered.proxy.plugin.PluginClassLoader.loadClass0(PluginClassLoader.java:87) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.velocitypowered.proxy.plugin.PluginClassLoader.loadClass(PluginClassLoader.java:64) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter.(VPacketEventsAdapter.java:17) ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter$$FastClassByGuice$$175ded2.GUICE$TRAMPOLINE() ~[?:?]
    at io.github._4drian3d.signedvelocity.velocity.packet.VPacketEventsAdapter$$FastClassByGuice$$175ded2.apply() ~[?:?]
    at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1148) ~[velocity.jar:3.3.0-SNAPSHOT (git-0993ce2f-b330)]
    ... 10 more

If you need someone to test a new release, I'm available to "beta test" it.
Same if you need some more infos, I'm here :P

Edit : Did some more tests :
Compatible until build 328 included.
Start to fail the initialization on build 329 and forward :)

Forge Support

Is this possible? No idea what this would require but just wanted to know if this could even happen?

Invalid plugin.yml on PaperMC

Hello there,
I am trying to install SignedVelocity on my local network using CloudNet.
The proxy version works just fine, starts without errors and everything, but the PaperMC version always throws this exception:

[25.11 18:51:29.588] INFO: [Hub-1] org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
[25.11 18:51:29.588] INFO: [Hub-1]      at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:178) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
[25.11 18:51:29.588] INFO: [Hub-1]      at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:155) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
[25.11 18:51:29.588] INFO: [Hub-1]      at org.bukkit.craftbukkit.v1_19_R1.CraftServer.loadPlugins(CraftServer.java:423) ~[paper-1.19.2.jar:git-Paper-307]
[25.11 18:51:29.588] INFO: [Hub-1]      at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:278) ~[paper-1.19.2.jar:git-Paper-307]
[25.11 18:51:29.588] INFO: [Hub-1]      at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1100) ~[paper-1.19.2.jar:git-Paper-307]
[25.11 18:51:29.588] INFO: [Hub-1]      at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:305) ~[paper-1.19.2.jar:git-Paper-307]
[25.11 18:51:29.588] INFO: [Hub-1]      at java.lang.Thread.run(Thread.java:1583) ~[?:?]
[25.11 18:51:29.588] INFO: [Hub-1] Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
[25.11 18:51:29.588] INFO: [Hub-1]      ... 7 more

I am using the latest SignedVelocity version (Paper-1.2.1)
Server Version: 1.19.2
/ver-Output: This server is running Paper version git-Paper-307 (MC: 1.19.2) (Implementing API version 1.19.2-R0.1-SNAPSHOT) (Git: 476ef25)

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Repository problems

These problems occurred while renovating this repository. View logs.

  • WARN: Package lookup failures

Warning

Renovate failed to look up the following dependencies: Failed to look up maven package com.mojang:minecraft.

Files affected: gradle/libs.versions.toml


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/gradle.yml
  • actions/checkout v4
  • actions/setup-java v4
  • nick-invision/retry v3
  • actions/upload-artifact v4
gradle
gradle.properties
settings.gradle.kts
  • org.gradle.toolchains.foojay-resolver-convention 0.8.0
  • org.spongepowered.gradle.plugin 2.2.0
  • fabric-loom 1.6.11
build.gradle.kts
backend/common/build.gradle.kts
backend/fabric/build.gradle.kts
backend/minestom/build.gradle.kts
backend/paper/build.gradle.kts
backend/sponge/API-10/build.gradle.kts
backend/sponge/API-8/build.gradle.kts
backend/sponge/common/build.gradle.kts
  • org.spongepowered:spongeapi 8.2.0
gradle/libs.versions.toml
  • com.velocitypowered:velocity-api 3.3.0-SNAPSHOT
  • com.velocitypowered:velocity-proxy 3.3.0-SNAPSHOT
  • io.papermc.paper:paper-api 1.20.4-R0.1-SNAPSHOT
  • net.minestom:minestom-snapshots 7320437640
  • dev.hollowcube:minestom-ce-extensions 1.2.0
  • com.mojang:minecraft 1.20.5
  • net.fabricmc.fabric-api:fabric-api 0.97.6+1.20.5
  • net.fabricmc:fabric-loader 0.15.10
  • org.bstats:bstats-velocity 3.0.2
  • com.github.retrooper.packetevents:velocity 2.2.1
  • io.github.4drian3d:vpacketevents-api 1.1.0
  • org.jetbrains:annotations 24.1.0
  • org.slf4j:slf4j-api 2.0.12
  • net.kyori.blossom 2.1.0
  • io.github.goooler.shadow 8.1.7
  • xyz.jpenilla.run-velocity 2.2.3
  • xyz.jpenilla.run-paper 2.2.3
  • net.minecrell.plugin-yml.paper 0.6.0
  • org.jetbrains.gradle.plugin.idea-ext 1.1.7
velocity/build.gradle.kts
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.6

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.