//Priority is set to 100 to ensure it loads before the stage initialization (normally priority -50).
#priority 100

import crafttweaker.item.IIngredient;
import crafttweaker.enchantments.IEnchantmentDefinition;

zenClass GameStage {
    val stageName as string;

    var stagedMods as string[];
    var stagedItems as IIngredient[];
    var stagedRecipeNames as string[];
    var stagedMobs as string[];
    var stagedOres as IIngredient[];
    var stagedEnchants as IEnchantmentDefinition[];
    var stagedJeiCategories as string[];
    var stagedNamesBlacklist as string[];
    var stagedNamesWhitelist as string[];


    zenConstructor(stageName as string) {
        this.stageName = stageName;
    }

	function getName() as string {
		return this.stageName;
	}

    function setStagedMods(stagedMods as string[]) as void {
		this.stagedMods = stagedMods;
	}
	function getStagedMods() as string[] {
		return this.stagedMods;
	}

    function setStagedItems(stagedItems as IIngredient[]) as void {
		this.stagedItems = stagedItems;
	}
	function getStagedItems() as IIngredient[] {
		return this.stagedItems;
	}

    function setStagedRecipeNames(stagedRecipeNames as string[]) as void {
		this.stagedRecipeNames = stagedRecipeNames;
	}
	function getStagedRecipeNames() as string[] {
		return this.stagedRecipeNames;
	}

    function setStagedMobs(stagedMobs as string[]) as void {
		this.stagedMobs = stagedMobs;
	}
	function getStagedMobs() as string[] {
		return this.stagedMobs;
	}

    function setStagedEnchants(stagedEnchants as IEnchantmentDefinition[]) as void {
		this.stagedEnchants = stagedEnchants;
	}
	function getStagedEnchants() as IEnchantmentDefinition[] {
		return this.stagedEnchants;
	}

    function setStagedJeiCategories(stagedJeiCategories as string[]) as void {
		this.stagedJeiCategories = stagedJeiCategories;
	}
	function getStagedJeiCategories() as string[] {
		return this.stagedJeiCategories;
	}

    function setNamesBlacklist(stagedNamesBlacklist as string[]) as void {
		this.stagedNamesBlacklist = stagedNamesBlacklist;
	}
	function getNamesBlacklist() as string[] {
		return this.stagedNamesBlacklist;
	}

    function setNamesWhitelist(stagedNamesWhitelist as string[]) as void {
		this.stagedNamesWhitelist = stagedNamesWhitelist;
	}
	function getNamesWhitelist() as string[] {
		return this.stagedNamesWhitelist;
	}
}