Compare commits
2 Commits
cc33304ad4
...
1.6.2
Author | SHA1 | Date | |
---|---|---|---|
54461173c0 | |||
8dae4f7667 |
10
README.md
10
README.md
@@ -1,6 +1,6 @@
|
||||
# [HamsterBall](https://git.airgame.net/MiniDay/hamster-ball)
|
||||
|
||||
基于 Redis 的 Minecraft 服务端通用消息中间件
|
||||
仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
|
||||
该插件依赖于 [仓鼠核心](https://git.airgame.net/MiniDay/hamster-core)
|
||||
|
||||
@@ -49,9 +49,9 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
// 对于 Bukkit 插件
|
||||
compileOnly("cn.hamster3.mc.plugin:ball-bukkit:1.6.3-SNAPSHOT")
|
||||
compileOnly("cn.hamster3.mc.plugin:ball-bukkit:1.6.2")
|
||||
// 对于 BungeeCord 插件
|
||||
compileOnly("cn.hamster3.mc.plugin:ball-bungee:1.6.3-SNAPSHOT")
|
||||
compileOnly("cn.hamster3.mc.plugin:ball-bungee:1.6.2")
|
||||
}
|
||||
```
|
||||
|
||||
@@ -77,13 +77,13 @@ dependencies {
|
||||
<dependency>
|
||||
<groupId>cn.hamster3.mc.plugin</groupId>
|
||||
<artifactId>ball-bukkit</artifactId>
|
||||
<version>1.6.3-SNAPSHOT</version>
|
||||
<version>1.6.2</version>
|
||||
</dependency>
|
||||
<!--对于 BungeeCord 插件-->
|
||||
<dependency>
|
||||
<groupId>cn.hamster3.mc.plugin</groupId>
|
||||
<artifactId>ball-bungee</artifactId>
|
||||
<version>1.6.3-SNAPSHOT</version>
|
||||
<version>1.6.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
@@ -4,15 +4,8 @@ version: ${version}
|
||||
api-version: 1.13
|
||||
|
||||
author: MiniDay
|
||||
description: ${description}
|
||||
website: https://git.airgame.net/MiniDay/hamster-ball
|
||||
|
||||
UPDATE_CHECKER:
|
||||
VERSION: ${version}
|
||||
CHECK_TYPE: GITEA_RELEASES
|
||||
GIT_BASE_URL: https://git.airgame.net
|
||||
GIT_REPO: MiniDay/hamster-ball
|
||||
DOWNLOAD_URL: https://jenkins.airgame.net/job/opensource/job/hamster-ball/
|
||||
description: 仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
|
||||
load: STARTUP
|
||||
|
||||
|
6
ball-bukkit/src/main/resources/update.yml
Normal file
6
ball-bukkit/src/main/resources/update.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
version: ${version}
|
||||
CHECK_TYPE: GITEA_RELEASES
|
||||
GIT_BASE_URL: https://git.airgame.net
|
||||
GIT_REPO: MiniDay/hamster-ball
|
||||
GIT_TOKEN: a44a69a4d1b8601bf6091403247759cd28764d5e
|
||||
DOWNLOAD_URL: https://jenkins.airgame.net/job/opensource/job/hamster-ball/
|
@@ -3,15 +3,7 @@ main: cn.hamster3.mc.plugin.ball.bungee.HamsterBallPlugin
|
||||
version: ${version}
|
||||
|
||||
author: MiniDay
|
||||
description: ${description}
|
||||
website: https://git.airgame.net/MiniDay/hamster-ball
|
||||
|
||||
UPDATE_CHECKER:
|
||||
VERSION: ${version}
|
||||
CHECK_TYPE: GITEA_RELEASES
|
||||
GIT_BASE_URL: https://git.airgame.net
|
||||
GIT_REPO: MiniDay/hamster-ball
|
||||
DOWNLOAD_URL: https://jenkins.airgame.net/job/opensource/job/hamster-ball/
|
||||
description: 仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
|
||||
depend:
|
||||
- HamsterCore
|
||||
|
6
ball-bungee/src/main/resources/update.yml
Normal file
6
ball-bungee/src/main/resources/update.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
version: ${version}
|
||||
CHECK_TYPE: GITEA_RELEASES
|
||||
GIT_BASE_URL: https://git.airgame.net
|
||||
GIT_REPO: MiniDay/hamster-ball
|
||||
GIT_TOKEN: a44a69a4d1b8601bf6091403247759cd28764d5e
|
||||
DOWNLOAD_URL: https://jenkins.airgame.net/job/opensource/job/hamster-ball/
|
@@ -105,7 +105,6 @@ public abstract class BallAPI {
|
||||
}
|
||||
|
||||
protected void enable() throws SQLException, InterruptedException {
|
||||
CoreAPI.getInstance().getExecutorService().submit(() -> redisSub.subscribe(BallRedisListener.INSTANCE, BALL_CHANNEL));
|
||||
try (Jedis jedis = CoreAPI.getInstance().getJedisPool().getResource()) {
|
||||
String key = "HamsterBall:ServerInfo:" + localServerInfo.getId();
|
||||
if (jedis.exists(key)) {
|
||||
@@ -180,6 +179,7 @@ public abstract class BallAPI {
|
||||
}
|
||||
getLogger().info("从数据库中加载了 " + allServerInfo.size() + " 条服务器信息");
|
||||
getLogger().info("从数据库中加载了 " + allPlayerInfo.size() + " 条玩家信息");
|
||||
subscribeRaw(BALL_CHANNEL);
|
||||
}
|
||||
|
||||
protected void disable() throws SQLException, InterruptedException {
|
||||
@@ -506,29 +506,26 @@ public abstract class BallAPI {
|
||||
* <p>
|
||||
* 会自动加上 config 中设置的频道前缀
|
||||
*
|
||||
* @param channels 频道名称
|
||||
* @param channel 频道名称
|
||||
*/
|
||||
public void subscribe(@NotNull String... channels) {
|
||||
for (int i = 0; i < channels.length; i++) {
|
||||
channels[i] = ballConfig.getChannelPrefix() + channels[i];
|
||||
public void subscribe(@NotNull String... channel) {
|
||||
for (int i = 0; i < channel.length; i++) {
|
||||
channel[i] = ballConfig.getChannelPrefix() + channel[i];
|
||||
}
|
||||
subscribeRaw(channels);
|
||||
CoreAPI.getInstance().getExecutorService().submit(
|
||||
() -> redisSub.subscribe(BallRedisListener.INSTANCE, channel)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略频道前缀配置,订阅 redis 消息频道
|
||||
*
|
||||
* @param channels 频道名称
|
||||
* @param channel 频道名称
|
||||
*/
|
||||
public void subscribeRaw(@NotNull String... channels) {
|
||||
BallRedisListener.INSTANCE.subscribe(channels);
|
||||
// CoreAPI.getInstance().getExecutorService().submit(() -> {
|
||||
// try {
|
||||
// redisSub.subscribe(BallRedisListener.INSTANCE, channels);
|
||||
// } catch (Exception | Error e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// });
|
||||
public void subscribeRaw(@NotNull String... channel) {
|
||||
CoreAPI.getInstance().getExecutorService().submit(
|
||||
() -> redisSub.subscribe(BallRedisListener.INSTANCE, channel)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -537,10 +534,9 @@ public abstract class BallAPI {
|
||||
* @param patterns 频道名称正则表达式
|
||||
*/
|
||||
public void subscribePatterns(@NotNull String patterns) {
|
||||
BallRedisListener.INSTANCE.psubscribe(patterns);
|
||||
// CoreAPI.getInstance().getExecutorService().submit(
|
||||
// () -> redisSub.psubscribe(BallRedisListener.INSTANCE, patterns)
|
||||
// );
|
||||
CoreAPI.getInstance().getExecutorService().submit(
|
||||
() -> redisSub.psubscribe(BallRedisListener.INSTANCE, patterns)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -548,22 +544,22 @@ public abstract class BallAPI {
|
||||
* <p>
|
||||
* 会自动加上 config 中设置的频道前缀
|
||||
*
|
||||
* @param channels 频道名称
|
||||
* @param channel 频道名称
|
||||
*/
|
||||
public void unsubscribe(@NotNull String... channels) {
|
||||
for (int i = 0; i < channels.length; i++) {
|
||||
channels[i] = ballConfig.getChannelPrefix() + channels[i];
|
||||
public void unsubscribe(@NotNull String... channel) {
|
||||
for (int i = 0; i < channel.length; i++) {
|
||||
channel[i] = ballConfig.getChannelPrefix() + channel[i];
|
||||
}
|
||||
unsubscribeRaw(channels);
|
||||
BallRedisListener.INSTANCE.unsubscribe(channel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略频道前缀配置,取消订阅 redis 消息频道
|
||||
*
|
||||
* @param channels 频道名称
|
||||
* @param channel 频道名称
|
||||
*/
|
||||
public void unsubscribeRaw(@NotNull String... channels) {
|
||||
BallRedisListener.INSTANCE.unsubscribe(channels);
|
||||
public void unsubscribeIgnorePrefix(@NotNull String... channel) {
|
||||
BallRedisListener.INSTANCE.unsubscribe(channel);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -15,26 +15,19 @@ public class BallRedisListener extends JedisPubSub {
|
||||
|
||||
@Override
|
||||
public void onMessage(String channel, String message) {
|
||||
CoreAPI.getInstance().getExecutorService().submit(() -> {
|
||||
try {
|
||||
String finalChannel = channel;
|
||||
if (finalChannel.startsWith(BallAPI.getInstance().getBallConfig().getChannelPrefix())) {
|
||||
finalChannel = finalChannel.substring(BallAPI.getInstance().getBallConfig().getChannelPrefix().length());
|
||||
}
|
||||
BallMessage ballMessage = CoreAPI.getInstance().getGson().fromJson(message, BallMessage.class);
|
||||
BallAPI ballAPI = BallAPI.getInstance();
|
||||
EventBus eventBus = ballAPI.getEventBus();
|
||||
if (ballMessage.getReceiverType() != null && ballMessage.getReceiverType() != ballAPI.getLocalServerInfo().getType()) {
|
||||
return;
|
||||
}
|
||||
if (ballMessage.getReceiverID() != null && !ballAPI.isLocalServer(ballMessage.getReceiverID())) {
|
||||
return;
|
||||
}
|
||||
eventBus.post(new MessageReceivedEvent(finalChannel, ballMessage));
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
if (channel.startsWith(BallAPI.getInstance().getBallConfig().getChannelPrefix())) {
|
||||
channel = channel.substring(BallAPI.getInstance().getBallConfig().getChannelPrefix().length());
|
||||
}
|
||||
BallMessage ballMessage = CoreAPI.getInstance().getGson().fromJson(message, BallMessage.class);
|
||||
BallAPI ballAPI = BallAPI.getInstance();
|
||||
EventBus eventBus = ballAPI.getEventBus();
|
||||
if (ballMessage.getReceiverType() != null && ballMessage.getReceiverType() != ballAPI.getLocalServerInfo().getType()) {
|
||||
return;
|
||||
}
|
||||
if (ballMessage.getReceiverID() != null && !ballAPI.isLocalServer(ballMessage.getReceiverID())) {
|
||||
return;
|
||||
}
|
||||
eventBus.post(new MessageReceivedEvent(channel, ballMessage));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -1,5 +1,6 @@
|
||||
VERSION: ${version}
|
||||
version: ${version}
|
||||
CHECK_TYPE: GITEA_RELEASES
|
||||
GIT_BASE_URL: https://git.airgame.net
|
||||
GIT_REPO: MiniDay/hamster-ball
|
||||
GIT_TOKEN: a44a69a4d1b8601bf6091403247759cd28764d5e
|
||||
DOWNLOAD_URL: https://jenkins.airgame.net/job/opensource/job/hamster-ball/
|
||||
|
@@ -5,8 +5,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "cn.hamster3.mc.plugin"
|
||||
version = "1.6.3-SNAPSHOT"
|
||||
description = "基于 Redis 的 Minecraft 服务端通用消息中间件"
|
||||
version = "1.6.2"
|
||||
|
||||
subprojects {
|
||||
apply {
|
||||
@@ -17,7 +16,6 @@ subprojects {
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
description = rootProject.description
|
||||
|
||||
repositories {
|
||||
maven("https://maven.airgame.net/maven-public/")
|
||||
@@ -45,6 +43,11 @@ subprojects {
|
||||
from(rootProject.file("LICENSE"))
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
}
|
||||
processResources {
|
||||
filesMatching("update.yml") {
|
||||
expand(rootProject.properties)
|
||||
}
|
||||
}
|
||||
build {
|
||||
dependsOn(shadowJar)
|
||||
}
|
||||
|
Reference in New Issue
Block a user