Giter Site home page Giter Site logo

minecraft-proxy's People

Contributors

bangbang93 avatar dependabot[bot] avatar nkxingxh 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  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

minecraft-proxy's Issues

报错minecraft_data_1.schemas.protocolVersions is not iterable

{"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版本问题,能说下你是什么版本的吗

[feat] 添加多版本支持

是否考虑增加多版本支持?
比如说 Hypixel 这样的服务器通常都会支持一个比较大的版本跨度
如果使用 mcproxy 代理无法同时支持多版本

Debian 报错

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

在线人数显示的bug

有的时候好像会堆积起来我也不知道具体怎么触发的 只有几个人在线显示几十个

执行bin/mcproxy报错

/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)

defaultServer 不能删除,一删就报错

[
ValidationError {
target: Config {
allowListOnly: false,
proxy: [ConfigProxy],
servers: [Array],
blockList: [BlockList]
},
value: undefined,
property: 'defaultServer',
children: [],
constraints: { isString: 'defaultServer must be a string' }
}
]

Show real latency when using handlePing mode

When handlePing is enabled, the latency shown in Minecraft is the latency to the proxy server, not the actual latency.

使用接管 ping 时,游戏中显示的延迟是到代理服务器的延迟,并不是真正的游戏延迟。

是否有办法做到显示真正的延迟(客户端 -> 代理服务器 + 代理服务器 -> 真实服务器)?

Proxy Hypixel时出现问题

在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}
望解决

新功能建议:使用KCP协议作为中转代理

基本结构:服务端TCP-代理KCP-长距离网络-客户端软件KCP-客户端TCP
KCP协议地址:https://github.com/skywind3000/kcp
从协议上看能有效解决Minecraft自身的TCP协议所带来的丢包、断链、超时等问题,加入代理又不至于对Minecraft端进行魔改,能更好兼容各个版本。
能不能用KCP协议对所有出/入的Packets封包做转发,在客户端本地额外增加一个软件进行解码,从而使面向Minecraft的两端都使用TCP协议,不至于魔改mc。
编程萌新一枚,求大佬指点一二!

docker 无法启动

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可以正确显示,但是都无法连接
全是卡在连接超时,后台也没有任何新的日志和报错

BLOCKSMC 连接超时?

如题,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

启动报错

麻烦看一下这是什么问题
]# 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] ]
}
]

版本问题

请问什么版本才能修正1.8客户端无法进入问题

无法转发IP

服务器日志显示了标准的bungeecord没开ip-forward的错误嗯

代理fabric-1.19.2服务端连接会报错

以下是控制台报错时打出的内容,已删除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服务器

无法正确代理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?

Forge 1.12.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。

[BUG] Cannot read properties of undefined (reading 'minecraftVersion')

环境信息

  • 镜像:bangbang93/minecraft-proxy:latest
  • 服务器:Waterfall 1.19-526

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:

  • serverName: bmc.cc #服务连接的主机名
    proxyHost: blocksmc.com # 后端服务实际ip
    proxyPort: 25565 #后端服务实际端口
    version: 1.8.7 #版本
    handlePing: true #是否接管ping响应
    onlineMode: false
    ping: #接管ping时必填
    maxPlayer: 2021 #最大玩家
    description: BlocksMC Speed IP US
    favicon: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABk0lEQVRoQ+1YPUsDQRTcS4JgxIhpjEJKbYKFYBd/gb2FnaBFELERBEWwsxA7Gxt/hI2FjY29haaxDURtAga8oOTDwrfYzHBsiOLBpJzsvds3b2bYvag6PzlwAb/Wey9gNV9anMgG1WHvjdRAEI8/izUB40ISGlJB7tclNDeVg3t7bH5APHRDrH7zrQvrB6eQGkjQliaQlEKS0F9JaG15Gp6FZgoZuIX7xifEQzW9VB4Lqk9TSA0Yj5qAEcEkKgl5x6XGxJUSvjEdHO3A9Ng7PIf4a7sPcVa//oJvfOyMFLEUUgPGuyZgREhC3ompMfHJdQunx+I+xOObMsTXN48hftXYgnj94RTiG9UCxGkKqQHjSxMwIiQh76DKfzMx+7h799TGrq/FEO9uX+JLZH4W4rmzVYgPLvIQX1kgKaQGjC9NwIiQhLyDUmPizu0u/C6UGS/CNMgSHEeQc46kkIuf4SO9Dj6D9QkeqQFKvf2hCXwTIQl5paTGxEzao0qn0LRh+6EppAYS0kkTMIIkoWHTaVQS+gJi7gzjzNqFUQAAAABJRU5ErkJggg==

blockList:
ips: #同时会阻拦掉ping请求
- 114.114.114.114
- 10.0.0.0/32
usernames:
- BadGays
uuids: # 只有开了正版验证的服务端可以封禁uuid,离线服务器只能用usernames
- 12b8b9e0eba0ca37e935f037ff1ae90d

read ECONNRESET

下游服务端: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}

客户端输出:
image

编译安装启动报错

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.支持多域名

Parsing packets

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服无法使用

纯净端能加载出服务器,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'
}

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.