diff --git a/gradle.properties b/gradle.properties index a75fde4b686..e3c038a8ba5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -32,6 +32,7 @@ neoforge_loader_version_range=[4,) neoforge_update_json_url=https://raw.githubusercontent.com/CyclopsMC/Versions/master/neoforge_update/cyclops-core.json # Dependencies neoforge_curios_version=7.3.4+1.20.4 +neoforge_almostunified_version=1.21.1-1.3.0 # Forge forge_version=52.0.3 diff --git a/loader-common/src/main/java/org/cyclops/cyclopscore/Reference.java b/loader-common/src/main/java/org/cyclops/cyclopscore/Reference.java index 8efe7fd13eb..23f6d24ce88 100644 --- a/loader-common/src/main/java/org/cyclops/cyclopscore/Reference.java +++ b/loader-common/src/main/java/org/cyclops/cyclopscore/Reference.java @@ -17,6 +17,7 @@ public final class Reference { public static final String MOD_CURIOS = "curios"; public static final String MOD_JEI = "jei"; public static final String MOD_COMMONCAPABILITIES = "commoncapabilities"; + public static final String MOD_ALMOSTUNIFIED = "almostunified"; // Paths public static final String TEXTURE_PATH_PARTICLES = "textures/particle/"; diff --git a/loader-neoforge/build.gradle b/loader-neoforge/build.gradle index e4bfdd68fd2..a6b02498431 100644 --- a/loader-neoforge/build.gradle +++ b/loader-neoforge/build.gradle @@ -35,6 +35,10 @@ repositories { name "Curios" url "https://maven.theillusivec4.top/" } + maven { + name "BlameJared" + url "https://maven.blamejared.com" + } } dependencies { @@ -42,6 +46,8 @@ dependencies { //runtimeOnly fg.deobf("top.theillusivec4.curios:curios-neoforge:${curios_version}") // https://maven.theillusivec4.top/top/theillusivec4/curios/curios-neoforge/ compileOnly "top.theillusivec4.curios:curios-neoforge:${neoforge_curios_version}:api" + //runtimeOnly "com.almostreliable.mods:almostunified-neoforge:${neoforge_almostunified_version}" // https://maven.blamejared.com/com/almostreliable/mods/almostunified-neoforge/ + compileOnly "com.almostreliable.mods:almostunified-neoforge:${neoforge_almostunified_version}:api" // Project lombok compileOnly 'org.projectlombok:lombok:1.18.30' diff --git a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/CyclopsCore.java b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/CyclopsCore.java index a0c16bf3cfd..a8ae1204334 100644 --- a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/CyclopsCore.java +++ b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/CyclopsCore.java @@ -48,6 +48,7 @@ import org.cyclops.cyclopscore.metadata.RegistryExportableRegistry; import org.cyclops.cyclopscore.metadata.RegistryExportables; import org.cyclops.cyclopscore.modcompat.ModCompatLoader; +import org.cyclops.cyclopscore.modcompat.almostunified.ModCompatAlmostUnified; import org.cyclops.cyclopscore.modcompat.curios.ModCompatCurios; import org.cyclops.cyclopscore.network.PacketCodecsNeoForge; import org.cyclops.cyclopscore.persist.nbt.NBTClassTypesNeoForge; @@ -102,6 +103,7 @@ protected ModCompatLoader constructModCompatLoader() { ModCompatLoader modCompatLoader = super.constructModCompatLoader(); modCompatLoader.addModCompat(new ModCompatCurios()); + modCompatLoader.addModCompat(new ModCompatAlmostUnified()); return modCompatLoader; } diff --git a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/AlmostUnifiedAdapter.java b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/AlmostUnifiedAdapter.java new file mode 100644 index 00000000000..4e1747ccaf6 --- /dev/null +++ b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/AlmostUnifiedAdapter.java @@ -0,0 +1,28 @@ +package org.cyclops.cyclopscore.modcompat.almostunified; + +import com.almostreliable.unified.api.AlmostUnified; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import org.jetbrains.annotations.Nullable; + +public class AlmostUnifiedAdapter { + + public static boolean enabled = false; + + @Nullable + public static Item getTagTargetItem(TagKey tag) { + if (enabled) { + return Adapter.getTagTargetItem(tag); + } + + return null; + } + + private static final class Adapter { + + @Nullable + private static Item getTagTargetItem(TagKey tag) { + return AlmostUnified.INSTANCE.getTagTargetItem(tag); + } + } +} diff --git a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/ModCompatAlmostUnified.java b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/ModCompatAlmostUnified.java new file mode 100644 index 00000000000..8d528bb5a47 --- /dev/null +++ b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/ModCompatAlmostUnified.java @@ -0,0 +1,27 @@ +package org.cyclops.cyclopscore.modcompat.almostunified; + +import org.cyclops.cyclopscore.Reference; +import org.cyclops.cyclopscore.modcompat.ICompatInitializer; +import org.cyclops.cyclopscore.modcompat.IModCompat; + +public class ModCompatAlmostUnified implements IModCompat { + @Override + public String getId() { + return Reference.MOD_ALMOSTUNIFIED; + } + + @Override + public boolean isEnabledDefault() { + return true; + } + + @Override + public String getComment() { + return "Recipe unification"; + } + + @Override + public ICompatInitializer createInitializer() { + return new ModCompatAlmostUnifiedInitializer(); + } +} diff --git a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/ModCompatAlmostUnifiedInitializer.java b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/ModCompatAlmostUnifiedInitializer.java new file mode 100644 index 00000000000..e75140aae54 --- /dev/null +++ b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/modcompat/almostunified/ModCompatAlmostUnifiedInitializer.java @@ -0,0 +1,10 @@ +package org.cyclops.cyclopscore.modcompat.almostunified; + +import org.cyclops.cyclopscore.modcompat.ICompatInitializer; + +public class ModCompatAlmostUnifiedInitializer implements ICompatInitializer { + @Override + public void initialize() { + AlmostUnifiedAdapter.enabled = true; + } +} diff --git a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/recipe/ItemStackFromIngredient.java b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/recipe/ItemStackFromIngredient.java index 3e8e2f70c08..0cde26d70cf 100644 --- a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/recipe/ItemStackFromIngredient.java +++ b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/recipe/ItemStackFromIngredient.java @@ -3,9 +3,14 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; +import org.cyclops.cyclopscore.modcompat.almostunified.AlmostUnifiedAdapter; import javax.annotation.Nullable; import java.util.Arrays; @@ -53,6 +58,12 @@ public ItemStack getFirstItemStack() { return firstItemStack; } + TagKey tagKey = TagKey.create(Registries.ITEM, ResourceLocation.parse(tag)); + Item almostUnifiedTarget = AlmostUnifiedAdapter.getTagTargetItem(tagKey); + if (almostUnifiedTarget != null) { + return new ItemStack(almostUnifiedTarget, count); + } + // Obtain all stacks for the given tag ItemStack[] matchingStacks = ingredient.getItems();