-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
- Loading branch information
Showing
16 changed files
with
889 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
79 changes: 79 additions & 0 deletions
79
src/main/java/com/klikli_dev/occultism/integration/emi/OccultismEmiPlugin.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
package com.klikli_dev.occultism.integration.emi; | ||
|
||
import com.klikli_dev.occultism.Occultism; | ||
import com.klikli_dev.occultism.common.entity.spirit.FoliotEntity; | ||
import com.klikli_dev.occultism.crafting.recipe.CrushingRecipe; | ||
import com.klikli_dev.occultism.crafting.recipe.MinerRecipe; | ||
import com.klikli_dev.occultism.crafting.recipe.RitualRecipe; | ||
import com.klikli_dev.occultism.crafting.recipe.SpiritFireRecipe; | ||
import com.klikli_dev.occultism.integration.emi.recipes.CrushingRecipeCategory; | ||
import com.klikli_dev.occultism.integration.emi.recipes.MinerRecipeCategory; | ||
import com.klikli_dev.occultism.integration.emi.recipes.RitualRecipeCategory; | ||
import com.klikli_dev.occultism.integration.emi.recipes.SpiritFireRecipeCategory; | ||
import com.klikli_dev.occultism.integration.emi.render.SpiritRenderable; | ||
import com.klikli_dev.occultism.registry.OccultismBlocks; | ||
import com.klikli_dev.occultism.registry.OccultismEntities; | ||
import com.klikli_dev.occultism.registry.OccultismItems; | ||
import com.klikli_dev.occultism.registry.OccultismRecipes; | ||
import dev.emi.emi.api.EmiEntrypoint; | ||
import dev.emi.emi.api.EmiInitRegistry; | ||
import dev.emi.emi.api.EmiPlugin; | ||
import dev.emi.emi.api.EmiRegistry; | ||
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.EmiStack; | ||
import net.minecraft.core.registries.BuiltInRegistries; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.world.item.ItemStack; | ||
import net.minecraft.world.item.crafting.RecipeHolder; | ||
import net.minecraft.world.item.crafting.RecipeManager; | ||
|
||
import java.util.Objects; | ||
|
||
@EmiEntrypoint | ||
public class OccultismEmiPlugin implements EmiPlugin { | ||
public static final EmiStack SPIRIT_FIRE = EmiStack.of(OccultismItems.SPIRIT_FIRE.get()); | ||
public static final EmiStack DIMENSIONAL_MINESHAFT = EmiStack.of(OccultismBlocks.DIMENSIONAL_MINESHAFT.get()); | ||
public static final EmiStack GOLDEN_SACRIFICIAL_BOWL = EmiStack.of(OccultismBlocks.GOLDEN_SACRIFICIAL_BOWL.get()); | ||
public static final ResourceLocation EMI_WIDGETS = new ResourceLocation(Occultism.MODID, "textures/gui/emi/widgets.png"); | ||
public static final EmiRecipeCategory SPIRIT_FIRE_CATEGORY = new EmiRecipeCategory(new ResourceLocation(Occultism.MODID, "spirit_fire"),SPIRIT_FIRE, new EmiTexture(EMI_WIDGETS, 0, 0, 16, 16)); | ||
public static final EmiRecipeCategory CRUSHING_CATEGORY = new EmiRecipeCategory(new ResourceLocation(Occultism.MODID, "crushing"), new SpiritRenderable<FoliotEntity>(OccultismEntities.FOLIOT.get()), new EmiTexture(EMI_WIDGETS, 32, 0, 16, 16)); | ||
public static final EmiRecipeCategory MINER_CATEGORY = new EmiRecipeCategory(new ResourceLocation(Occultism.MODID, "miner"), DIMENSIONAL_MINESHAFT, new EmiTexture(EMI_WIDGETS, 48, 0, 16, 16)); | ||
public static final EmiRecipeCategory RITUAL_CATEGORY = new EmiRecipeCategory(new ResourceLocation(Occultism.MODID, "ritual"),GOLDEN_SACRIFICIAL_BOWL , new EmiTexture(EMI_WIDGETS, 64, 0, 16, 16)); | ||
|
||
@Override | ||
public void initialize(EmiInitRegistry registry) { | ||
EmiPlugin.super.initialize(registry); | ||
} | ||
|
||
@Override | ||
public void register(EmiRegistry emiRegistry) { | ||
emiRegistry.addCategory(SPIRIT_FIRE_CATEGORY); | ||
emiRegistry.addWorkstation(SPIRIT_FIRE_CATEGORY, SPIRIT_FIRE); | ||
emiRegistry.addCategory(CRUSHING_CATEGORY); | ||
emiRegistry.addWorkstation(CRUSHING_CATEGORY, EmiStack.of(new ItemStack(Objects.requireNonNull(BuiltInRegistries.ITEM.get(new ResourceLocation(Occultism.MODID, "ritual_dummy/summon_foliot_crusher")))))); | ||
emiRegistry.addWorkstation(CRUSHING_CATEGORY, EmiStack.of(new ItemStack(Objects.requireNonNull(BuiltInRegistries.ITEM.get(new ResourceLocation(Occultism.MODID, "ritual_dummy/summon_djinni_crusher")))))); | ||
emiRegistry.addWorkstation(CRUSHING_CATEGORY, EmiStack.of(new ItemStack(Objects.requireNonNull(BuiltInRegistries.ITEM.get(new ResourceLocation(Occultism.MODID, "ritual_dummy/summon_afrit_crusher")))))); | ||
emiRegistry.addWorkstation(CRUSHING_CATEGORY, EmiStack.of(new ItemStack(Objects.requireNonNull(BuiltInRegistries.ITEM.get(new ResourceLocation(Occultism.MODID, "ritual_dummy/summon_marid_crusher")))))); | ||
|
||
emiRegistry.addCategory(MINER_CATEGORY); | ||
emiRegistry.addWorkstation(MINER_CATEGORY, EmiStack.of(OccultismBlocks.DIMENSIONAL_MINESHAFT.get())); | ||
|
||
emiRegistry.addCategory(RITUAL_CATEGORY); | ||
emiRegistry.addWorkstation(RITUAL_CATEGORY, GOLDEN_SACRIFICIAL_BOWL); | ||
RecipeManager manager=emiRegistry.getRecipeManager(); | ||
for(RecipeHolder<SpiritFireRecipe> recipe: manager.getAllRecipesFor(OccultismRecipes.SPIRIT_FIRE_TYPE.get())) { | ||
emiRegistry.addRecipe(new SpiritFireRecipeCategory(recipe)); | ||
} | ||
for(RecipeHolder<CrushingRecipe> recipe:manager.getAllRecipesFor(OccultismRecipes.CRUSHING_TYPE.get())){ | ||
emiRegistry.addRecipe(new CrushingRecipeCategory(recipe)); | ||
} | ||
for(RecipeHolder<MinerRecipe> recipe:manager.getAllRecipesFor(OccultismRecipes.MINER_TYPE.get())){ | ||
emiRegistry.addRecipe(new MinerRecipeCategory(recipe)); | ||
} | ||
for(RecipeHolder<RitualRecipe> recipe:manager.getAllRecipesFor(OccultismRecipes.RITUAL_TYPE.get())){ | ||
emiRegistry.addRecipe(new RitualRecipeCategory(recipe)); | ||
} | ||
} | ||
} |
78 changes: 78 additions & 0 deletions
78
src/main/java/com/klikli_dev/occultism/integration/emi/recipes/CrushingRecipeCategory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package com.klikli_dev.occultism.integration.emi.recipes; | ||
|
||
import com.klikli_dev.occultism.common.entity.spirit.FoliotEntity; | ||
import com.klikli_dev.occultism.crafting.recipe.CrushingRecipe; | ||
import com.klikli_dev.occultism.crafting.recipe.SpiritFireRecipe; | ||
import com.klikli_dev.occultism.integration.emi.OccultismEmiPlugin; | ||
import com.klikli_dev.occultism.integration.emi.render.SpiritRenderable; | ||
import com.klikli_dev.occultism.integration.emi.render.SpiritWidget; | ||
import com.klikli_dev.occultism.registry.OccultismEntities; | ||
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.DrawableWidget; | ||
import dev.emi.emi.api.widget.WidgetHolder; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.world.item.crafting.RecipeHolder; | ||
import org.jetbrains.annotations.Nullable; | ||
|
||
import java.util.List; | ||
|
||
public class CrushingRecipeCategory implements EmiRecipe { | ||
private final ResourceLocation id; | ||
private final List<EmiIngredient> input; | ||
private final List<EmiStack> output; | ||
|
||
public CrushingRecipeCategory(RecipeHolder<CrushingRecipe> recipe) { | ||
id=recipe.id(); | ||
this.input = List.of(EmiIngredient.of(recipe.value().getIngredients().get(0))); | ||
this.output = List.of(EmiStack.of(recipe.value().getResultItem(Minecraft.getInstance().level.registryAccess()))); | ||
} | ||
|
||
@Override | ||
public EmiRecipeCategory getCategory() { | ||
return OccultismEmiPlugin.CRUSHING_CATEGORY; | ||
} | ||
|
||
@Override | ||
public @Nullable ResourceLocation getId() { | ||
return id; | ||
} | ||
|
||
@Override | ||
public List<EmiIngredient> getInputs() { | ||
return this.input; | ||
} | ||
|
||
@Override | ||
public List<EmiStack> getOutputs() { | ||
return this.output; | ||
} | ||
|
||
@Override | ||
public int getDisplayWidth() { | ||
return 110; | ||
} | ||
|
||
@Override | ||
public int getDisplayHeight() { | ||
return 20; | ||
} | ||
|
||
@Override | ||
public void addWidgets(WidgetHolder widgetHolder) { | ||
widgetHolder.addSlot(input.get(0), 0, 2); | ||
widgetHolder.addTexture(EmiTexture.EMPTY_ARROW,18,2); | ||
|
||
SpiritWidget widget= new SpiritWidget(53,0, OccultismEntities.FOLIOT.get()); | ||
widgetHolder.add(widget); | ||
widgetHolder.addTexture(EmiTexture.EMPTY_ARROW,64,2); | ||
// 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 | ||
widgetHolder.addSlot(output.get(0), 90, 2).recipeContext(this); | ||
} | ||
} |
Oops, something went wrong.