diff --git a/src/main/java/thedarkcolour/exdeorum/compat/CompatUtil.java b/src/main/java/thedarkcolour/exdeorum/compat/CompatUtil.java index 479b8efa..bb46ac59 100644 --- a/src/main/java/thedarkcolour/exdeorum/compat/CompatUtil.java +++ b/src/main/java/thedarkcolour/exdeorum/compat/CompatUtil.java @@ -21,15 +21,14 @@ package thedarkcolour.exdeorum.compat; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.Minecraft; import net.minecraft.world.Container; -import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.ItemLike; import net.neoforged.fml.ModList; import thedarkcolour.exdeorum.material.DefaultMaterials; -import thedarkcolour.exdeorum.recipe.sieve.SieveRecipe; +import thedarkcolour.exdeorum.material.MaterialRegistry; import thedarkcolour.exdeorum.registry.EItems; -import thedarkcolour.exdeorum.registry.ERecipeTypes; import java.util.ArrayList; import java.util.List; @@ -37,52 +36,36 @@ import java.util.Objects; import java.util.function.Function; public class CompatUtil { - public static List getAvailableBarrels(boolean registered) { - List barrels = new ArrayList<>(); - for (var material : DefaultMaterials.BARRELS) { - if (registered == ModList.get().isLoaded(material.requiredModId)) { - barrels.add(material.getItem()); - } - } - return barrels; + public static List getAvailableBarrels(boolean registered) { + return getAvailableMaterials(DefaultMaterials.BARRELS, registered); } - public static List getAvailableSieves(boolean registered, boolean includeMechanical) { - List sieves = new ArrayList<>(); - for (var material : DefaultMaterials.SIEVES) { - if (registered == ModList.get().isLoaded(material.requiredModId)) { - sieves.add(material.getItem()); - } - } + public static List getAvailableSieves(boolean registered, boolean includeMechanical) { + List sieves = getAvailableMaterials(DefaultMaterials.SIEVES, registered); if (includeMechanical) { sieves.add(EItems.MECHANICAL_SIEVE.get()); } - return sieves; } - public static List getAvailableLavaCrucibles(boolean registered) { - List lavaCrucibles = new ArrayList<>(); - - for (var material : DefaultMaterials.LAVA_CRUCIBLES) { - if (registered == ModList.get().isLoaded(material.requiredModId)) { - lavaCrucibles.add(material.getItem()); - } - } - - return lavaCrucibles; + public static List getAvailableLavaCrucibles(boolean registered) { + return getAvailableMaterials(DefaultMaterials.LAVA_CRUCIBLES, registered); } - public static List getAvailableWaterCrucibles(boolean registered) { - List waterCrucibles = new ArrayList<>(); + public static List getAvailableWaterCrucibles(boolean registered) { + return getAvailableMaterials(DefaultMaterials.WATER_CRUCIBLES, registered); + } - for (var material : DefaultMaterials.WATER_CRUCIBLES) { + private static List getAvailableMaterials(MaterialRegistry registry, boolean registered) { + List materials = new ArrayList<>(); + + for (var material : registry) { if (registered == ModList.get().isLoaded(material.requiredModId)) { - waterCrucibles.add(material.getItem()); + materials.add(material); } } - return waterCrucibles; + return materials; } public static , T> List collectAllRecipes(RecipeType recipeType, Function mapper) { diff --git a/src/main/java/thedarkcolour/exdeorum/material/AbstractMaterial.java b/src/main/java/thedarkcolour/exdeorum/material/AbstractMaterial.java index 32b0364e..869c19b9 100644 --- a/src/main/java/thedarkcolour/exdeorum/material/AbstractMaterial.java +++ b/src/main/java/thedarkcolour/exdeorum/material/AbstractMaterial.java @@ -20,13 +20,14 @@ package thedarkcolour.exdeorum.material; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.neoforged.neoforge.registries.DeferredBlock; import net.neoforged.neoforge.registries.DeferredItem; -public abstract class AbstractMaterial { +public abstract class AbstractMaterial implements ItemLike { // The sound this block makes (a string corresponding to a field in SoundType or a JSON object with the five sound events used to create a sound type) public final SoundType soundType; // The hardness of the barrel when harvesting @@ -64,4 +65,9 @@ public abstract class AbstractMaterial { public Block getBlock() { return this.block.get(); } + + @Override + public Item asItem() { + return this.item.get(); + } }