elytrium / limbohub Goto Github PK
View Code? Open in Web Editor NEWGet a virtual hub directly on Velocity proxy.
License: GNU Affero General Public License v3.0
Get a virtual hub directly on Velocity proxy.
License: GNU Affero General Public License v3.0
Захотел протестировать хаб на Velocity, поставил плагин, а он начал выкидывать ошибки.
Проблема причём проявляется не только на дев-билдах, но и на релизе.
Артифакт 1.0.5 скачивал отсюда: https://github.com/Elytrium/LimboHub/tree/1.0.5
[08:11:34 ERROR]: Couldn't pass ProxyInitializeEvent to limbohub
java.lang.NoClassDefFoundError: com/velocitypowered/proxy/protocol/packet/UpsertPlayerInfo$Action
at net.elytrium.limbohub.LimboHub.lambda$reload$13(LimboHub.java:322) ~[?:?]
at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
at net.elytrium.limbohub.LimboHub.reload(LimboHub.java:321) ~[?:?]
at net.elytrium.limbohub.LimboHub.onProxyInitialization(LimboHub.java:155) ~[?:?]
at net.elytrium.limbohub.Lmbda$5.execute(Unknown Source) ~[?:?]
at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:597) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
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:840) [?:?]
Caused by: java.lang.ClassNotFoundException: com.velocitypowered.proxy.protocol.packet.UpsertPlayerInfo$Action
at com.velocitypowered.proxy.plugin.PluginClassLoader.loadClass0(PluginClassLoader.java:87) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
at com.velocitypowered.proxy.plugin.PluginClassLoader.loadClass(PluginClassLoader.java:64) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
... 11 more
Не долго думая решился поискать новые билды для limboapi (до дев-билда с ветки 1.1.21 стоял билд 1.1.20 из релиза), нашёл-поставил-запустил, теперь выдаёт вот такие ошибки.
[08:20:07 ERROR]: Couldn't pass ProxyInitializeEvent to limbohub
net.elytrium.commons.utils.reflection.ReflectionException: An unexpected internal error was caught during the reflection operations.
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeId(PreparedPacketFactory.java:188) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeSingle(PreparedPacketFactory.java:243) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeSingle(PreparedPacketFactory.java:224) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacket.prepare(PreparedPacket.java:136) ~[?:?]
at net.elytrium.limboapi.injection.packet.PreparedPacketImpl.prepare(PreparedPacketImpl.java:89) ~[?:?]
at net.elytrium.limboapi.injection.packet.PreparedPacketImpl.prepare(PreparedPacketImpl.java:26) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacket.prepare(PreparedPacket.java:51) ~[?:?]
at net.elytrium.limboapi.injection.packet.PreparedPacketImpl.prepare(PreparedPacketImpl.java:34) ~[?:?]
at net.elytrium.limboapi.injection.packet.PreparedPacketImpl.prepare(PreparedPacketImpl.java:26) ~[?:?]
at net.elytrium.limboapi.server.LimboImpl.createDelayedChunksPackets(LimboImpl.java:833) ~[?:?]
at net.elytrium.limboapi.server.LimboImpl.refresh(LimboImpl.java:233) ~[?:?]
at net.elytrium.limboapi.server.LimboImpl.<init>(LimboImpl.java:174) ~[?:?]
at net.elytrium.limboapi.LimboAPI.createLimbo(LimboAPI.java:380) ~[?:?]
at net.elytrium.limbohub.LimboHub.reload(LimboHub.java:343) ~[?:?]
at net.elytrium.limbohub.LimboHub.onProxyInitialization(LimboHub.java:155) ~[?:?]
at net.elytrium.limbohub.Lmbda$5.execute(Unknown Source) ~[?:?]
at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:597) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[velocity.jar:3.3.0-SNAPSHOT (git-b9b11665-b343)]
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:840) [?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.util.Map.get(Object)" is null
at net.elytrium.limboapi.server.world.SimpleBlockEntity.getID(SimpleBlockEntity.java:54) ~[?:?]
at net.elytrium.limboapi.server.world.SimpleBlockEntity.getID(SimpleBlockEntity.java:49) ~[?:?]
at net.elytrium.limboapi.server.world.SimpleBlockEntity$Entry.getID(SimpleBlockEntity.java:137) ~[?:?]
at net.elytrium.limboapi.protocol.packets.s2c.ChunkDataPacket.encode(ChunkDataPacket.java:166) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeId(PreparedPacketFactory.java:186) ~[?:?]
... 21 more
Билд Velocity сам по себе новый, обновлялся недавно, что делать не понимаю. Вполне возможно, что это я чего-то не так делаю, поэтому заранее прошу прощения, если очень сильно туплю.
Using latest LimboHub and LimboAPI
Opening the menu using 1.20.6 and 1.14.2 will not cause this issue, I only tested 1.12.2, 1.14.2, and 1.20.6
Entering the open menu using 1.12.2 will result in being kicked out of the server and an error message
Error:
[21:10:12 ERROR]: [initial connection] /192.168.40.1:57152: exception encountered in net.elytrium.limboapi.server.LimboSessionHandlerImpl@73abc1a
net.elytrium.commons.utils.reflection.ReflectionException: An unexpected internal error was caught during the reflection operations.
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeId(PreparedPacketFactory.java:188) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeSingle(PreparedPacketFactory.java:243) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeSingle(PreparedPacketFactory.java:216) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.handler.PreparedPacketEncoder.write(PreparedPacketEncoder.java:69) ~[?:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1015) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannel.write(AbstractChannel.java:301) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at com.velocitypowered.proxy.connection.MinecraftConnection.delayedWrite(MinecraftConnection.java:249) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at net.elytrium.limboapi.server.LimboPlayerImpl.writePacket(LimboPlayerImpl.java:79) ~[?:?]
at net.elytrium.limbohub.protocol.container.Container.open(Container.java:45) ~[?:?]
at net.elytrium.limbohub.handler.HubSessionHandler.handleAction(HubSessionHandler.java:281) ~[?:?]
at net.elytrium.limbohub.handler.HubSessionHandler.onGeneric(HubSessionHandler.java:236) ~[?:?]
at net.elytrium.limboapi.server.LimboSessionHandlerImpl.handleGeneric(LimboSessionHandlerImpl.java:370) ~[?:?]
at net.elytrium.limbohub.protocol.packets.Interact.handle(Interact.java:62) ~[?:?]
at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:153) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:92) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity-3.3.0-SNAPSHOT-390.jar:3.3.0-SNAPSHOT (git-afd8b55f-b390)]
at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
Caused by: java.lang.IllegalArgumentException: Item minecraft:black_stained_glass_pane is not supported on 1.12.2
at net.elytrium.limbohub.protocol.item.ItemStack.lambda$encodeLegacy$3(ItemStack.java:107) ~[?:?]
at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[?:?]
at net.elytrium.limbohub.protocol.item.ItemStack.encodeLegacy(ItemStack.java:106) ~[?:?]
at net.elytrium.limbohub.protocol.item.ItemStack.encode(ItemStack.java:63) ~[?:?]
at net.elytrium.limbohub.protocol.packets.SetContainerContent.encode(SetContainerContent.java:60) ~[?:?]
at net.elytrium.limboapi.thirdparty.fastprepare.PreparedPacketFactory.encodeId(PreparedPacketFactory.java:186) ~[?:?]
... 55 more
it seems like the client couldn't load the chunk packet from LimboHub (we are using the 1.0.5 branch)
Failed to handle packet adu@7317d0ee
java.lang.IllegalArgumentException: No value with id 6
at jn.b(SourceFile:19)
at duo.a(SourceFile:83)
at dus.a(SourceFile:175)
at dul.a(SourceFile:159)
at duk.a(SourceFile:458)
at fxt.a(SourceFile:117)
at fxy.a(SourceFile:787)
at fxy.a(SourceFile:752)
at adu.a(SourceFile:53)
at adu.a(SourceFile:14)
at zz.a(SourceFile:25)
at bpm.d(SourceFile:162)
at bpq.d(SourceFile:23)
at bpm.A(SourceFile:136)
at bpm.bA(SourceFile:121)
at ffh.c(SourceFile:1275)
at ffh.f(SourceFile:888)
at net.minecraft.client.main.Main.main(SourceFile:265)
This is the client error
I searched here for any "adu" class
and it says that the error is related to ClientboundLevelChunkWithLightPacket
I set the world-file-type to STRUCTURE and the world-file-path to TheLobby.nbt and placed TheLobby.nbt in the plugin folder. When I run Velocity and enter the server with Minecraft 1.20.4, I get the following error: Internal Exception: io.netty.handler.codec.DecoderException: nbt.minecraft.class_8911: Loading NBT data. What is the problem? Below is my velocity dump.
{
"versionInfo": {
"name": "Velocity",
"vendor": "Velocity Contributors",
"version": "3.3.0-SNAPSHOT (git-00ef92bc-b312)"
},
"platform": {
"operatingSystemType": "Windows 10",
"operatingSystemVersion": "10.0",
"operatingSystemArchitecture": "amd64",
"javaVersion": "17.0.3",
"javaVendor": "GraalVM Community",
"listener": {
"listenerType": "NIO",
"compression": "Java",
"encryption": "Java"
}
},
"config": {
"bind": "0.0.0.0:25565",
"motd": "\u003c#9e366d\u003eArt Square Server",
"showMaxPlayers": 1,
"onlineMode": true,
"preventClientProxyConnections": false,
"playerInfoForwardingMode": "MODERN",
"announceForge": false,
"onlineModeKickExistingPlayers": false,
"pingPassthrough": "DISABLED",
"advanced": {
"compressionThreshold": 256,
"compressionLevel": -1,
"loginRatelimit": 3000,
"connectionTimeout": 5000,
"readTimeout": 30000,
"proxyProtocol": false,
"tcpFastOpen": false,
"bungeePluginMessageChannel": true,
"showPingRequests": false,
"failoverOnUnexpectedServerDisconnect": true,
"announceProxyCommands": false,
"logCommandExecutions": false,
"logPlayerConnections": false
},
"query": {
"queryEnabled": false,
"queryPort": 25565,
"queryMap": "Velocity",
"showPlugins": false
},
"enablePlayerAddressLogging": true,
"forceKeyAuthentication": false,
"servers": {
"survival": {
"currentPlayers": 0,
"host": "127.0.0.1",
"port": 25566
},
"playground": {
"currentPlayers": 0,
"host": "127.0.0.1",
"port": 25567
}
},
"connectOrder": [
"playground"
],
"forcedHosts": {}
},
"plugins": [
{
"id": "limboapi",
"name": "LimboAPI",
"version": "1.1.18",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"description": "Velocity plugin for making virtual servers.",
"url": "https://elytrium.net/"
},
{
"id": "limbohub",
"name": "LimboHub",
"version": "1.0.4",
"authors": [
"JNNGL"
],
"dependencies": [
"limboapi"
]
},
{
"id": "skinsrestorer",
"name": "SkinsRestorer",
"version": "15.0.4",
"authors": [
"knat",
"AlexProgrammerDE",
"Blackfire62",
"McLive"
],
"description": "Ability to restore/change skins on servers!",
"url": "https://skinsrestorer.net",
"dependencies": [
"floodgate"
]
},
{
"id": "velocity-tools",
"name": "VelocityTools",
"version": "1.2.0",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"url": "https://elytrium.net/"
},
{
"id": "velocitywhitelist",
"name": "VelocityWhitelist",
"version": "0.1.2",
"authors": [
"Fallen_Breath"
],
"description": "A simple whitelist plugin for velocity",
"url": "https://github.com/TISUnion/VelocityWhitelist"
}
]
}
If there is a menu for selecting servers, then it would be nice to add support for miniplaceholders to the plugin.
As for me, this would be a good solution for displaying online on a particular server, and indeed for displaying any information about servers.
I was kicked by "connection timed out" if i stayed a long time in limbohub
когда он пытается закинуть на сервер а такаого сервера нет то кикает с ошибкой
LOGS: latest.log
world-coords:
x: -20
y: 0
z: -20
dont use float data like 20.5
if set 20.X -> auto return to 20 :(
velocity b328
limbohub 1.0.5
логи - https://logpaste.com/Xhx0C2L1
I'm getting this error:
Couldn't pass ProxyInitializeEvent to limbohub
com.velocitypowered.proxy.util.except.QuietDecoderException: Bad VarInt decoded
And velocity just connects to one of my fallback servers instead of the hub, after auth
Hello, can you help me please?
I wanna use the LimboHub as a fallback server (try) server, but I can't config it.
Situation:
I can try connect to parkour server from LimboHub lobby, but my server under maintenance and can't connect it.
Problem:
Always kicking the player from the HUB / Velocity server, can't connect automatically for LimboHub.
First try:
Result message: Unable to connect you to parkour. Please try again later.
Velocity config:
[servers]
parkour = "x.x.x.x:25565"
hub = "127.0.0.1:25565"
try = []
Logs:
proxy-main_1 | [17:04:42 INFO] [geyser]: /W.X.Y.Z:38814 tried to connect!
proxy-main_1 | [17:04:43 INFO] [geyser]: Player connected with username userfoobar
proxy-main_1 | [17:04:44 INFO] [geyser]: userfoobar (logged in as: userfoobar) has connected to the Java server
proxy-main_1 | [17:04:44 INFO] [floodgate]: Floodgate player who is logged in as userfoobar 00000000-0000-0000-0000-00000000 joined
proxy-main_1 | [17:04:46 INFO] [limboapi]: userfoobar (/W.X.Y.Z:0) has connected to the LimboHub Limbo
proxy-main_1 | [17:05:06 INFO] [limboapi]: userfoobar (/W.X.Y.Z:0) has disconnected from the LimboHub Limbo
proxy-main_1 | [17:05:07 ERROR]: [connected player] userfoobar (/W.X.Y.Z:0): unable to connect to server parkour
proxy-main_1 | java.net.UnknownHostException: server-parkour: Name or service not known
[...]
proxy-main_1 | [17:05:07 INFO]: [connected player] userfoobar (/W.X.Y.Z:0) has disconnected: Unable to connect you to parkour. Please try again later.
proxy-main_1 | [17:05:07 INFO] [floodgate]: Floodgate player logged in as userfoobar disconnected
proxy-main_1 | [17:05:07 INFO] [geyser]: userfoobar has disconnected from the Java server because of Unable to connect you to parkour. Please try again later.
Second try:
Result message: You are already connected to this proxy!
Velocity config:
[servers]
parkour = "x.x.x.x:25565"
hub = "127.0.0.1:25565"
try = ["hub"]
proxy-main_1 | [17:10:12 INFO] [geyser]: /W.X.Y.Z:38814 tried to connect!
proxy-main_1 | [17:10:14 INFO] [geyser]: Player connected with username userfoobar
proxy-main_1 | [17:10:14 INFO] [geyser]: userfoobar (logged in as: userfoobar) has connected to the Java server
proxy-main_1 | [17:10:14 INFO] [floodgate]: Floodgate player who is logged in as userfoobar 00000000-0000-0000-0000-00000000 joined
proxy-main_1 | [17:10:16 INFO] [limboapi]: userfoobar (/W.X.Y.Z:0) has connected to the LimboHub Limbo
proxy-main_1 | [17:10:33 INFO] [limboapi]: userfoobar (/W.X.Y.Z:0) has disconnected from the LimboHub Limbo
proxy-main_1 | [17:10:33 ERROR]: [connected player] userfoobar (/W.X.Y.Z:0): unable to connect to server parkour
[...]
proxy-main_1 | [17:10:33 INFO]: [server connection] userfoobar -> hub has connected
proxy-main_1 | [17:10:33 INFO]: [connected player] userfoobar (/127.0.0.1:46992) has disconnected: You are already connected to this proxy!
proxy-main_1 | [17:10:33 INFO]: [server connection] userfoobar -> hub has disconnected
proxy-main_1 | [17:10:33 ERROR]: [connected player] userfoobar (/W.X.Y.Z:0): disconnected while connecting to hub: You are already connected to this proxy!
proxy-main_1 | [17:10:33 INFO]: [connected player] userfoobar (/W.X.Y.Z:0) has disconnected: Unable to connect to hub: You are already connected to this proxy!
proxy-main_1 | [17:10:33 INFO] [floodgate]: Floodgate player logged in as userfoobar disconnected
proxy-main_1 | [17:10:33 INFO] [geyser]: userfoobar has disconnected from the Java server because of Unable to connect to hub: You are already connected to this proxy!
Thank you!
[00:29:49 WARN] [fastmotd]: Failed to load favicon example-com-server-icon.png. Ensure that the file exists or modify config.yml
[00:29:50 WARN] [fastmotd]: Failed to load favicon example-com-server-icon.png. Ensure that the file exists or modify config.yml
[00:29:50 INFO] [limboapi]: Creating and preparing packets...
[00:29:50 WARN] [limboapi]: Currently working only with 1.16 - 1.20.1 versions, modify the plugins/limboapi/config.yml file if you want the plugin to work with other versions.
[00:29:50 INFO] [limboapi]: Loaded!
[00:29:50 INFO] [limbofilter]: Current captcha generator settings will consume 0.69GB RAM normally and 1.37GB RAM on reloads
[00:29:50 INFO] [limbofilter]: Modify the config to decrease RAM consumption
[00:29:52 ERROR]: Couldn't pass ProxyInitializeEvent to limbohub
net.elytrium.commons.utils.reflection.ReflectionException: An unexpected internal error was caught during the reflection operations.
at net.elytrium.limboapi.protocol.LimboProtocol.register(LimboProtocol.java:444) ~[?:?]
at net.elytrium.limboapi.protocol.LimboProtocol.register(LimboProtocol.java:415) ~[?:?]
at net.elytrium.limboapi.server.LimboImpl.registerPacket(LimboImpl.java:540) ~[?:?]
at net.elytrium.limbohub.LimboHub.reload(LimboHub.java:355) ~[?:?]
at net.elytrium.limbohub.LimboHub.onProxyInitialization(LimboHub.java:155) ~[?:?]
at net.elytrium.limbohub.Lmbda$9.execute(Unknown Source) ~[?:?]
at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity-3.2.0-SNAPSHOT-260.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:597) ~[velocity-3.2.0-SNAPSHOT-260.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[velocity-3.2.0-SNAPSHOT-260.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
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) [?:?]
Caused by: net.elytrium.commons.utils.reflection.ReflectionException: An unexpected internal error was caught during the reflection operations.
at net.elytrium.limboapi.protocol.LimboProtocol.register(LimboProtocol.java:453) ~[?:?]
at net.elytrium.limboapi.protocol.LimboProtocol.register(LimboProtocol.java:442) ~[?:?]
... 11 more
Caused by: java.lang.IllegalArgumentException: Can not register class CloseContainer with id 46 for 1.8 because another packet is already registered
at com.velocitypowered.proxy.protocol.StateRegistry$PacketRegistry.register(StateRegistry.java:513) ~[velocity-3.2.0-SNAPSHOT-260.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at net.elytrium.limboapi.protocol.LimboProtocol.register(LimboProtocol.java:451) ~[?:?]
at net.elytrium.limboapi.protocol.LimboProtocol.register(LimboProtocol.java:442) ~[?:?]
... 11 more
[00:29:54 INFO] [limbofilter]: Captcha generated in 2387 ms.
[00:29:54 INFO]: Listening on /[0:0:0:0:0:0:0:0%0]:25565
[00:29:54 INFO]: Done (7.66s)!
Run ./gradlew build
Downloading https://services.gradle.org/distributions/gradle-7.4.1-bin.zip
...........10%...........20%...........30%...........40%...........50%...........60%...........70%...........80%...........90%...........100%
Welcome to Gradle 7.4.1!
Here are the highlights of this release:
For more details see https://docs.gradle.org/7.4.1/release-notes.html
Starting a Gradle Daemon (subsequent builds will be faster)
Task :generateTemplates
Task :compileJava FAILED
2 actionable tasks: 2 executed
/home/runner/work/LimboHub/LimboHub/src/main/java/net/elytrium/limbohub/entities/NPC.java:22: error: cannot find symbol
import com.velocitypowered.proxy.protocol.packet.LegacyPlayerListItem;
^
symbol: class LegacyPlayerListItem
location: package com.velocitypowered.proxy.protocol.packet
/home/runner/work/LimboHub/LimboHub/src/main/java/net/elytrium/limbohub/entities/NPC.java:23: error: cannot find symbol
import com.velocitypowered.proxy.protocol.packet.RemovePlayerInfo;
^
symbol: class RemovePlayerInfo
location: package com.velocitypowered.proxy.protocol.packet
/home/runner/work/LimboHub/LimboHub/src/main/java/net/elytrium/limbohub/entities/NPC.java:24: error: cannot find symbol
import com.velocitypowered.proxy.protocol.packet.UpsertPlayerInfo;
^
symbol: class UpsertPlayerInfo
location: package com.velocitypowered.proxy.protocol.packet
3 errors
FAILURE: Build failed with an exception.
Compilation failed; see the compiler error output for details.
Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
BUILD FAILED in 18s
Error: Process completed with exit code 1.
{
"versionInfo": {
"name": "Velocity",
"vendor": "Velocity Contributors",
"version": "3.2.0-SNAPSHOT (git-37fedf50-b260)"
},
"platform": {
"operatingSystemType": "Linux",
"operatingSystemVersion": "6.1.0-10-amd64",
"operatingSystemArchitecture": "amd64",
"javaVersion": "20.0.1",
"javaVendor": "GraalVM Community",
"listener": {
"listenerType": "epoll",
"compression": "libdeflate (Linux x86_64)",
"encryption": "OpenSSL 3.0.x (Linux x86_64)"
}
},
"config": {
"bind": "0.0.0.0:25565",
"motd": "WorldMandia Proxy",
"showMaxPlayers": 1000,
"onlineMode": false,
"preventClientProxyConnections": false,
"playerInfoForwardingMode": "MODERN",
"announceForge": false,
"onlineModeKickExistingPlayers": false,
"pingPassthrough": "DISABLED",
"advanced": {
"compressionThreshold": 256,
"compressionLevel": 9,
"loginRatelimit": 3000,
"connectionTimeout": 30000,
"readTimeout": 60000,
"proxyProtocol": true,
"tcpFastOpen": true,
"bungeePluginMessageChannel": true,
"showPingRequests": false,
"failoverOnUnexpectedServerDisconnect": true,
"announceProxyCommands": true,
"logCommandExecutions": false,
"logPlayerConnections": true
},
"query": {
"queryEnabled": false,
"queryPort": 25577,
"queryMap": "Velocity",
"showPlugins": false
},
"enablePlayerAddressLogging": true,
"forceKeyAuthentication": false,
"servers": {
"server1": {
"currentPlayers": 0,
"host": "172.18.0.1",
"port": 30000
}
},
"connectOrder": [
"server1"
],
"forcedHosts": {
"play.worldmandia.cc": [
"server1"
]
}
},
"plugins": [
{
"id": "protocolize",
"name": "Protocolize",
"version": "v2",
"authors": [
"Exceptionflug"
]
},
{
"id": "commandblocker",
"name": "CommandBlocker",
"version": "1.3.1",
"authors": [
"TauCubed"
],
"description": "It regex. It tab. but most important, It blocc.",
"url": "https://gitlab.com/TauCu/command-blocker",
"dependencies": [
"protocolize"
]
},
{
"id": "fastmotd",
"name": "FastMOTD",
"version": "1.0.3",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"description": "MOTD plugin that uses FastPrepareAPI.",
"url": "https://elytrium.net/"
},
{
"id": "limboapi",
"name": "LimboAPI",
"version": "1.1.16",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"description": "Velocity plugin for making virtual servers.",
"url": "https://elytrium.net/"
},
{
"id": "limboauth",
"name": "LimboAuth",
"version": "1.1.13",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"url": "https://elytrium.net/",
"dependencies": [
"limboapi",
"floodgate"
]
},
{
"id": "limbofilter",
"name": "LimboFilter",
"version": "1.1.11",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"url": "https://elytrium.net/",
"dependencies": [
"limboapi"
]
},
{
"id": "limbohub",
"name": "LimboHub",
"version": "1.0.1",
"authors": [
"JNNGL"
],
"dependencies": [
"limboapi"
]
},
{
"id": "limboreconnect",
"name": "LimboReconnect",
"version": "1.1.1",
"authors": [
"SkyWatcher_2019",
"hevav"
]
},
{
"id": "luckperms",
"name": "LuckPerms",
"version": "5.4.98",
"authors": [
"Luck"
],
"description": "A permissions plugin",
"url": "https://luckperms.net"
},
{
"id": "skinsrestorer",
"name": "SkinsRestorer",
"version": "15.0.0-SNAPSHOT",
"authors": [
"knat",
"AlexProgrammerDE",
"Blackfire62",
"McLive"
],
"description": "Ability to restore/change skins on servers! (Offline and Online Mode)",
"url": "https://skinsrestorer.net",
"dependencies": [
"floodgate"
]
},
{
"id": "velocity_tools",
"name": "VelocityTools",
"version": "1.1.9",
"authors": [
"Elytrium (https://elytrium.net/)"
],
"url": "https://elytrium.net/"
}
]
}
version: "1.0.1"
# Available serializers:
# LEGACY_AMPERSAND - "&c&lExample &c&9Text".
# LEGACY_SECTION - "§c§lExample §c§9Text".
# MINIMESSAGE - "<bold><red>Example</red> <blue>Text</blue></bold>". (https://webui.adventure.kyori.net/)
# GSON - "[{"text":"Example","bold":true,"color":"red"},{"text":" ","bold":true},{"text":"Text","bold":true,"color":"blue"}]". (https://minecraft.tools/en/json_text.php/)
# GSON_COLOR_DOWNSAMPLING - Same as GSON, but uses downsampling.
serializer: LEGACY_AMPERSAND
main:
# World file type:
# SCHEMATIC (MCEdit .schematic, 1.12.2 and lower, not recommended)
# STRUCTURE (structure block .nbt, any Minecraft version is supported, but the latest one is recommended).
# WORLDEDIT_SCHEM (WorldEdit .schem, any Minecraft version is supported, but the latest one is recommended).
world-file-type: WORLDEDIT_SCHEM
world-file-path: "hub.schem"
# World time in ticks (24000 ticks == 1 in-game day)
world-ticks: 1000
# World light level (from 0 to 15)
world-light-level: 13
# Should we override block light level (to light up the nether and the end)
world-override-block-light-level: true
# Available: ADVENTURE, CREATIVE, SURVIVAL, SPECTATOR
game-mode: ADVENTURE
# Available dimensions: OVERWORLD, NETHER, THE_END
dimension: OVERWORLD
hub-command:
require-permission: false
aliases:
- "hub"
- "lobby"
# Message that will be sent when player joins the hub.
welcome-message:
- ""
# Title that will be displayed when player joins the hub.
welcome-title: ""
welcome-subtitle: ""
welcome-title-fade-in-millis: 100
welcome-title-stay-millis: 2000
welcome-title-fade-out-millis: 100
# Player will teleported back to the spawn position if it falls below the `y-limit` when enabled.
enable-y-limit: true
y-limit: -10
# Try increasing this value if NPC skins are not loading.
skin-load-seconds: 3
world-coords:
x: 0
y: 0
z: 0
player-coords:
x: 3.5
y: 1.0
z: 3.5
yaw: 90.0
pitch: 0.0
# Menu that will be opened when player joins the hub.
# Set to blank value (default-menu: "") to disable.
default-menu: ""
# List of boss bars that will be set for the player in the specified order. Set to empty list (bossbars: []) to disable.
bossbars:
- # Hides boss bar
hidden: true
name: "BossBar 1"
progress: 1.0
color: PINK
overlay: PROGRESS
# Set -1 to mark this boss bar as the last one. (Next boss bar won't be displayed)
stay-time-millis: 5000
sidebar:
enabled: false
title: "This is a sidebar."
lines:
- "&7Configure me in config.yml."
# Commands that will be available in the hub.
commands:
- command: "menu"
aliases:
- "servers"
# Action to perform when the command is executed.
action:
# Available values: DO_NOTHING, CLOSE_MENU, SEND_MESSAGE, OPEN_MENU, CONNECT_TO_SERVER, KICK_PLAYER, TELEPORT_PLAYER
type: OPEN_MENU
# Depends on action type:
# DO_NOTHING: Not used.
# CLOSE_MENU: Not used.
# SEND_MESSAGE: Message to send, lines should be separated with {NL}.
# OPEN_MENU: Menu ID
# CONNECT_TO_SERVER: Server name (as in velocity.toml).
# KICK_PLAYER: Kick reason
# TELEPORT_PLAYER: Coordinates in "x y z yaw pitch" format.
data: "menu"
menus:
- # Menu ID that will be used in OPEN_MENU actions.
menu-id: "menu"
title: "&8Menu"
# Items that will be used in `menu-contents`.
items:
- # Any character that will represent this item in `menu-contents`.
id: "."
# Modern item ID, e.g. "minecraft:stone".
item: "minecraft:black_stained_glass_pane"
fallback-items:
- "minecraft:white_stained_glass_pane"
count: 1
# Only used on legacy versions (1.12.2 and lower).
data: 15
has-color: false
# You can get color value at https://notwoods.github.io/minecraft-tools/armorcolor/.
color: 0
enchanted: false
# Player skin in "uuid;value" or "value" format
# You can get these values at https://mineskin.org/ or https://minecraft-heads.com/.
skull-owner: ""
custom-name: ""
lore: []
- # Any character that will represent this item in `menu-contents`.
id: "2"
# Modern item ID, e.g. "minecraft:stone".
item: "minecraft:grass_block"
fallback-items: []
count: 1
# Only used on legacy versions (1.12.2 and lower).
data: 0
has-color: false
# You can get color value at https://notwoods.github.io/minecraft-tools/armorcolor/.
color: 0
enchanted: false
# Player skin in "uuid;value" or "value" format
# You can get these values at https://mineskin.org/ or https://minecraft-heads.com/.
skull-owner: ""
custom-name: "&fServer-1"
lore:
- "&f"
- "&fJoin version: &61.16+"
- "&fServer version: &61.20.1"
- "&f"
# Menu content. The size of the menu depends on the length and number of lines.
# For example, 6 lines of 9 characters each represent a 9x6 menu.
# Each character represents an item (see `item-id`); space is an empty slot.
menu-contents:
- "........."
- "....2...."
- "........."
# The default action to be performed when player clicks on slot.
# Available values: DO_NOTHING, CLOSE_MENU.
default-action: DO_NOTHING
actions:
- # List of slots in one of the following formats: "slotNumber", "column,row".
slots:
- "13"
# Action to perform when player clicks on specified slots.
action:
# Available values: DO_NOTHING, CLOSE_MENU, SEND_MESSAGE, OPEN_MENU, CONNECT_TO_SERVER, KICK_PLAYER, TELEPORT_PLAYER
type: CONNECT_TO_SERVER
# Depends on action type:
# DO_NOTHING: Not used.
# CLOSE_MENU: Not used.
# SEND_MESSAGE: Message to send, lines should be separated with {NL}.
# OPEN_MENU: Menu ID
# CONNECT_TO_SERVER: Server name (as in velocity.toml).
# KICK_PLAYER: Kick reason
# TELEPORT_PLAYER: Coordinates in "x y z yaw pitch" format.
data: "server1"
npcs:
- display-name: ""
x: 1.5
y: 1.0
z: 3.5
yaw: 270.0
pitch: 0.0
load-skin: true
# You can get skin properties at https://mineskin.org/.
skin-data:
uuid: "da6737a3-120d-465a-aadd-a99f69acaec2"
value: "ewogICJ0aW1lc3RhbXAiIDogMTY4ODMwMTg4NjQzNywKICAicHJvZmlsZUlkIiA6ICI0NmJhMWQxNWY0OTM0ZGQ2OTQzZTE3YTMxNmQ0MTk5YiIsCiAgInByb2ZpbGVOYW1lIiA6ICJKYWtvYl9PU0giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWRlZWRkMzUyMjJkYTNmMmUwZjViM2M1ODI5MWIyMWNhNTA5MGU5NjA4MGI3OTRlZDYwYTVjNmJjZDZhZmE3IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="
signature: "R47MLfXip3htZ0gzMGDDeSI75e1kKHXGZXzAGoG6BYR5/6Rh3hQji9H0YEem/4oNxmOSrG0pgg8ku/DmHcGVsNijEQrq81fOl2Kvsx9T+udQfKI5bue0181OSoUHL9gMfXGXHiTwqhbR9s/sMf7wxNS9nlT/uTRsiLEk6juR2H6REXYC9CjqXMy6nYQHSacXALes+X3lRt6o1U9q36RdbtEhiSOqq/x0YxPPtmfX9L311Ruw17h1L6MKPpBXIlnFARP+zBO+jSjHvRO2W27Y8O/S+1ZTIbDAnP66Qit44PPhZfyqx4kHsA3009ijRT6NiBIF4Ws0D2iXQEkDNpVDAWvAsGq3Kh6UTplQcHjDqt0/6ENESmVP14fXIKBQG11isHjknsN2BvNDmnivOMO9h26Fz7+Dx4n/hFkJvdIJSydMLwn9MitEYV8oydTfjZHk4yGw4XewjdkosvuW+Myq8y2eb1JxBynghnVdK7DyISZY1KKb5VKYWg8LO/3rtuK/wGdS1fimZ29omjyNXtlGnt2Vnm6C1CjUu+3/u6/8WlR565541u/RoOGuea8MVenHoCD28ZOC0GnDqm8BIMP65tdJzBWZpA9BtfqWQmtV1yV4F0tVPuc71R+D271Sd8qUb7nyW3lKYMn2eIcYEI5ykrYC1IfEoJ9/Uw6o5RqAHm0="
# (255 - all skin parts)
# Sum of the following numbers:
# Cape - 1
# Jacket - 2
# Left Sleeve - 4
# Right Sleeve - 8
# Left Leg - 16
# Right Leg - 32
# Hat - 64
displayed-skin-parts: 255
# Action to be performed when player clicks on NPC.
action:
# Available values: DO_NOTHING, CLOSE_MENU, SEND_MESSAGE, OPEN_MENU, CONNECT_TO_SERVER, KICK_PLAYER, TELEPORT_PLAYER
type: OPEN_MENU
# Depends on action type:
# DO_NOTHING: Not used.
# CLOSE_MENU: Not used.
# SEND_MESSAGE: Message to send, lines should be separated with {NL}.
# OPEN_MENU: Menu ID
# CONNECT_TO_SERVER: Server name (as in velocity.toml).
# KICK_PLAYER: Kick reason
# TELEPORT_PLAYER: Coordinates in "x y z yaw pitch" format.
data: "menu"
holograms:
- x: 5.0
y: 100.0
z: 3.5
lines:
- "&f"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.