Skip to content

Commit

Permalink
Add option to change implementation of lite sender and organize the p…
Browse files Browse the repository at this point in the history
…ackages.
  • Loading branch information
Rollczi committed Jan 22, 2022
1 parent 6459838 commit 056df8a
Show file tree
Hide file tree
Showing 55 changed files with 239 additions and 125 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package dev.rollczi.litecommands.bukkit;

import dev.rollczi.litecommands.LitePlatformManager;
import dev.rollczi.litecommands.LiteInvocation;
import dev.rollczi.litecommands.component.ScopeMetaData;
import dev.rollczi.litecommands.platform.LiteSenderCreator;
import dev.rollczi.litecommands.scope.ScopeMetaData;
import dev.rollczi.litecommands.platform.Executor;
import dev.rollczi.litecommands.platform.Suggester;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

Expand All @@ -12,29 +14,31 @@
public class LiteBukkitCommand extends Command {

private final ScopeMetaData scope;
private final LitePlatformManager.Executor executor;
private final LitePlatformManager.Suggester suggester;
private final Executor executor;
private final Suggester suggester;
private final LiteSenderCreator<CommandSender> creator;

public LiteBukkitCommand(ScopeMetaData scope, LitePlatformManager.Executor executor, LitePlatformManager.Suggester suggester) {
public LiteBukkitCommand(ScopeMetaData scope, Executor executor, Suggester suggester, LiteSenderCreator<CommandSender> creator) {
super(scope.getName(), "", "/" + scope.getName(), new ArrayList<>(scope.getAliases()));
this.scope = scope;
this.executor = executor;
this.suggester = suggester;
this.creator = creator;
}

@Override
public boolean execute(CommandSender sender, String alias, String[] args) {
executor.execute(new LiteInvocation(scope.getName(), alias, new LiteBukkitSender(sender), args));
executor.execute(new LiteInvocation(scope.getName(), alias, creator.create(sender), args));
return true;
}

@Override
public List<String> tabComplete(CommandSender sender, String alias, String[] args) {
if (LitePlatformManager.Suggester.NONE.equals(suggester)) {
if (Suggester.NONE.equals(suggester)) {
return super.tabComplete(sender, alias, args);
}

return suggester.suggest(new LiteInvocation(scope.getName(), alias, new LiteBukkitSender(sender), args));
return suggester.suggest(new LiteInvocation(scope.getName(), alias, creator.create(sender), args));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import dev.rollczi.litecommands.LiteCommandsBuilder;
import dev.rollczi.litecommands.LiteFactory;
import dev.rollczi.litecommands.inject.basic.OriginalSenderBind;
import dev.rollczi.litecommands.bind.basic.OriginalSenderBind;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package dev.rollczi.litecommands.bukkit;

import dev.rollczi.litecommands.LitePlatformManager;
import dev.rollczi.litecommands.component.ScopeMetaData;
import dev.rollczi.litecommands.platform.LiteAbstractPlatformManager;
import dev.rollczi.litecommands.scope.ScopeMetaData;
import dev.rollczi.litecommands.platform.Executor;
import dev.rollczi.litecommands.platform.Suggester;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandMap;
import org.bukkit.command.CommandSender;
import org.bukkit.command.SimpleCommandMap;

import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class LiteBukkitPlatformManager implements LitePlatformManager {
public class LiteBukkitPlatformManager extends LiteAbstractPlatformManager<CommandSender> {

private final Set<String> commands = new HashSet<>();
private final CommandMap commandMap;
Expand All @@ -21,6 +24,7 @@ public class LiteBukkitPlatformManager implements LitePlatformManager {

@SuppressWarnings("unchecked")
public LiteBukkitPlatformManager(Server server, String fallbackPrefix) {
super(LiteBukkitSender::new);
this.fallbackPrefix = fallbackPrefix;

try {
Expand All @@ -41,7 +45,7 @@ public LiteBukkitPlatformManager(Server server, String fallbackPrefix) {

@Override
public void registerCommand(ScopeMetaData scope, Executor executor, Suggester suggester) {
LiteBukkitCommand command = new LiteBukkitCommand(scope, executor, suggester);
LiteBukkitCommand command = new LiteBukkitCommand(scope, executor, suggester, liteSenderCreator);

commandMap.register(scope.getName(), fallbackPrefix, command);
commands.add(scope.getName());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dev.rollczi.litecommands.bukkit;

import dev.rollczi.litecommands.LiteSender;
import dev.rollczi.litecommands.platform.LiteSender;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package dev.rollczi.litecommands.bungee;

import dev.rollczi.litecommands.LiteInvocation;
import dev.rollczi.litecommands.LitePlatformManager;
import dev.rollczi.litecommands.component.ScopeMetaData;
import dev.rollczi.litecommands.platform.LiteSenderCreator;
import dev.rollczi.litecommands.scope.ScopeMetaData;
import dev.rollczi.litecommands.platform.Executor;
import dev.rollczi.litecommands.platform.Suggester;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
Expand All @@ -12,27 +14,30 @@
public class LiteBungeeCommand extends Command implements TabExecutor {

private final ScopeMetaData scope;
private final LitePlatformManager.Executor executor;
private final LitePlatformManager.Suggester suggester;
private final Executor executor;
private final Suggester suggester;
private final LiteSenderCreator<CommandSender> liteSenderCreator;

public LiteBungeeCommand(ScopeMetaData scope, LitePlatformManager.Executor executor, LitePlatformManager.Suggester suggester) {
public LiteBungeeCommand(ScopeMetaData scope, Executor executor, Suggester suggester, LiteSenderCreator<CommandSender> creator) {
super(scope.getName(), "", scope.getAliases().toArray(new String[0]));
this.scope = scope;
this.executor = executor;
this.suggester = suggester;
this.liteSenderCreator = creator;
}

@Override
public void execute(CommandSender sender, String[] args) {
executor.execute(new LiteInvocation(scope.getName(), scope.getName(), new LiteBungeeSender(sender), args));
executor.execute(new LiteInvocation(scope.getName(), scope.getName(), liteSenderCreator.create(sender), args));
}

@Override
public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
if (LitePlatformManager.Suggester.NONE.equals(suggester)) {
if (Suggester.NONE.equals(suggester)) {
return Collections.emptyList();
}

return suggester.suggest(new LiteInvocation(scope.getName(), scope.getName(), new LiteBungeeSender(sender), args));
return suggester.suggest(new LiteInvocation(scope.getName(), scope.getName(), liteSenderCreator.create(sender), args));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import dev.rollczi.litecommands.LiteCommandsBuilder;
import dev.rollczi.litecommands.LiteFactory;
import dev.rollczi.litecommands.inject.basic.OriginalSenderBind;
import dev.rollczi.litecommands.bind.basic.OriginalSenderBind;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Plugin;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
package dev.rollczi.litecommands.bungee;

import dev.rollczi.litecommands.LitePlatformManager;
import dev.rollczi.litecommands.component.ScopeMetaData;
import dev.rollczi.litecommands.platform.LiteAbstractPlatformManager;
import dev.rollczi.litecommands.scope.ScopeMetaData;
import dev.rollczi.litecommands.platform.Executor;
import dev.rollczi.litecommands.platform.Suggester;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginManager;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class LiteBungeePlatformManager implements LitePlatformManager {
public class LiteBungeePlatformManager extends LiteAbstractPlatformManager<CommandSender> {

private final Set<String> commands = new HashSet<>();
private final Plugin plugin;

public LiteBungeePlatformManager(Plugin plugin) {
super(LiteBungeeSender::new);
this.plugin = plugin;
}

@Override
public void registerCommand(ScopeMetaData scope, Executor execute, Suggester suggester) {
LiteBungeeCommand command = new LiteBungeeCommand(scope, execute, suggester);
LiteBungeeCommand command = new LiteBungeeCommand(scope, execute, suggester, liteSenderCreator);

plugin.getProxy().getPluginManager().registerCommand(plugin, command);
commands.add(scope.getName());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dev.rollczi.litecommands.bungee;

import dev.rollczi.litecommands.LiteSender;
import dev.rollczi.litecommands.platform.LiteSender;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.rollczi.litecommands;

import dev.rollczi.litecommands.platform.LitePlatformManager;
import dev.rollczi.litecommands.valid.messages.MessagesService;
import org.panda_lang.utilities.inject.Injector;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package dev.rollczi.litecommands;

import dev.rollczi.litecommands.component.ExecutionResult;
import dev.rollczi.litecommands.inject.ArgumentHandler;
import dev.rollczi.litecommands.inject.ArgumentName;
import dev.rollczi.litecommands.inject.LiteBind;
import dev.rollczi.litecommands.argument.ArgumentHandler;
import dev.rollczi.litecommands.argument.ArgumentName;
import dev.rollczi.litecommands.bind.LiteBind;
import dev.rollczi.litecommands.platform.Executor;
import dev.rollczi.litecommands.platform.LitePlatformManager;
import dev.rollczi.litecommands.platform.Suggester;
import dev.rollczi.litecommands.valid.ValidationCommandException;
import dev.rollczi.litecommands.valid.ValidationInfo;
import dev.rollczi.litecommands.valid.messages.ContextualMessage;
import dev.rollczi.litecommands.valid.messages.LiteMessage;
Expand All @@ -13,8 +17,8 @@
import dev.rollczi.litecommands.annotations.parser.LiteAnnotationParser;
import dev.rollczi.litecommands.component.LiteComponent;
import dev.rollczi.litecommands.component.LiteComponentFactory;
import dev.rollczi.litecommands.inject.Bind;
import dev.rollczi.litecommands.inject.InjectUtils;
import dev.rollczi.litecommands.bind.Bind;
import dev.rollczi.litecommands.utils.InjectUtils;
import dev.rollczi.litecommands.valid.handle.LiteExecutionResultHandler;
import dev.rollczi.litecommands.valid.handle.ExecutionResultHandler;
import dev.rollczi.litecommands.valid.messages.UseSchemeFormatting;
Expand All @@ -26,6 +30,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
Expand Down Expand Up @@ -197,12 +202,10 @@ public LiteCommands register() {
}

for (LiteComponent resolver : registerResolvers.getResolvers().values()) {
platformManager.registerCommand(resolver.getScope(), invocation -> {
LiteComponent.ContextOfResolving context = LiteComponent.ContextOfResolving.create(invocation);
ExecutionResult executionResult = resolver.resolveExecution(context);
Executor executor = new DefaultExecutor(resolver, executionResultHandler);
Suggester suggester = new DefaultSuggester(resolver);

executionResultHandler.handle(executionResult);
}, invocation -> resolver.resolveCompletion(LiteComponent.ContextOfResolving.create(invocation)));
platformManager.registerCommand(resolver.getScope(), executor, suggester);
}

return new LiteCommands(registerResolvers, platformManager, messagesService, injector, logger);
Expand All @@ -212,4 +215,39 @@ public static LiteCommandsBuilder builder() {
return new LiteCommandsBuilder();
}

private static class DefaultExecutor implements Executor {

private final LiteComponent resolver;
private final ExecutionResultHandler executionResultHandler;

private DefaultExecutor(LiteComponent resolver, ExecutionResultHandler executionResultHandler) {
this.resolver = resolver;
this.executionResultHandler = executionResultHandler;
}

@Override
public void execute(LiteInvocation invocation) throws ValidationCommandException {
LiteComponent.ContextOfResolving context = LiteComponent.ContextOfResolving.create(invocation);
ExecutionResult executionResult = resolver.resolveExecution(context);

executionResultHandler.handle(executionResult);
}

}

private static class DefaultSuggester implements Suggester {

private final LiteComponent resolver;

private DefaultSuggester(LiteComponent resolver) {
this.resolver = resolver;
}

@Override
public List<String> suggest(LiteInvocation invocation) {
return resolver.resolveCompletion(LiteComponent.ContextOfResolving.create(invocation));
}

}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package dev.rollczi.litecommands;

import dev.rollczi.litecommands.inject.basic.LiteInvocationBind;
import dev.rollczi.litecommands.inject.basic.ArgumentsBind;
import dev.rollczi.litecommands.inject.basic.LiteSenderBind;
import dev.rollczi.litecommands.bind.basic.LiteInvocationBind;
import dev.rollczi.litecommands.bind.basic.ArgumentsBind;
import dev.rollczi.litecommands.bind.basic.LiteSenderBind;
import dev.rollczi.litecommands.platform.LiteSender;

public class LiteFactory {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dev.rollczi.litecommands;

import dev.rollczi.litecommands.platform.LiteSender;

public class LiteInvocation {

private final String name;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import dev.rollczi.litecommands.component.LiteComponent;
import dev.rollczi.litecommands.component.LiteSection;
import dev.rollczi.litecommands.component.ScopeMetaData;
import dev.rollczi.litecommands.component.ScopeUtils;
import dev.rollczi.litecommands.scope.ScopeMetaData;
import dev.rollczi.litecommands.scope.ScopeUtils;

import java.util.Collections;
import java.util.HashMap;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dev.rollczi.litecommands.annotations;

import dev.rollczi.litecommands.inject.ArgumentHandler;
import dev.rollczi.litecommands.argument.ArgumentHandler;
import org.panda_lang.utilities.inject.annotations.Injectable;

import java.lang.annotation.ElementType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import dev.rollczi.litecommands.annotations.IgnoreClass;
import dev.rollczi.litecommands.annotations.IgnoreMethod;
import dev.rollczi.litecommands.component.ScopeMetaData;
import dev.rollczi.litecommands.inject.ArgumentHandler;
import dev.rollczi.litecommands.scope.ScopeMetaData;
import dev.rollczi.litecommands.argument.ArgumentHandler;
import panda.std.Option;

import java.lang.reflect.AnnotatedElement;
Expand Down
Loading

0 comments on commit 056df8a

Please sign in to comment.