Skip to content

Commit 8aca50c

Browse files
author
magiclu550
committed
[JSMOD@2_484_COMMIT] add Server apis
1 parent b00656a commit 8aca50c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+233
-387
lines changed

JSMod2API/src/main/java/cn/jsmod2/api/player/Player.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ public Player(String name){
5050
super(name,"all","player");
5151
}
5252

53-
5453
public ITeamRole getTeamRole() {
5554
return teamRole;
5655
}

JSMod2API/src/main/java/cn/jsmod2/api/server/Smod2Server.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@
1212

1313
import cn.jsmod2.api.map.Map;
1414
import cn.jsmod2.api.player.Player;
15+
import cn.jsmod2.api.team.ITeamRole;
16+
import cn.jsmod2.api.team.TeamRole;
1517
import cn.jsmod2.core.CommandSender;
18+
import cn.jsmod2.core.Console;
1619
import cn.jsmod2.core.GameServer;
1720
import cn.jsmod2.core.Server;
21+
import cn.jsmod2.network.protocol.event.newstream.GetTypes;
1822
import cn.jsmod2.network.protocol.server.*;
1923

2024
import java.util.List;
@@ -39,6 +43,8 @@ public class Smod2Server extends CommandSender implements GameServer {
3943
@Deprecated
4044
private int maxPlayers;
4145

46+
private String playerListTitle;
47+
4248
public Smod2Server() {
4349
super("CONSOLE","all","console","admin","player","nobody");
4450
}
@@ -65,6 +71,22 @@ public Smod2Server updateServer(GameServer server){
6571
return null;
6672
}
6773

74+
public String getPlayerListTitle() {
75+
SimpleServerFieldStream stream = new SimpleServerFieldStream(String.class);
76+
stream.field = "PlayerListTitle";
77+
stream.isWrite = false;
78+
playerListTitle = (String) stream.send();
79+
return playerListTitle;
80+
}
81+
82+
public void setPlayerListTitle(String playerListTitle) {
83+
SimpleServerFieldStream stream = new SimpleServerFieldStream(Void.class);
84+
stream.field = "PlayerListTitle";
85+
stream.isWrite = true;
86+
stream.value = playerListTitle;
87+
stream.send();
88+
this.playerListTitle = playerListTitle;
89+
}
6890

6991
public int getPort() {
7092
GetPortPacket packet = new GetPortPacket();
@@ -119,4 +141,46 @@ public List<Player> getPlayers() {
119141
public void personalBroadcast(int i, String s, boolean b) {
120142

121143
}
144+
145+
@Override
146+
public List<IConnection> getConnections(String s) {
147+
SimpleServerMethodPacket packet = new SimpleServerMethodPacket(Connection.class);
148+
packet.method = "GetConnections";
149+
packet.args = new String[]{s};
150+
packet.getTypes = GetTypes.GET_PROTOCOL_ARRAY_WITHOUT_LIST_IN;
151+
return (List<IConnection>) packet.send();
152+
}
153+
154+
@Override
155+
public List<ITeamRole> getRoles(String s) {
156+
SimpleServerMethodPacket packet = new SimpleServerMethodPacket(TeamRole.class);
157+
packet.method = "GetRoles";
158+
packet.args = new String[]{s};
159+
packet.getTypes = GetTypes.GET_PROTOCOL_ARRAY_WITHOUT_LIST_IN;
160+
return (List<ITeamRole>)packet.send();
161+
}
162+
163+
@Override
164+
public String getAppFolder(boolean b, boolean b1, boolean b2, boolean b3) {
165+
SimpleServerMethodPacket packet = new SimpleServerMethodPacket(String.class);
166+
packet.method = "GetAppFolder";
167+
packet.args = new String[]{b+"",b1+"",b2+"",b3+""};
168+
return (String)packet.send();
169+
}
170+
171+
@Override
172+
public boolean banSteamId(String s, String s1, int i, String s2, String s3) {
173+
SimpleServerMethodPacket packet = new SimpleServerMethodPacket(Boolean.class);
174+
packet.method = "BanSteamId";
175+
packet.args = new String[]{s,s1,i+"",s2,s3};
176+
return (Boolean) packet.send();
177+
}
178+
179+
@Override
180+
public boolean banIpAddress(String s, String s1, int i, String s2, String s3) {
181+
SimpleServerMethodPacket packet = new SimpleServerMethodPacket(Boolean.class);
182+
packet.method = "BanIpAddress";
183+
packet.args = new String[]{s,s1,i+"",s2,s3};
184+
return (Boolean)packet.send();
185+
}
122186
}

JSMod2DevelopKit/src/main/java/cn/jsmod2/core/GameServer.java

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@
22

33

44
import cn.jsmod2.api.map.IMap;
5+
import cn.jsmod2.api.player.IPlayer;
6+
import cn.jsmod2.api.server.IConnection;
57
import cn.jsmod2.api.server.IRound;
8+
import cn.jsmod2.api.team.ITeamRole;
9+
import cn.jsmod2.api.team.Role;
10+
import cn.jsmod2.core.annotations.PlayerName;
611

12+
import java.util.Arrays;
713
import java.util.List;
14+
import java.util.stream.Collectors;
815

916
/**
1017
* 用于封装其他语言服务器信息,如果要将该服务器做成与其他服务器交互的话
@@ -14,11 +21,17 @@
1421

1522
public interface GameServer {
1623

17-
List<? extends ISimplePlayer> getPlayers();
24+
List<? extends IPlayer> getPlayers();
1825

1926
@Deprecated
2027
GameServer updateServer(GameServer server);
2128

29+
//3.5.0
30+
String getPlayerListTitle();
31+
32+
//3.5.0
33+
void setPlayerListTitle(String playerListTitle);
34+
2235
default int getPort() {
2336
return 0;
2437
}
@@ -50,4 +63,56 @@ default int getMaxPlayers() {
5063
default void setMaxPlayers(int maxPlayers) {
5164
}
5265

66+
67+
default List<? extends IPlayer> getPlayers(String filter){
68+
return getPlayers().stream().filter(name -> ((IPlayer) name).getName().equals(filter)).collect(Collectors.toList());
69+
}
70+
71+
default List<? extends IPlayer> getPlayers(Role role){
72+
return getPlayers().stream().filter(name -> ((IPlayer) name).getTeamRole().getRole().equals(role)).collect(Collectors.toList());
73+
}
74+
75+
default List<? extends IPlayer> getPlayers(Role[] role){
76+
return getPlayers().stream().filter(name -> Arrays.asList(role).contains(((IPlayer) name).getTeamRole().getRole())).collect(Collectors.toList());
77+
}
78+
79+
default IPlayer getPlayer(int id){
80+
List<IPlayer> players = (List<IPlayer>) getPlayers();
81+
for(IPlayer player:players){
82+
if(player.getPlayerId() == id){
83+
return player;
84+
}
85+
}
86+
return null;
87+
}
88+
89+
List<IConnection> getConnections(String filter);
90+
91+
default List<IConnection> getConnections(){
92+
return getConnections("");
93+
}
94+
95+
List<ITeamRole> getRoles(String filter);
96+
97+
default List<ITeamRole> getRoles(){
98+
return getRoles("");
99+
}
100+
101+
String getAppFolder(boolean shared,boolean addSeparator,boolean addPort,boolean addConfigs);
102+
103+
default String getAppFolder(){
104+
return getAppFolder(false,false,false,false);
105+
}
106+
107+
boolean banSteamId(String username,String steamId,int duration,String reason,String issuer);
108+
109+
default boolean banSteamId(String username,String steamId,int duration,String reason){
110+
return banSteamId(username,steamId,duration,reason,"Server");
111+
}
112+
113+
boolean banIpAddress(String username,String ipAddress,int duration,String reason,String issuer);
114+
115+
default boolean banIpAddress(String username,String ipAddress,int duration,String reason){
116+
return banIpAddress(username, ipAddress, duration, reason,"Server");
117+
}
53118
}
Binary file not shown.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package cn.jsmod2.network;
2+
3+
import cn.jsmod2.core.ApiId;
4+
import cn.jsmod2.core.protocol.GetPacket;
5+
6+
public class SimpleFieldStream extends GetPacket {
7+
public Object value;
8+
9+
public String field;
10+
11+
public int getTypes;
12+
13+
public boolean isWrite;//0 read 1 write
14+
15+
public SimpleFieldStream(int id,Class<?> type) {
16+
super(id, type);
17+
}
18+
19+
@Override
20+
public Object send() {
21+
if(value instanceof ApiId){
22+
value = ((ApiId)value).getApiId();
23+
requester.with("apiId",true);
24+
}
25+
requester.with("value",value).with("field",field);
26+
if(isWrite){
27+
requester.with("write",true).to();
28+
return null;//无返回值
29+
}else{
30+
requester.with("read",true);
31+
}
32+
33+
return PacketSender.getResponseValue(requester.get(),getTypes);//有返回值
34+
}
35+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package cn.jsmod2.network;
2+
3+
import cn.jsmod2.core.protocol.GetPacket;
4+
import cn.jsmod2.core.utils.Utils;
5+
6+
public class SimpleMethodStream extends GetPacket {
7+
8+
public String method;
9+
10+
public String[] args;
11+
12+
public boolean isWrite;
13+
14+
public int getTypes;
15+
16+
public SimpleMethodStream(int id,Class<?> type){
17+
super(id,type);
18+
}
19+
20+
@Override
21+
public Object send() {
22+
requester.with("method",method).with("args", Utils.arraysToString(args));
23+
if(isWrite){
24+
requester.with("write",true).to();
25+
return null;
26+
}else{
27+
requester.with("read",true);
28+
}
29+
return PacketSender.getResponseValue(requester.get(),getTypes);
30+
}
31+
}

JSMod2Protocol/src/main/java/cn/jsmod2/network/protocol/map/map/AnnounceCustomMessagePacket.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

JSMod2Protocol/src/main/java/cn/jsmod2/network/protocol/map/map/AnnounceNtfEntrancePacket.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

JSMod2Protocol/src/main/java/cn/jsmod2/network/protocol/map/map/AnnounceScpKillPacket.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

JSMod2Protocol/src/main/java/cn/jsmod2/network/protocol/map/map/BroadCastPacket.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)