various changes for team management

This commit is contained in:
2025-05-30 12:44:48 +02:00
parent 50147a06e2
commit 8093a4a644
189 changed files with 649 additions and 358 deletions

View File

@ -1,9 +1,9 @@
package eu.mhsl.craftattack.core;
package eu.mhsl.craftattack.spawn.core;
import eu.mhsl.craftattack.core.api.client.RepositoryLoader;
import eu.mhsl.craftattack.core.api.server.HttpServer;
import eu.mhsl.craftattack.core.appliance.Appliance;
import eu.mhsl.craftattack.core.config.Configuration;
import eu.mhsl.craftattack.spawn.core.api.client.RepositoryLoader;
import eu.mhsl.craftattack.spawn.core.api.server.HttpServer;
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
import eu.mhsl.craftattack.spawn.core.config.Configuration;
import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.java.JavaPlugin;
@ -16,6 +16,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
public final class Main extends JavaPlugin {
public static final String projectPackage = "eu.mhsl.craftattack.spawn";
private static Main instance;
private static Logger logger;
@ -41,7 +42,7 @@ public final class Main extends JavaPlugin {
List<String> disabledAppliances = Configuration.pluginConfig.getStringList("disabledAppliances");
Main.logger().info("Initializing reflections...");
this.reflections = new Reflections("eu.mhsl.craftattack.spawn");
this.reflections = new Reflections(projectPackage);
Main.logger().info("Loading Repositories...");
this.repositoryLoader = new RepositoryLoader();

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.api.client;
package eu.mhsl.craftattack.spawn.core.api.client;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import org.apache.http.client.utils.URIBuilder;
import org.jetbrains.annotations.Nullable;
@ -12,7 +12,7 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.function.Consumer;
@RepositoryLoader.IgnoreRepository
@RepositoryLoader.Abstraction
public abstract class HttpRepository extends Repository {
private final Consumer<URIBuilder> baseUriBuilder;

View File

@ -1,7 +1,7 @@
package eu.mhsl.craftattack.core.api.client;
package eu.mhsl.craftattack.spawn.core.api.client;
import com.google.gson.Gson;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import org.bukkit.Bukkit;
import java.net.URI;

View File

@ -1,5 +1,6 @@
package eu.mhsl.craftattack.core.api.client;
package eu.mhsl.craftattack.spawn.core.api.client;
import eu.mhsl.craftattack.spawn.core.Main;
import org.apache.commons.lang3.NotImplementedException;
import org.reflections.Reflections;
@ -12,16 +13,19 @@ import java.util.Set;
public class RepositoryLoader {
private final List<Repository> repositories;
/**
* Defines a repository as an abstraction and will not be loaded by this RepositoryLoader
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreRepository {
public @interface Abstraction {
}
public RepositoryLoader() {
Reflections reflections = new Reflections(this.getClass().getPackageName());
Reflections reflections = new Reflections(Main.projectPackage);
Set<Class<? extends Repository>> repositories = reflections.getSubTypesOf(Repository.class);
this.repositories = repositories.stream()
.filter(repository -> !repository.isAnnotationPresent(IgnoreRepository.class))
.filter(repository -> !repository.isAnnotationPresent(Abstraction.class))
.map(repository -> {
try {
return (Repository) repository.getDeclaredConstructor().newInstance();

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.api.client;
package eu.mhsl.craftattack.spawn.core.api.client;
public record ReqResp<TData>(int status, TData data) {
}

View File

@ -1,8 +1,8 @@
package eu.mhsl.craftattack.core.api.client.repositories;
package eu.mhsl.craftattack.spawn.core.api.client.repositories;
import eu.mhsl.craftattack.core.api.client.HttpRepository;
import eu.mhsl.craftattack.core.api.client.ReqResp;
import eu.mhsl.craftattack.core.util.api.EventApiUtil;
import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository;
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
import eu.mhsl.craftattack.spawn.core.util.api.EventApiUtil;
import java.util.UUID;

View File

@ -1,9 +1,9 @@
package eu.mhsl.craftattack.core.api.client.repositories;
package eu.mhsl.craftattack.spawn.core.api.client.repositories;
import com.google.common.reflect.TypeToken;
import eu.mhsl.craftattack.core.api.client.HttpRepository;
import eu.mhsl.craftattack.core.api.client.ReqResp;
import eu.mhsl.craftattack.core.util.api.WebsiteApiUtil;
import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository;
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
import eu.mhsl.craftattack.spawn.core.util.api.WebsiteApiUtil;
import java.lang.reflect.Type;
import java.util.List;

View File

@ -1,8 +1,8 @@
package eu.mhsl.craftattack.core.api.client.repositories;
package eu.mhsl.craftattack.spawn.core.api.client.repositories;
import eu.mhsl.craftattack.core.api.client.HttpRepository;
import eu.mhsl.craftattack.core.api.client.ReqResp;
import eu.mhsl.craftattack.core.util.api.WebsiteApiUtil;
import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository;
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
import eu.mhsl.craftattack.spawn.core.util.api.WebsiteApiUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

View File

@ -1,8 +1,8 @@
package eu.mhsl.craftattack.core.api.client.repositories;
package eu.mhsl.craftattack.spawn.core.api.client.repositories;
import eu.mhsl.craftattack.core.api.client.HttpRepository;
import eu.mhsl.craftattack.core.api.client.ReqResp;
import eu.mhsl.craftattack.core.util.api.WebsiteApiUtil;
import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository;
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
import eu.mhsl.craftattack.spawn.core.util.api.WebsiteApiUtil;
import java.util.UUID;

View File

@ -1,8 +1,8 @@
package eu.mhsl.craftattack.core.api.server;
package eu.mhsl.craftattack.spawn.core.api.server;
import com.google.gson.Gson;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.core.appliance.Appliance;
import eu.mhsl.craftattack.spawn.core.Main;
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
import org.bukkit.configuration.ConfigurationSection;
import spark.Request;
import spark.Spark;

View File

@ -1,9 +1,9 @@
package eu.mhsl.craftattack.core.appliance;
package eu.mhsl.craftattack.spawn.core.appliance;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.core.api.client.Repository;
import eu.mhsl.craftattack.core.api.server.HttpServer;
import eu.mhsl.craftattack.core.config.Configuration;
import eu.mhsl.craftattack.spawn.core.Main;
import eu.mhsl.craftattack.spawn.core.api.client.Repository;
import eu.mhsl.craftattack.spawn.core.api.server.HttpServer;
import eu.mhsl.craftattack.spawn.core.config.Configuration;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.ConfigurationSection;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.appliance;
package eu.mhsl.craftattack.spawn.core.appliance;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.Command;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.appliance;
package eu.mhsl.craftattack.spawn.core.appliance;
import org.bukkit.event.Listener;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.appliance;
package eu.mhsl.craftattack.spawn.core.appliance;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
public class CachedApplianceSupplier<T extends Appliance> implements IApplianceSupplier<T> {
private final T appliance;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.appliance;
package eu.mhsl.craftattack.spawn.core.appliance;
public interface IApplianceSupplier<T extends Appliance> {
T getAppliance();

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.config;
package eu.mhsl.craftattack.spawn.core.config;
import org.bukkit.Bukkit;
import org.bukkit.Location;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.config;
package eu.mhsl.craftattack.spawn.core.config;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util;
package eu.mhsl.craftattack.spawn.core.util;
import org.bukkit.Bukkit;
import org.bukkit.GameRule;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util;
package eu.mhsl.craftattack.spawn.core.util;
public class NumberUtil {
public static double map(double oldValue, double oldMin, double oldMax, double newMin, double newMax) {

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.api;
package eu.mhsl.craftattack.spawn.core.util.api;
import eu.mhsl.craftattack.core.config.Configuration;
import eu.mhsl.craftattack.spawn.core.config.Configuration;
import org.bukkit.configuration.ConfigurationSection;
import java.net.URI;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.api;
package eu.mhsl.craftattack.spawn.core.util.api;
public class HttpStatus {
public static final int OK = 200;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.api;
package eu.mhsl.craftattack.spawn.core.util.api;
import eu.mhsl.craftattack.core.config.Configuration;
import eu.mhsl.craftattack.spawn.core.config.Configuration;
import org.apache.http.client.utils.URIBuilder;
import org.bukkit.configuration.ConfigurationSection;

View File

@ -1,8 +1,8 @@
package eu.mhsl.craftattack.core.util.entity;
package eu.mhsl.craftattack.spawn.core.util.entity;
import eu.mhsl.craftattack.core.config.ConfigUtil;
import eu.mhsl.craftattack.core.config.Configuration;
import eu.mhsl.craftattack.core.util.world.ChunkUtils;
import eu.mhsl.craftattack.spawn.core.config.ConfigUtil;
import eu.mhsl.craftattack.spawn.core.config.Configuration;
import eu.mhsl.craftattack.spawn.core.util.world.ChunkUtils;
import org.bukkit.Location;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.EntityType;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.entity;
package eu.mhsl.craftattack.spawn.core.util.entity;
import org.bukkit.Material;
import org.bukkit.Statistic;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.inventory;
package eu.mhsl.craftattack.spawn.core.util.inventory;
import com.destroystokyo.paper.profile.PlayerProfile;
import com.destroystokyo.paper.profile.ProfileProperty;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.inventory;
package eu.mhsl.craftattack.spawn.core.util.inventory;
import eu.mhsl.craftattack.core.util.text.ComponentUtil;
import eu.mhsl.craftattack.spawn.core.util.text.ComponentUtil;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.inventory;
package eu.mhsl.craftattack.spawn.core.util.inventory;
import net.kyori.adventure.text.Component;
import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.listener;
package eu.mhsl.craftattack.spawn.core.util.listener;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.listener;
package eu.mhsl.craftattack.spawn.core.util.listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.server;
package eu.mhsl.craftattack.spawn.core.util.server;
import org.bukkit.entity.Player;
import org.geysermc.cumulus.form.SimpleForm;

View File

@ -1,8 +1,8 @@
package eu.mhsl.craftattack.core.util.server;
package eu.mhsl.craftattack.spawn.core.util.server;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import org.bukkit.entity.Player;
public class PluginMessage {

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.statistics;
package eu.mhsl.craftattack.spawn.core.util.statistics;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import net.kyori.adventure.util.Ticks;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitTask;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.statistics;
package eu.mhsl.craftattack.spawn.core.util.statistics;
import org.bukkit.Bukkit;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
import eu.mhsl.craftattack.core.util.NumberUtil;
import eu.mhsl.craftattack.spawn.core.util.NumberUtil;
import net.kyori.adventure.text.format.TextColor;
import java.awt.*;

View File

@ -1,7 +1,7 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
import eu.mhsl.craftattack.core.util.statistics.NetworkMonitor;
import eu.mhsl.craftattack.core.util.statistics.ServerMonitor;
import eu.mhsl.craftattack.spawn.core.util.statistics.NetworkMonitor;
import eu.mhsl.craftattack.spawn.core.util.statistics.ServerMonitor;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentBuilder;
import net.kyori.adventure.text.TextComponent;

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
public class DataSizeConverter {
public static String convertBytesPerSecond(long bytes) {

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
import eu.mhsl.craftattack.core.Main;
import eu.mhsl.craftattack.spawn.core.Main;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
public class NumberAbbreviation {
public static <T extends Number & Comparable<T>> String abbreviateNumber(T number) {

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.text;
package eu.mhsl.craftattack.spawn.core.util.text;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextColor;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.world;
package eu.mhsl.craftattack.spawn.core.util.world;
import org.bukkit.Location;
import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.world;
package eu.mhsl.craftattack.spawn.core.util.world;
import org.bukkit.Chunk;
import org.bukkit.Location;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.core.util.world;
package eu.mhsl.craftattack.spawn.core.util.world;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.sound.Sound;

View File

@ -2,7 +2,7 @@ name: spawn
description: modular base-plugin for mhsl server projects
version: '0'
api-version: '1.21'
main: eu.mhsl.craftattack.core.Main
main: eu.mhsl.craftattack.spawn.core.Main
load: POSTWORLD
prefix: mhsl-spawn