bangbang93 / minecraft-proxy Goto Github PK
View Code? Open in Web Editor NEWReverse proxy Minecraft. With full forge support.
License: MIT License
Reverse proxy Minecraft. With full forge support.
License: MIT License
{"name":"server","port":25565,"host":"0.0.0.0","worker":1,"hostname":"VM31762","pid":473658,"level":50,"err":{"message":"minecraft_data_1.schemas.protocolVersions is not iterable","name":"TypeError","stack":"TypeError: minecraft_data_1.schemas.protocolVersions is not iterable\n at MinecraftData.protocolVersionToMcVersion (/usr/proxy/proxy/src/minecraft-data.ts:7:34)\n at Client.awaitHandshake (/usr/proxy/proxy/src/client.ts:80:45)\n at processTicksAndRejections (node:internal/process/task_queues:96:5)\n at ProxyServer.onConnection (/usr/proxy/proxy/src/proxy-server.ts:84:23)"},"msg":"minecraft_data_1.schemas.protocolVersions is not iterable","time":"2022-07-07T11:01:30.268Z","v":0}
{"name":"client","hostname":"VM31762","pid":473658,"remoteAddress":"...","remotePort":2713,"level":30,"msg":"force disconnecting [object Object], reason: minecraft_data_1.schemas.protocolVersions is not iterable","time":"2022-07-07T11:01:30.274Z","v":0}
用的编译好的那个,客户端发送motd请求后就这样了,昨天我用之前编译好的那个1.4.5没有这个问题
执行npm ci编译报错Cannot read properties of null (reading ‘pickAlgorithm‘)
github上下载的原生的一个没改
我怀疑是nodejs版本问题,能说下你是什么版本的吗
建议更新支持到1.17版本
是否考虑增加多版本支持?
比如说 Hypixel 这样的服务器通常都会支持一个比较大的版本跨度
如果使用 mcproxy 代理无法同时支持多版本
Windows下config.yml是没有问题的
错误信息:
/root/node_modules/prismarine-nbt/nbt.js:165
const type = value[0]?.type ?? 'end'
^
SyntaxError: Unexpected token .
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object. (/root/node_modules/minecraft-protocol/src/datatypes/minecraft.js:3:13)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object. (/root/node_modules/minecraft-protocol/src/transforms/serializer.js:8:19)
Config.yml文件
https://github.com/lem0nb/somefiles/raw/main/config.yml
node -v
v10.24.0
npm -v
5.8.0
有的时候好像会堆积起来我也不知道具体怎么触发的 只有几个人在线显示几十个
/root/proxy/node_modules/minecraft-data/index.js:34
const v1 = versions[version]?.dataVersion ?? 0
^
SyntaxError: Unexpected token .
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/root/proxy/src/backend.ts:2:1)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/root/proxy/src/proxy-server.ts:6:1)
支不支持
[
ValidationError {
target: Config {
allowListOnly: false,
proxy: [ConfigProxy],
servers: [Array],
blockList: [BlockList]
},
value: undefined,
property: 'defaultServer',
children: [],
constraints: { isString: 'defaultServer must be a string' }
}
]
When handlePing is enabled, the latency shown in Minecraft is the latency to the proxy server, not the actual latency.
使用接管 ping 时,游戏中显示的延迟是到代理服务器的延迟,并不是真正的游戏延迟。
是否有办法做到显示真正的延迟(客户端 -> 代理服务器 + 代理服务器 -> 真实服务器)?
如题,能否把黑名单拓展到每个服务器单独的呢?
这个是怎么回事
Added UUID-based whitelist function. This is very beneficial for us to make 中國加速IP.
在Hypixel中加入小游戏,
客户端提示:
连接中断
后端提示:
{"name":"server","port":25565,"host":"0.0.0.0","hostname"="xxxx","pid":3662,"level":50,"err":{"errno":"EPIPE","code":"EPIPE","syscall":"write"},"msg":"write EPIPE","time":"xxxx","v":0}
望解决
来给棒棒挖坑。。。(
proxy Hypixel的时候有丢包现象怎么办,有没有什么好办法可以解决
只看到了最大人数的修改没有看到在线人数的修改如果不行以后能否添加
基本结构:服务端TCP-代理KCP-长距离网络-客户端软件KCP-客户端TCP
KCP协议地址:https://github.com/skywind3000/kcp
从协议上看能有效解决Minecraft自身的TCP协议所带来的丢包、断链、超时等问题,加入代理又不至于对Minecraft端进行魔改,能更好兼容各个版本。
能不能用KCP协议对所有出/入的Packets封包做转发,在客户端本地额外增加一个软件进行解码,从而使面向Minecraft的两端都使用TCP协议,不至于魔改mc。
编程萌新一枚,求大佬指点一二!
logs:
# docker run -p 25565:25565 -v /root/config:/opt/minecraft-proxy/config bangbang93/minecraft-proxy
TypeError: The "path" argument must be of type string. Received undefined
at new NodeError (node:internal/errors:371:5)
at validateString (node:internal/validators:120:11)
at Object.dirname (node:path:1276:5)
at Object.read (/opt/minecraft-proxy/node_modules/src/read.ts:12:20)
at loadConfig (/opt/minecraft-proxy/src/config.ts:61:21)
at main (/opt/minecraft-proxy/bin/mcproxy:14:24)
at Object.<anonymous> (/opt/minecraft-proxy/bin/mcproxy:73:1)
at Module._compile (node:internal/modules/cjs/loader:1097:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1151:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_INVALID_ARG_TYPE'
}
env:
Docker version 20.10.5, build 55c4c88
Linux VM-20-16-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
用的最新的1.4.8版本
测试了1.18.2 Paper端和1.18.2 forge端,motd可以正确显示,但是都无法连接
全是卡在连接超时,后台也没有任何新的日志和报错
如题,hypixel也是这样
是美国vps网络问题吗?
但是ip可以ping通
s from 104.26.7.75: icmp_seq=2 ttl=55 time=1.41 ms
64 bytes from 104.26.7.75: icmp_seq=3 ttl=55 time=1.40 ms
64 bytes from 104.26.7.75: icmp_seq=4 ttl=55 time=1.46 ms
转发不稳定 1~2分钟 总是有几秒钟的卡顿
麻烦看一下这是什么问题
]# bin/mcproxy
[
ValidationError {
target: Config {
allowListOnly: false,
profileEndpoint: 'https://api.mojang.com/profiles/minecraft',
plugins: null,
proxy: [ConfigProxy],
defaultServer: 'hypixel',
blockList: [BlockList],
servers: [Array]
},
value: BlockList { ips: [Array], usernames: [Array], uuids: [Array] },
property: 'blockList',
children: [ [ValidationError] ]
}
]
thx
请问什么版本才能修正1.8客户端无法进入问题
服务器日志显示了标准的bungeecord没开ip-forward的错误嗯
以下是控制台报错时打出的内容,已删除IP
{"name":"server","port":15459,"host":"0.0.0.0","worker":1,"hostname":"cloud","pid":17959,"level":30,"msg":"ready","time":"2023-02-05T14:39:01.829Z","v":0}
{"name":"server","port":15459,"host":"0.0.0.0","worker":1,"hostname":"cloud","pid":17959,"level":50,"err":{"message":"Cannot read property 'minecraftVersion' of undefined","name":"TypeError","stack":"TypeError: Cannot read property 'minecraftVersion' of undefined\n at MinecraftData.protocolVersionToMcVersion (/data1/minecraft-proxy/src/minecraft-data.ts:17:30)\n at Client.awaitHandshake (/data1/minecraft-proxy/src/client.ts:89:45)\n at processTicksAndRejections (internal/process/task_queues.js:95:5)\n at ProxyServer.onConnection (/data1/minecraft-proxy/src/proxy-server.ts:84:25)"},"msg":"Cannot read property 'minecraftVersion' of undefined","time":"2023-02-05T14:39:02.131Z","v":0}
{"name":"client","hostname":"cloud","pid":17959,"remoteAddress":"xx.xxx.xxx.xx","remotePort":54354,"level":30,"msg":"force disconnecting, reason: Cannot read property 'minecraftVersion' of undefined","time":"2023-02-05T14:39:02.132Z","v":0}
无法正确代理1.18.1mod服务器,可以得到服务器端的信息但是最后客户端会提示"中转服务器ip" not found
服务端后台无输出
客户端服务端是forge 1.18.1 最新版(搞忘了懒得翻了)
如果需要其他的东西可以提供(不知道写啥)
config.yml没动,然后只更改了./servers里面的配置:
serverName: 纯数字名字
proxyHost: mc服务端地址
proxyPort: 25565
version: 1.18.1
handlePing: false
onlineMode: false
useProxy: false
折腾了半天,/config/server里我也加了服务器,可是输出还是默认服务器,尝试把defaultServer注释掉,也没有办法,是还要改别的吗
{"name":"master","hostname":"VM19901","pid":25635,"level":30,"msg":"all workers started","time":"2022-02-19T14:20:53.230Z","v":0}
{"name":"server","port":25565,"host":"0.0.0.0","worker":1,"hostname":"VM19901","pid":25652,"level":30,"msg":"ready","time":"2022-02-19T14:20:54.193Z","v":0}
建议添加 “后备服务器” 功能。
例如现有 Bungee1 和 Bungee2 服务器。
当处于 Bungee1 服务器的玩家遇到 Bungee1 关闭的时候,重连到 Bungee2 服务器,避免中断。
以及:minecraft-proxy 本身是否支持前面套一个 haproxy?
1.13.2版本无法使用,无法多版本
连接报 This server requires FML/Forge to be installed. Contact your server admin for more details. 估计 Forge handshake 没处理好
想请问是否后续考虑支持范围端口转发?比如A服务器配置了minecraft-proxy并持有公网IP,同时在B服务器上运行了多个Minecraft服务器,由于B服务器的链路质量不佳或仅有单线网络,但A服务器链路质量佳,能否通过配置,访问A服务器的10001-20001端口即自动转发到B服务器:10001-20001。
bangbang93/minecraft-proxy:latest
Docker
日志{"name":"server","port":15392,"host":"0.0.0.0","worker":5,"hostname":"taixue","pid":23,"level":50,"err":{"message":"Cannot read properties of undefined (reading 'minecraftVersion')","name":"TypeError","stack":"TypeError: Cannot read properties of undefined (reading 'minecraftVersion')\n at MinecraftData.protocolVersionToMcVersion (/opt/minecraft-proxy/src/minecraft-data.ts:17:30)\n at Client.awaitHandshake (/opt/minecraft-proxy/src/client.ts:89:45)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at ProxyServer.onConnection (/opt/minecraft-proxy/src/proxy-server.ts:84:25)"},"msg":"Cannot read properties of undefined (reading 'minecraftVersion')","time":"2023-05-03T01:48:55.127Z","v":0}
{"name":"client","hostname":"taixue","pid":23,"remoteAddress":"111.18.39.48","remotePort":8015,"level":30,"msg":"force disconnecting, reason: Cannot read properties of undefined (reading 'minecraftVersion')","time":"2023-05-03T01:48:55.131Z","v":0}
proxy:
port: 15392
host: 0.0.0.0
workers: 0
defaultServer: 太学
servers:
- serverName: 太学
proxyHost: localhost
proxyPort: 60000
version: 1.19.2
onlineMode: true
useProxy: false # useProxy 不论 true false 都是一样的日志
handlePing: false
blockList:
ips: []
usernames: []
uuids: []
profileEndpoint: https://skin.taixue.cc/api/yggdrasil
sudo docker run --network host --user nobody:nobody -d --name taixue.proxy.java --restart=always -v ./config:/opt/minecraft-proxy/config bangbang93/Minecraft-proxy
proxy:
port: 25565 #监听端口
host: 0.0.0.0 #监听ip
workers: 0 #worker数量,以便充分利用多核服务器,0代表用上全部核心
defaultServer: bmc.cc #默认服务器,若不想指定,则删除此行
servers:
blockList:
ips: #同时会阻拦掉ping请求
- 114.114.114.114
- 10.0.0.0/32
usernames:
- BadGays
uuids: # 只有开了正版验证的服务端可以封禁uuid,离线服务器只能用usernames
- 12b8b9e0eba0ca37e935f037ff1ae90d
就是server配置文件里面的favicon后面应该填什么
发现只有黑名单没有白名单,是否考虑添加
下游服务端:forge-1.19.2-43.2.8
代理服务器版本:v1.5.0
代理服务器配置:
proxy:
port: 25565
host: 0.0.0.0
workers: 0
defaultServer: mod1
allowListOnly: false
allowList:
ips: ["0.0.0.0/0"]
usernames:
- CN_NKXingCh
uuids: []
blockList:
ips: !!import/single block-ip.yml
usernames:
- BadGays
uuids:
- 12b8b9e0eba0ca37e935f037ff1ae90d
servers:
!!import/sequence
- servers/
profileEndpoint: https://skin.pigeon-server.cn/api/yggdrasil/api/profiles/minecraft
message:
bannedUsername: "未授权用户"
bannedUUID: "未授权用户"
loglevel: info # 'trace', 'debug', 'info', 'warn', 'error', 'fatal'
serverName: mod1
proxyHost: 192.168.1.2
proxyPort: 25566
version: 1.19.2
handlePing: false
onlineMode: true
代理服务器日志:
{"name":"client","hostname":"DESKTOP-ERJEJGM","pid":15476,"remoteAddress":"127.0.0.1","remotePort":61944,"username":"fsj","backend":{"host":"192.168.1.2","port":25566},"level":30,"msg":"force disconnecting, reason: failed to connect backend: read ECONNRESET","time":"2023-05-18T12:51:17.811Z","v":0}
{"name":"server","port":25565,"host":"0.0.0.0","worker":8,"hostname":"DESKTOP-ERJEJGM","pid":15476,"level":50,"err":{"errno":-4077,"code":"ECONNRESET","syscall":"read"},"msg":"read ECONNRESET","time":"2023-05-18T12:51:17.812Z","v":0}
root@hyp:~/minecraft-proxy# ./bin/mcproxy
Error: EISDIR: illegal operation on a directory, read
at Object.readSync (node:fs:727:3)
at tryReadSync (node:fs:433:20)
at Object.readFileSync (node:fs:479:19)
at Object.read (/root/minecraft-proxy/node_modules/src/read.ts:13:18)
at loadConfig (/root/minecraft-proxy/src/config.ts:61:21)
at main (/root/minecraft-proxy/bin/mcproxy:14:24)
at Object. (/root/minecraft-proxy/bin/mcproxy:73:1)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
errno: -21,
syscall: 'read',
code: 'EISDIR'
}
1.支持泛版本转发
2.支持使用源服务器ping信息
3.支持多域名
How can we listen to packets that are being sent to the server & to the client and parse them? (I'm guessing server.on("data") but then how would we parse it?
Thanks!
{"name":"server","port":11051,"host":"0.0.0.0","worker":1,"hostname":"10_0_8_8","pid":8012,"level":50,"err":{"message":"Cannot read properties of undefined (reading 'minecraftVersion')","name":"TypeError","stack":"TypeError: Cannot read properties of undefined (reading 'minecraftVersion')\n at MinecraftData.protocolVersionToMcVersion (C:\snapshot\minecraft-proxy\dist\minecraft-data.js:24:24)\n at Client.awaitHandshake (C:\snapshot\minecraft-proxy\dist\client.js:66:61)\n at processTicksAndRejections (node:internal/process/task_queues:96:5)\n at ProxyServer.onConnection (C:\snapshot\minecraft-proxy\dist\proxy-server.js:76:31)"},"msg":"Cannot read properties of undefined (reading 'minecraftVersion')","time":"2022-07-27T15:02:28.565Z","v":0}
纯净端能加载出服务器,mod端加载不出
版本1.12.2,forge2838
9天前那个源码更新之后我编译出来运行就报错了 之前我编译过是正常的 我试了几个node版本都不行 并且在linux和windows下都试了不行
顺便发下报错的日志
TypeError: The "path" argument must be of type string. Received undefined
at new NodeError (node:internal/errors:371:5)
at validateString (node:internal/validators:120:11)
at Object.dirname (node:path:654:5)
at Object.read (C:\jiasu\node_modules\src\read.ts:12:20)
at loadConfig (C:\jiasu\src\config.ts:61:21)
at main (C:\jiasu\bin\mcproxy:14:24)
at Object. (C:\jiasu\bin\mcproxy:73:1)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_INVALID_ARG_TYPE'
}
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.