Skip to content

Commit

Permalink
✏️ AnvilAPI JEI Plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
H2Sxxa committed Nov 21, 2023
1 parent 2fc26a4 commit 6710a7c
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 2 deletions.
23 changes: 23 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ repositories {
name 'CleanroomMC Maven'
url 'https://maven.cleanroommc.com'
}

maven {
name 'SpongePowered Maven'
url 'https://repo.spongepowered.org/maven'
Expand Down Expand Up @@ -118,6 +119,20 @@ repositories {
}
//more mirror maven add here,in order to search plugins
}

if (project.use_jei.toBoolean()){
maven {
// location of the maven that hosts JEI files
name 'Progwml6 maven'
url 'https://dvs1.progwml6.com/files/maven/'
}
maven {
// location of a maven mirror for JEI files, as a fallback
name 'ModMaven'
url 'https://modmaven.dev'
}
}

maven {
// RetroFuturaGradle
name 'GTNH Maven'
Expand Down Expand Up @@ -157,6 +172,14 @@ dependencies {
transitive = false
}
}


if (project.use_jei.toBoolean()){
compileOnly "mezz.jei:jei_1.12.2:${jei_version}"
runtimeOnly "mezz.jei:jei_1.12.2:${jei_version}"
}


implementation 'maven.modrinth:kekkai:1.2.2'
implementation fileTree(dir:project.implementation_folder.toString(),includes:['*jar'])
if (project.do_embed.toBoolean() && (project.gradle.startParameter.taskNames[0] == "build" || project.gradle.startParameter.taskNames[0] == "publish")){
Expand Down
4 changes: 4 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ use_mixins = false
use_coremod = false
use_assetmover = false

use_jei = true
jei_version = 4.16.1.302


# mirror (not ready to use)
# full mirror need to hack the RetroFuturaGradle,use the H2Sxxa/Rosa please...
# the lunar-cli is under developing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = PatchouliModInfo.MODID, name = PatchouliModInfo.NAME, version = PatchouliModInfo.VERSION, dependencies = "required-after:mirror@[0.4.0,);required-after:danmakucore;required-after:kekkai")
Expand All @@ -26,6 +27,10 @@ public static void PreInit(FMLPreInitializationEvent event) {
ModForms.initForms();
ModSubEntity.initSubEntity();
ModSpellcards.initSpellCard();
}

@EventHandler
public static void postInit(FMLPostInitializationEvent event){
ModAnvilReceipes.init();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.HashMap;

import io.github.teamgensouspark.grimoireofpatchouli.Patchouli;
import io.github.teamgensouspark.grimoireofpatchouli.PatchouliModInfo;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.AnvilUpdateEvent;
Expand All @@ -12,8 +13,13 @@
public class AnvilApi {
private static HashMap<String, AnvilReceipe> RECEPIES = new HashMap<>();

public static HashMap<String, AnvilReceipe> getReceipes() {
return RECEPIES;
}

public static void regReceipe(String name, AnvilReceipe receipe) {
AnvilApi.RECEPIES.put(name, receipe);
Patchouli.logger.info(String.format("register %s", name));
}

public static void unregReceipe(String name) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.github.teamgensouspark.grimoireofpatchouli.api.anvil;

import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;

import net.minecraft.item.ItemStack;
Expand All @@ -11,6 +13,9 @@ public class AnvilReceipe {
public ItemStack result = ItemStack.EMPTY;
public Predicate<ItemStack> left;
public Predicate<ItemStack> right;
public ItemStack display_left;
public List<ItemStack> display_right;
public boolean isDisplay = false;

public AnvilReceipe(Predicate<ItemStack> left, Predicate<ItemStack> right) {
this.left = left;
Expand Down Expand Up @@ -58,6 +63,20 @@ public boolean matchThen(ItemStack left, ItemStack right, Runnable F) {
return false;
}

public AnvilReceipe setDisplay(ItemStack left, List<ItemStack> right) {
isDisplay = true;
display_left = left;
display_right = right;
return this;
}

public AnvilReceipe setDisplay(ItemStack left, ItemStack right) {
isDisplay = true;
display_left = left;
display_right = Collections.singletonList(right);
return this;
}

public void apply(AnvilUpdateEvent event) {
ItemStack result = this.result.copy();
if (result != ItemStack.EMPTY && result != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package io.github.teamgensouspark.grimoireofpatchouli.api.jei;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import io.github.teamgensouspark.grimoireofpatchouli.Patchouli;
import io.github.teamgensouspark.grimoireofpatchouli.api.anvil.AnvilApi;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.IModRegistry;
import mezz.jei.api.JEIPlugin;
import mezz.jei.api.recipe.IRecipeWrapper;
import mezz.jei.api.recipe.VanillaRecipeCategoryUid;

@JEIPlugin
public class GoPJEIPlugin implements IModPlugin {
@Override
public void register(IModRegistry registry) {
Patchouli.logger.info("Start register JEI AnvilApi");
Patchouli.logger.info(AnvilApi.getReceipes().values().toString());
List<IRecipeWrapper> receipes = new ArrayList<>();
AnvilApi.getReceipes().values()
.forEach((receipe) -> receipes.add(registry.getJeiHelpers().getVanillaRecipeFactory().createAnvilRecipe(
receipe.display_left,
receipe.display_right,
Collections.singletonList(receipe.result))));
registry.addRecipes(receipes, VanillaRecipeCategoryUid.ANVIL);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@ public static void init() {
BLACK_SAKURA.addEnchantment(Enchantments.SMITE, 10);
if (ModCompat.GOA.isLoaded()) {
AnvilApi.regReceipe("black_sakura",
new AnvilReceipe().setCost(30).setShape(false)
new AnvilReceipe().setCost(30).setShape(true)
.setDisplay(new ItemStack(ModItems.HAKUROUKEN), new ItemStack(ModItems.ROUKANKEN))
.setLeft((stack) -> stack.getItem() == ModItems.HAKUROUKEN)
.setRight((stack) -> stack.getItem() == ModItems.ROUKANKEN).setResult(BLACK_SAKURA));
} else {
AnvilApi.regReceipe("black_sakura",
new AnvilReceipe().setCost(30).setShape(false)
new AnvilReceipe().setCost(30).setShape(true)
.setDisplay(new ItemStack(ModItems.HAKUROUKEN), new ItemStack(ModItems.ROUKANKEN))
.setLeft((stack) -> stack.getItem() == Items.DIAMOND_SWORD)
.setRight((stack) -> stack.getItem() == Items.NETHER_STAR).setResult(BLACK_SAKURA));
}
Expand Down

0 comments on commit 6710a7c

Please sign in to comment.