HMCL-dev / HMCL

A Minecraft Launcher which is multi-functional, cross-platform and popular
https://hmcl.huangyuhui.net
GNU General Public License v3.0
6.86k stars 671 forks source link

[Feature] 为玩家游玩1.18以及以上版本做一个类似友商的警告弹出 #3134

Open CTGWHWL opened 3 months ago

CTGWHWL commented 3 months ago

描述 | Description

1.20.6版本不合法id变动导致后面的一连串问题 大概就类似于java版本警告 由于创建违规id的时候没人看那个提示 我认为应该启动游戏时自动跳出这个弹窗 java版本警告 友商的警告字眼

哦 请忽略java版本警告的异常java显示 这个问题在在最新PR版中没了

原因 | Reason

因为报错群有人出现这种事情导致的问题 折腾好半天才发现问题出在哪 被折磨了半天发现问题后在测试不同启动器途中发现PCL2有类似的提示 希望我们也来一个

HomoobyDX commented 3 months ago

当事人日志(安装forge后)https://mclo.gs/suPGkK2 当事人日志(未安装forge时)https://mclo.gs/jV9Tqle

burningtnt commented 3 months ago

加入服务器时会提示 Invalid characters in the username. 这一证据即可解决你说的“崩溃”

YELANDAOKONG commented 3 months ago

可以在添加离线用户时就进行检测,如果不合法就弹窗提示

3gf8jv4dv commented 3 months ago

可以在添加离线用户时就进行检测,如果不合法就弹窗提示

Some skin sites (such as LittleSkin) also allow users to create player names that are illegal for the original game.

HomoobyDX commented 3 months ago

但是我们俩测试的时候并不是Invalid characters in the username,而是Error sending packet serverbound/minecraft:hello io.netty.handler.codec.EncoderException: Failed to encode packet 'serverbound/minecraft:hello'。不知道为什么提示不是第一个 报错来源:汉医堂某位26字符的ID,并且带了空格 我在远程测试的以后1.20.6只会报错第二个,是在界面提示的,而不是第一个。我把版本换成1.20.1就提示第一个没提示第二个了。 以及,我和issue提出者测了三种情况 ID超出26格不带空格:第二种 ID未超过26格不带空格:正常 ID未超过26格带空格:直接提示连接终止,不会在客户端页面提示任何信息 ID超过26格带空格:第二种 我们技术有限不清楚为什么会这样,烧师傅能不能指点一下(顺带加一个启动检测ID不合法提示,像友商那样)

burningtnt commented 3 months ago

但是我们俩测试的时候并不是Invalid characters in the username,而是Error sending packet serverbound/minecraft:hello io.netty.handler.codec.EncoderException: Failed to encode packet 'serverbound/minecraft:hello'。不知道为什么提示不是第一个 报错来源:汉医堂某位26字符的ID,并且带了空格 我在远程测试的以后1.20.6只会报错第二个,是在界面提示的,而不是第一个。我把版本换成1.20.1就提示第一个没提示第二个了。 以及,我和issue提出者测了三种情况 ID超出26格不带空格:第二种 ID未超过26格不带空格:正常 ID未超过26格带空格:直接提示连接终止,不会在客户端页面提示任何信息 ID超过26格带空格:第二种 我们技术有限不清楚为什么会这样,烧师傅能不能指点一下(顺带加一个启动检测ID不合法提示,像友商那样)

请提供完整的 debug.log。

此外,如果你需要诊断,可以查看 latest.log,会输出游戏 ID

YELANDAOKONG commented 3 months ago

但是我们俩测试的时候并不是Invalid characters in the username,而是Error sending packet serverbound/minecraft:hello io.netty.handler.codec.EncoderException: Failed to encode packet 'serverbound/minecraft:hello'。不知道为什么提示不是第一个 报错来源:汉医堂某位26字符的ID,并且带了空格 我在远程测试的以后1.20.6只会报错第二个,是在界面提示的,而不是第一个。我把版本换成1.20.1就提示第一个没提示第二个了。 以及,我和issue提出者测了三种情况 ID超出26格不带空格:第二种 ID未超过26格不带空格:正常 ID未超过26格带空格:直接提示连接终止,不会在客户端页面提示任何信息 ID超过26格带空格:第二种 我们技术有限不清楚为什么会这样,烧师傅能不能指点一下(顺带加一个启动检测ID不合法提示,像友商那样)

在你之前给出的日志信息中,出现“Error sending packet serverbound/minecraft:hello”是因为异常 Caused by: io.netty.handler.codec.EncoderException: String too big (was 26 characters, max 16)

所以还是字符串太长的问题。

CTGWHWL commented 3 months ago

但是我们俩测试的时候并不是用户名中的无效字符,而是错误发送数据包 serverbound/minecraft:hello io.netty.handler.codec.EncoderException: Failed to encode packet 'serverbound/minecraft:hello'。不知道为什么提示不是第一个 报错来源:汉医堂某位26字符的ID,并且带了空格 我在远程测试的以后1.20.6只会报错 第二天,是在界面提示的,而不是第一个。我把版本换成1.20.1就提示第一个没提示第二天了。 以及,我和问题提出者测了三种情况 ID超出26格不带空格:第二种 ID未超过26格不带空格:正常 ID未超过26格带空格:直接提示连接终止,不会在客户端页面提示任何信息 ID超过26格带空格:第二种 我们技术有限仲裁为什么会这样,烧师傅能不能指点一下(顺带加一个启动检测ID不合法提示,像友商那样)

请提供完整的 debug.log。

此外,如果你需要诊断,可以查看latest.log,会输出游戏ID

debug.log如何直接弄出来 任务管理器手动杀进程出来的可以吗

HomoobyDX commented 3 months ago

上面的日志信息中,出现“Error sending packet serverbound/minecraft:hello”是因为异常 Caused by: io.netty.handler.codec.EncoderException: String too big (was 26 characters, max 16)

所以还是字符串太长的问题。

当时不知道这个字符超长是什么原因导致的,降级才发现是用户名不合规,回头看HMCL就发现他的ID很长并且带空格了,于是就有了1.20.1报错无效用户名,1.20.6报字符过长(说实话我第一次没搞懂这个String too big是指的什么)

burningtnt commented 3 months ago

如果你需要诊断,可以查看 latest.log,会输出游戏 ID。 我个人认为这个功能没啥必要 ———— 不过本着 HMCL 不是一人做主的原则,我不会关闭这个 Issue

wifi-left commented 3 months ago

我在想,不应该在启动的位置写。 应该在添加离线登录的地方写。 加个翻译键就好,还不麻烦。

burningtnt commented 3 months ago

应该在添加离线登录的地方写。

嗯。已经有了