This commit is contained in:
thedarkcolour 2024-02-07 13:39:11 -08:00
parent 6d2ed586e2
commit 14a05d561c
5 changed files with 266 additions and 145 deletions

View File

@ -157,10 +157,11 @@ dependencies {
// JEI OPTIONAL
compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}"))
compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}"))
implementation(fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}"))
compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}"))
// REI OPTIONAL
compileOnly(fg.deobf("me.shedaniel:RoughlyEnoughItems-forge:${rei_version}"))
compileOnly(fg.deobf("me.shedaniel.cloth:cloth-config-forge:${cloth_config_version}"))
implementation(fg.deobf("me.shedaniel:RoughlyEnoughItems-forge:${rei_version}"))
implementation(fg.deobf("me.shedaniel.cloth:cloth-config-forge:${cloth_config_version}"))
implementation(fg.deobf("curse.maven:reipc-521393:4837449"))
// KubeJS OPTIONAL
implementation fg.deobf("dev.architectury:architectury-forge:${architectury_version}")
implementation fg.deobf("dev.latvian.mods:rhino-forge:${rhino_version}")

View File

@ -0,0 +1,178 @@
/*
* Ex Deorum
* Copyright (c) 2024 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package thedarkcolour.exdeorum.compat;
import com.google.common.collect.Lists;
import net.minecraft.world.item.Item;
import net.minecraftforge.fml.ModList;
import thedarkcolour.exdeorum.registry.EItems;
import java.util.ArrayList;
import java.util.List;
public class CompatHelper {
public static List<Item> getAvailableBarrels(boolean registered) {
// Vanilla barrels
List<Item> barrels = registered ? Lists.newArrayList(EItems.OAK_BARREL.get(), EItems.SPRUCE_BARREL.get(), EItems.BIRCH_BARREL.get(), EItems.JUNGLE_BARREL.get(), EItems.ACACIA_BARREL.get(), EItems.DARK_OAK_BARREL.get(), EItems.MANGROVE_BARREL.get(), EItems.CHERRY_BARREL.get(), EItems.BAMBOO_BARREL.get(), EItems.CRIMSON_BARREL.get(), EItems.WARPED_BARREL.get(), EItems.STONE_BARREL.get()) : new ArrayList<>();
ModList mods = ModList.get();
if (mods.isLoaded(ModIds.BIOMES_O_PLENTY) == registered) {
barrels.add(EItems.FIR_BARREL.get());
barrels.add(EItems.REDWOOD_BARREL.get());
barrels.add(EItems.MAHOGANY_BARREL.get());
barrels.add(EItems.JACARANDA_BARREL.get());
barrels.add(EItems.PALM_BARREL.get());
barrels.add(EItems.WILLOW_BARREL.get());
barrels.add(EItems.DEAD_BARREL.get());
barrels.add(EItems.MAGIC_BARREL.get());
barrels.add(EItems.UMBRAN_BARREL.get());
barrels.add(EItems.HELLBARK_BARREL.get());
}
if (mods.isLoaded(ModIds.ARS_NOUVEAU) == registered) {
barrels.add(EItems.ARCHWOOD_BARREL.get());
}
if (mods.isLoaded(ModIds.AETHER) == registered) {
barrels.add(EItems.SKYROOT_BARREL.get());
}
if (mods.isLoaded(ModIds.BLUE_SKIES) == registered) {
barrels.add(EItems.BLUEBRIGHT_BARREL.get());
barrels.add(EItems.STARLIT_BARREL.get());
barrels.add(EItems.FROSTBRIGHT_BARREL.get());
barrels.add(EItems.COMET_BARREL.get());
barrels.add(EItems.LUNAR_BARREL.get());
barrels.add(EItems.DUSK_BARREL.get());
barrels.add(EItems.MAPLE_BARREL.get());
barrels.add(EItems.CRYSTALLIZED_BARREL.get());
}
return barrels;
}
public static List<Item> getAvailableSieves(boolean registered) {
List<Item> sieves = registered ? Lists.newArrayList(
EItems.OAK_SIEVE.get(),
EItems.SPRUCE_SIEVE.get(),
EItems.BIRCH_SIEVE.get(),
EItems.JUNGLE_SIEVE.get(),
EItems.ACACIA_SIEVE.get(),
EItems.DARK_OAK_SIEVE.get(),
EItems.MANGROVE_SIEVE.get(),
EItems.CHERRY_SIEVE.get(),
EItems.BAMBOO_SIEVE.get(),
EItems.CRIMSON_SIEVE.get(),
EItems.WARPED_SIEVE.get(),
EItems.MECHANICAL_SIEVE.get()
) : new ArrayList<>();
if (ModList.get().isLoaded(ModIds.BIOMES_O_PLENTY) == registered) {
sieves.add(EItems.FIR_SIEVE.get());
sieves.add(EItems.REDWOOD_SIEVE.get());
sieves.add(EItems.MAHOGANY_SIEVE.get());
sieves.add(EItems.JACARANDA_SIEVE.get());
sieves.add(EItems.PALM_SIEVE.get());
sieves.add(EItems.WILLOW_SIEVE.get());
sieves.add(EItems.DEAD_SIEVE.get());
sieves.add(EItems.MAGIC_SIEVE.get());
sieves.add(EItems.UMBRAN_SIEVE.get());
sieves.add(EItems.HELLBARK_SIEVE.get());
}
if (ModList.get().isLoaded(ModIds.ARS_NOUVEAU) == registered) {
sieves.add(EItems.ARCHWOOD_SIEVE.get());
}
if (ModList.get().isLoaded(ModIds.AETHER) == registered) {
sieves.add(EItems.SKYROOT_SIEVE.get());
}
if (ModList.get().isLoaded(ModIds.BLUE_SKIES) == registered) {
sieves.add(EItems.BLUEBRIGHT_SIEVE.get());
sieves.add(EItems.STARLIT_SIEVE.get());
sieves.add(EItems.FROSTBRIGHT_SIEVE.get());
sieves.add(EItems.COMET_SIEVE.get());
sieves.add(EItems.LUNAR_SIEVE.get());
sieves.add(EItems.DUSK_SIEVE.get());
sieves.add(EItems.MAPLE_SIEVE.get());
sieves.add(EItems.CRYSTALLIZED_SIEVE.get());
}
return sieves;
}
public static List<Item> getAvailableLavaCrucibles(boolean registered) {
List<Item> lavaCrucibles = registered ? Lists.newArrayList(
EItems.PORCELAIN_CRUCIBLE.get(),
EItems.WARPED_CRUCIBLE.get(),
EItems.CRIMSON_CRUCIBLE.get()
) : new ArrayList<>();
if (ModList.get().isLoaded(ModIds.BIOMES_O_PLENTY) == registered) {
lavaCrucibles.add(EItems.HELLBARK_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.BLUE_SKIES) == registered) {
lavaCrucibles.add(EItems.CRYSTALLIZED_CRUCIBLE.get());
}
return lavaCrucibles;
}
public static List<Item> getAvailableWaterCrucibles(boolean registered) {
List<Item> waterCrucibles = registered ? Lists.newArrayList(
EItems.OAK_CRUCIBLE.get(),
EItems.SPRUCE_CRUCIBLE.get(),
EItems.BIRCH_CRUCIBLE.get(),
EItems.JUNGLE_CRUCIBLE.get(),
EItems.ACACIA_CRUCIBLE.get(),
EItems.DARK_OAK_CRUCIBLE.get(),
EItems.MANGROVE_CRUCIBLE.get(),
EItems.CHERRY_CRUCIBLE.get(),
EItems.BAMBOO_CRUCIBLE.get()
) : new ArrayList<>();
if (ModList.get().isLoaded(ModIds.BIOMES_O_PLENTY) == registered) {
waterCrucibles.add(EItems.FIR_CRUCIBLE.get());
waterCrucibles.add(EItems.REDWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.MAHOGANY_CRUCIBLE.get());
waterCrucibles.add(EItems.JACARANDA_CRUCIBLE.get());
waterCrucibles.add(EItems.PALM_CRUCIBLE.get());
waterCrucibles.add(EItems.WILLOW_CRUCIBLE.get());
waterCrucibles.add(EItems.DEAD_CRUCIBLE.get());
waterCrucibles.add(EItems.MAGIC_CRUCIBLE.get());
waterCrucibles.add(EItems.UMBRAN_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.ARS_NOUVEAU) == registered) {
waterCrucibles.add(EItems.CASCADING_ARCHWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.BLAZING_ARCHWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.VEXING_ARCHWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.FLOURISHING_ARCHWOOD_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.AETHER) == registered) {
waterCrucibles.add(EItems.SKYROOT_CRUCIBLE.get());
waterCrucibles.add(EItems.GOLDEN_OAK_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.BLUE_SKIES) == registered) {
waterCrucibles.add(EItems.BLUEBRIGHT_CRUCIBLE.get());
waterCrucibles.add(EItems.STARLIT_CRUCIBLE.get());
waterCrucibles.add(EItems.FROSTBRIGHT_CRUCIBLE.get());
waterCrucibles.add(EItems.COMET_CRUCIBLE.get());
waterCrucibles.add(EItems.LUNAR_CRUCIBLE.get());
waterCrucibles.add(EItems.DUSK_CRUCIBLE.get());
waterCrucibles.add(EItems.MAPLE_CRUCIBLE.get());
}
return waterCrucibles;
}
}

View File

@ -36,7 +36,6 @@ import net.minecraft.client.renderer.Rect2i;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.Container;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Recipe;
@ -45,13 +44,12 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.LiquidBlock;
import net.minecraft.world.level.block.WallTorchBlock;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.ModList;
import thedarkcolour.exdeorum.ExDeorum;
import thedarkcolour.exdeorum.blockentity.LavaCrucibleBlockEntity;
import thedarkcolour.exdeorum.client.screen.MechanicalHammerScreen;
import thedarkcolour.exdeorum.client.screen.MechanicalSieveScreen;
import thedarkcolour.exdeorum.compat.CompatHelper;
import thedarkcolour.exdeorum.compat.GroupedSieveRecipe;
import thedarkcolour.exdeorum.compat.ModIds;
import thedarkcolour.exdeorum.data.TranslationKeys;
import thedarkcolour.exdeorum.item.WateringCanItem;
import thedarkcolour.exdeorum.recipe.RecipeUtil;
@ -108,89 +106,11 @@ public class ExDeorumJeiPlugin implements IModPlugin {
@Override
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
var barrels = getAvailableBarrels();
var sieves = Lists.newArrayList(
EItems.OAK_SIEVE.get(),
EItems.SPRUCE_SIEVE.get(),
EItems.BIRCH_SIEVE.get(),
EItems.JUNGLE_SIEVE.get(),
EItems.ACACIA_SIEVE.get(),
EItems.DARK_OAK_SIEVE.get(),
EItems.MANGROVE_SIEVE.get(),
EItems.CHERRY_SIEVE.get(),
EItems.BAMBOO_SIEVE.get(),
EItems.CRIMSON_SIEVE.get(),
EItems.WARPED_SIEVE.get(),
EItems.MECHANICAL_SIEVE.get()
);
var lavaCrucibles = Lists.newArrayList(
EItems.PORCELAIN_CRUCIBLE.get(),
EItems.WARPED_CRUCIBLE.get(),
EItems.CRIMSON_CRUCIBLE.get()
);
var waterCrucibles = Lists.newArrayList(
EItems.OAK_CRUCIBLE.get(),
EItems.SPRUCE_CRUCIBLE.get(),
EItems.BIRCH_CRUCIBLE.get(),
EItems.JUNGLE_CRUCIBLE.get(),
EItems.ACACIA_CRUCIBLE.get(),
EItems.DARK_OAK_CRUCIBLE.get(),
EItems.MANGROVE_CRUCIBLE.get(),
EItems.CHERRY_CRUCIBLE.get(),
EItems.BAMBOO_CRUCIBLE.get()
);
if (ModList.get().isLoaded(ModIds.BIOMES_O_PLENTY)) {
sieves.add(EItems.FIR_SIEVE.get());
sieves.add(EItems.REDWOOD_SIEVE.get());
sieves.add(EItems.MAHOGANY_SIEVE.get());
sieves.add(EItems.JACARANDA_SIEVE.get());
sieves.add(EItems.PALM_SIEVE.get());
sieves.add(EItems.WILLOW_SIEVE.get());
sieves.add(EItems.DEAD_SIEVE.get());
sieves.add(EItems.MAGIC_SIEVE.get());
sieves.add(EItems.UMBRAN_SIEVE.get());
sieves.add(EItems.HELLBARK_SIEVE.get());
lavaCrucibles.add(EItems.HELLBARK_CRUCIBLE.get());
waterCrucibles.add(EItems.FIR_CRUCIBLE.get());
waterCrucibles.add(EItems.REDWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.MAHOGANY_CRUCIBLE.get());
waterCrucibles.add(EItems.JACARANDA_CRUCIBLE.get());
waterCrucibles.add(EItems.PALM_CRUCIBLE.get());
waterCrucibles.add(EItems.WILLOW_CRUCIBLE.get());
waterCrucibles.add(EItems.DEAD_CRUCIBLE.get());
waterCrucibles.add(EItems.MAGIC_CRUCIBLE.get());
waterCrucibles.add(EItems.UMBRAN_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.ARS_NOUVEAU)) {
sieves.add(EItems.ARCHWOOD_SIEVE.get());
waterCrucibles.add(EItems.CASCADING_ARCHWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.BLAZING_ARCHWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.VEXING_ARCHWOOD_CRUCIBLE.get());
waterCrucibles.add(EItems.FLOURISHING_ARCHWOOD_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.AETHER)) {
sieves.add(EItems.SKYROOT_SIEVE.get());
waterCrucibles.add(EItems.SKYROOT_CRUCIBLE.get());
waterCrucibles.add(EItems.GOLDEN_OAK_CRUCIBLE.get());
}
if (ModList.get().isLoaded(ModIds.BLUE_SKIES)) {
sieves.add(EItems.BLUEBRIGHT_SIEVE.get());
sieves.add(EItems.STARLIT_SIEVE.get());
sieves.add(EItems.FROSTBRIGHT_SIEVE.get());
sieves.add(EItems.COMET_SIEVE.get());
sieves.add(EItems.LUNAR_SIEVE.get());
sieves.add(EItems.DUSK_SIEVE.get());
sieves.add(EItems.MAPLE_SIEVE.get());
sieves.add(EItems.CRYSTALLIZED_SIEVE.get());
lavaCrucibles.add(EItems.CRYSTALLIZED_CRUCIBLE.get());
waterCrucibles.add(EItems.BLUEBRIGHT_CRUCIBLE.get());
waterCrucibles.add(EItems.STARLIT_CRUCIBLE.get());
waterCrucibles.add(EItems.FROSTBRIGHT_CRUCIBLE.get());
waterCrucibles.add(EItems.COMET_CRUCIBLE.get());
waterCrucibles.add(EItems.LUNAR_CRUCIBLE.get());
waterCrucibles.add(EItems.DUSK_CRUCIBLE.get());
waterCrucibles.add(EItems.MAPLE_CRUCIBLE.get());
}
var barrels = CompatHelper.getAvailableBarrels(true);
var sieves = CompatHelper.getAvailableSieves(true);
var lavaCrucibles = CompatHelper.getAvailableLavaCrucibles(true);
var waterCrucibles = CompatHelper.getAvailableWaterCrucibles(true);
for (var barrel : barrels) {
var stack = new ItemStack(barrel);
registration.addRecipeCatalyst(stack, BARREL_COMPOST);
@ -250,6 +170,10 @@ public class ExDeorumJeiPlugin implements IModPlugin {
if (RecipeUtil.isTagEmpty(EItemTags.ORES_TIN)) toRemove.add(new ItemStack(EItems.TIN_ORE_CHUNK.get()));
if (RecipeUtil.isTagEmpty(EItemTags.ORES_ZINC)) toRemove.add(new ItemStack(EItems.ZINC_ORE_CHUNK.get()));
if (RecipeUtil.isTagEmpty(EItemTags.ORES_IRIDIUM)) toRemove.add(new ItemStack(EItems.IRIDIUM_ORE_CHUNK.get()));
if (RecipeUtil.isTagEmpty(EItemTags.ORES_THORIUM)) toRemove.add(new ItemStack(EItems.THORIUM_ORE_CHUNK.get()));
if (RecipeUtil.isTagEmpty(EItemTags.ORES_MAGNESIUM)) toRemove.add(new ItemStack(EItems.MAGNESIUM_ORE_CHUNK.get()));
if (RecipeUtil.isTagEmpty(EItemTags.ORES_LITHIUM)) toRemove.add(new ItemStack(EItems.LITHIUM_ORE_CHUNK.get()));
if (RecipeUtil.isTagEmpty(EItemTags.ORES_BORON)) toRemove.add(new ItemStack(EItems.BORON_ORE_CHUNK.get()));
if (!toRemove.isEmpty()) {
registration.getIngredientManager().removeIngredientsAtRuntime(VanillaTypes.ITEM_STACK, toRemove);
@ -346,60 +270,4 @@ public class ExDeorumJeiPlugin implements IModPlugin {
private static <C extends Container, T extends Recipe<C>> void addRecipes(IRecipeRegistration registration, RecipeType<T> category, Supplier<net.minecraft.world.item.crafting.RecipeType<T>> type) {
registration.addRecipes(category, Objects.requireNonNull(Minecraft.getInstance().level).getRecipeManager().getAllRecipesFor(type.get()));
}
public static List<Item> getAvailableBarrels() {
// Vanilla barrels
List<Item> barrels = Lists.newArrayList(EItems.OAK_BARREL.get(), EItems.SPRUCE_BARREL.get(), EItems.BIRCH_BARREL.get(), EItems.JUNGLE_BARREL.get(), EItems.ACACIA_BARREL.get(), EItems.DARK_OAK_BARREL.get(), EItems.MANGROVE_BARREL.get(), EItems.CHERRY_BARREL.get(), EItems.BAMBOO_BARREL.get(), EItems.CRIMSON_BARREL.get(), EItems.WARPED_BARREL.get(), EItems.STONE_BARREL.get());
ModList mods = ModList.get();
if (mods.isLoaded(ModIds.BIOMES_O_PLENTY)) {
barrels.add(EItems.FIR_BARREL.get());
barrels.add(EItems.REDWOOD_BARREL.get());
barrels.add(EItems.MAHOGANY_BARREL.get());
barrels.add(EItems.JACARANDA_BARREL.get());
barrels.add(EItems.PALM_BARREL.get());
barrels.add(EItems.WILLOW_BARREL.get());
barrels.add(EItems.DEAD_BARREL.get());
barrels.add(EItems.MAGIC_BARREL.get());
barrels.add(EItems.UMBRAN_BARREL.get());
barrels.add(EItems.HELLBARK_BARREL.get());
}
if (mods.isLoaded(ModIds.ARS_NOUVEAU)) {
barrels.add(EItems.ARCHWOOD_BARREL.get());
}
if (mods.isLoaded(ModIds.AETHER)) {
barrels.add(EItems.SKYROOT_BARREL.get());
}
if (mods.isLoaded(ModIds.BLUE_SKIES)) {
barrels.add(EItems.BLUEBRIGHT_BARREL.get());
barrels.add(EItems.STARLIT_BARREL.get());
barrels.add(EItems.FROSTBRIGHT_BARREL.get());
barrels.add(EItems.COMET_BARREL.get());
barrels.add(EItems.LUNAR_BARREL.get());
barrels.add(EItems.DUSK_BARREL.get());
barrels.add(EItems.MAPLE_BARREL.get());
barrels.add(EItems.CRYSTALLIZED_BARREL.get());
}
return barrels;
}
public static List<Item> getAvailableSieves() {
List<Item> sieves = Lists.newArrayList(
EItems.OAK_SIEVE.get(),
EItems.SPRUCE_SIEVE.get(),
EItems.BIRCH_SIEVE.get(),
EItems.JUNGLE_SIEVE.get(),
EItems.ACACIA_SIEVE.get(),
EItems.DARK_OAK_SIEVE.get(),
EItems.MANGROVE_SIEVE.get(),
EItems.CHERRY_SIEVE.get(),
EItems.BAMBOO_SIEVE.get(),
EItems.CRIMSON_SIEVE.get(),
EItems.WARPED_SIEVE.get(),
EItems.MECHANICAL_SIEVE.get()
);
return sieves;
}
}

View File

@ -0,0 +1,53 @@
/*
* Ex Deorum
* Copyright (c) 2024 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package thedarkcolour.exdeorum.compat.rei;
import me.shedaniel.rei.api.client.entry.filtering.base.BasicFilteringRule;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
import me.shedaniel.rei.forge.REIPluginClient;
import net.minecraft.world.item.ItemStack;
import thedarkcolour.exdeorum.compat.CompatHelper;
@SuppressWarnings("UnstableApiUsage")
@REIPluginClient
public class ExDeorumReiPlugin implements REIClientPlugin {
@Override
public void registerBasicEntryFiltering(BasicFilteringRule<?> rule) {
rule.hide(() -> {
var builder = EntryIngredient.builder();
for (var barrel : CompatHelper.getAvailableBarrels(false)) {
builder.add(EntryStack.of(VanillaEntryTypes.ITEM, new ItemStack(barrel)));
}
for (var sieve : CompatHelper.getAvailableSieves(false)) {
builder.add(EntryStack.of(VanillaEntryTypes.ITEM, new ItemStack(sieve)));
}
for (var crucible : CompatHelper.getAvailableLavaCrucibles(false)) {
builder.add(EntryStack.of(VanillaEntryTypes.ITEM, new ItemStack(crucible)));
}
for (var crucible : CompatHelper.getAvailableWaterCrucibles(false)) {
builder.add(EntryStack.of(VanillaEntryTypes.ITEM, new ItemStack(crucible)));
}
return builder.build();
});
}
}

View File

@ -0,0 +1,21 @@
/*
* Ex Deorum
* Copyright (c) 2024 thedarkcolour
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@net.minecraft.MethodsReturnNonnullByDefault
@javax.annotation.ParametersAreNonnullByDefault
package thedarkcolour.exdeorum.compat.rei;