feat: code
This commit is contained in:
@@ -8,6 +8,7 @@ plugins {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
maven("https://repo.extendedclip.com/releases/")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -15,6 +16,7 @@ dependencies {
|
||||
implementation(project(":common"))
|
||||
|
||||
compileOnly("io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT")
|
||||
compileOnly("me.clip:placeholderapi:2.11.7")
|
||||
}
|
||||
|
||||
java {
|
||||
|
||||
@@ -1,22 +1,27 @@
|
||||
package online.mineroo.paper;
|
||||
|
||||
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
|
||||
import online.mineroo.common.BindRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import online.mineroo.common.HttpNetworkService;
|
||||
import online.mineroo.common.MessageManager;
|
||||
import online.mineroo.common.NetworkServiceInterface;
|
||||
import online.mineroo.common.request.RequestClient;
|
||||
import online.mineroo.paper.commands.MainCommand;
|
||||
import online.mineroo.paper.listeners.BindListener;
|
||||
import online.mineroo.paper.listeners.PlayerBindListener;
|
||||
import online.mineroo.paper.structure.PlayerInfo;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class MinerooCore extends JavaPlugin implements Listener {
|
||||
private MessageManager messageManager;
|
||||
private NetworkServiceInterface networkService;
|
||||
private BindRequest bindRequest;
|
||||
private RequestClient requestClient;
|
||||
private Config config;
|
||||
|
||||
private HashMap<UUID, PlayerInfo> playerCache = new HashMap<>();
|
||||
|
||||
private BindListener bindListener;
|
||||
|
||||
@Override
|
||||
@@ -57,7 +62,7 @@ public class MinerooCore extends JavaPlugin implements Listener {
|
||||
getLogger().info("Using direct HTTP network [ " + hostname + " ]");
|
||||
}
|
||||
|
||||
bindRequest = new BindRequest(this.getSLF4JLogger(), this.getNetworkService());
|
||||
requestClient = new RequestClient(this.getSLF4JLogger(), this.getNetworkService());
|
||||
|
||||
if (this.messageManager == null) {
|
||||
this.messageManager = new MessageManager();
|
||||
@@ -82,7 +87,7 @@ public class MinerooCore extends JavaPlugin implements Listener {
|
||||
return this.bindListener;
|
||||
}
|
||||
|
||||
public BindRequest getBindRequest() {
|
||||
return bindRequest;
|
||||
public RequestClient getRequestClient() {
|
||||
return requestClient;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,9 @@ import io.papermc.paper.registry.RegistryAccess;
|
||||
import io.papermc.paper.registry.RegistryKey;
|
||||
import java.util.UUID;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import online.mineroo.common.BindRequest;
|
||||
import online.mineroo.common.BindRequest.PlayerBindStatusEnum;
|
||||
import online.mineroo.common.MessageManager;
|
||||
import online.mineroo.common.request.RequestClient;
|
||||
import online.mineroo.common.request.UserRequest.PlayerBindStatusEnum;
|
||||
import online.mineroo.paper.MinerooCore;
|
||||
import online.mineroo.paper.ProxyNetworkService;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -59,26 +59,29 @@ public class BindCommand {
|
||||
}
|
||||
|
||||
try {
|
||||
this.plugin.getBindRequest().checkPlayerBindStatus(uuid, null).thenAccept(response -> {
|
||||
PlayerBindStatusEnum status = response.getStatus();
|
||||
this.plugin.getRequestClient()
|
||||
.user()
|
||||
.checkPlayerBindStatus(uuid, null)
|
||||
.thenAccept(response -> {
|
||||
PlayerBindStatusEnum status = response.getStatus();
|
||||
|
||||
plugin.getSLF4JLogger().debug(status.toString());
|
||||
plugin.getSLF4JLogger().debug(status.toString());
|
||||
|
||||
if (status == PlayerBindStatusEnum.BOUND) {
|
||||
player.sendMessage(messageManager.get("info.bind.player.already-bound"));
|
||||
} else if (status == PlayerBindStatusEnum.NOT_BOUND) {
|
||||
Dialog dialog = RegistryAccess.registryAccess()
|
||||
.getRegistry(RegistryKey.DIALOG)
|
||||
.get(Key.key("mineroo:bind_user"));
|
||||
if (dialog == null) {
|
||||
logger.error("load user bind dialog failed.");
|
||||
player.sendMessage(messageManager.get("info.bind.player.dialog-undefined"));
|
||||
}
|
||||
if (status == PlayerBindStatusEnum.BOUND) {
|
||||
player.sendMessage(messageManager.get("info.bind.player.already-bound"));
|
||||
} else if (status == PlayerBindStatusEnum.NOT_BOUND) {
|
||||
Dialog dialog = RegistryAccess.registryAccess()
|
||||
.getRegistry(RegistryKey.DIALOG)
|
||||
.get(Key.key("mineroo:bind_user"));
|
||||
if (dialog == null) {
|
||||
logger.error("load user bind dialog failed.");
|
||||
player.sendMessage(messageManager.get("info.bind.player.dialog-undefined"));
|
||||
}
|
||||
|
||||
// TODO: Need a timeout check
|
||||
player.showDialog(dialog);
|
||||
}
|
||||
});
|
||||
// TODO: Need a timeout check
|
||||
player.showDialog(dialog);
|
||||
}
|
||||
});
|
||||
|
||||
} finally {
|
||||
}
|
||||
@@ -112,7 +115,7 @@ public class BindCommand {
|
||||
// Run the binding process asynchronously to avoid blocking the main thread
|
||||
org.bukkit.Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
Logger logger = plugin.getSLF4JLogger();
|
||||
BindRequest bindRequest = plugin.getBindRequest();
|
||||
RequestClient requestClient = plugin.getRequestClient();
|
||||
try {
|
||||
String address = plugin.getConfigObject().getServer().getServerBind().getAddress();
|
||||
String port =
|
||||
@@ -123,7 +126,7 @@ public class BindCommand {
|
||||
}
|
||||
|
||||
// 1. Check binding status
|
||||
if (bindRequest.checkBindStatus(address, port).join()) {
|
||||
if (requestClient.management().checkBindStatus(address, port).join()) {
|
||||
plugin.getMessageManager().get("command.bind.server.already-bound");
|
||||
context.getSource().getSender().sendMessage(
|
||||
plugin.getMessageManager().get("command.bind.server.already-bound")
|
||||
@@ -131,9 +134,9 @@ public class BindCommand {
|
||||
return;
|
||||
}
|
||||
// 2. Initiate MOTD verification
|
||||
boolean motdOk = bindRequest.initialMotdVerifyRequest(address, port).join();
|
||||
boolean motdOk = requestClient.management().initialMotdVerifyRequest(address, port).join();
|
||||
if (motdOk) {
|
||||
String motdToken = bindRequest.getMotdToken();
|
||||
String motdToken = requestClient.management().getMotdToken();
|
||||
// Send MOTD token to Velocity
|
||||
applyMotdToken(motdToken);
|
||||
context.getSource().getSender().sendMessage(
|
||||
@@ -149,7 +152,7 @@ public class BindCommand {
|
||||
boolean success = false;
|
||||
int maxRetries = 3;
|
||||
for (int i = 1; i <= maxRetries; i++) {
|
||||
if (bindRequest
|
||||
if (requestClient.management()
|
||||
.finalizeServerBinding(
|
||||
plugin.getConfigObject().getServer().getServerName(),
|
||||
plugin.getConfigObject().getServer().getDescription()
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package online.mineroo.paper.expansions;
|
||||
|
||||
import java.util.UUID;
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import online.mineroo.paper.MinerooCore;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class MinerooUserExpansion extends PlaceholderExpansion {
|
||||
private final MinerooCore plugin;
|
||||
|
||||
public MinerooUserExpansion(MinerooCore plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getAuthor() {
|
||||
return String.join(", ", plugin.getPluginMeta().getAuthors());
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getIdentifier() {
|
||||
return "example";
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getVersion() {
|
||||
return plugin.getPluginMeta().getVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean persist() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onPlaceholderRequest(Player player, @NotNull String params) {
|
||||
if (player == null)
|
||||
return "";
|
||||
|
||||
UUID uuid = player.getUniqueId();
|
||||
|
||||
if (params.equals("name")) {
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -16,11 +16,11 @@ import java.util.concurrent.TimeUnit;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import online.mineroo.common.BindRequest;
|
||||
import online.mineroo.common.BindRequest.PlayerBindEnum;
|
||||
import online.mineroo.common.BindRequest.PlayerBindResponse;
|
||||
import online.mineroo.common.BindRequest.PlayerBindStatusEnum;
|
||||
import online.mineroo.common.MessageManager;
|
||||
import online.mineroo.common.request.UserRequest;
|
||||
import online.mineroo.common.request.UserRequest.PlayerBindEnum;
|
||||
import online.mineroo.common.request.UserRequest.PlayerBindResponse;
|
||||
import online.mineroo.common.request.UserRequest.PlayerBindStatusEnum;
|
||||
import online.mineroo.paper.Config;
|
||||
import online.mineroo.paper.MinerooCore;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -72,7 +72,8 @@ public class PlayerBindListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
this.plugin.getBindRequest()
|
||||
this.plugin.getRequestClient()
|
||||
.user()
|
||||
.checkPlayerBindStatus(uuid, null)
|
||||
.thenAccept(response -> {
|
||||
Bukkit.getScheduler().runTask(plugin, () -> {
|
||||
@@ -175,20 +176,21 @@ public class PlayerBindListener implements Listener {
|
||||
|
||||
final UUID targetUuid = playerUuid;
|
||||
|
||||
plugin.getBindRequest()
|
||||
plugin.getRequestClient()
|
||||
.user()
|
||||
.PlayerBindRequest(userEmail, targetUuid, playerName)
|
||||
.thenAccept(response -> setConnectionJoinResult(targetUuid, response))
|
||||
.exceptionally(ex -> {
|
||||
setConnectionJoinResult(
|
||||
targetUuid,
|
||||
BindRequest.createPlayerBindErrorResponse("Network Error: " + ex.getMessage())
|
||||
UserRequest.createPlayerBindErrorResponse("Network Error: " + ex.getMessage())
|
||||
);
|
||||
return null;
|
||||
});
|
||||
} else if (key.equals(Key.key("mineroo:bind_user/cancel"))) {
|
||||
setConnectionJoinResult(
|
||||
playerUuid,
|
||||
BindRequest.createPlayerBindErrorResponse(
|
||||
UserRequest.createPlayerBindErrorResponse(
|
||||
messageManager.getString("info.bind.player.canceled")
|
||||
)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package online.mineroo.paper.structure;
|
||||
|
||||
public class PlayerInfo {
|
||||
private String minerooUsername;
|
||||
|
||||
public PlayerInfo(String minerooUsername) {
|
||||
this.minerooUsername = minerooUsername;
|
||||
}
|
||||
|
||||
public String getMinerooUsername() {
|
||||
return this.minerooUsername;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ author: YuKun Liu
|
||||
website: https://mineroo.online
|
||||
description: Mineroo Base Plugin
|
||||
api-version: "1.21.10"
|
||||
softdepend: ["PlaceholderAPI"]
|
||||
permissions:
|
||||
mineroo.admin.reload:
|
||||
description: "Reload plugin config files."
|
||||
|
||||
Reference in New Issue
Block a user