Coder Social home page Coder Social logo

ambassador's People

Contributors

adde0109 avatar dima-dencep avatar icosider avatar jt122406 avatar proferabg avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ambassador's Issues

Unable to connect to All The Mods 7 To the Skies using Ambassador and Legacy Auth

When connecting via Velocity 3.2.0 snapshot 265 to a Magma 1.18.2 back-end (version b3448c1f) using Legacy Authentication clients reach the "downloading world" stage, then are immediately disconnected. The first time this happens we get this console message:

Server thread/WARN22:48:48
java.util.NoSuchElementException: packet_handler
at MC-BOOTSTRAP/[email protected]/io.netty.channel.DefaultChannelPipeline.getContextOrDie(DefaultChannelPipeline.java:1073)
at MC-BOOTSTRAP/[email protected]/io.netty.channel.DefaultChannelPipeline.addBefore(DefaultChannelPipeline.java:248)
at MC-BOOTSTRAP/[email protected]/io.netty.channel.DefaultChannelPipeline.addBefore(DefaultChannelPipeline.java:237)
at eu.decentsoftware.holograms.api.nms.PacketListener.hook(PacketListener.java:49)
at eu.decentsoftware.holograms.api.player.PlayerListener.lambda$onJoin$1(PlayerListener.java:24)
at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:102)
at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:417)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_5703_(MinecraftServer.java:1205)
at TRANSFORMER/[email protected]/net.minecraft.server.dedicated.DedicatedServer.m_5703_(DedicatedServer.java:424)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:1156)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:954)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_177918_(MinecraftServer.java:263)
at java.base/java.lang.Thread.run(Thread.java:833)
handleDisconnection() called twice

Subsequent attempts don't see any messages at all. I've tried using proxy-compatible-forge without success, and bungeeforge just tells me I haven't enabled BungeeCord in the config (I have). I'm keen to utilise Legacy authentication in my setup since I have some 1.12.2 boxes lingering around.

Any ideas where I can start? I've removed any optimisation mods, and anything unusual that I can see without success.

Incompatibility with Floodgate plugin

Is there a way to ignore Floodgate, because floodgate makes Ambassador not work correctly?

ERROR]: Couldn't pass ProxyInitializeEvent to ambassador
--
2 | java.lang.ClassCastException: class org.geysermc.floodgate.inject.velocity.VelocityInjector$VelocityChannelInitializer cannot be cast to class com.velocitypowered.proxy.network.ServerChannelInitializer (org.geysermc.floodgate.inject.velocity.VelocityInjector$VelocityChannelInitializer is in unnamed module of loader com.velocitypowered.proxy.plugin.PluginClassLoader @67e28be3; com.velocitypowered.proxy.network.ServerChannelInitializer is in unnamed module of loader 'app')
3 | at org.adde0109.ambassador.Ambassador.inject(Ambassador.java:65) ~[?:?]
4 | at org.adde0109.ambassador.Ambassador.onProxyInitialization(Ambassador.java:57) ~[?:?]
5 | at org.adde0109.ambassador.Lmbda$1.execute(Unknown Source) ~[?:?]
6 | at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:47) ~[velocity-3.1.2-SNAPSHOT-184.jar:3.1.2-SNAPSHOT (git-7d77bfb5-b184)]
7 | at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:598) ~[velocity-3.1.2-SNAPSHOT-184.jar:3.1.2-SNAPSHOT (git-7d77bfb5-b184)]
8 | at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:479) ~[velocity-3.1.2-SNAPSHOT-184.jar:3.1.2-SNAPSHOT (git-7d77bfb5-b184)]
9 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
10 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
11 | at java.lang.Thread.run(Thread.java:833) ~[?:?]

Unable to connect to backend server with "Mana and Artifice" installed

With the mod "Mana and Artifice" (link) installed on both the client and the backend server, the client is kicked from the server during login, with the following error in the Velocity logs:

[10:44:00] [Netty kqueue Worker #1/ERROR] [com.velocitypowered.proxy.connection.MinecraftConnection]:  [server connection] mgpdoll -> server1: exception encountered in org.adde0109.ambassador.velocity.backend.ForgeLoginSessionHandler@52ce7a72
io.netty.handler.codec.CorruptedFrameException: Bad array size (got 181609, maximum is 65536)
	at com.velocitypowered.proxy.protocol.util.NettyPreconditions.checkFrame(NettyPreconditions.java:83) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at com.velocitypowered.proxy.protocol.ProtocolUtils.readByteArray(ProtocolUtils.java:335) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at com.velocitypowered.proxy.protocol.ProtocolUtils.readByteArray(ProtocolUtils.java:321) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at org.adde0109.ambassador.forge.packet.ConfigDataPacket.read(ConfigDataPacket.java:22) ~[?:?]
	at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperCodec.decode(ForgeLoginWrapperCodec.java:97) ~[?:?]
	at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperCodec.decode(ForgeLoginWrapperCodec.java:20) ~[?:?]
	at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at com.velocitypowered.proxy.protocol.netty.AutoReadHolderHandler.channelRead(AutoReadHolderHandler.java:57) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:92) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:544) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:387) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:218) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:296) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity-3.3.0-SNAPSHOT-343.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
	at java.lang.Thread.run(Thread.java:840) [?:?]

To reproduce:

  • Forge 1.20.1 server with BungeeForge, Proxy-Compatible-Forge, Mana and Artifice, Curios, Geckolib (the latter two being dependencies of Mana and Artifice)
  • Forge 1.20.1 client with Mana and Artifice, Curios, Geckolib
  • Velocity proxy with Ambassador and player-info-forwarding-mode = "legacy" in velocity.toml
  • Connect to the server through Velocity; get kicked with nondescript errors on client and server, and the above stacktrace in Velocity

Note that Ambassador v1.5.0-rc-beta works fine, while v1.5.2-beta does not!

fml-client-debug.log
fml-server-debug.log
velocity-latest.log

CorruptedFrameException - Direwolf20 1.19.2

Hello,

I am running:
velocity-3.2.0-SNAPSHOT-243.jar
Ambassador-Velocity-1.2.0-beta-all.jar

with the modpack:
Direwolf20 1.19.2 version 1.7.0 https://www.feed-the-beast.com/modpacks/101-ftb-presents-direwolf20-119

I am using Modern player info forwarding mode on velocity with _proxy-compatible-forge-1.19.2-1.0.2.jar on the forge server. I have tried other forwarding modes with no luck either. Here is the error I get on velocity's side: https://gist.github.com/Aiidoneus/462a75ce844d767dfd0dec03bb21a903

I do notice that it thinks the client is trying to connect with a 1.19.1 Minecraft protocol when it should be 1.19.2 if that means anything. I am able to direct connect to the server without velocity just fine (for testing) and have a vanilla paper server working just fine.

Feel free to ask me questions or get a hold of me on discord at Aidoneus#4656

Incomplete set of tags received from server with some mods

Hi, when I connect to my lobby with my forge 1.16.5 modpack (Oceanblock), I get disconnected and this message
image

Lobby: Paper 1.12.2 with ViaVersion
Proxy: Velocity with Ambassador
Main: Mohist 1.16.5 with Ambassador forge mod

I've found that this happens with only some mods and some not. For example when I tried to connect with only Applied Energetics 2, it worked fine. Unfortunately when I try to connect using Oceanblock I get this message as on the Image above.

Reconnect required for non-modded servers

My network has a problem where if you connect to the forge server, and then switch back to any other paper server, you'll still be required to reconnect.

For example if your network setup is like this:

velocity:

  • hub (runs paper)
  • forge
  • skyblock (runs paper)

Reprod steps:

  1. Connect to network and be in the hub.
  2. Connect to the forge server, you'll be required to reconnect as intended
  3. Switch back to the hub, or vanilla server, you'll be required to reconnect, not intended
  4. Reconnect and you'll be forced to reconnect for every single server switch, even if they're all to non-forge servers.

I'm running Ambassador 1.3.1 from discord.

Incompatibility with Protocolize

We use protocolize for our network command filter. I noticed some console output regarding incompatibility with ambassador. I have not experienced any noticeable issues in terms of being able to connect but i wanted to bring the issue up anyways.

Velocity: velocity-3.2.0-SNAPSHOT-260.jar
Plugin Version: Ambassador-Velocity-1.4.0-all.jar

Error:

[08:08:08 ERROR] [dev.simplix.protocolize.velocity.listener.PlayerListener]: It seems like there is an incompatible plugin installed. Velocity channel initializers are overridden by: org.adde0109.ambassador.velocity.VelocityBackendChannelInitializer
[08:08:08 ERROR] [dev.simplix.protocolize.velocity.listener.PlayerListener]: Protocolize is unable to work under this circumstances. Please contact the developers of the incompatible plugin and suggest them to call the initChannel method of the ChannelInitializers before overriding them.

Full log: latest.log

If you need any additional info let me know. Thanks!

cannot mix modded and unmodded servers on proxy

not sure if this is intentional but i run a network with a vanilla server and a modded server but cannot connect to the vanilla one while using this plugin on my backend. is this intentional behaviour?

Out of order chat packet

Similar to #38

I do not have an image, but I am getting the same message "Out of order chat packet received. Did your system time change?". This tends to appear when someone is trying to type a command from what I gather. It's only happened to me personally once however. (Usually commands like /tpa from Forge Essentials mod or whatever it's called)

Unfortunately I am unsure If this directly relates to Ambassador since I do not know the inner workings of what things you possibly modify from Velocity, but this issue only seemed to pop up after adding the proxy setup in front of the server.

Anywho:

Velocity Proxy: Build #364
Added plugins:
Ambassador v1.5.2 beta
TCPShield v2.7.0

Forge Server: (ATM 8 Pack) v1.1.0
Minecraft: v1.19.2
Forge Version: v43.2.14
Added mods:
Proxy-Compatible-Forge v1.1.4
SimpleBackups v2.1.10

About alpha

Is there a particular reason, why this is still in active alpha?
Any particular shortcommings, or do you just need to cleanup code a little to feel sure?

If it helps, my server-network would like to run 1.13+ forge servers behind a proxy, without needing client-side mods. We would like to test out this plugin internally.
Is there anything we should be aware of, in terms of user-sided unintentional behaviour, exploits, security etc?

Cannot connect to server: Identifier is empty.

Environment

velocity: velocity-3.3.0-SNAPSHOT-393.jar
velocity plugins: Ambassador-Velocity-1.4.4-all.jar
velocity mode: legacy (and modern also)

backend: mohist-1.18.2-173-server.jar (and arclight-forge-1.18.2-1.0.12.jar also)
backend plugins: None
backend modpack: https://www.curseforge.com/minecraft/modpacks/atlanabyss


Error

// Velocty

[18:25:52 ERROR]: [connected player] RTomsk (/192.168.2.15:35470): exception encountered in com.velocitypowered.proxy.connection.client.InitialConnectSessionHandler@60aae253
io.netty.handler.codec.DecoderException: java.lang.IllegalArgumentException: Identifier is empty.
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:92) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Identifier is empty.
        at com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier.from(MinecraftChannelIdentifier.java:78) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        at org.adde0109.ambassador.forge.packet.ModListReplyPacket.read(ModListReplyPacket.java:45) ~[?:?]
        at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperDecoder.decode(ForgeLoginWrapperDecoder.java:35) ~[?:?]
        at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperDecoder.decode(ForgeLoginWrapperDecoder.java:14) ~[?:?]
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) ~[velocity-3.3.0-SNAPSHOT-393.jar:3.3.0-SNAPSHOT (git-42d42883-b393)]
        ... 32 more
// Mohist

[18:27:28 INFO]: com.mojang.authlib.GameProfile@3d9c282e[id=2023a329-6129-373b-827b-be15d324bf20,name=RTomsk,properties={extraData=[com.mojang.authlib.properties.Property@c547870]},legacy=false] (/192.168.2.15:46914) lost connection: Disconnected

Disconnected when try to connect server.

ๅ›พๅƒ_2024-05-27_182735415

[Forge 1.18.2] Unable to switch between two identical modded servers.

Whenever we try to switch to another server without the client reset mod, we get this error in the console.

We are using Ambassador-Velocity-1.5.0-rc1-all and Velocity 3.3.0-SNAPSHOT

[16:47:46 ERROR]: [server connection] jelleclaus2 -> main: exception encountered in org.adde0109.ambassador.velocity.backend.ForgeLoginSessionHandler@495dff42 java.lang.NullPointerException: Cannot invoke "java.util.concurrent.CountDownLatch.countDown()" because "this.remainingRegistries" is null at org.adde0109.ambassador.forge.VelocityForgeBackendConnectionPhase.handle(VelocityForgeBackendConnectionPhase.java:137) ~[?:?] at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperHandler.channelRead0(ForgeLoginWrapperHandler.java:39) ~[?:?] at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperHandler.channelRead0(ForgeLoginWrapperHandler.java:16) ~[?:?] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at com.velocitypowered.proxy.protocol.netty.AutoReadHolderHandler.channelRead(AutoReadHolderHandler.java:57) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:92) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[server.jar:3.3.0-SNAPSHOT (git-59567512-b346)] at java.lang.Thread.run(Thread.java:1589) [?:?]

Negotiating...

90% of users can connect between servers just fine. Here is an example of a negotiating... bug after the latest update.

Proxy is running latest ambassador/velocity
Lobby is 1.19 spigot, modded servers are 1.16.5 pixelmon on arclight with PCF mod

https://pastebin.com/TyZAAkH7

mismatched mods

So I have no idea if I'm doing anything wrong. Keep in mind i set velocity to modern forwarding so my modded server is joinable

image

Im running on a 1.17.1 spigot server. I want to use this vanilla spigot server lobby that goes to my 1.16.5 spigot forge hybrid server (arclight)

thanks

Transfer between Servers failing due to: Exception: io.netty.handler.codec.DecoderException: java.lang.RuntimeException: Bad recipe. Index 1 does not point to

As discussed on with help of ThePotatoKing on discord
Ambassador seems to be erroring on some Transfers between Servers. This seems to be connected to the "new"/rewritten data reset/syncing code.
v 1.4.3 together with velocity version 316 works but the 1.5.2 with the newest velocity version does fail on transfer to some specific saves.

Here are a whole bunch of log dumps:

Client logs: https://mclo.gs/2Wz2Sb5
Proxy logs:

and even more logs here:

I've setup 2 different building servers so i can transfer between the 2 in 1 session to show you the issue but this is the exact same issue that happens when i change the save on the succesfully transferable building2 server:

Lobby Logs: https://mclo.gs/jN6NHZA
Unsuccesfull Old Save transfer log: https://mclo.gs/g81Vm8n
Succesfull new Save transfer log: https://mclo.gs/z4d3vae
Proxy log: https://mclo.gs/qM117xD
Client logs: https://mclo.gs/FI1sr5C

Incompatibility with mod "Silent Gear"

When on a Forge server running under Velocity via Ambassador, the mod "Silent Gear" does not work properly.
(Silent Gear is a mod that introduces "modular" tools and equipment, a la Tinker's Construct.)

Proxy:

  • Velocity: 3.1.2-SNAPSHOT-179
  • Ambassador: 0.5.1

Client / Backend:

  • Minecraft: 1.18.2
  • Forge: 40.1.80
  • Ambassador-Forge: 1.18.2-0.2.1
  • Silent Gear: 2.10.14
  • (Caelus API: 1.18.1-3.0.0.2)
  • (Curios API: 1.18.2-5.0.7.1)
  • (Silent Lib: 6.2.0)

When crafting a Silent Gear tool through any means, an "invalid item" is produced rather than the expected tool.

image

Expected:
image

Despite being a red X, the tool seems to function normally otherwise.

Here's some information I've gathered regarding when this bug is encountered:

  • Connecting to the backend server directly (w/o Ambassador) works fine.
  • Connecting to the backend server directly, logging out, restarting the backend server with Ambassador-Forge installed, then connecting to the backend server via Velocity + Ambassador works fine as well.
  • After a game restart, connecting to the backend server via Velocity first does not work.
  • Afterwards, restarting the backend server without Ambassador and connecting to it directly (without a game restart in between) does not work.

Note that tools created as "X"s later appear correctly when directly connecting to the backend server first, and tools created as normal appear as "X"s when connecting via Velocity first. So I assume the item data remains the same between relogs with or without restarting the game.

Also note that, rather than making a direct connection to the backend server before connecting via Velocity, you can instead simply load a singleplayer world. This has the same effect, regarding making Silent Gear tools look correct.

If I recall correctly, connecting to the server via Velocity first (to trigger the issue) will not affect the look of the tools in a singleplayer world loaded afterward, in the same gameplay session (i.e. without restarting the game). That is to say, Silent Gear will work fine in singleplayer, even after connecting to the backend via Velocity (which would otherwise break Silent Gear).
Also IIRC, after leaving singleplayer as above and connecting to the backend via Velocity a second time (in one session), the mod will continue to work fine.
(I say the above ambiguously, as I last tested singleplayer in the context of this issue with a modpack (All the Mods 7), which had a tendency to crash when switching from multiplayer to singleplayer.)

Let me know if I need to clarify anything, as I've come to realize that this issue is rather difficult to explain in text. Maybe I should make a diagram of some sort...

Ambassador incompatible with Velocity 3.2.0 Build 269+

Connecting to a velocity server with ambassador installed when using velocity builds 269 or higher causes the client to fail to connect, stating there was an issue with packets

[19:39:24] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Booting up Velocity 3.2.0-SNAPSHOT (git-904e81db)...
[19:39:24] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Loading localizations...
[19:39:24] [main/INFO] [com.velocitypowered.proxy.network.ConnectionManager]: Connections will use epoll channels, libdeflate (Linux x86_64) compression, OpenSSL 3.0.x (Linux x86_64) ciphers
[19:39:24] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Loading plugins...
[19:39:24] [main/INFO] [com.velocitypowered.proxy.plugin.VelocityPluginManager]: Loaded plugin ambassador 1.4.2-beta by adde0109
[19:39:24] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Loaded 1 plugins
[19:39:24] [Velocity Async Event Executor - #0/WARN] [com.velocitypowered.proxy.network.ConnectionManager]: The server channel initializer has been replaced by org.adde0109.ambassador.Ambassador.inject(Ambassador.java:107)
[19:39:24] [Velocity Async Event Executor - #0/WARN] [com.velocitypowered.proxy.network.ConnectionManager]: The backend channel initializer has been replaced by org.adde0109.ambassador.Ambassador.inject(Ambassador.java:110)
[19:39:24] [Netty epoll Boss #0/INFO] [com.velocitypowered.proxy.network.ConnectionManager]: Listening on /[0:0:0:0:0:0:0:0%0]:25566
[19:39:24] [main/INFO] [com.velocitypowered.proxy.Velocity]: Done (0.47s)!
[19:39:26] [Netty epoll Worker #0/INFO] [com.velocitypowered.proxy.connection.client.AuthSessionHandler]: [connected player] Kaydax (/10.0.0.1:49796) has connected
[19:39:26] [Netty epoll Worker #0/INFO] [com.velocitypowered.proxy.connection.MinecraftConnection]: [server connection] Kaydax -> main has connected
[19:39:32] [Netty epoll Worker #0/ERROR] [com.velocitypowered.proxy.connection.MinecraftConnection]: [server connection] Kaydax -> main: exception encountered in com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler@4121f843
io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommands Direction CLIENTBOUND Protocol 1.16.4 State PLAY ID 10
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.handleDecodeFailure(MinecraftDecoder.java:131) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:86) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Argument type identifier null unknown.
	at com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentPropertyRegistry.deserialize(ArgumentPropertyRegistry.java:90) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at com.velocitypowered.proxy.protocol.packet.AvailableCommands.deserializeNode(AvailableCommands.java:210) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at com.velocitypowered.proxy.protocol.packet.AvailableCommands.decode(AvailableCommands.java:88) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:84) ~[velocity-proxy-3.2.0-SNAPSHOT-all.jar:3.2.0-SNAPSHOT (git-904e81db)]
	... 30 more
[19:39:32] [Netty epoll Worker #0/INFO] [com.velocitypowered.proxy.connection.client.ConnectedPlayer]: [connected player] Kaydax (/10.0.0.1:49796) has disconnected: velocity.error.connected-server-error
[19:39:32] [Netty epoll Worker #0/INFO] [com.velocitypowered.proxy.connection.MinecraftConnection]: [server connection] Kaydax -> main has disconnected
[19:40:06] [Thread-4/INFO] [com.velocitypowered.proxy.VelocityServer]: Shutting down the proxy...
[19:40:06] [Thread-4/INFO] [com.velocitypowered.proxy.network.ConnectionManager]: Closing endpoint /0.0.0.0:25566

The build that seems to work without this issue is 3.2.0 Build 261, so after that build seems to add a breaking change that makes ambassador break

Connection problems

I have updated Velocity, the ForgeClientResetPacket client mod is 0.2.3. When i try to connect on second server, i get this error:
image

In console:

 unable to connect to server factions
com.velocitypowered.proxy.util.except.QuietRuntimeException: The connection to the remote server was unexpectedly closed.

Minecraft version: 1.19.2
Velocity version: velocity-3.3.0-SNAPSHOT-330
Forge version: 43.3.7
Forge mods: proxy-compatible-forge-1.19.2-1.1.4

Unable to connect to non-modded server

Some players cannot join the server for some reason. I think if you fix this error, the mod will become really stable.
This error shows up in the proxy.

Here's the log: https://pastebin.com/raw/TnmB7w5X

exception encountered in org.adde0109.ambassador.velocity.backend.ForgeHandshakeSessionHandler@54ec7a05
java.lang.IllegalStateException: The continuation can only be resumed once.
at com.velocitypowered.proxy.event.VelocityEventManager$ContinuationTask.resume(VelocityEventManager.java:565) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at com.velocitypowered.proxy.event.VelocityEventManager$ContinuationTask.resume(VelocityEventManager.java:558) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at org.adde0109.ambassador.forge.FML2ClientConnectionPhase.complete(FML2ClientConnectionPhase.java:94) ~[?:?]
at org.adde0109.ambassador.velocity.backend.ForgeHandshakeSessionHandler.handle(ForgeHandshakeSessionHandler.java:52) ~[?:?]
at com.velocitypowered.proxy.protocol.packet.ServerLoginSuccess.handle(ServerLoginSuccess.java:125) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:143) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at com.velocitypowered.proxy.protocol.netty.AutoReadHolderHandler.channelRead(AutoReadHolderHandler.java:57) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:92) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.2.0-SNAPSHOT (git-d9ee34fe-b219)]
at java.lang.Thread.run(Thread.java:833) ~[?:?]

Error when connecting to ChromaSky2 1.16.5 modpack

`[23:06:54 INFO]: [server connection] Longtianmu -> chromasky2 has connected
[23:06:55 ERROR]: [server connection] Longtianmu -> chromasky2: exception encountered in com.velocitypowered.proxy.connection.backend.LoginSessionHandler@4b57b34f

io.netty.handler.codec.EncoderException: java.lang.IllegalArgumentException: Unable to find id for packet of type com.velocitypowered.proxy.protocol.packet.PluginMessage in SERVERBOUND protocol 1.16.4
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:110) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.connection.MinecraftConnection.write(MinecraftConnection.java:218) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.connection.client.InitialConnectSessionHandler.handle(InitialConnectSessionHandler.java:49) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.protocol.packet.PluginMessage.handle(PluginMessage.java:104) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:142) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:89) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:58) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:487) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:385) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Unable to find id for packet of type com.velocitypowered.proxy.protocol.packet.PluginMessage in SERVERBOUND protocol 1.16.4
at com.velocitypowered.proxy.protocol.StateRegistry$PacketRegistry$ProtocolRegistry.getPacketId(StateRegistry.java:469) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.protocol.netty.MinecraftEncoder.encode(MinecraftEncoder.java:49) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at com.velocitypowered.proxy.protocol.netty.MinecraftEncoder.encode(MinecraftEncoder.java:29) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[velocity.jar:3.1.2-SNAPSHOT (git-e8bf6ab5-b161)]
... 55 more`

Ambassador-Velocity-1.4.3-beta-all does not create a profile

MineCraft Version: 1.20.1
Forge: 47.2.20

So I can only use velocity-3.2.0-SNAPSHOT-260 and Ambassador-Velocity-1.4.2-beta-all to create the file.
Then switch to velocity-3.3.0-SNAPSHOT-319 to make sure the plugin works correctly
If I use velocity-3.3.0-SNAPSHOT-319 and Ambassador-Velocity-1.4.3-beta-all directly, the following warning will appear:
[01:38:02 WARN]: The server channel initializer has been replaced by org.adde0109.ambassador.Ambassador.inject(Ambassador.java:130) [01:38:02 WARN]: The backend channel initializer has been replaced by org.adde0109.ambassador.Ambassador.inject(Ambassador.java:133)

name is not valid, must match: [a-z0-9/\-_]* got config.common

Velocity -3.3.0 snapshot-363
Ambassador v1.5.2-beta

On Connecting to a server i get this error
[01:39:36 ERROR]: [server connection] Chickon98 -> colony: exception encountered in org.adde0109.ambassador.velocity.backend.ForgeLoginSessionHandler@65ef7574 io.netty.handler.codec.DecoderException: java.lang.IllegalArgumentException: name is not valid, must match: [a-z0-9/\-_]* got config.common at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at com.velocitypowered.proxy.protocol.netty.AutoReadHolderHandler.channelRead(AutoReadHolderHandler.java:57) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:92) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at java.base/java.lang.Thread.run(Thread.java:840) [?:?] Caused by: java.lang.IllegalArgumentException: name is not valid, must match: [a-z0-9/\-_]* got config.common at com.google.common.base.Preconditions.checkArgument(Preconditions.java:435) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier.create(MinecraftChannelIdentifier.java:59) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier.from(MinecraftChannelIdentifier.java:82) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at org.adde0109.ambassador.forge.packet.ModListPacket.read(ModListPacket.java:40) ~[?:?] at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperCodec.decode(ForgeLoginWrapperCodec.java:91) ~[?:?] at org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperCodec.decode(ForgeLoginWrapperCodec.java:20) ~[?:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) ~[velocity.jar:3.3.0-SNAPSHOT (git-74c932e5-b363)] ... 33 more

    Happens on only one server can still connect to other one on the proxy fine

Plain Forge cannot connect to Ambassador-1.4.1 (on Velocity-3.2.0 v265)

Current rundown of things:

Ambassador: Ambassador-Velocity-1.4.1
Velocity: velocity-3.2.0-SNAPSHOT-265
Legacy Forwarding
Backend server being Paper 1.17.1, with ViaVersion, has always worked in the past
After conecting with Forge 1.19.2 (no mods), I get:
If you wish to use IP forwarding, please enable it in your BungeeCord config as well!
Works fine without Ambassador as you'd assume

Let me know what I can test to see if we can narrow this down further

Disconnect seconds after joining modded server

99% of players join just fine. One individual (separate from other issue) often gets kicked shortly after joining- especially when around large builds. It is worth mentioning he lives on the opposite side of the world.

Proxy is running latest ambassador/velocity
Lobby is spigot 1.19, modded servers are 1.16.5 on arclight with PCF mod

https://pastebin.com/yjJfHuy2
Console shows error: [minecraft/NetworkManager]: handleDisconnection() called twice

Can't work in latest version of velocity

Ambassador cannot work after velocity build ID 319

Version Information

Velocity: 3.3.0-SNAPSHOT
Velocity build ID: 320
Ambassador: 1.4.3-beta
Minecraft: 1.20.1
Forge: 47.2.19

Plugin list

Ambassador

latest.log

Realized why AuthMeVelocity Doesnt Support Ambassador you don't have API

To allow another Velocity plugin to access the MapWithExpiration hashmap in your Ambassador plugin, you can create an API that provides a way for other plugins to interact with it. Here's a basic example of how you can create such an API:

  1. Define an interface that exposes the functionality you want to provide to other plugins. This interface should be placed in a separate package to ensure it's accessible to other plugins.

  2. Implement the interface in your Ambassador class and register an instance of this class as a service that other plugins can access.

Here's how you can do it:

  1. Define the interface in a new package (e.g., org.adde0109.ambassador.api):
package org.adde0109.ambassador.api;

import org.adde0109.ambassador.Ambassador;

import java.util.Map;

public interface AmbassadorAPI {
    Map<String, Ambassador.RegisteredServer> getTemporaryForced();
}
  1. Implement the interface in your Ambassador class:
import org.adde0109.ambassador.api.AmbassadorAPI;

public class Ambassador implements AmbassadorAPI {

    // Existing code...

    @Override
    public Map<String, RegisteredServer> getTemporaryForced() {
        return TEMPORARY_FORCED;
    }

    // Existing code...
}
  1. Register an instance of your Ambassador class as a service in your Ambassador plugin's onProxyInitialization method:
import com.velocitypowered.api.plugin.PluginManager;

public class Ambassador {

    // Existing code...

    @Inject
    public Ambassador(ProxyServer server, PluginManager pluginManager, Logger logger, @DataDirectory Path dataDirectory, Metrics.Factory metricsFactory) {
        this.server = server;
        this.logger = logger;
        this.dataDirectory = dataDirectory;
        this.metricsFactory = metricsFactory;
        Ambassador.instance = this;

        // Register the API
        pluginManager.registerService(AmbassadorAPI.class, this, this.server, PluginContainer.MINECRAFT);
    }

    // Existing code...
}
  1. Another plugin can now retrieve the MapWithExpiration hashmap from your Ambassador plugin like this:
import org.adde0109.ambassador.api.AmbassadorAPI;
import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.plugin.PluginContainer;

public class YourPlugin {

    private final AmbassadorAPI ambassadorAPI;

    public YourPlugin(ProxyServer server, PluginContainer pluginContainer) {
        this.ambassadorAPI = server.getServices().get(AmbassadorAPI.class).get();
    }

    public void someMethod() {
        // Access the TEMPORARY_FORCED hashmap
        Map<String, RegisteredServer> temporaryForced = ambassadorAPI.getTemporaryForced();
        // Use the hashmap as needed
    }
}

By following these steps, you can create an API for your Ambassador plugin that allows other Velocity plugins to access the MapWithExpiration hashmap.

By allowing access to at least this HashMap will allow the authme plugins to properly bypass authorization for when users are being sent to modded servers as they require the ambassador plugin to disconnect them and reconnect bypassing the authorization hub so doing this will still be secure will ensuring they properly logged in on the lobby to go to the modded server before hand etc..

"If you wish to use IP forwarding, please enable it in your BungeeCord config as well!"

I have both latest version of Ambassador (1.3.1) and latest version of pcf (1.19.2-1.1.1) working on arclight (1.19.2-1.0.1) and I keep getting the error. I have followed instructions exactly and am connecting through the proxy, set online-mode to false in arclight. set bungeecord to true in spigot.yml, set the modern forwarding secret to the correct one but I am still getting these errors.

Velocity:

[23:57:54 INFO]: [connected player] RigBot (/172.22.64.1:50849) has connected
[23:57:54 ERROR]: [connected player] RigBot (/172.22.64.1:50849): disconnected while connecting to Cobblemon: If you wish to use IP forwarding, please enable it in your BungeeCord config as well!

Arclight:

/127.0.0.1:57498 lost connection: If you wish to use IP forwarding, please enable it in your BungeeCord config as well!

Nothing happens when placed in velocity plugins folder.

I downloaded the ambassador folder and placed it into the velocity plugins folder, relaunched velocity but upon startup velocity says "loaded 0 plugins" and I did not notice any change of files. Is this normal? I did not see the ambassador.toml to edit.

Players arent recognized when switching servers within the velocity network

At first I thought this was an issue with velocity at first but its not at all after my issue being solved when I removed ambassador but I NEED it so I can go to my forge server.

when I join the proxy which goes to my paper server, it does the obvious, It goes up by one.

image

but when I go into my forge server, it says there are no players playing.

image

And when I go back to the paper server, same issue

image

if it matters, AS OF RIGHT NOW I am using a 1.19.3 paper server and a 1.16.5 forge Arclight server.

Ive checked my ports, Ips and everything seems to be fine
image

thanks

Edit: the reason I know its ambassador and not anything else is because I used 2 Vanilla paper servers to test if its the proxy or ambassador and they both have the player count at 1 no matter which one I join when ambassador is removed. When I leave ambassador in the plugins of the proxy, Thats when the player count goes down when switching servers with both paper servers.

[Bug] An internal error occurred in your connection

Velocity 3.2.0
ambassador 1.1.7-alpha

After Velocity has been running for about 24 to 48 hrs, users attempting to connect to Forge instance receive "An internal error has occurred in your connection". The only solution is to restart Velocity, whereby users will be able to join again.

Also, when it is operating 'correctly', Forge users will receive a timeout error on their first connection attempt, but succeed on the second attempt to join.

Vanilla and Forge clients joining a vanilla instance do not have any connection issues, even when the Forge users are having problems joining the Forge instance.

Connectivity problems

Im facing these two problems:

image
From what I know the first error only appears on some users.

The second one is: out-of-order chat packet received. Did you system time change?

This second error is much more common.

Im not sure if its a velocity problem or an ambassador issue since I had the exact same server without proxy and didnt get these errors.

I hope you can help me :/.

Thanks.

[1.5.2 BETA] Unable to switch servers

[11:30:58 INFO]: [server connection] Player -> Server1 has connected
[11:31:10 INFO]: [server connection] Player -> Server2 has connected
[11:31:11 ERROR] [ambassador]: Unable to switch due to the registries of Server2 being different from the registries of Server1
[11:31:11 INFO]: [server connection] Player -> Server2 has disconnected
[11:31:11 ERROR]: [connected player] Player (ip): unable to connect to server Server2
com.velocitypowered.proxy.util.except.QuietRuntimeException: The connection to the remote server was unexpectedly closed.

Unable to switch servers on ambassador v1.5.2 beta. Everything works fine on ambassador v1.4.4.
Using Minecraft 1.19.2, Forge 43.3.0, Velocity 3.3.9-390, both servers have the same mods.

Announce-forge does not work!

When enabling announce-forge in the Velocity TOML config, clients still see the proxy as a vanilla server.

The ServerStatusPing from the forge server to the client is also not passed through in my testing.

Please correct me if this is expected behaviour.

I would appreciate if this was looked into. I am facing this issue when running the BetterCompatibilityChecker mod on both my client and server.

Problem connecting to the server

Hello, I have a problem connecting to my server.
my own server version and core is - paper-1.18.2-388
Installed on it:
limboapi-1.1.22
LimboAuth.Social.Addon-1.0.11-SNAPSHOT
limboauth-1.1.14-SNAPSHOT
limbofilter-1.1.16
LimboReconnect-1.1.5

with your plugin:
Ambassador-Velocity-1.4.4-all

proxy:
velocity-3.3.0-SNAPSHOT-376.jar

With limbofilter i got this
image

When I leave only limboapi:
image

Forge version: forge-1.18.2-40.2.18
It works fine with vanilla Minecraft.
With fabric too

I apologize for my English, I'm using a translator. If something needs to be attached, logs are possible. Please inform.

Stuck on invalid player data

Im running arclight 1.19.2 and velocity modern forward with ambassador and PCF and Im getting "invalid player data" every time I try to join the server, tried reseting it and creating a new one but still the same.

Any possible fix? Thanks.

image

Unable to connect to lobby

Every time I use Ambassador I am unable to connect to my proxy, and I get "Unable to connect to lobby: If you wish to use IP forwarding, please enable it in your BungeeCord config as well!" I remove the plugin and it works again so I think I have the bungeecord config correct.

Incompatibility issues with Mohist Server's Velocity Support

Tip

Server Info (Version)
Velocity: 3.3.0
Ambassador: 1.4.4
Backend Server: Mohist
Mohist: 1.18.2-173

How To Work in not include Proxy-Compatible-Forge

Mohist have a config file in path mohist-config/mohist.yml
this config include velocity options

My Suggesstion

Compatible Mohist Server's Velocity Support

Screenshot

image

Extra Link

Mohist

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.