Skip to content

Commit 87f9e0d

Browse files
committed
Fix JEI compat
1 parent 4cfa05b commit 87f9e0d

2 files changed

Lines changed: 155 additions & 146 deletions

File tree

Lines changed: 86 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,86 @@
1-
//package mrbysco.constructionstick.integrations.jei;
2-
//
3-
//import mezz.jei.api.IModPlugin;
4-
//import mezz.jei.api.JeiPlugin;
5-
//import mezz.jei.api.constants.VanillaTypes;
6-
//import mezz.jei.api.recipe.category.extensions.vanilla.smithing.IExtendableSmithingRecipeCategory;
7-
//import mezz.jei.api.registration.IIngredientAliasRegistration;
8-
//import mezz.jei.api.registration.IRecipeRegistration;
9-
//import mezz.jei.api.registration.IVanillaCategoryExtensionRegistration;
10-
//import mrbysco.constructionstick.ConstructionStick;
11-
//import mrbysco.constructionstick.client.KeybindHandler;
12-
//import mrbysco.constructionstick.config.ConstructionConfig;
13-
//import mrbysco.constructionstick.config.ConstructionConfig.StickProperties;
14-
//import mrbysco.constructionstick.integrations.jei.category.UpgradeCategory;
15-
//import mrbysco.constructionstick.items.stick.ItemStick;
16-
//import mrbysco.constructionstick.items.template.ItemUpgradeTemplate;
17-
//import mrbysco.constructionstick.recipe.SmithingApplyUpgradeRecipe;
18-
//import mrbysco.constructionstick.registry.ModItems;
19-
//import net.minecraft.ChatFormatting;
20-
//import net.minecraft.core.registries.BuiltInRegistries;
21-
//import net.minecraft.network.chat.Component;
22-
//import net.minecraft.network.chat.MutableComponent;
23-
//import net.minecraft.resources.ResourceLocation;
24-
//import net.minecraft.world.item.Item;
25-
//import net.minecraft.world.item.ItemStack;
26-
//import net.neoforged.neoforge.registries.DeferredItem;
27-
//import org.jetbrains.annotations.NotNull;
28-
//
29-
//import java.util.List;
30-
//
31-
//@JeiPlugin
32-
//public class ConstructionStickJeiPlugin implements IModPlugin {
33-
// private static final ResourceLocation pluginId = ConstructionStick.modLoc(ConstructionStick.MOD_ID);
34-
// private static final String baseKey = ConstructionStick.MOD_ID + ".description.";
35-
// private static final String baseKeyItem = "item." + ConstructionStick.MOD_ID + ".";
36-
//
37-
// @NotNull
38-
// @Override
39-
// public ResourceLocation getPluginUid() {
40-
// return pluginId;
41-
// }
42-
//
43-
// @Override
44-
// public void registerVanillaCategoryExtensions(IVanillaCategoryExtensionRegistration registration) {
45-
// IExtendableSmithingRecipeCategory smithingCategory = registration.getSmithingCategory();
46-
// smithingCategory.addExtension(SmithingApplyUpgradeRecipe.class, new UpgradeCategory());
47-
// }
48-
//
49-
// @Override
50-
// public void registerRecipes(@NotNull IRecipeRegistration registration) {
51-
//
52-
// MutableComponent stickChangeUpgradeKey = Component.translatable(KeybindHandler.KEY_CHANGE_UPGRADE.getName()).withStyle(ChatFormatting.BLUE);
53-
// MutableComponent stickOpenGuiKey = Component.translatable(KeybindHandler.KEY_OPEN_GUI.getName()).withStyle(ChatFormatting.BLUE);
54-
// MutableComponent stickUndoKey = Component.translatable(KeybindHandler.KEY_UNDO.getName()).withStyle(ChatFormatting.BLUE);
55-
// MutableComponent stickShowPrevious = Component.translatable(KeybindHandler.KEY_SHOW_PREVIOUS.getName()).withStyle(ChatFormatting.BLUE);
56-
//
57-
// for (DeferredItem<ItemStick> deferredStick : ModItems.STICKS) {
58-
// Item stick = deferredStick.get();
59-
// StickProperties stickProperties = ConstructionConfig.getStickProperties(stick);
60-
//
61-
// Component durabilityComponent = Component.translatable(baseKey + "durability.limited", stickProperties.getDurability());
62-
//
63-
// registration.addIngredientInfo(new ItemStack(stick), VanillaTypes.ITEM_STACK,
64-
// Component.translatable(baseKey + "stick",
65-
// Component.translatable(baseKeyItem + BuiltInRegistries.ITEM.getKey(stick).getPath()),
66-
// stickProperties.getLimit(), durabilityComponent, stickChangeUpgradeKey, stickOpenGuiKey, stickShowPrevious, stickUndoKey, stickOpenGuiKey)
67-
// );
68-
// }
69-
//
70-
// for (DeferredItem<ItemUpgradeTemplate> templateSupplier : ModItems.TEMPLATES) {
71-
// Item upgradeTemplate = templateSupplier.get();
72-
// registration.addIngredientInfo(new ItemStack(upgradeTemplate), VanillaTypes.ITEM_STACK,
73-
// Component.translatable(baseKey + BuiltInRegistries.ITEM.getKey(upgradeTemplate).getPath())
74-
// .append("\n\n")
75-
// .append(Component.translatable(baseKey + "upgrade", stickChangeUpgradeKey))
76-
// );
77-
// }
78-
// }
79-
//
80-
// @Override
81-
// public void registerIngredientAliases(IIngredientAliasRegistration registration) {
82-
// for (DeferredItem<ItemStick> deferredStick : ModItems.STICKS) {
83-
// registration.addAliases(VanillaTypes.ITEM_STACK, deferredStick.toStack(), List.of("construction", "wand", "construction wand"));
84-
// }
85-
// }
86-
//}
1+
package mrbysco.constructionstick.integrations.jei;
2+
3+
import mezz.jei.api.IModPlugin;
4+
import mezz.jei.api.JeiPlugin;
5+
import mezz.jei.api.constants.VanillaTypes;
6+
import mezz.jei.api.recipe.category.extensions.vanilla.smithing.IExtendableSmithingRecipeCategory;
7+
import mezz.jei.api.registration.IIngredientAliasRegistration;
8+
import mezz.jei.api.registration.IRecipeRegistration;
9+
import mezz.jei.api.registration.IVanillaCategoryExtensionRegistration;
10+
import mrbysco.constructionstick.ConstructionStick;
11+
import mrbysco.constructionstick.client.KeybindHandler;
12+
import mrbysco.constructionstick.config.ConstructionConfig;
13+
import mrbysco.constructionstick.config.ConstructionConfig.StickProperties;
14+
import mrbysco.constructionstick.integrations.jei.category.UpgradeCategory;
15+
import mrbysco.constructionstick.items.stick.ItemStick;
16+
import mrbysco.constructionstick.items.template.ItemUpgradeTemplate;
17+
import mrbysco.constructionstick.recipe.SmithingApplyUpgradeRecipe;
18+
import mrbysco.constructionstick.registry.ModItems;
19+
import net.minecraft.ChatFormatting;
20+
import net.minecraft.core.registries.BuiltInRegistries;
21+
import net.minecraft.network.chat.Component;
22+
import net.minecraft.network.chat.MutableComponent;
23+
import net.minecraft.resources.ResourceLocation;
24+
import net.minecraft.world.item.Item;
25+
import net.minecraft.world.item.ItemStack;
26+
import net.minecraftforge.registries.RegistryObject;
27+
import org.jetbrains.annotations.NotNull;
28+
29+
import java.util.List;
30+
31+
@JeiPlugin
32+
public class ConstructionStickJeiPlugin implements IModPlugin {
33+
private static final ResourceLocation pluginId = ConstructionStick.modLoc(ConstructionStick.MOD_ID);
34+
private static final String baseKey = ConstructionStick.MOD_ID + ".description.";
35+
private static final String baseKeyItem = "item." + ConstructionStick.MOD_ID + ".";
36+
37+
@NotNull
38+
@Override
39+
public ResourceLocation getPluginUid() {
40+
return pluginId;
41+
}
42+
43+
@Override
44+
public void registerVanillaCategoryExtensions(IVanillaCategoryExtensionRegistration registration) {
45+
IExtendableSmithingRecipeCategory smithingCategory = registration.getSmithingCategory();
46+
smithingCategory.addExtension(SmithingApplyUpgradeRecipe.class, new UpgradeCategory());
47+
}
48+
49+
@Override
50+
public void registerRecipes(@NotNull IRecipeRegistration registration) {
51+
52+
MutableComponent stickChangeUpgradeKey = Component.translatable(KeybindHandler.KEY_CHANGE_UPGRADE.getName()).withStyle(ChatFormatting.BLUE);
53+
MutableComponent stickOpenGuiKey = Component.translatable(KeybindHandler.KEY_OPEN_GUI.getName()).withStyle(ChatFormatting.BLUE);
54+
MutableComponent stickUndoKey = Component.translatable(KeybindHandler.KEY_UNDO.getName()).withStyle(ChatFormatting.BLUE);
55+
MutableComponent stickShowPrevious = Component.translatable(KeybindHandler.KEY_SHOW_PREVIOUS.getName()).withStyle(ChatFormatting.BLUE);
56+
57+
for (RegistryObject<ItemStick> deferredStick : ModItems.STICKS) {
58+
Item stick = deferredStick.get();
59+
StickProperties stickProperties = ConstructionConfig.getStickProperties(stick);
60+
61+
Component durabilityComponent = Component.translatable(baseKey + "durability.limited", stickProperties.getDurability());
62+
63+
registration.addIngredientInfo(new ItemStack(stick), VanillaTypes.ITEM_STACK,
64+
Component.translatable(baseKey + "stick",
65+
Component.translatable(baseKeyItem + BuiltInRegistries.ITEM.getKey(stick).getPath()),
66+
stickProperties.getLimit(), durabilityComponent, stickChangeUpgradeKey, stickOpenGuiKey, stickShowPrevious, stickUndoKey, stickOpenGuiKey)
67+
);
68+
}
69+
70+
for (RegistryObject<ItemUpgradeTemplate> templateSupplier : ModItems.TEMPLATES) {
71+
Item upgradeTemplate = templateSupplier.get();
72+
registration.addIngredientInfo(new ItemStack(upgradeTemplate), VanillaTypes.ITEM_STACK,
73+
Component.translatable(baseKey + BuiltInRegistries.ITEM.getKey(upgradeTemplate).getPath())
74+
.append("\n\n")
75+
.append(Component.translatable(baseKey + "upgrade", stickChangeUpgradeKey))
76+
);
77+
}
78+
}
79+
80+
@Override
81+
public void registerIngredientAliases(IIngredientAliasRegistration registration) {
82+
for (RegistryObject<ItemStick> deferredStick : ModItems.STICKS) {
83+
registration.addAliases(VanillaTypes.ITEM_STACK, deferredStick.get().getDefaultInstance(), List.of("construction", "wand", "construction wand"));
84+
}
85+
}
86+
}
Lines changed: 69 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,69 @@
1-
//package mrbysco.constructionstick.integrations.jei.category;
2-
//
3-
//import mezz.jei.api.gui.builder.IIngredientAcceptor;
4-
//import mezz.jei.api.gui.ingredient.IRecipeSlotDrawable;
5-
//import mezz.jei.api.recipe.IFocusGroup;
6-
//import mezz.jei.api.recipe.category.extensions.vanilla.smithing.ISmithingCategoryExtension;
7-
//import mrbysco.constructionstick.recipe.SmithingApplyUpgradeRecipe;
8-
//import net.minecraft.client.Minecraft;
9-
//import net.minecraft.client.multiplayer.ClientLevel;
10-
//import net.minecraft.core.RegistryAccess;
11-
//import net.minecraft.world.item.ItemStack;
12-
//import net.minecraft.world.item.crafting.Ingredient;
13-
//import net.minecraft.world.item.crafting.SmithingRecipeInput;
14-
//
15-
//public class UpgradeCategory implements ISmithingCategoryExtension<SmithingApplyUpgradeRecipe> {
16-
// @Override
17-
// public <T extends IIngredientAcceptor<T>> void setTemplate(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
18-
// Ingredient ingredient = recipe.getTemplate();
19-
// ingredientAcceptor.addIngredients(ingredient);
20-
// }
21-
//
22-
// @Override
23-
// public <T extends IIngredientAcceptor<T>> void setBase(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
24-
// Ingredient ingredient = recipe.getBase();
25-
// ingredientAcceptor.addIngredients(ingredient);
26-
// }
27-
//
28-
// @Override
29-
// public <T extends IIngredientAcceptor<T>> void setAddition(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
30-
// Ingredient ingredient = recipe.getAddition();
31-
// ingredientAcceptor.addIngredients(ingredient);
32-
// }
33-
//
34-
// @Override
35-
// public <T extends IIngredientAcceptor<T>> void setOutput(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
36-
// Minecraft minecraft = Minecraft.getInstance();
37-
// ClientLevel level = minecraft.level;
38-
// assert level != null;
39-
// RegistryAccess registryAccess = level.registryAccess();
40-
// ItemStack resultItem = recipe.getResultItem(registryAccess);
41-
// ingredientAcceptor.addItemStack(resultItem);
42-
// }
43-
//
44-
// @Override
45-
// public void onDisplayedIngredientsUpdate(SmithingApplyUpgradeRecipe recipe, IRecipeSlotDrawable templateSlot, IRecipeSlotDrawable baseSlot, IRecipeSlotDrawable additionSlot, IRecipeSlotDrawable outputSlot, IFocusGroup focuses) {
46-
// Minecraft minecraft = Minecraft.getInstance();
47-
// ClientLevel level = minecraft.level;
48-
// assert level != null;
49-
// RegistryAccess registryAccess = level.registryAccess();
50-
//
51-
// SmithingRecipeInput input = new SmithingRecipeInput(
52-
// templateSlot.getDisplayedItemStack().orElse(ItemStack.EMPTY),
53-
// baseSlot.getDisplayedItemStack().orElse(ItemStack.EMPTY),
54-
// additionSlot.getDisplayedItemStack().orElse(ItemStack.EMPTY)
55-
// );
56-
// ItemStack result = recipe.assemble(input, registryAccess);
57-
// outputSlot.createDisplayOverrides()
58-
// .addItemStack(result);
59-
// }
60-
//}
1+
package mrbysco.constructionstick.integrations.jei.category;
2+
3+
import mezz.jei.api.gui.builder.IIngredientAcceptor;
4+
import mezz.jei.api.gui.ingredient.IRecipeSlotDrawable;
5+
import mezz.jei.api.recipe.IFocusGroup;
6+
import mezz.jei.api.recipe.category.extensions.vanilla.smithing.ISmithingCategoryExtension;
7+
import mrbysco.constructionstick.recipe.SmithingApplyUpgradeRecipe;
8+
import net.minecraft.client.Minecraft;
9+
import net.minecraft.client.multiplayer.ClientLevel;
10+
import net.minecraft.core.RegistryAccess;
11+
import net.minecraft.world.Container;
12+
import net.minecraft.world.SimpleContainer;
13+
import net.minecraft.world.item.ItemStack;
14+
import net.minecraft.world.item.crafting.Ingredient;
15+
16+
public class UpgradeCategory implements ISmithingCategoryExtension<SmithingApplyUpgradeRecipe> {
17+
@Override
18+
public <T extends IIngredientAcceptor<T>> void setTemplate(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
19+
Ingredient ingredient = recipe.getTemplate();
20+
ingredientAcceptor.addIngredients(ingredient);
21+
}
22+
23+
@Override
24+
public <T extends IIngredientAcceptor<T>> void setBase(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
25+
Ingredient ingredient = recipe.getBase();
26+
ingredientAcceptor.addIngredients(ingredient);
27+
}
28+
29+
@Override
30+
public <T extends IIngredientAcceptor<T>> void setAddition(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
31+
Ingredient ingredient = recipe.getAddition();
32+
ingredientAcceptor.addIngredients(ingredient);
33+
}
34+
35+
@Override
36+
public <T extends IIngredientAcceptor<T>> void setOutput(SmithingApplyUpgradeRecipe recipe, T ingredientAcceptor) {
37+
Minecraft minecraft = Minecraft.getInstance();
38+
ClientLevel level = minecraft.level;
39+
assert level != null;
40+
RegistryAccess registryAccess = level.registryAccess();
41+
ItemStack resultItem = recipe.getResultItem(registryAccess);
42+
ingredientAcceptor.addItemStack(resultItem);
43+
}
44+
45+
@Override
46+
public void onDisplayedIngredientsUpdate(SmithingApplyUpgradeRecipe recipe, IRecipeSlotDrawable templateSlot, IRecipeSlotDrawable baseSlot, IRecipeSlotDrawable additionSlot, IRecipeSlotDrawable outputSlot, IFocusGroup focuses) {
47+
Minecraft minecraft = Minecraft.getInstance();
48+
ClientLevel level = minecraft.level;
49+
assert level != null;
50+
RegistryAccess registryAccess = level.registryAccess();
51+
52+
Container input = createInput(
53+
templateSlot.getDisplayedItemStack().orElse(ItemStack.EMPTY),
54+
baseSlot.getDisplayedItemStack().orElse(ItemStack.EMPTY),
55+
additionSlot.getDisplayedItemStack().orElse(ItemStack.EMPTY)
56+
);
57+
ItemStack result = recipe.assemble(input, registryAccess);
58+
outputSlot.createDisplayOverrides()
59+
.addItemStack(result);
60+
}
61+
62+
private static Container createInput(ItemStack template, ItemStack base, ItemStack addition) {
63+
Container container = new SimpleContainer(3);
64+
container.setItem(0, template);
65+
container.setItem(1, base);
66+
container.setItem(2, addition);
67+
return container;
68+
}
69+
}

0 commit comments

Comments
 (0)