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
7 changes: 7 additions & 0 deletions .github/workflows/nightly-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ jobs:
# Can Can Need Result
ls -l

# 这一步是为了删除之前的文件
- name: Delete Old Release
# 使用 || true 忽略错误,防止第一次运行时因为没有 release 而报错
run: gh release delete latest-dev --cleanup-tag -y || true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Update Nightly Release
uses: softprops/action-gh-release@v2
with:
Expand Down
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.0.8'
version = '2.1.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.2-SNAPSHOT'
implementation 'com.springwater.easybot:easybot-bridge:1.4-SNAPSHOT'
implementation 'org.javassist:javassist:3.28.0-GA'
implementation 'bot.inker.acj:runtime:1.5'
implementation 'org.reflections:reflections:0.10.2'
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/springwater/easybot/EasyBotImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public void BindSuccessBroadcast(String playerName, String accountId, String acc
.replace("&", "§")
.replace("#account", accountId)
.replace("#name", accountName);
onlinePlayer.sendMessage(message);
onlinePlayer.sendMessage(message);
}

if (Easybot.instance.getConfig().getBoolean("event.enable_success_event", false)) {
Expand Down Expand Up @@ -152,9 +152,9 @@ public void SyncToChatExtra(List<Segment> segments, String text) {

Easybot.instance.runTask(() -> Bukkit.getOnlinePlayers().forEach(p -> {
// 判断玩家名字是否在atPlayerNames中,忽略大小写
boolean hasAt = atPlayerNames.stream().anyMatch(x -> x.equalsIgnoreCase(GeyserUtils.getName(p)));
boolean hasAt = atPlayerNames.stream().anyMatch(x -> x.equalsIgnoreCase(GeyserUtils.getNameByPlayer(p)));
if (!hasAt && Easybot.instance.getConfig().getBoolean("event.on_at.find", true)) {
hasAt = text.contains(GeyserUtils.getName(p));
hasAt = text.contains(GeyserUtils.getNameByPlayer(p));
}

if (hasAt && Easybot.instance.getConfig().getBoolean("event.on_at.enable", true)) {
Expand Down Expand Up @@ -185,8 +185,8 @@ public List<PlayerInfo> getPlayerList() {
return Bukkit.getOnlinePlayers().stream()
.map(x -> {
PlayerInfo info = new PlayerInfo();
info.setPlayerName(GeyserUtils.getName(x));
info.setPlayerUuid(GeyserUtils.getUuid(x).toString());
info.setPlayerName(GeyserUtils.getNameByPlayer(x));
info.setPlayerUuid(GeyserUtils.getUuid(x.getUniqueId()).toString());
info.setIp(BridgeUtils.getPlayerIp(x));
info.setBedrock(GeyserUtils.isBedrock(x));
info.setSkinUrl(SkinUtils.getSkin(x));
Expand Down
42 changes: 11 additions & 31 deletions src/main/java/com/springwater/easybot/event/PlayerEvents.java
Original file line number Diff line number Diff line change
@@ -1,59 +1,39 @@
package com.springwater.easybot.event;

import com.google.errorprone.annotations.Var;
import com.springwater.easybot.Easybot;
import com.springwater.easybot.bridge.packet.PlayerLoginResultPacket;
import com.springwater.easybot.utils.BridgeUtils;
import com.springwater.easybot.utils.GeyserUtils;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;

public class PlayerEvents implements Listener {
@EventHandler
public void onPlayerLogin(PlayerLoginEvent event) {
public void onPlayerLogin(AsyncPlayerPreLoginEvent event) {
try {
String ip = event.getAddress().getHostAddress();
String name = GeyserUtils.getName(event.getUniqueId());
if (name == null) name = event.getPlayerProfile().getName();
Easybot.getClient().reportPlayer(name, GeyserUtils.getUuid(event.getUniqueId()).toString(), ip);
PlayerLoginResultPacket result = Easybot.getClient().login(
GeyserUtils.getName(event.getPlayer()),
GeyserUtils.getUuid(event.getPlayer()).toString()
name,
GeyserUtils.getUuid(event.getUniqueId()).toString()
);
if (result.getKick()) {
event.setKickMessage(result.getKickMessage());
event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
}
} catch (Exception ex) {
Easybot.instance.getLogger().severe("处理玩家登录事件遇到异常! " + ex);
if (!Easybot.instance.getConfig().getBoolean("service.ignore_error")) {
event.setKickMessage("§c服务器内部异常,请稍后重试!");
event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
}
}
}

@EventHandler
public void reportPlayerOnLogin(PlayerLoginEvent event) {
String ip = BridgeUtils.getPlayerIp(event.getPlayer());
new Thread(() -> Easybot.getClient().reportPlayer(
GeyserUtils.getName(event.getPlayer()),
GeyserUtils.getUuid(event.getPlayer()).toString(),
ip
), "EasyBot-Thread: ReportPlayerOnLogin " + event.getPlayer().getName()).start();
}

@EventHandler
public void reportPlayer(PlayerJoinEvent event) {
String ip = BridgeUtils.getPlayerIp(event.getPlayer());
new Thread(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
Easybot.getClient().reportPlayer(
GeyserUtils.getName(event.getPlayer()),
GeyserUtils.getUuid(event.getPlayer()).toString(),
ip);
}, "EasyBot-Thread: ReportPlayerOnJoin " + event.getPlayer().getName()).start();
}
}
4 changes: 2 additions & 2 deletions src/main/java/com/springwater/easybot/utils/BridgeUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
public class BridgeUtils {
public static PlayerInfoWithRaw buildPlayerInfoFull(Player player){
PlayerInfoWithRaw playerInfoWithRaw = new PlayerInfoWithRaw();
playerInfoWithRaw.setName(GeyserUtils.getName(player));
playerInfoWithRaw.setName(GeyserUtils.getNameByPlayer(player));
playerInfoWithRaw.setNameRaw(GeyserUtils.getNameRaw(player));
playerInfoWithRaw.setUuid(GeyserUtils.getUuid(player).toString());
playerInfoWithRaw.setUuid(GeyserUtils.getUuid(player.getUniqueId()).toString());
playerInfoWithRaw.setIp("");
return playerInfoWithRaw;
}
Expand Down
21 changes: 16 additions & 5 deletions src/main/java/com/springwater/easybot/utils/GeyserUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.geysermc.api.GeyserApiBase;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.jetbrains.annotations.Nullable;

import java.util.UUID;

Expand All @@ -25,7 +26,7 @@ public static String getNameRaw(Player player) {
return player.getName();
}

public static String getName(Player player) {
public static String getNameByPlayer(Player player) {
if (ClientProfile.isHasFloodgate()) {
FloodgatePlayer conn = FloodgateApi.getInstance().getPlayer(player.getUniqueId());
if (conn != null) {
Expand All @@ -34,15 +35,25 @@ public static String getName(Player player) {
}
return player.getName();
}

public static @Nullable String getName(UUID player) {
if (ClientProfile.isHasFloodgate()) {
FloodgatePlayer conn = FloodgateApi.getInstance().getPlayer(player);
if (conn != null) {
return toggle() ? conn.getUsername() : conn.getJavaUsername();
}
}
return null;
}

public static UUID getUuid(Player player) {
if (ClientProfile.isHasFloodgate() && toggle()) {
FloodgatePlayer conn = FloodgateApi.getInstance().getPlayer(player.getUniqueId());
public static UUID getUuid(UUID uuid) {
if (ClientProfile.isHasFloodgate()) {
FloodgatePlayer conn = FloodgateApi.getInstance().getPlayer(uuid);
if (conn != null) {
return conn.getJavaUniqueId();
}
}
return player.getUniqueId();
return uuid;
}

public static boolean isBedrock(Player player) {
Expand Down