mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-24 03:38:04 +00:00
Implement region events
This commit is contained in:
parent
8b34222ceb
commit
c676bb9f08
@ -18,6 +18,8 @@ import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo;
|
|||||||
import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo;
|
import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo;
|
||||||
import emu.grasscutter.server.dispatch.json.*;
|
import emu.grasscutter.server.dispatch.json.*;
|
||||||
import emu.grasscutter.server.dispatch.json.ComboTokenReqJson.LoginTokenData;
|
import emu.grasscutter.server.dispatch.json.ComboTokenReqJson.LoginTokenData;
|
||||||
|
import emu.grasscutter.server.event.dispatch.QueryAllRegionsEvent;
|
||||||
|
import emu.grasscutter.server.event.dispatch.QueryCurrentRegionEvent;
|
||||||
import emu.grasscutter.utils.FileUtils;
|
import emu.grasscutter.utils.FileUtils;
|
||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
|
|
||||||
@ -189,24 +191,32 @@ public final class DispatchServer {
|
|||||||
|
|
||||||
// Dispatch
|
// Dispatch
|
||||||
server.createContext("/query_region_list", t -> {
|
server.createContext("/query_region_list", t -> {
|
||||||
// Log
|
// Log incoming request.
|
||||||
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s request: query_region_list", t.getRemoteAddress()));
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s request: query_region_list", t.getRemoteAddress()));
|
||||||
|
|
||||||
responseHTML(t, regionListBase64);
|
// Invoke event.
|
||||||
|
QueryAllRegionsEvent event = new QueryAllRegionsEvent(this.regionListBase64); event.call();
|
||||||
|
// Respond with event result.
|
||||||
|
responseHTML(t, event.getRegionList());
|
||||||
});
|
});
|
||||||
|
|
||||||
for (String regionName : regions.keySet()) {
|
for (String regionName : regions.keySet()) {
|
||||||
server.createContext("/query_cur_region_" + regionName, t -> {
|
server.createContext("/query_cur_region_" + regionName, t -> {
|
||||||
String regionCurrentBase64 = regions.get(regionName).Base64;
|
String regionCurrentBase64 = regions.get(regionName).Base64;
|
||||||
// Log
|
// Log incoming request.
|
||||||
Grasscutter.getLogger().info(String.format("Client %s request: query_cur_region_%s", t.getRemoteAddress(), regionName));
|
Grasscutter.getLogger().info(String.format("Client %s request: query_cur_region_%s", t.getRemoteAddress(), regionName));
|
||||||
// Create a response form the request query parameters
|
|
||||||
|
// Create a response from the request query parameters.
|
||||||
URI uri = t.getRequestURI();
|
URI uri = t.getRequestURI();
|
||||||
String response = "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw==";
|
String response = "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw==";
|
||||||
if (uri.getQuery() != null && uri.getQuery().length() > 0) {
|
if (uri.getQuery() != null && uri.getQuery().length() > 0) {
|
||||||
response = regionCurrentBase64;
|
response = regionCurrentBase64;
|
||||||
}
|
}
|
||||||
responseHTML(t, response);
|
|
||||||
|
// Invoke event.
|
||||||
|
QueryCurrentRegionEvent event = new QueryCurrentRegionEvent(response); event.call();
|
||||||
|
// Respond with event result.
|
||||||
|
responseHTML(t, event.getRegionInfo());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package emu.grasscutter.server.event.dispatch;
|
||||||
|
|
||||||
|
import emu.grasscutter.server.event.ServerEvent;
|
||||||
|
|
||||||
|
public final class QueryAllRegionsEvent extends ServerEvent {
|
||||||
|
private String regionList;
|
||||||
|
|
||||||
|
public QueryAllRegionsEvent(String regionList) {
|
||||||
|
super(Type.DISPATCH);
|
||||||
|
|
||||||
|
this.regionList = regionList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegionList(String regionList) {
|
||||||
|
this.regionList = regionList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegionList() {
|
||||||
|
return this.regionList;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package emu.grasscutter.server.event.dispatch;
|
||||||
|
|
||||||
|
import emu.grasscutter.server.event.ServerEvent;
|
||||||
|
|
||||||
|
public final class QueryCurrentRegionEvent extends ServerEvent {
|
||||||
|
private String regionInfo;
|
||||||
|
|
||||||
|
public QueryCurrentRegionEvent(String regionInfo) {
|
||||||
|
super(Type.DISPATCH);
|
||||||
|
|
||||||
|
this.regionInfo = regionInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegionInfo(String regionInfo) {
|
||||||
|
this.regionInfo = regionInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegionInfo() {
|
||||||
|
return this.regionInfo;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user