本帖最后由 洞穴夜莺 于 2022-9-11 12:28 编辑 
如题,我自认为已经几乎照抄了示例代码(注释除外),但是它运行时尽管能在netstat命令中看到UDP 10005端口,但在游戏内就是ping不通,求教这玩意的正确用法
如题,我自认为已经几乎照抄了示例代码(注释除外),但是它运行时尽管能在netstat命令中看到UDP 10005端口,但在游戏内就是ping不通,求教这玩意的正确用法
 本帖最后由 krewella 于 2022-9-11 01:20 编辑 
复制代码
尝试了一下,可以了
- package io.github.cavenightingale;
 
 
- import com.nukkitx.protocol.bedrock.*;
 
- import com.nukkitx.protocol.bedrock.handler.BedrockPacketHandler;
 
- import com.nukkitx.protocol.bedrock.v544.Bedrock_v544;
 
 
- import java.net.InetSocketAddress;
 
 
- public class Main {
 
-     public static void main(String[] args) throws InterruptedException {
 
-         BedrockServer server = new BedrockServer(new InetSocketAddress("0.0.0.0", 10005));
 
-         BedrockPong pong = new BedrockPong();
 
-         pong.setEdition("MCPE");
 
-         pong.setMotd("My Server");
 
-         pong.setPlayerCount(0);
 
-         pong.setMaximumPlayerCount(20);
 
-         pong.setGameType("Survival");
 
-         pong.setProtocolVersion(Bedrock_v544.V544_CODEC.getProtocolVersion());
 
-         pong.setIpv4Port(10005);
 
-         pong.setVersion("1.0.0.0");
 
-         server.setHandler(new BedrockServerEventHandler() {
 
-             @Override
 
-             public boolean onConnectionRequest(InetSocketAddress address, InetSocketAddress realAddress) {
 
-                 return true;
 
-             }
 
 
-             @Override
 
-             public BedrockPong onQuery(InetSocketAddress address) {
 
-                 return pong;
 
-             }
 
 
-             @Override
 
-             public void onSessionCreation(BedrockServerSession serverSession) {
 
-                 serverSession.setPacketHandler(serverSession.getPacketHandler());
 
-                 serverSession.addDisconnectHandler(System.out::println);
 
-             }
 
-         });
 
-         server.bind().join();
 
-         System.out.println(server.getBindAddress().getPort());
 
-         new Thread(new Runnable() {
 
 
-             @Override
 
-             public void run() {
 
-                 try {
 
-                     Thread.sleep(Long.MAX_VALUE);
 
-                 } catch (InterruptedException e) {
 
-                     e.printStackTrace();
 
-                 }
 
-             }
 
-         }).start();
 
-     }
 
- }
尝试了一下,可以了
Minecraft -> onQuery -> BedrockPong
Minecraft ->BedrockPong Port -> 获得延迟
如果你想让protocol响应真正的服务器,BedrockPong的端口应该填写对应的服务器端口
Minecraft ->BedrockPong Port -> 获得延迟
如果你想让protocol响应真正的服务器,BedrockPong的端口应该填写对应的服务器端口
尝试将 localhost 改为 127.0.0.1 ? 
这是我们唯一的差距了
这是我们唯一的差距了
krewella 发表于 2022-9-11 11:13
尝试将 localhost 改为 127.0.0.1 ?
这是我们唯一的差距了
尝试过改为127.0.0.1,无效
另外,注意到一个现象
如果在进程内,调用BedrockClient是可以ping通的,代码及运行如下输出
但在试图在另一个进程中ping则报错timeout,代码和运行输出如下
从你的说明上来看是可以ping到的
尝试将InetSocketAddress绑定至 127.0.0.1尝试一下
尝试将InetSocketAddress绑定至 127.0.0.1尝试一下
 本帖最后由 krewella 于 2022-9-11 11:54 编辑 
我尝试了一下,在另一个进程中ping无报错,也许是你的maven依赖不对?
我尝试了一下,在另一个进程中ping无报错,也许是你的maven依赖不对?
-     <dependencies>
 
-         <dependency>
 
-             <groupId>com.nukkitx.protocol</groupId>
 
-             <artifactId>bedrock-v544</artifactId>
 
-             <version>2.9.11-SNAPSHOT</version>
 
-             <scope>compile</scope>
 
-         </dependency>
 
-     </dependencies>
 
-     <repositories>
 
-         <repository>
 
-             <id>nukkitx-repo-release</id>
 
-             <url>https://repo.nukkitx.com/maven-releases/</url>
 
-         </repository>
 
-         <repository>
 
-             <id>nukkitx-repo-snapshot</id>
 
-             <url>https://repo.nukkitx.com/maven-snapshots/</url>
 
-         </repository>
 
- </repositories>
尝试切换为该依赖,如还有报错请回复
krewella 发表于 2022-9-11 11:47
尝试切换为该依赖,如还有报错请回复
repo.nukkitx.com访问极慢,无法完成gradle sync,因此我使用repo.opencollab.dev作为替代
完整build.gradle如下
从另一个进程ping不通的问题已经解决(是V某N的问题)
但从游戏内仍然无法ping通
 本帖最后由 krewella 于 2022-9-11 12:24 编辑 
有极少数情况 idea 的断点无法正确被调用
尝试在onQuery 打印一下信息,查看客户端是否调用该方法
有极少数情况 idea 的断点无法正确被调用
尝试在onQuery 打印一下信息,查看客户端是否调用该方法
我复现了一下,出现了相同的情况
1. Minecraft客户端是否登录
2. Minecraft是否强制性代理
1. Minecraft客户端是否登录
2. Minecraft是否强制性代理
krewella 发表于 2022-9-11 12:35
我复现了一下,出现了相同的情况
1. Minecraft客户端是否登录
2. Minecraft是否强制性代理
客户端登陆到Xbox账号CaveNighting
不清楚强制性代理是什么
krewella 发表于 2022-9-11 12:45
UWP 应用代理解除,将代理模式启动后重试
https://oxdl.cn/?p=1036
我下载不了这个链接内的文件
已上传
nice,问题解决
 
