TabooMan!

This commit is contained in:
坏黑
2018-05-07 23:48:22 +08:00
24 changed files with 951 additions and 22 deletions

View File

@@ -0,0 +1,9 @@
package me.skymc.taboolib.commands.internal;
/**
* @Author sky
* @Since 2018-05-07 21:36
*/
public class InternalMainCommand {
}

View File

@@ -0,0 +1,9 @@
package me.skymc.taboolib.commands.internal;
/**
* @Author sky
* @Since 2018-05-07 21:38
*/
public class InternalCommandExecutor {
}

View File

@@ -0,0 +1,20 @@
package me.skymc.taboolib.commands.internal;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
/**
* @author Bkm016
* @since 2018-04-17
*/
public interface InternalCommand {
String getLabel();
String getDescription();
InternalCommandArgument[] getArguments();
void onCommand(CommandSender sender, Command command, String label, String[] args);
}

View File

@@ -0,0 +1,51 @@
package me.skymc.taboolib.commands.internal;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* @author Bkm016
* @since 2018-04-17
*/
public abstract class InternalCommandExecutor implements InternalCommand {
public InternalCommandType getType() {
return InternalCommandType.ALL;
}
public boolean requiredPlayer() {
return false;
}
public boolean isParameterConform(String[] args) {
return IntStream.range(0, getArguments().length).noneMatch(i -> getArguments()[i].isRequired() && (args == null || args.length <= i));
}
public boolean isConfirmType(CommandSender sender, InternalCommandType commandType) {
return commandType == InternalCommandType.ALL || sender instanceof ConsoleCommandSender && commandType == InternalCommandType.CONSOLE;
}
public List<String> getTabCompleter(List<InternalCommandExecutor> internalCommandExecutors, String[] args) {
return args.length == 1 ? internalCommandExecutors.stream().filter(internalCommandExecutor -> internalCommandExecutor != null && (args[0].isEmpty() || internalCommandExecutor.getLabel().startsWith(args[0]))).map(InternalCommand::getLabel).collect(Collectors.toList()) : null;
}
public String getCommandString(String label) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("§f /");
stringBuilder.append(label);
stringBuilder.append(" ");
stringBuilder.append(getLabel());
stringBuilder.append(" ");
for (InternalCommandArgument parameter : getArguments()) {
stringBuilder.append(parameter.toString());
stringBuilder.append(" ");
}
stringBuilder.append("§6- §e");
stringBuilder.append(getDescription());
return stringBuilder.toString();
}
}

View File

@@ -0,0 +1,11 @@
package me.skymc.taboolib.commands.internal;
/**
* @author Bkm016
* @since 2018-04-17
*/
public enum InternalCommandType {
CONSOLE, PLAYER, ALL
}

View File

@@ -0,0 +1,9 @@
package me.skymc.taboolib.commands.plugin;
/**
* @Author sky
* @Since 2018-05-07 20:14
*/
public class TabooLibPluginCommand {
}

View File

@@ -68,7 +68,7 @@ public class ConfigUtils {
}
public static MemoryConfiguration mapToConf(Map<String, Object> map) {
MemoryConfiguration configuration = new MemoryConfiguration();
YamlConfiguration configuration = new YamlConfiguration();
convertMapsToSections(map, configuration);
return configuration;
}
@@ -112,13 +112,24 @@ public class ConfigUtils {
return objToMap(object, Modifier.TRANSIENT & Modifier.STATIC & Ref.ACC_SYNTHETIC);
}
@SuppressWarnings("unchecked")
public static Map<String, Object> objToMap(Object object, int excludedModifiers) {
Map<String, Object> map = Maps.newHashMap();
if (object instanceof Map) {
((Map<String, ?>) object).forEach((k, v) -> map.put(k, objToMap(v, excludedModifiers)));
return map;
}
if (object instanceof ConfigurationSection) {
map.putAll(objToMap(((ConfigurationSection) object).getValues(false), excludedModifiers));
return map;
}
for (Field field : Ref.getDeclaredFields(object.getClass(), excludedModifiers, false)) {
try {
if (!field.isAccessible()) field.setAccessible(true);
Object obj = field.get(object);
if (obj instanceof Property) obj = ((Property) obj).get();
if (obj instanceof ConfigurationSection)
obj = objToMap(((ConfigurationSection) obj).getValues(false), excludedModifiers);
map.put(Ref.getSerializedName(field), obj);
} catch (IllegalAccessException ignored) {
}

View File

@@ -0,0 +1,49 @@
package me.skymc.taboolib.string;
import java.util.ArrayList;
import java.util.List;
/**
* @author Bkm016
* @since 2018-04-16
*/
public class ArrayUtils {
@SuppressWarnings("unchecked")
public static <T> List<T> asList(T... args) {
List<T> list = new ArrayList<>();
for (T value : args) {
list.add(value);
}
return list;
}
public static String[] addFirst(String[] args, String... value) {
if (args.length < 1) {
return value;
}
List<String> list = asList(args);
for (int i = value.length - 1 ; i >= 0 ; i--) {
list.add(0, value[i]);
}
return list.toArray(new String[0]);
}
public static String[] removeFirst(String[] args) {
if (args.length <= 1) {
return null;
}
List<String> list = asList(args);
list.remove(0);
return list.toArray(new String[0]);
}
public static String arrayJoin(String[] args, int start) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = start ; i < args.length ; i++) {
stringBuilder.append(args[i]);
stringBuilder.append(" ");
}
return stringBuilder.toString().trim();
}
}