mirror of
https://github.com/SimplexDevelopment/SimplexCore.git
synced 2024-12-22 16:47:37 +00:00
Updated a bunch of framework, removed useless functions and fixed possible N(2o) complexity issue.
This commit is contained in:
parent
e27fbaf9de
commit
eb05f43058
@ -1,9 +1,12 @@
|
|||||||
package io.github.paldiu.simplexcore.command;
|
package io.github.paldiu.simplexcore.command;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
public @interface CommandInfo {
|
public @interface CommandInfo {
|
||||||
String name();
|
String name();
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package io.github.paldiu.simplexcore.command;
|
|||||||
|
|
||||||
import io.github.paldiu.simplexcore.utils.Constants;
|
import io.github.paldiu.simplexcore.utils.Constants;
|
||||||
import io.github.paldiu.simplexcore.utils.Utilities;
|
import io.github.paldiu.simplexcore.utils.Utilities;
|
||||||
|
import jdk.jfr.BooleanFlag;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -15,7 +16,8 @@ import java.util.List;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public abstract class SimplexCommand implements CommandExecutor, TabCompleter {
|
public abstract class SimplexCommand implements CommandExecutor, TabCompleter {
|
||||||
public boolean checkSender(CommandSender sender) {
|
@BooleanFlag
|
||||||
|
public boolean isPlayer(CommandSender sender) {
|
||||||
return sender instanceof Player;
|
return sender instanceof Player;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,12 +31,23 @@ public abstract class SimplexCommand implements CommandExecutor, TabCompleter {
|
|||||||
return Constants.getServer().getPlayer(uuid);
|
return Constants.getServer().getPlayer(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playerMsg(Player player, String... message) {
|
@Nullable
|
||||||
|
public Player getPlayer(CommandSender sender) {
|
||||||
|
return isPlayer(sender) ? (Player)sender : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void playerMsg(Player player, String... messages) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
Utilities.primitiveFE(message, builder::append);
|
Utilities.forEach(messages, builder::append);
|
||||||
player.sendMessage(builder.toString());
|
player.sendMessage(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void msg(CommandSender sender, String... messages) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
Utilities.forEach(messages, builder::append);
|
||||||
|
sender.sendMessage(builder.toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
|
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
|
||||||
|
@ -14,6 +14,11 @@ import org.bukkit.scheduler.BukkitScheduler;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public final class Constants {
|
public final class Constants {
|
||||||
|
// Utility class should not be instantiated.
|
||||||
|
private Constants() {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
|
||||||
private static final SimplexCore plugin = JavaPlugin.getPlugin(SimplexCore.class);
|
private static final SimplexCore plugin = JavaPlugin.getPlugin(SimplexCore.class);
|
||||||
private static final Server server = plugin.getServer();
|
private static final Server server = plugin.getServer();
|
||||||
private static final Logger logger = plugin.getLogger();
|
private static final Logger logger = plugin.getLogger();
|
||||||
|
@ -11,36 +11,58 @@ import java.util.stream.Collectors;
|
|||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public final class Utilities {
|
public final class Utilities {
|
||||||
private static <T> Stream<T> feStr(T[] array) {
|
//Utility class should not be instantiated.
|
||||||
return Arrays.stream(array);
|
private Utilities() {
|
||||||
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T> Set<T> feCol(Stream<T> stream) {
|
public static <T> void forEach(T[] array, Consumer<? super T> action) {
|
||||||
return stream.collect(Collectors.toSet());
|
for (T obj : array) {
|
||||||
|
action.accept(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> void primitiveFE(T[] array, Consumer<? super T> action) {
|
|
||||||
feCol(feStr(array)).forEach(action);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <T> void smartFE(Collection<T> collection, Consumer<? super T> action) {
|
|
||||||
collection.forEach(action);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <K, V> void mapFE(Map<K, V> map, BiConsumer<K, V> actions) {
|
|
||||||
map.forEach(actions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String generateBanId(BanType type) {
|
public static String generateBanId(BanType type) {
|
||||||
String charList = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
|
final String charList = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
|
||||||
int length = charList.length();
|
final String numList = "0123456789";
|
||||||
|
final int length = charList.length();
|
||||||
|
final int lng = numList.length();
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
SplittableRandom random = new SplittableRandom();
|
|
||||||
|
|
||||||
for (int x = 0; x <= 8; x++) {
|
sb.append(type.getPrefix());
|
||||||
sb.append(charList.indexOf(random.nextInt(length - 1)));
|
|
||||||
|
for (int x = 0; x < 4; x++) {
|
||||||
|
sb.append(charList.charAt(random.nextInt(length - 1)));
|
||||||
|
sb.append(numList.charAt(numbers.nextInt(lng - 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sb.setCharAt(2, capitalize(sb.charAt(2)));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final SplittableRandom random = new SplittableRandom();
|
||||||
|
private static final SplittableRandom numbers = new SplittableRandom();
|
||||||
|
private static final List<Character> list = new ArrayList<>(){{
|
||||||
|
add('0');
|
||||||
|
add('1');
|
||||||
|
add('2');
|
||||||
|
add('3');
|
||||||
|
add('4');
|
||||||
|
add('5');
|
||||||
|
add('6');
|
||||||
|
add('7');
|
||||||
|
add('8');
|
||||||
|
add('9');
|
||||||
|
add('-');
|
||||||
|
}};
|
||||||
|
|
||||||
|
private static char capitalize(char character) {
|
||||||
|
if (list.contains(character)) {
|
||||||
|
return character;
|
||||||
|
}
|
||||||
|
|
||||||
|
String temp = String.valueOf(character).toUpperCase();
|
||||||
|
return temp.charAt(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package io.github.paldiu.simplexcore.utils;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import io.github.paldiu.simplexcore.banning.BanType;
|
||||||
|
|
||||||
|
public class UtilitiesTest extends TestCase {
|
||||||
|
public void testGenerateBanId() {
|
||||||
|
System.out.println(Utilities.generateBanId(BanType.TEMPORARY));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user