Updated Cloud dependency to v2

This commit is contained in:
OakLoaf 2024-08-16 11:07:03 +01:00
parent 44d23573b3
commit 922cd35e84
13 changed files with 133 additions and 138 deletions

View File

@ -8,7 +8,9 @@ object Versions {
const val paralithic = "0.7.1" const val paralithic = "0.7.1"
const val strata = "1.3.2" const val strata = "1.3.2"
const val cloud = "1.8.4" const val cloud = "2.0.0-rc.2"
const val cloudPaper = "2.0.0-beta.9"
const val cloudFabric = "2.0.0-beta.7"
const val caffeine = "3.1.8" const val caffeine = "3.1.8"

View File

@ -1,8 +1,5 @@
package com.dfsek.terra.addons.commands.addons; package com.dfsek.terra.addons.commands.addons;
import cloud.commandframework.ArgumentDescription;
import cloud.commandframework.CommandManager;
import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.addons.manifest.api.AddonInitializer;
import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.BaseAddon;
@ -12,6 +9,9 @@ import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent;
import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.inject.annotations.Inject;
import org.incendo.cloud.CommandManager;
import org.incendo.cloud.description.Description;
public class AddonsCommandAddon implements AddonInitializer { public class AddonsCommandAddon implements AddonInitializer {
@Inject @Inject
@ -30,7 +30,7 @@ public class AddonsCommandAddon implements AddonInitializer {
CommandManager<CommandSender> manager = event.getCommandManager(); CommandManager<CommandSender> manager = event.getCommandManager();
manager.command( manager.command(
manager.commandBuilder("addons", ArgumentDescription.of("List installed Terra addons")) manager.commandBuilder("addons", Description.of("List installed Terra addons"))
.permission("terra.addons") .permission("terra.addons")
.handler(context -> { .handler(context -> {
StringBuilder addons = new StringBuilder("Installed addons:\n"); StringBuilder addons = new StringBuilder("Installed addons:\n");
@ -41,7 +41,7 @@ public class AddonsCommandAddon implements AddonInitializer {
.append('@') .append('@')
.append(addon.getVersion().getFormatted()) .append(addon.getVersion().getFormatted())
.append('\n')); .append('\n'));
context.getSender().sendMessage(addons.toString()); context.sender().sendMessage(addons.toString());
}) })
) )
.command( .command(
@ -61,7 +61,7 @@ public class AddonsCommandAddon implements AddonInitializer {
.append('@') .append('@')
.append(versions.getFormatted()) .append(versions.getFormatted())
.append('\n')); .append('\n'));
context.getSender().sendMessage(addonInfo.toString()); context.sender().sendMessage(addonInfo.toString());
}) })
); );
}); });

View File

@ -1,7 +1,7 @@
package com.dfsek.terra.addons.commands.packs; package com.dfsek.terra.addons.commands.packs;
import cloud.commandframework.ArgumentDescription; import org.incendo.cloud.CommandManager;
import cloud.commandframework.CommandManager; import org.incendo.cloud.description.Description;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -35,7 +35,7 @@ public class PacksCommandAddon implements AddonInitializer {
CommandManager<CommandSender> manager = event.getCommandManager(); CommandManager<CommandSender> manager = event.getCommandManager();
manager.command( manager.command(
manager.commandBuilder("packs", ArgumentDescription.of("List installed config packs")) manager.commandBuilder("packs", Description.of("List installed config packs"))
.permission("terra.packs") .permission("terra.packs")
.handler(context -> { .handler(context -> {
StringBuilder packs = new StringBuilder("Installed packs:\n"); StringBuilder packs = new StringBuilder("Installed packs:\n");
@ -43,12 +43,12 @@ public class PacksCommandAddon implements AddonInitializer {
.append(pack.getID()) .append(pack.getID())
.append('@') .append('@')
.append(pack.getVersion().getFormatted())); .append(pack.getVersion().getFormatted()));
context.getSender().sendMessage(packs.toString()); context.sender().sendMessage(packs.toString());
}) })
) )
.command( .command(
manager.commandBuilder("packs") manager.commandBuilder("packs")
.literal("info", ArgumentDescription.of("Get information about a pack")) .literal("info", Description.of("Get information about a pack"))
.permission("terra.packs.info") .permission("terra.packs.info")
.argument(RegistryArgument.of("pack", platform.getConfigRegistry())) .argument(RegistryArgument.of("pack", platform.getConfigRegistry()))
.handler(context -> { .handler(context -> {
@ -65,21 +65,21 @@ public class PacksCommandAddon implements AddonInitializer {
.append('@') .append('@')
.append(versions.getFormatted()) .append(versions.getFormatted())
.append('\n')); .append('\n'));
context.getSender().sendMessage(packInfo.toString()); context.sender().sendMessage(packInfo.toString());
})) }))
.command( .command(
manager.commandBuilder("packs") manager.commandBuilder("packs")
.literal("reload", ArgumentDescription.of("Reload config packs")) .literal("reload", Description.of("Reload config packs"))
.permission("terra.packs.reload") .permission("terra.packs.reload")
.handler(context -> { .handler(context -> {
context.getSender().sendMessage("Reloading Terra..."); context.sender().sendMessage("Reloading Terra...");
logger.info("Reloading Terra..."); logger.info("Reloading Terra...");
if(platform.reload()) { if(platform.reload()) {
logger.info("Terra reloaded successfully."); logger.info("Terra reloaded successfully.");
context.getSender().sendMessage("Terra reloaded successfully."); context.sender().sendMessage("Terra reloaded successfully.");
} else { } else {
logger.error("Terra failed to reload."); logger.error("Terra failed to reload.");
context.getSender().sendMessage( context.sender().sendMessage(
"Terra failed to reload. See logs for more information."); "Terra failed to reload. See logs for more information.");
} }
})); }));

View File

@ -1,7 +1,7 @@
package com.dfsek.terra.addons.commands.profiler; package com.dfsek.terra.addons.commands.profiler;
import cloud.commandframework.ArgumentDescription; import org.incendo.cloud.CommandManager;
import cloud.commandframework.CommandManager; import org.incendo.cloud.description.Description;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -33,24 +33,24 @@ public class ProfilerCommandAddon implements AddonInitializer {
CommandManager<CommandSender> manager = event.getCommandManager(); CommandManager<CommandSender> manager = event.getCommandManager();
manager manager
.command( .command(
manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) manager.commandBuilder("profiler", Description.of("Access the profiler"))
.literal("start", ArgumentDescription.of("Start profiling"), "st") .literal("start", Description.of("Start profiling"), "st")
.permission("terra.profiler.start") .permission("terra.profiler.start")
.handler(context -> { .handler(context -> {
platform.getProfiler().start(); platform.getProfiler().start();
context.getSender().sendMessage("Profiling started."); context.sender().sendMessage("Profiling started.");
})) }))
.command( .command(
manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) manager.commandBuilder("profiler", Description.of("Access the profiler"))
.literal("stop", ArgumentDescription.of("Stop profiling"), "s") .literal("stop", Description.of("Stop profiling"), "s")
.permission("terra.profiler.stop") .permission("terra.profiler.stop")
.handler(context -> { .handler(context -> {
platform.getProfiler().stop(); platform.getProfiler().stop();
context.getSender().sendMessage("Profiling stopped."); context.sender().sendMessage("Profiling stopped.");
})) }))
.command( .command(
manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) manager.commandBuilder("profiler", Description.of("Access the profiler"))
.literal("query", ArgumentDescription.of("Query profiler results"), "q") .literal("query", Description.of("Query profiler results"), "q")
.permission("terra.profiler.query") .permission("terra.profiler.query")
.handler(context -> { .handler(context -> {
StringBuilder data = new StringBuilder("Terra Profiler data: \n"); StringBuilder data = new StringBuilder("Terra Profiler data: \n");
@ -59,15 +59,15 @@ public class ProfilerCommandAddon implements AddonInitializer {
.append(timings.toString()) .append(timings.toString())
.append('\n')); .append('\n'));
logger.info(data.toString()); logger.info(data.toString());
context.getSender().sendMessage("Profiling data dumped to console."); context.sender().sendMessage("Profiling data dumped to console.");
})) }))
.command( .command(
manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) manager.commandBuilder("profiler", Description.of("Access the profiler"))
.literal("reset", ArgumentDescription.of("Reset the profiler"), "r") .literal("reset", Description.of("Reset the profiler"), "r")
.permission("terra.profiler.reset") .permission("terra.profiler.reset")
.handler(context -> { .handler(context -> {
platform.getProfiler().reset(); platform.getProfiler().reset();
context.getSender().sendMessage("Profiler reset."); context.sender().sendMessage("Profiler reset.");
})); }));
}); });
} }

View File

@ -1,11 +1,5 @@
package com.dfsek.terra.addons.commands.structure; package com.dfsek.terra.addons.commands.structure;
import cloud.commandframework.ArgumentDescription;
import cloud.commandframework.CommandManager;
import cloud.commandframework.arguments.standard.EnumArgument;
import cloud.commandframework.arguments.standard.LongArgument;
import cloud.commandframework.context.CommandContext;
import java.util.Random; import java.util.Random;
import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.addons.manifest.api.AddonInitializer;
@ -22,6 +16,13 @@ import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.Rotation;
import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.reflection.TypeKey;
import org.incendo.cloud.CommandManager;
import org.incendo.cloud.component.DefaultValue;
import org.incendo.cloud.context.CommandContext;
import org.incendo.cloud.description.Description;
import org.incendo.cloud.parser.standard.EnumParser;
import org.incendo.cloud.parser.standard.LongParser;
public class StructureCommandAddon implements AddonInitializer { public class StructureCommandAddon implements AddonInitializer {
@Inject @Inject
@ -31,7 +32,7 @@ public class StructureCommandAddon implements AddonInitializer {
private BaseAddon addon; private BaseAddon addon;
private static Registry<Structure> getStructureRegistry(CommandContext<CommandSender> sender) { private static Registry<Structure> getStructureRegistry(CommandContext<CommandSender> sender) {
return sender.getSender().getEntity().orElseThrow().world().getPack().getRegistry(Structure.class); return sender.sender().getEntity().orElseThrow().world().getPack().getRegistry(Structure.class);
} }
@Override @Override
@ -43,16 +44,16 @@ public class StructureCommandAddon implements AddonInitializer {
CommandManager<CommandSender> manager = event.getCommandManager(); CommandManager<CommandSender> manager = event.getCommandManager();
manager.command( manager.command(
manager.commandBuilder("structures", ArgumentDescription.of("Manage or generate structures")) manager.commandBuilder("structures", Description.of("Manage or generate structures"))
.literal("generate") .literal("generate")
.argument(RegistryArgument.builder("structure", .optional(RegistryArgument.builder("structure",
StructureCommandAddon::getStructureRegistry, StructureCommandAddon::getStructureRegistry,
TypeKey.of(Structure.class))) TypeKey.of(Structure.class)))
.argument(LongArgument.optional("seed", 0)) .optional("seed", LongParser.longParser(), DefaultValue.constant(0L))
.argument(EnumArgument.optional(Rotation.class, "rotation", Rotation.NONE)) .optional("rotation", EnumParser.enumParser(Rotation.class), DefaultValue.constant(Rotation.NONE))
.handler(context -> { .handler(context -> {
Structure structure = context.get("structure"); Structure structure = context.get("structure");
Entity sender = context.getSender().getEntity().orElseThrow(); Entity sender = context.sender().getEntity().orElseThrow();
structure.generate( structure.generate(
sender.position().toInt(), sender.position().toInt(),
sender.world(), sender.world(),

View File

@ -2,7 +2,7 @@ dependencies {
api("ca.solo-studios", "strata", Versions.Libraries.strata) api("ca.solo-studios", "strata", Versions.Libraries.strata)
compileOnlyApi("org.slf4j", "slf4j-api", Versions.Libraries.slf4j) compileOnlyApi("org.slf4j", "slf4j-api", Versions.Libraries.slf4j)
testImplementation("org.slf4j", "slf4j-api", Versions.Libraries.slf4j) testImplementation("org.slf4j", "slf4j-api", Versions.Libraries.slf4j)
api("cloud.commandframework", "cloud-core", Versions.Libraries.cloud) api("org.incendo", "cloud-core", Versions.Libraries.cloud)
api("com.dfsek.tectonic", "common", Versions.Libraries.tectonic) api("com.dfsek.tectonic", "common", Versions.Libraries.tectonic)

View File

@ -1,18 +1,10 @@
package com.dfsek.terra.api.command.arguments; package com.dfsek.terra.api.command.arguments;
import cloud.commandframework.ArgumentDescription;
import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext;
import io.leangen.geantyref.TypeToken; import io.leangen.geantyref.TypeToken;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Queue; import java.util.concurrent.CompletableFuture;
import java.util.function.BiFunction;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -21,40 +13,33 @@ import com.dfsek.terra.api.registry.exception.NoSuchEntryException;
import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.registry.key.RegistryKey;
import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.reflection.TypeKey;
import org.incendo.cloud.component.CommandComponent;
import org.incendo.cloud.component.DefaultValue;
import org.incendo.cloud.context.CommandContext;
import org.incendo.cloud.context.CommandInput;
import org.incendo.cloud.parser.ArgumentParseResult;
import org.incendo.cloud.parser.ArgumentParser;
import org.incendo.cloud.parser.ParserDescriptor;
import org.incendo.cloud.suggestion.Suggestion;
import org.incendo.cloud.suggestion.SuggestionProvider;
public class RegistryArgument<T, R> extends CommandArgument<T, R> {
private RegistryArgument( public class RegistryArgument {
boolean required,
@NonNull String name,
Function<CommandContext<T>, Registry<R>> registryFunction,
TypeToken<R> typeToken,
@NonNull String defaultValue,
@Nullable BiFunction<CommandContext<T>, String, List<String>> suggestionsProvider,
@NonNull ArgumentDescription description
) {
super(required,
name,
new RegistryArgumentParser<>(registryFunction),
defaultValue,
typeToken,
suggestionsProvider,
description);
}
public static <T, R> Builder<T, R> builder(String name, Registry<R> registry) { public static <T, R> Builder<T, R> builder(String name, Registry<R> registry) {
return new Builder<>(name, registry); return new Builder<>(name, registry);
} }
public static <T, R> CommandArgument<T, R> of(String name, Registry<R> registry) { public static <T, R> CommandComponent<T> of(String name, Registry<R> registry) {
return RegistryArgument.<T, R>builder(name, registry).build(); return RegistryArgument.<T, R>builder(name, registry).build();
} }
public static <T, R> CommandArgument<T, R> optional(String name, Registry<R> registry) { public static <T, R> CommandComponent<T> optional(String name, Registry<R> registry) {
return RegistryArgument.<T, R>builder(name, registry).asOptional().build(); return RegistryArgument.<T, R>builder(name, registry).optional().build();
} }
public static <T, R> CommandArgument<T, R> optional(String name, Registry<R> registry, String defaultKey) { public static <T, R> CommandComponent<T> optional(String name, Registry<R> registry, DefaultValue<T, R> defaultKey) {
return RegistryArgument.<T, R>builder(name, registry).asOptionalWithDefault(defaultKey).build(); return RegistryArgument.<T, R>builder(name, registry).optional(defaultKey).build();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -63,49 +48,36 @@ public class RegistryArgument<T, R> extends CommandArgument<T, R> {
return new Builder<>(name, registryFunction, (TypeToken<R>) TypeToken.get(registryType.getType())); return new Builder<>(name, registryFunction, (TypeToken<R>) TypeToken.get(registryType.getType()));
} }
public static <T, R> CommandArgument<T, R> of(String name, Function<CommandContext<T>, Registry<R>> registryFunction, public static <T, R> CommandComponent<T> of(String name, Function<CommandContext<T>, Registry<R>> registryFunction,
TypeKey<R> registryType) { TypeKey<R> registryType) {
return RegistryArgument.<T, R>builder(name, registryFunction, registryType).build(); return RegistryArgument.<T, R>builder(name, registryFunction, registryType).build();
} }
public static <T, R> CommandArgument<T, R> optional(String name, Function<CommandContext<T>, Registry<R>> registryFunction, public static <T, R> CommandComponent<T> optional(String name, Function<CommandContext<T>, Registry<R>> registryFunction,
TypeKey<R> registryType) { TypeKey<R> registryType) {
return RegistryArgument.builder(name, registryFunction, registryType).asOptional().build(); return RegistryArgument.builder(name, registryFunction, registryType).optional().build();
} }
public static <T, R> CommandArgument<T, R> optional(String name, Function<CommandContext<T>, Registry<R>> registryFunction, public static <T, R> CommandComponent<T> optional(String name, Function<CommandContext<T>, Registry<R>> registryFunction,
TypeKey<R> registryType, String defaultKey) { TypeKey<R> registryType, DefaultValue<T, R> defaultKey) {
return RegistryArgument.builder(name, registryFunction, registryType).asOptionalWithDefault(defaultKey).build(); return RegistryArgument.builder(name, registryFunction, registryType).optional(defaultKey).build();
} }
public static final class Builder<T, R> extends CommandArgument.Builder<T, R> { public static final class Builder<T, R> extends CommandComponent.Builder<T, R> {
private final Function<CommandContext<T>, Registry<R>> registryFunction;
private final TypeToken<R> typeToken;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Builder(@NonNull String name, Registry<R> registry) { private Builder(@NonNull String name, Registry<R> registry) {
super((TypeToken<R>) TypeToken.get(registry.getType().getType()), name); super();
this.registryFunction = commandContext -> registry; this.name(name);
this.typeToken = (TypeToken<R>) TypeToken.get(registry.getType().getType()); this.parser(ParserDescriptor.of(
new RegistryArgumentParser<>(commandContext -> registry),
(TypeToken<R>) TypeToken.get(registry.getType().getType())));
} }
private Builder(@NonNull String name, Function<CommandContext<T>, Registry<R>> registryFunction, TypeToken<R> typeToken) { private Builder(@NonNull String name, Function<CommandContext<T>, Registry<R>> registryFunction, TypeToken<R> typeToken) {
super(typeToken, name); super();
this.typeToken = typeToken; this.name(name);
this.registryFunction = registryFunction; this.parser(ParserDescriptor.of(new RegistryArgumentParser<>(registryFunction), typeToken));
}
@Override
public @NonNull RegistryArgument<T, R> build() {
return new RegistryArgument<>(
isRequired(),
getName(),
registryFunction,
typeToken,
getDefaultValue(),
getSuggestionsProvider(),
getDefaultDescription()
);
} }
} }
@ -119,12 +91,12 @@ public class RegistryArgument<T, R> extends CommandArgument<T, R> {
@Override @Override
public @NonNull ArgumentParseResult<@NonNull R> parse(@NonNull CommandContext<@NonNull T> commandContext, public @NonNull ArgumentParseResult<@NonNull R> parse(@NonNull CommandContext<@NonNull T> commandContext,
@NonNull Queue<@NonNull String> inputQueue) { @NonNull CommandInput commandInput) {
String input = inputQueue.remove(); String input = commandInput.readString();
String next = inputQueue.peek(); String next = commandInput.peekString();
if(next != null && next.equals(":")) { if(next.equals(":")) {
input += inputQueue.remove(); input += commandInput.readString();
input += inputQueue.remove(); input += commandInput.readString();
} }
Registry<R> registry = registryFunction.apply(commandContext); Registry<R> registry = registryFunction.apply(commandContext);
@ -146,8 +118,17 @@ public class RegistryArgument<T, R> extends CommandArgument<T, R> {
} }
@Override @Override
public @NonNull List<@NonNull String> suggestions(@NonNull CommandContext<T> commandContext, @NonNull String input) { public @NonNull SuggestionProvider<T> suggestionProvider() {
return registryFunction.apply(commandContext).keys().stream().map(RegistryKey::toString).sorted().collect(Collectors.toList()); return new SuggestionProvider<>() {
@Override
public @NonNull CompletableFuture<? extends @NonNull Iterable<? extends @NonNull Suggestion>> suggestionsFuture(
@NonNull CommandContext<T> context, @NonNull CommandInput input) {
// TODO: Verify whether this is correct
return CompletableFuture.completedFuture(registryFunction.apply(context).keys().stream().map(
registryKey -> Suggestion.suggestion(registryKey.toString())).sorted().collect(Collectors.toList()));
}
};
} }
} }
} }

View File

@ -1,10 +1,10 @@
package com.dfsek.terra.api.event.events.platform; package com.dfsek.terra.api.event.events.platform;
import cloud.commandframework.CommandManager;
import com.dfsek.terra.api.command.CommandSender; import com.dfsek.terra.api.command.CommandSender;
import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.Event;
import org.incendo.cloud.CommandManager;
public class CommandRegistrationEvent implements Event { public class CommandRegistrationEvent implements Event {
private final CommandManager<CommandSender> commandManager; private final CommandManager<CommandSender> commandManager;

View File

@ -11,5 +11,5 @@ dependencies {
shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava) shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava)
shadedApi("cloud.commandframework", "cloud-paper", Versions.Libraries.cloud) shadedApi("org.incendo", "cloud-paper", Versions.Libraries.cloudPaper)
} }

View File

@ -17,15 +17,16 @@
package com.dfsek.terra.bukkit; package com.dfsek.terra.bukkit;
import cloud.commandframework.brigadier.CloudBrigadierManager;
import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.execution.CommandExecutionCoordinator;
import cloud.commandframework.paper.PaperCommandManager;
import io.papermc.paper.threadedregions.scheduler.AsyncScheduler; import io.papermc.paper.threadedregions.scheduler.AsyncScheduler;
import io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler; import io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.incendo.cloud.SenderMapper;
import org.incendo.cloud.brigadier.CloudBrigadierManager;
import org.incendo.cloud.bukkit.CloudBukkitCapabilities;
import org.incendo.cloud.execution.ExecutionCoordinator;
import org.incendo.cloud.paper.LegacyPaperCommandManager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -71,7 +72,7 @@ public class TerraBukkitPlugin extends JavaPlugin {
} }
try { try {
PaperCommandManager<CommandSender> commandManager = getCommandSenderPaperCommandManager(); LegacyPaperCommandManager<CommandSender> commandManager = getCommandSenderPaperCommandManager();
platform.getEventManager().callEvent(new CommandRegistrationEvent(commandManager)); platform.getEventManager().callEvent(new CommandRegistrationEvent(commandManager));
@ -91,23 +92,28 @@ public class TerraBukkitPlugin extends JavaPlugin {
} }
@NotNull @NotNull
private PaperCommandManager<CommandSender> getCommandSenderPaperCommandManager() throws Exception { private LegacyPaperCommandManager<CommandSender> getCommandSenderPaperCommandManager() throws Exception {
PaperCommandManager<CommandSender> commandManager = new PaperCommandManager<>(this, // TODO: Update to PaperCommandManager
CommandExecutionCoordinator.simpleCoordinator(), LegacyPaperCommandManager<CommandSender> commandManager = new LegacyPaperCommandManager<>(
BukkitAdapter::adapt, this,
BukkitAdapter::adapt); ExecutionCoordinator.simpleCoordinator(),
// TODO: Uncomment once Cloud has updated for 1.21 SenderMapper.create(
// if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { BukkitAdapter::adapt,
// commandManager.registerBrigadier(); BukkitAdapter::adapt
// final CloudBrigadierManager<?, ?> brigManager = commandManager.brigadierManager(); ));
// if(brigManager != null) {
// brigManager.setNativeNumberSuggestions(false); if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) {
// } commandManager.registerBrigadier();
// } final CloudBrigadierManager<?, ?> brigManager = commandManager.brigadierManager();
if(brigManager != null) {
brigManager.setNativeNumberSuggestions(false);
}
}
if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) {
commandManager.registerAsynchronousCompletions(); commandManager.registerAsynchronousCompletions();
} }
return commandManager; return commandManager;
} }

View File

@ -10,6 +10,12 @@ architectury {
loader("fabric") loader("fabric")
} }
repositories {
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") {
name = "Sonatype Snapshots"
}
}
dependencies { dependencies {
shadedApi(project(":common:implementation:base")) shadedApi(project(":common:implementation:base"))
@ -26,8 +32,8 @@ dependencies {
modImplementation("net.fabricmc:fabric-loader:${Versions.Mod.fabricLoader}") modImplementation("net.fabricmc:fabric-loader:${Versions.Mod.fabricLoader}")
modImplementation("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) modImplementation("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric)
include("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) include("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric)
modRuntimeOnly("net.fabricmc.fabric-api", "fabric-api", Versions.Fabric.fabricAPI) modRuntimeOnly("net.fabricmc.fabric-api", "fabric-api", Versions.Fabric.fabricAPI)
} }

View File

@ -15,7 +15,7 @@ dependencies {
minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}") minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}")
mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2") mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2")
modImplementation("cloud.commandframework", "cloud-fabric", Versions.Libraries.cloud) { modImplementation("org.incendo", "cloud-fabric", Versions.Libraries.cloudFabric) {
exclude("net.fabricmc") exclude("net.fabricmc")
exclude("net.fabricmc.fabric-api") exclude("net.fabricmc.fabric-api")
} }

View File

@ -1,8 +1,7 @@
package com.dfsek.terra.lifecycle; package com.dfsek.terra.lifecycle;
import cloud.commandframework.execution.CommandExecutionCoordinator;
import cloud.commandframework.fabric.FabricServerCommandManager;
import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.command.ServerCommandSource;
import org.incendo.cloud.fabric.FabricServerCommandManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;