Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group = 'com.springwater.easybot'
version = '2.1.5'
version = '2.2.0'

repositories {
mavenCentral()
Expand Down Expand Up @@ -60,7 +60,7 @@ tasks.build.dependsOn(tasks.shadowJar)

dependencies {
compileOnly "org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT"
implementation 'com.springwater.easybot:easybot-bridge:1.7-rc.1'
implementation 'com.springwater.easybot:easybot-bridge:1.7.1'
implementation 'org.javassist:javassist:3.28.0-GA'
implementation 'bot.inker.acj:runtime:1.5'
implementation 'org.reflections:reflections:0.10.2'
Expand Down
Binary file added libs/AuthMe-5.6.0.jar
Binary file not shown.
37 changes: 31 additions & 6 deletions src/main/java/com/springwater/easybot/BridgeImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,21 @@ public void SyncToChatExtra(List<Segment> segments, String text) {
}
}

@Override
public boolean moduleIsInstalled(String name) {
return Bukkit.getPluginManager().getPlugin(name) != null;
}

@Override
public boolean moduleIsEnabled(String name) {
return Bukkit.getPluginManager().isPluginEnabled(name);
}

@Override
public boolean isAuthenticated(String name) {
return false;
}

@Override
public List<PlayerInfo> getPlayerList() {
return Bukkit.getOnlinePlayers().stream()
Expand Down Expand Up @@ -229,12 +244,22 @@ private BaseComponent toComponent(Segment segment) {
}
} else if (segment instanceof ImageSegment) {
component.setColor(ChatColor.GREEN);
component.setHoverEvent(new HoverEvent(
HoverEvent.Action.SHOW_TEXT,
new ComponentBuilder("§7§n点击预览 ")
.append(new TextComponent("§7§n" + ((ImageSegment) segment).getUrl()))
.create()
));

if (Easybot.instance.getConfig().getBoolean("sync.chat_image_support", true)) {
component.setHoverEvent(new HoverEvent(
HoverEvent.Action.SHOW_TEXT,
new ComponentBuilder("[[CICode,url=" + ((ImageSegment) segment).getUrl() + ",name=" + ((ImageSegment) segment).getSummary() + "]]")
.create()
));
} else {
component.setHoverEvent(new HoverEvent(
HoverEvent.Action.SHOW_TEXT,
new ComponentBuilder("§7§n点击预览 ")
.append(new TextComponent("§7§n" + ((ImageSegment) segment).getUrl()))
.create()
));
}

component.setClickEvent(new ClickEvent(
ClickEvent.Action.OPEN_URL,
((ImageSegment) segment).getUrl()
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/springwater/easybot/Easybot.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.springwater.easybot.papi.EasyBotExpansion;
import com.springwater.easybot.papi.OfflineStatisticExpansion;
import com.springwater.easybot.task.TaskManager;
import com.springwater.easybot.utils.AuthMeUtils;
import com.springwater.easybot.utils.BukkitUtils;
import com.springwater.easybot.utils.FakePlayerUtils;
import com.springwater.easybot.utils.ItemsAdderUtils;
Expand Down Expand Up @@ -79,12 +80,20 @@ public void onEnable() {
handleBungeeChatCompatibility();
handleSkinsRestorerCompatibility();
handleItemsAdderCompatibility();
handleAuthMeCompatibility();

bridgeClient = new BridgeClient(getConfig().getString("service.url", "ws://127.0.0.1:8080/bridge"), bridgeBehavior);
bridgeClient.setToken(getConfig().getString("service.token"));
putTasks();
}

private void handleAuthMeCompatibility() {
if (AuthMeUtils.init()) {
getLogger().info("\u001B[32m※ 检测到AuthMe,群聊登录可以正常使用!\u001B[0m");
} else {
getLogger().info("\u001B[31m※ 未检测到AuthMe,群聊登录功能可能无法正常工作!\u001B[0m");
}
}

private void handleSkinsRestorerCompatibility() {
if (BukkitUtils.hasSkinsRestorer() && !BukkitUtils.placeholderApiInstalled()) {
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/com/springwater/easybot/utils/AuthMeUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.springwater.easybot.utils;

import com.springwater.easybot.Easybot;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import java.util.concurrent.CompletableFuture;

public class AuthMeUtils {
private static boolean isAuthMeInstalled = false;

public static boolean init() {
try {
Class.forName("fr.xephi.authme.AuthMe");
isAuthMeInstalled = true;
} catch (ClassNotFoundException e) {
isAuthMeInstalled = false;
}
return isAuthMeInstalled;
}

public Boolean isPlayerAuthenticated(String playerName) {
return CompletableFuture.supplyAsync(() -> {
CompletableFuture<Boolean> inner = new CompletableFuture<>();
Bukkit.getScheduler().runTask(Easybot.instance, () -> {
try {
Player player = Bukkit.getPlayer(playerName);
boolean result = player != null &&
fr.xephi.authme.api.v3.AuthMeApi.getInstance().isAuthenticated(player);
inner.complete(result);
} catch (Exception e) {
inner.completeExceptionally(e);
}
});
return inner;
}).thenCompose(f -> f).join();
}

}
7 changes: 6 additions & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,9 @@ geyser:
# - 如果之前未启用但现在启用,一些已经绑定的基岩版玩家可能需要重新绑定。(为什么你自己想)
# - 启用时(True),如果基岩版玩家的前缀为 BE_。
# 示例:BE_MiuxuE -> MiuxuE
ignore_prefix: false
ignore_prefix: false

# 消息同步设置
sync:
# 消息同步图片时支持ChatImage
chat_image_support: true
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: '${version}'
main: com.springwater.easybot.Easybot
api-version: '1.13'
load: STARTUP
softdepend: [ Essentials,PlaceHolderAPI,PlayerChat,RedisChat,TrChat,Geyser-Spigot,SkinsRestorer,ItemsAdder,FakePlayer,VentureChat ]
softdepend: [ Essentials,PlaceHolderAPI,PlayerChat,RedisChat,TrChat,Geyser-Spigot,SkinsRestorer,ItemsAdder,FakePlayer,VentureChat,AuthMe ]
folia-supported: true

commands:
Expand Down
Loading