Skip to content

Commit fd88066

Browse files
feat: ability to change Minecraft version in query (PowerNukkitX#1413)
* feat: ability to change Minecraft version in query * removed v * Added annotations
1 parent 9db58fe commit fd88066

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/main/java/cn/nukkit/event/server/QueryRegenerateEvent.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import cn.nukkit.Player;
44
import cn.nukkit.Server;
5+
import cn.nukkit.api.PowerNukkitXOnly;
6+
import cn.nukkit.api.Since;
57
import cn.nukkit.event.HandlerList;
68
import cn.nukkit.nbt.stream.FastByteArrayOutputStream;
9+
import cn.nukkit.network.protocol.ProtocolInfo;
710
import cn.nukkit.plugin.Plugin;
811
import cn.nukkit.plugin.PluginDescription;
912
import cn.nukkit.utils.Binary;
@@ -35,7 +38,7 @@ public static HandlerList getHandlers() {
3538
private Player[] players;
3639

3740
private final String gameType;
38-
private final String version;
41+
private String version;
3942
private final String server_engine;
4043
private String map;
4144
private int numPlayers;
@@ -57,7 +60,7 @@ public QueryRegenerateEvent(Server server, int timeout) {
5760
this.plugins = server.getPluginManager().getPlugins().values().toArray(Plugin.EMPTY_ARRAY);
5861
this.players = server.getOnlinePlayers().values().toArray(Player.EMPTY_ARRAY);
5962
this.gameType = (server.getGamemode() & 0x01) == 0 ? "SMP" : "CMP";
60-
this.version = server.getVersion();
63+
this.version = ProtocolInfo.MINECRAFT_VERSION_NETWORK;
6164
this.server_engine = server.getName() + " " + server.getNukkitVersion() + " ("+server.getGitCommit()+")";
6265
this.map = server.getDefaultLevel() == null ? "unknown" : server.getDefaultLevel().getName();
6366
this.numPlayers = this.players.length;
@@ -107,6 +110,18 @@ public void setPlayerList(Player[] players) {
107110
this.players = players;
108111
}
109112

113+
@PowerNukkitXOnly
114+
@Since("1.20.40-r2")
115+
public String getVersion() {
116+
return this.version;
117+
}
118+
119+
@PowerNukkitXOnly
120+
@Since("1.20.40-r2")
121+
public void setVersion(String version) {
122+
this.version = version;
123+
}
124+
110125
public int getPlayerCount() {
111126
return this.numPlayers;
112127
}

src/main/java/cn/nukkit/network/RakNetInterface.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import cn.nukkit.Player;
44
import cn.nukkit.Server;
55
import cn.nukkit.api.PowerNukkitOnly;
6+
import cn.nukkit.api.PowerNukkitXDifference;
67
import cn.nukkit.api.Since;
78
import cn.nukkit.event.player.PlayerCreationEvent;
89
import cn.nukkit.event.server.QueryRegenerateEvent;
@@ -11,6 +12,7 @@
1112
import cn.nukkit.network.session.NetworkPlayerSession;
1213
import cn.nukkit.network.session.RakNetPlayerSession;
1314
import cn.nukkit.utils.Utils;
15+
import static cn.nukkit.utils.Utils.dynamic;
1416
import com.google.common.base.Strings;
1517
import com.nukkitx.network.raknet.RakNetServer;
1618
import com.nukkitx.network.raknet.RakNetServerListener;
@@ -154,6 +156,7 @@ public void sendRawPacket(InetSocketAddress socketAddress, ByteBuf payload) {
154156
this.raknet.send(socketAddress, payload);
155157
}
156158

159+
@PowerNukkitXDifference(since = "1.20.40-r2", info = "now Minecraft version in query same as in the query information")
157160
@Override
158161
public void setName(String name) {
159162
QueryRegenerateEvent info = this.server.getQueryInformation();
@@ -164,7 +167,7 @@ public void setName(String name) {
164167
.add("MCPE")
165168
.add(motd)
166169
.add(Integer.toString(ProtocolInfo.CURRENT_PROTOCOL))
167-
.add(ProtocolInfo.MINECRAFT_VERSION_NETWORK)
170+
.add(dynamic(info.getVersion()))
168171
.add(Integer.toString(info.getPlayerCount()))
169172
.add(Integer.toString(info.getMaxPlayerCount()))
170173
.add(Long.toString(this.raknet.getGuid()))

0 commit comments

Comments
 (0)