package me.earthme.luminol.config.modules.optimizations;

import java.util.List;
import me.earthme.luminol.config.IConfigModule;
import me.earthme.luminol.config.flags.ConfigClassInfo;
import me.earthme.luminol.config.flags.ConfigInfo;
import me.earthme.luminol.enums.EnumConfigCategory;

@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "entity_limiter")
public class EntityLimiterConfig implements IConfigModule {
    @ConfigInfo(name = "enabled")
    public static boolean enabled = false;

    @ConfigInfo(name = "creatures")
    public static int creatures = 200;

    @ConfigInfo(name = "items")
    public static int items = 100;

    @ConfigInfo(name = "vehicles")
    public static int vehicles = 50;

    @ConfigInfo(name = "projectiles")
    public static int projectiles = 50;

    @ConfigInfo(name = "whitelist")
    public static List<String> whitelist = List.of("ARMOR_STAND", "ITEM_FRAME", "GLOW_ITEM_FRAME");

    @ConfigInfo(name = "overflow_enabled")
    public static boolean overflowEnabled = true;

    @ConfigInfo(name = "overflow_interval_seconds")
    public static int overflowIntervalSeconds = 30;

    @ConfigInfo(name = "overflow_multiplier")
    public static double overflowMultiplier = 1.5;

    @ConfigInfo(name = "overflow_creatures")
    public static boolean overflowCreatures = true;

    @ConfigInfo(name = "overflow_items")
    public static boolean overflowItems = true;

    @ConfigInfo(name = "overflow_vehicles")
    public static boolean overflowVehicles = false;

    @ConfigInfo(name = "overflow_projectiles")
    public static boolean overflowProjectiles = true;

    @ConfigInfo(name = "spare_named")
    public static boolean spareNamed = true;

    @ConfigInfo(name = "overflow_max_per_sweep")
    public static int overflowMaxPerSweep = 2000; // cap removals per sweep to avoid an MSPT spike on huge regions; 0 = unlimited
}
