[Feature] Test Support for EMI (#51)

This commit is contained in:
Frank 2022-07-26 16:53:38 +02:00
parent d734b8b140
commit d2b526970c
7 changed files with 130 additions and 3 deletions

View file

@ -24,6 +24,7 @@ repositories {
maven { url "https://maven.shedaniel.me/" }
maven { url 'https://jitpack.io' }
maven { url 'https://maven.terraformersmc.com/releases' }
maven { url = "https://maven.terraformersmc.com/" }
maven { url "https://ladysnake.jfrog.io/artifactory/mods" }
maven { url = "https://dvs1.progwml6.com/files/maven/" }
maven { url = "https://modmaven.dev" }
@ -56,7 +57,9 @@ dependencies {
modCompileOnlyApi "mezz.jei:jei-${project.minecraft_version}-common-api:${project.jei_version}"
modCompileOnlyApi "mezz.jei:jei-${project.minecraft_version}-fabric-api:${project.jei_version}"
// at runtime, use the full JEI jar for Fabric
modRuntimeOnly "mezz.jei:jei-${project.minecraft_version}-fabric:${project.jei_version}"
//modRuntimeOnly "mezz.jei:jei-${project.minecraft_version}-fabric:${project.jei_version}"
modImplementation "dev.emi:emi:${emi_version}"
//needed for trinkets, otherwise BetterEnd would require users to install trinkets
modApi "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}"

View file

@ -17,5 +17,6 @@ patchouli_version=1.19-73-FABRIC
bclib_version=2.0.17
rei_version=9.1.500
jei_version=11.1.0.235
emi_version=0.3.0+1.19
trinkets_version=3.4.0
cca_version=5.0.0-beta.1

View file

@ -0,0 +1,74 @@
package org.betterx.betterend.integration.emi;
import org.betterx.betterend.recipe.builders.AlloyingRecipe;
import net.minecraft.resources.ResourceLocation;
import dev.emi.emi.api.recipe.EmiRecipe;
import dev.emi.emi.api.recipe.EmiRecipeCategory;
import dev.emi.emi.api.render.EmiTexture;
import dev.emi.emi.api.stack.EmiIngredient;
import dev.emi.emi.api.stack.EmiStack;
import dev.emi.emi.api.widget.WidgetHolder;
import java.util.List;
public class EMIAlloyingRecipe implements EmiRecipe {
private final ResourceLocation id;
private final List<EmiIngredient> input;
private final List<EmiStack> output;
public EMIAlloyingRecipe(AlloyingRecipe recipe) {
this.id = recipe.getId();
this.input = List.of(
EmiIngredient.of(recipe.getIngredients().get(0)),
EmiIngredient.of(recipe.getIngredients().get(1))
);
this.output = List.of(EmiStack.of(recipe.getResultItem()));
}
@Override
public EmiRecipeCategory getCategory() {
return EMIPlugin.END_SMELTER_CATEGORY;
}
@Override
public ResourceLocation getId() {
return id;
}
@Override
public List<EmiIngredient> getInputs() {
return input;
}
@Override
public List<EmiStack> getOutputs() {
return output;
}
@Override
public int getDisplayWidth() {
return 76;
}
@Override
public int getDisplayHeight() {
return 18;
}
@Override
public void addWidgets(WidgetHolder widgets) {
// Add an arrow texture to indicate processing
widgets.addTexture(EmiTexture.EMPTY_ARROW, 46, 1);
// Adds an input slot on the left
widgets.addSlot(input.get(0), 0, 0);
widgets.addSlot(input.get(1), 20, 0);
// Adds an output slot on the right
// Note that output slots need to call `recipeContext` to inform EMI about their recipe context
// This includes being able to resolve recipe trees, favorite stacks with recipe context, and more
widgets.addSlot(output.get(0), 58, 0).recipeContext(this);
}
}

View file

@ -0,0 +1,40 @@
package org.betterx.betterend.integration.emi;
import org.betterx.bclib.BCLib;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.recipe.builders.AlloyingRecipe;
import org.betterx.betterend.registry.EndBlocks;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.RecipeManager;
import dev.emi.emi.api.EmiPlugin;
import dev.emi.emi.api.EmiRegistry;
import dev.emi.emi.api.recipe.EmiRecipeCategory;
import dev.emi.emi.api.stack.EmiStack;
public class EMIPlugin implements EmiPlugin {
public static final ResourceLocation MY_SPRITE_SHEET = BetterEnd.makeID(
"textures/gui/emi_simplified_textures.png"
);
public static final EmiStack END_SMELTER_WORKSTATION = EmiStack.of(EndBlocks.END_STONE_SMELTER);
public static final EmiRecipeCategory END_SMELTER_CATEGORY = new EmiRecipeCategory(
BCLib.makeID("end_stone_smelter"),
END_SMELTER_WORKSTATION//,
//new EmiTexture(MY_SPRITE_SHEET, 0, 0, 16, 16)
);
@Override
public void register(EmiRegistry emiRegistry) {
emiRegistry.addCategory(END_SMELTER_CATEGORY);
// Add all the workstations your category uses
emiRegistry.addWorkstation(END_SMELTER_CATEGORY, END_SMELTER_WORKSTATION);
RecipeManager manager = emiRegistry.getRecipeManager();
for (AlloyingRecipe recipe : manager.getAllRecipesFor(AlloyingRecipe.TYPE)) {
emiRegistry.addRecipe(new EMIAlloyingRecipe(recipe));
}
}
}

View file

@ -619,5 +619,8 @@
"item.betterend.thallasium_shovel_head": "Thallasiumschaufelkopf",
"item.betterend.thallasium_sword_blade": "Thallasiumschwertklinge",
"item.betterend.thallasium_sword_handle": "Thallasiumschwertgriff",
"block.betterend.aeternium_anvil": "Ätheramboss"
"block.betterend.aeternium_anvil": "Ätheramboss",
"emi.ctegory.bclib.end_stone_smelter": "Endsteinschmelzofen",
"tag.c.barrel": "Fässer",
"tag.betterend.alloying_iron": "Eisenlegierung"
}

View file

@ -818,5 +818,8 @@
"block.betterend.pallidium_heavy": "Pallidium (Heavy Cover)",
"block.betterend.pallidium_thin": "Pallidium (Thin Cover)",
"block.betterend.pallidium_tiny": "Pallidium (Tiny Cover)",
"block.betterend.flammalix": "Flammalix"
"block.betterend.flammalix": "Flammalix",
"emi.ctegory.bclib.end_stone_smelter": "End Stone Smelter",
"tag.c.barrel": "Barrels",
"tag.betterend.alloying_iron": "Iron Alloys"
}

View file

@ -33,6 +33,9 @@
],
"jei_mod_plugin": [
"org.betterx.betterend.integration.jei.JEIPlugin"
],
"emi": [
"org.betterx.betterend.integration.emi.EMIPlugin"
]
},
"accessWidener": "betterend.accesswidener",