mirror of
https://github.com/proxiodev/RedisBungee.git
synced 2024-11-05 04:48:02 +00:00
new command infrastructure
This commit is contained in:
parent
86f64ab019
commit
40c542a50a
@ -19,7 +19,6 @@ dependencies {
|
|||||||
api(libs.adventure.legacy)
|
api(libs.adventure.legacy)
|
||||||
api(libs.adventure.plain)
|
api(libs.adventure.plain)
|
||||||
api(libs.adventure.miniMessage)
|
api(libs.adventure.miniMessage)
|
||||||
implementation(libs.acf.core)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
description = "RedisBungee interfaces"
|
description = "RedisBungee interfaces"
|
||||||
|
@ -15,6 +15,7 @@ dependencies {
|
|||||||
implementation(libs.adventure.platforms.bungeecord)
|
implementation(libs.adventure.platforms.bungeecord)
|
||||||
implementation(libs.adventure.gson)
|
implementation(libs.adventure.gson)
|
||||||
implementation(libs.acf.bungeecord)
|
implementation(libs.acf.bungeecord)
|
||||||
|
implementation(project(":RedisBungee-Commands"))
|
||||||
}
|
}
|
||||||
|
|
||||||
description = "RedisBungee Bungeecord implementation"
|
description = "RedisBungee Bungeecord implementation"
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.imaginarycode.minecraft.redisbungee;
|
||||||
|
|
||||||
|
import co.aikar.commands.BungeeCommandIssuer;
|
||||||
|
import co.aikar.commands.CommandIssuer;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.utils.CommandPlatformHelper;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
||||||
|
|
||||||
|
public class BungeeCommandPlatformHelper extends CommandPlatformHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(CommandIssuer issuer, Component component) {
|
||||||
|
BungeeCommandIssuer bIssuer = (BungeeCommandIssuer) issuer;
|
||||||
|
bIssuer.getIssuer().sendMessage(BungeeComponentSerializer.get().serialize(component));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
package com.imaginarycode.minecraft.redisbungee;
|
package com.imaginarycode.minecraft.redisbungee;
|
||||||
|
|
||||||
|
import co.aikar.commands.BungeeCommandManager;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager;
|
import com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager;
|
import com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeeMode;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeeMode;
|
||||||
@ -27,6 +28,8 @@ import com.imaginarycode.minecraft.redisbungee.api.util.InitialUtils;
|
|||||||
import com.imaginarycode.minecraft.redisbungee.api.util.uuid.NameFetcher;
|
import com.imaginarycode.minecraft.redisbungee.api.util.uuid.NameFetcher;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.util.uuid.UUIDFetcher;
|
import com.imaginarycode.minecraft.redisbungee.api.util.uuid.UUIDFetcher;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.util.uuid.UUIDTranslator;
|
import com.imaginarycode.minecraft.redisbungee.api.util.uuid.UUIDTranslator;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.CommandLoader;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.utils.CommandPlatformHelper;
|
||||||
import com.imaginarycode.minecraft.redisbungee.events.PlayerChangedServerNetworkEvent;
|
import com.imaginarycode.minecraft.redisbungee.events.PlayerChangedServerNetworkEvent;
|
||||||
import com.imaginarycode.minecraft.redisbungee.events.PlayerJoinedNetworkEvent;
|
import com.imaginarycode.minecraft.redisbungee.events.PlayerJoinedNetworkEvent;
|
||||||
import com.imaginarycode.minecraft.redisbungee.events.PlayerLeftNetworkEvent;
|
import com.imaginarycode.minecraft.redisbungee.events.PlayerLeftNetworkEvent;
|
||||||
@ -70,6 +73,7 @@ public class RedisBungee extends Plugin implements RedisBungeePlugin<ProxiedPlay
|
|||||||
private RedisBungeeConfiguration configuration;
|
private RedisBungeeConfiguration configuration;
|
||||||
private LangConfiguration langConfiguration;
|
private LangConfiguration langConfiguration;
|
||||||
private OkHttpClient httpClient;
|
private OkHttpClient httpClient;
|
||||||
|
private BungeeCommandManager commandManager;
|
||||||
|
|
||||||
private final Logger logger = LoggerFactory.getLogger("RedisBungee");
|
private final Logger logger = LoggerFactory.getLogger("RedisBungee");
|
||||||
|
|
||||||
@ -254,6 +258,11 @@ public class RedisBungee extends Plugin implements RedisBungeePlugin<ProxiedPlay
|
|||||||
this.api = new RedisBungeeAPI(this);
|
this.api = new RedisBungeeAPI(this);
|
||||||
apiStatic = (RedisBungeeAPI) this.api;
|
apiStatic = (RedisBungeeAPI) this.api;
|
||||||
|
|
||||||
|
// commands
|
||||||
|
CommandPlatformHelper.init(new BungeeCommandPlatformHelper());
|
||||||
|
this.commandManager = new BungeeCommandManager(this);
|
||||||
|
CommandLoader.initCommands(this.commandManager, configuration());
|
||||||
|
|
||||||
logInfo("RedisBungee initialized successfully ");
|
logInfo("RedisBungee initialized successfully ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,6 +287,9 @@ public class RedisBungee extends Plugin implements RedisBungeePlugin<ProxiedPlay
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
if (this.commandManager != null) {
|
||||||
|
this.commandManager.unregisterCommands();
|
||||||
|
}
|
||||||
logInfo("RedisBungee shutdown successfully");
|
logInfo("RedisBungee shutdown successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
RedisBungee-Commands/build.gradle.kts
Normal file
24
RedisBungee-Commands/build.gradle.kts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
plugins {
|
||||||
|
`java-library`
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":RedisBungee-API"))
|
||||||
|
implementation(libs.acf.core)
|
||||||
|
}
|
||||||
|
|
||||||
|
description = "RedisBungee common commands"
|
||||||
|
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
compileJava {
|
||||||
|
options.encoding = Charsets.UTF_8.name()
|
||||||
|
options.release.set(17)
|
||||||
|
}
|
||||||
|
javadoc {
|
||||||
|
options.encoding = Charsets.UTF_8.name()
|
||||||
|
}
|
||||||
|
processResources {
|
||||||
|
filteringCharset = Charsets.UTF_8.name()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-present RedisBungee contributors
|
||||||
|
*
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
*
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.imaginarycode.minecraft.redisbungee.commands;
|
||||||
|
|
||||||
|
import co.aikar.commands.CommandManager;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.api.config.RedisBungeeConfiguration;
|
||||||
|
|
||||||
|
public class CommandLoader {
|
||||||
|
|
||||||
|
public static void initCommands(CommandManager<?, ?, ?, ?, ?, ?> commandManager, RedisBungeeConfiguration configuration) {
|
||||||
|
commandManager.registerCommand(new CommandRedisBungee());
|
||||||
|
// todo: config options to disable each command
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-present RedisBungee contributors
|
||||||
|
*
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
*
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.imaginarycode.minecraft.redisbungee.commands;
|
||||||
|
|
||||||
|
import co.aikar.commands.CommandIssuer;
|
||||||
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
|
import co.aikar.commands.annotation.Default;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.Constants;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.utils.AdventureBaseCommand;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
import net.kyori.adventure.text.event.HoverEvent;
|
||||||
|
import net.kyori.adventure.text.event.HoverEventSource;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
|
||||||
|
@CommandAlias("rb|redisbungee")
|
||||||
|
@CommandPermission("redisbungee.use")
|
||||||
|
public class CommandRedisBungee extends AdventureBaseCommand {
|
||||||
|
|
||||||
|
private static final String message = """
|
||||||
|
<color:aqua>This proxy is running RedisBungee Limework's fork
|
||||||
|
<color:yellow>========================================
|
||||||
|
<color:aqua>RedisBungee version: <color:green><version>
|
||||||
|
<color:aqua>Build date: <color:green><build-date>
|
||||||
|
<color:aqua>Commit: <color:green><commit>
|
||||||
|
<color:yellow>========================================""";
|
||||||
|
|
||||||
|
@Default
|
||||||
|
public static void info(CommandIssuer issuer) {
|
||||||
|
sendMessage(
|
||||||
|
issuer,
|
||||||
|
MiniMessage.miniMessage()
|
||||||
|
.deserialize(
|
||||||
|
message,
|
||||||
|
Placeholder.component("version", Component.text(Constants.VERSION)),
|
||||||
|
Placeholder.component("build-date", Component.text(Constants.BUILD_DATE)),
|
||||||
|
Placeholder.component(
|
||||||
|
"commit",
|
||||||
|
Component.text(Constants.GIT_COMMIT)
|
||||||
|
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, Constants.getGithubCommitLink()))
|
||||||
|
.hoverEvent(HoverEvent.showText(Component.text("Click me to open: " + Constants.getGithubCommitLink())))
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-present RedisBungee contributors
|
||||||
|
*
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
*
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.imaginarycode.minecraft.redisbungee.commands.utils;
|
||||||
|
|
||||||
|
import co.aikar.commands.BaseCommand;
|
||||||
|
import co.aikar.commands.CommandIssuer;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this just dumb class that wraps the adventure stuff into base command
|
||||||
|
*/
|
||||||
|
public abstract class AdventureBaseCommand extends BaseCommand {
|
||||||
|
|
||||||
|
public static void sendMessage(CommandIssuer issuer, Component component) {
|
||||||
|
CommandPlatformHelper.getPlatformHelper().sendMessage(issuer, component);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-present RedisBungee contributors
|
||||||
|
*
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
*
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.imaginarycode.minecraft.redisbungee.commands.utils;
|
||||||
|
|
||||||
|
import co.aikar.commands.CommandIssuer;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
|
|
||||||
|
public abstract class CommandPlatformHelper {
|
||||||
|
|
||||||
|
private static CommandPlatformHelper SINGLETON;
|
||||||
|
|
||||||
|
public abstract void sendMessage(CommandIssuer issuer, Component component);
|
||||||
|
|
||||||
|
public static void init(CommandPlatformHelper platformHelper) {
|
||||||
|
if (SINGLETON != null) {
|
||||||
|
throw new IllegalStateException("tried to re init Platform Helper");
|
||||||
|
}
|
||||||
|
SINGLETON = platformHelper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CommandPlatformHelper getPlatformHelper() {
|
||||||
|
return SINGLETON;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -22,6 +22,7 @@ dependencies {
|
|||||||
}
|
}
|
||||||
compileOnly(libs.platform.velocity)
|
compileOnly(libs.platform.velocity)
|
||||||
annotationProcessor(libs.platform.velocity)
|
annotationProcessor(libs.platform.velocity)
|
||||||
|
implementation(project(":RedisBungee-Commands"))
|
||||||
implementation(libs.acf.velocity)
|
implementation(libs.acf.velocity)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,14 @@
|
|||||||
|
|
||||||
package com.imaginarycode.minecraft.redisbungee;
|
package com.imaginarycode.minecraft.redisbungee;
|
||||||
|
|
||||||
|
import co.aikar.commands.VelocityCommandManager;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager;
|
import com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager;
|
import com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeeMode;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeeMode;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.CommandLoader;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.utils.CommandPlatformHelper;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.config.LangConfiguration;
|
import com.imaginarycode.minecraft.redisbungee.api.config.LangConfiguration;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.config.loaders.ConfigLoader;
|
import com.imaginarycode.minecraft.redisbungee.api.config.loaders.ConfigLoader;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.config.RedisBungeeConfiguration;
|
import com.imaginarycode.minecraft.redisbungee.api.config.RedisBungeeConfiguration;
|
||||||
@ -91,6 +94,8 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player>, Con
|
|||||||
new LegacyChannelIdentifier("legacy:redisbungee")
|
new LegacyChannelIdentifier("legacy:redisbungee")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private VelocityCommandManager commandManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public RedisBungeeVelocityPlugin(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) {
|
public RedisBungeeVelocityPlugin(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) {
|
||||||
this.server = server;
|
this.server = server;
|
||||||
@ -264,7 +269,6 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player>, Con
|
|||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
logInfo("Initializing RedisBungee.....");
|
logInfo("Initializing RedisBungee.....");
|
||||||
;
|
|
||||||
// start heartbeat task
|
// start heartbeat task
|
||||||
// heartbeat and clean up
|
// heartbeat and clean up
|
||||||
this.heartbeatTask = server.getScheduler().buildTask(this, this.proxyDataManager::publishHeartbeat).repeat(Duration.ofSeconds(1)).schedule();
|
this.heartbeatTask = server.getScheduler().buildTask(this, this.proxyDataManager::publishHeartbeat).repeat(Duration.ofSeconds(1)).schedule();
|
||||||
@ -279,6 +283,11 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player>, Con
|
|||||||
// register plugin messages
|
// register plugin messages
|
||||||
IDENTIFIERS.forEach(getProxy().getChannelRegistrar()::register);
|
IDENTIFIERS.forEach(getProxy().getChannelRegistrar()::register);
|
||||||
|
|
||||||
|
// load commands
|
||||||
|
CommandPlatformHelper.init(new VelocityCommandPlatformHelper());
|
||||||
|
this.commandManager = new VelocityCommandManager(this.getProxy(), this);
|
||||||
|
CommandLoader.initCommands(this.commandManager, configuration());
|
||||||
|
|
||||||
logInfo("RedisBungee initialized successfully ");
|
logInfo("RedisBungee initialized successfully ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,6 +317,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player>, Con
|
|||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
if (commandManager != null) commandManager.unregisterCommands();
|
||||||
logInfo("RedisBungee shutdown complete");
|
logInfo("RedisBungee shutdown complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-present RedisBungee contributors
|
||||||
|
*
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
*
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.imaginarycode.minecraft.redisbungee;
|
||||||
|
|
||||||
|
import co.aikar.commands.CommandIssuer;
|
||||||
|
import co.aikar.commands.VelocityCommandIssuer;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.commands.utils.CommandPlatformHelper;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
|
public class VelocityCommandPlatformHelper extends CommandPlatformHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(CommandIssuer issuer, Component component) {
|
||||||
|
VelocityCommandIssuer vIssuer = (VelocityCommandIssuer) issuer;
|
||||||
|
vIssuer.getIssuer().sendMessage(component);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,6 +7,7 @@ pluginManagement {
|
|||||||
rootProject.name = "RedisBungee-Parent"
|
rootProject.name = "RedisBungee-Parent"
|
||||||
|
|
||||||
include(":RedisBungee-Velocity")
|
include(":RedisBungee-Velocity")
|
||||||
|
include(":RedisBungee-Commands")
|
||||||
include(":RedisBungee-Bungee")
|
include(":RedisBungee-Bungee")
|
||||||
include(":RedisBungee-API")
|
include(":RedisBungee-API")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user