# Celerity: 基于地理位置的服务器重定向
# 风险自负 (请勿用于生产环境)
## 关于
这个插件允许玩家根据他们的地理位置连接到最近的服务器。玩家只需输入 myserver.com,他们就会自动重定向到最近的服务器,而无需代理他们的连接。
示例场景:
服务器 A (east.myserver.com) 位于纽约。
服务器 B (west.myserver.com) 位于洛杉矶。
通过 myserver.com 连接的玩家将被重定向到服务器 A 或服务器 B,具体取决于哪个地理位置更近。
## 路线图
这仍然是一个正在进行中的项目,但以下是需要完成的基本路线图:
- 设置缓存过期系统。
- 允许旧版本客户端连接。
- 添加更多 API 选项
- 允许本地存储 IP 历史记录。SQLite?
如果您想提供帮助,请查看 Github!
## 安装
将它放入主代理服务器的 velocity 插件文件夹中,然后确保所有下游服务器都配置为接受带有传输数据包的玩家。
然后它将创建一个类似这样的 config.toml 文件:
```
[settings]
# 列出在用户使用这些域名连接时,不应发生传输的域名
no_transfer_domains = ["east.myserver.com", "est.myserver.com"]
debug = false # 启用以获取调试消息。您知道的,套路
[settings.api]
enabled = true # 禁用此项将阻止使用 API。
provider = "ipgeolocation" # 目前只支持 ipgeolocation (https://ipgeolocation.io/),请前往那里创建 API 密钥
key = "somekeyyouget" # 如果不需要密钥,请设置为 None
[settings.db_cache]
enabled = true # 是否使用数据库缓存功能
cache_ip = true # 在数据库中保存 IP 地址
cache_username = true # 在数据库中保存用户名(可能会降低准确性)
cache_expire = 730 # 小时,直到缓存条目过期(0 禁用过期)
[db] ## 缓存的数据库配置
address = "120.0.0.1:12345"
database = "fundatabase"
table_prefix = "cel_"
username = "username"
password = "password"
[servers] ## 服务器配置部分
[servers.easternserver]
ip = "east.myserver.net"
port = 25565
latitude = 40.7128 # 示例:纽约市的纬度
longitude = -74.0060 # 示例:纽约市的经度
[servers.westernserver]
ip = "123.45.68.79"
port = 42069
latitude = 34.0522 # 示例:洛杉矶的纬度
longitude = -118.2437 # 示例:洛杉矶的经度
```
## 构建
您应该可以使用 Maven 和 Java 21 构建此插件。