Skip to content

Commit 00f24a9

Browse files
committed
Perfected JEI and REI support for the RKS machine
1 parent 91d3094 commit 00f24a9

19 files changed

Lines changed: 455 additions & 121 deletions

File tree

build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ subprojects {
5050
maven("https://nexus.resourcefulbees.com/repository/maven-public/")
5151
maven("https://maven.neoforged.net/releases")
5252
maven("https://jm.gserv.me/repository/maven-public/")
53+
maven(
54+
// location of the maven that hosts JEI files since January 2023
55+
url = "https://maven.blamejared.com/"
56+
)
5357
}
5458

5559
@Suppress("UnstableApiUsage")

common/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ dependencies {
2626
modCompileOnly("me.shedaniel:RoughlyEnoughItems-api:${project.properties["rei"]}")
2727
modCompileOnly("me.shedaniel:RoughlyEnoughItems-default-plugin:${project.properties["rei"]}")
2828

29+
modCompileOnlyApi("mezz.jei:jei-${project.properties["minecraft_version"]}-lib:${project.properties["jei"]}")
30+
modCompileOnlyApi("mezz.jei:jei-${project.properties["minecraft_version"]}-common-api:${project.properties["jei"]}")
31+
modRuntimeOnly("mezz.jei:jei-${project.properties["minecraft_version"]}-common:${project.properties["jei"]}")
32+
2933
modCompileOnly("maven.modrinth:journeymap:${project.properties["minecraft_version"]}-${project.properties["journeymap_version"]}-forge")
3034

3135
//Cobblemon

common/src/main/generated/resources/assets/generations_core/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1489,6 +1489,7 @@
14891489
"generations_core.timeglass.wrongbiome": "§7This item only works in a Flower Forest biome!",
14901490
"generations_core.ui.dna_fibers_extracted": "DNA Fibers",
14911491
"generations_core.ui.interact.head_pat": "Head Pat",
1492+
"gui.recipe_viewer.category.rks_machine": "RKS Machine",
14921493
"gui.zygarde_cube": "Zygarde Cube",
14931494
"gui.zygarde_cube.merge_10.accept": "Your Cells merged to form a Zygarde 10%!",
14941495
"gui.zygarde_cube.merge_10.name": "Create 10%",

common/src/main/generated/resources/data/minecraft/tags/blocks/mineable/axe.json

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -56,101 +56,101 @@
5656
"generations_core:cursed_carved_pumpkin",
5757
"generations_core:scarecrow",
5858
"generations_core:box",
59-
"generations_core:red_couch_arm_left",
60-
"generations_core:black_couch_arm_left",
6159
"generations_core:light_gray_couch_arm_left",
60+
"generations_core:yellow_couch_arm_left",
6261
"generations_core:magenta_couch_arm_left",
63-
"generations_core:light_blue_couch_arm_left",
64-
"generations_core:lime_couch_arm_left",
65-
"generations_core:pink_couch_arm_left",
6662
"generations_core:brown_couch_arm_left",
67-
"generations_core:yellow_couch_arm_left",
68-
"generations_core:cyan_couch_arm_left",
69-
"generations_core:purple_couch_arm_left",
70-
"generations_core:blue_couch_arm_left",
71-
"generations_core:gray_couch_arm_left",
72-
"generations_core:white_couch_arm_left",
63+
"generations_core:pink_couch_arm_left",
7364
"generations_core:green_couch_arm_left",
65+
"generations_core:red_couch_arm_left",
66+
"generations_core:white_couch_arm_left",
7467
"generations_core:orange_couch_arm_left",
75-
"generations_core:red_couch_arm_right",
76-
"generations_core:black_couch_arm_right",
68+
"generations_core:lime_couch_arm_left",
69+
"generations_core:black_couch_arm_left",
70+
"generations_core:purple_couch_arm_left",
71+
"generations_core:gray_couch_arm_left",
72+
"generations_core:cyan_couch_arm_left",
73+
"generations_core:light_blue_couch_arm_left",
74+
"generations_core:blue_couch_arm_left",
7775
"generations_core:light_gray_couch_arm_right",
76+
"generations_core:yellow_couch_arm_right",
7877
"generations_core:magenta_couch_arm_right",
79-
"generations_core:light_blue_couch_arm_right",
80-
"generations_core:lime_couch_arm_right",
81-
"generations_core:pink_couch_arm_right",
8278
"generations_core:brown_couch_arm_right",
83-
"generations_core:yellow_couch_arm_right",
84-
"generations_core:cyan_couch_arm_right",
85-
"generations_core:purple_couch_arm_right",
86-
"generations_core:blue_couch_arm_right",
87-
"generations_core:gray_couch_arm_right",
88-
"generations_core:white_couch_arm_right",
79+
"generations_core:pink_couch_arm_right",
8980
"generations_core:green_couch_arm_right",
81+
"generations_core:red_couch_arm_right",
82+
"generations_core:white_couch_arm_right",
9083
"generations_core:orange_couch_arm_right",
91-
"generations_core:red_couch_corner_left",
92-
"generations_core:black_couch_corner_left",
84+
"generations_core:lime_couch_arm_right",
85+
"generations_core:black_couch_arm_right",
86+
"generations_core:purple_couch_arm_right",
87+
"generations_core:gray_couch_arm_right",
88+
"generations_core:cyan_couch_arm_right",
89+
"generations_core:light_blue_couch_arm_right",
90+
"generations_core:blue_couch_arm_right",
9391
"generations_core:light_gray_couch_corner_left",
92+
"generations_core:yellow_couch_corner_left",
9493
"generations_core:magenta_couch_corner_left",
95-
"generations_core:light_blue_couch_corner_left",
96-
"generations_core:lime_couch_corner_left",
97-
"generations_core:pink_couch_corner_left",
9894
"generations_core:brown_couch_corner_left",
99-
"generations_core:yellow_couch_corner_left",
100-
"generations_core:cyan_couch_corner_left",
101-
"generations_core:purple_couch_corner_left",
102-
"generations_core:blue_couch_corner_left",
103-
"generations_core:gray_couch_corner_left",
104-
"generations_core:white_couch_corner_left",
95+
"generations_core:pink_couch_corner_left",
10596
"generations_core:green_couch_corner_left",
97+
"generations_core:red_couch_corner_left",
98+
"generations_core:white_couch_corner_left",
10699
"generations_core:orange_couch_corner_left",
107-
"generations_core:red_couch_corner_right",
108-
"generations_core:black_couch_corner_right",
100+
"generations_core:lime_couch_corner_left",
101+
"generations_core:black_couch_corner_left",
102+
"generations_core:purple_couch_corner_left",
103+
"generations_core:gray_couch_corner_left",
104+
"generations_core:cyan_couch_corner_left",
105+
"generations_core:light_blue_couch_corner_left",
106+
"generations_core:blue_couch_corner_left",
109107
"generations_core:light_gray_couch_corner_right",
108+
"generations_core:yellow_couch_corner_right",
110109
"generations_core:magenta_couch_corner_right",
111-
"generations_core:light_blue_couch_corner_right",
112-
"generations_core:lime_couch_corner_right",
113-
"generations_core:pink_couch_corner_right",
114110
"generations_core:brown_couch_corner_right",
115-
"generations_core:yellow_couch_corner_right",
116-
"generations_core:cyan_couch_corner_right",
117-
"generations_core:purple_couch_corner_right",
118-
"generations_core:blue_couch_corner_right",
119-
"generations_core:gray_couch_corner_right",
120-
"generations_core:white_couch_corner_right",
111+
"generations_core:pink_couch_corner_right",
121112
"generations_core:green_couch_corner_right",
113+
"generations_core:red_couch_corner_right",
114+
"generations_core:white_couch_corner_right",
122115
"generations_core:orange_couch_corner_right",
123-
"generations_core:red_couch_middle",
124-
"generations_core:black_couch_middle",
116+
"generations_core:lime_couch_corner_right",
117+
"generations_core:black_couch_corner_right",
118+
"generations_core:purple_couch_corner_right",
119+
"generations_core:gray_couch_corner_right",
120+
"generations_core:cyan_couch_corner_right",
121+
"generations_core:light_blue_couch_corner_right",
122+
"generations_core:blue_couch_corner_right",
125123
"generations_core:light_gray_couch_middle",
124+
"generations_core:yellow_couch_middle",
126125
"generations_core:magenta_couch_middle",
127-
"generations_core:light_blue_couch_middle",
128-
"generations_core:lime_couch_middle",
129-
"generations_core:pink_couch_middle",
130126
"generations_core:brown_couch_middle",
131-
"generations_core:yellow_couch_middle",
132-
"generations_core:cyan_couch_middle",
133-
"generations_core:purple_couch_middle",
134-
"generations_core:blue_couch_middle",
135-
"generations_core:gray_couch_middle",
136-
"generations_core:white_couch_middle",
127+
"generations_core:pink_couch_middle",
137128
"generations_core:green_couch_middle",
129+
"generations_core:red_couch_middle",
130+
"generations_core:white_couch_middle",
138131
"generations_core:orange_couch_middle",
139-
"generations_core:red_couch_ottoman",
140-
"generations_core:black_couch_ottoman",
132+
"generations_core:lime_couch_middle",
133+
"generations_core:black_couch_middle",
134+
"generations_core:purple_couch_middle",
135+
"generations_core:gray_couch_middle",
136+
"generations_core:cyan_couch_middle",
137+
"generations_core:light_blue_couch_middle",
138+
"generations_core:blue_couch_middle",
141139
"generations_core:light_gray_couch_ottoman",
140+
"generations_core:yellow_couch_ottoman",
142141
"generations_core:magenta_couch_ottoman",
143-
"generations_core:light_blue_couch_ottoman",
144-
"generations_core:lime_couch_ottoman",
145-
"generations_core:pink_couch_ottoman",
146142
"generations_core:brown_couch_ottoman",
147-
"generations_core:yellow_couch_ottoman",
148-
"generations_core:cyan_couch_ottoman",
143+
"generations_core:pink_couch_ottoman",
144+
"generations_core:green_couch_ottoman",
145+
"generations_core:red_couch_ottoman",
146+
"generations_core:white_couch_ottoman",
147+
"generations_core:orange_couch_ottoman",
148+
"generations_core:lime_couch_ottoman",
149+
"generations_core:black_couch_ottoman",
149150
"generations_core:purple_couch_ottoman",
150-
"generations_core:blue_couch_ottoman",
151151
"generations_core:gray_couch_ottoman",
152-
"generations_core:white_couch_ottoman",
153-
"generations_core:green_couch_ottoman",
154-
"generations_core:orange_couch_ottoman"
152+
"generations_core:cyan_couch_ottoman",
153+
"generations_core:light_blue_couch_ottoman",
154+
"generations_core:blue_couch_ottoman"
155155
]
156156
}

common/src/main/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -804,38 +804,38 @@
804804
"generations_core:pink_elevator",
805805
"generations_core:desk",
806806
"generations_core:fridge",
807-
"generations_core:red_street_lamp",
808-
"generations_core:black_street_lamp",
809807
"generations_core:light_gray_street_lamp",
808+
"generations_core:yellow_street_lamp",
810809
"generations_core:magenta_street_lamp",
811-
"generations_core:light_blue_street_lamp",
812-
"generations_core:lime_street_lamp",
813-
"generations_core:pink_street_lamp",
814810
"generations_core:brown_street_lamp",
815-
"generations_core:yellow_street_lamp",
816-
"generations_core:cyan_street_lamp",
817-
"generations_core:purple_street_lamp",
818-
"generations_core:blue_street_lamp",
819-
"generations_core:gray_street_lamp",
820-
"generations_core:white_street_lamp",
811+
"generations_core:pink_street_lamp",
821812
"generations_core:green_street_lamp",
813+
"generations_core:red_street_lamp",
814+
"generations_core:white_street_lamp",
822815
"generations_core:orange_street_lamp",
823-
"generations_core:red_pc",
824-
"generations_core:black_pc",
816+
"generations_core:lime_street_lamp",
817+
"generations_core:black_street_lamp",
818+
"generations_core:purple_street_lamp",
819+
"generations_core:gray_street_lamp",
820+
"generations_core:cyan_street_lamp",
821+
"generations_core:light_blue_street_lamp",
822+
"generations_core:blue_street_lamp",
825823
"generations_core:light_gray_pc",
824+
"generations_core:yellow_pc",
826825
"generations_core:magenta_pc",
827-
"generations_core:light_blue_pc",
828-
"generations_core:lime_pc",
829-
"generations_core:pink_pc",
830826
"generations_core:brown_pc",
831-
"generations_core:yellow_pc",
832-
"generations_core:cyan_pc",
833-
"generations_core:purple_pc",
834-
"generations_core:blue_pc",
835-
"generations_core:gray_pc",
836-
"generations_core:white_pc",
827+
"generations_core:pink_pc",
837828
"generations_core:green_pc",
829+
"generations_core:red_pc",
830+
"generations_core:white_pc",
838831
"generations_core:orange_pc",
832+
"generations_core:lime_pc",
833+
"generations_core:black_pc",
834+
"generations_core:purple_pc",
835+
"generations_core:gray_pc",
836+
"generations_core:cyan_pc",
837+
"generations_core:light_blue_pc",
838+
"generations_core:blue_pc",
839839
"generations_core:empty_ball_display",
840840
"generations_core:poke_ball_display",
841841
"generations_core:great_ball_display",
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package generations.gg.generations.core.generationscore.common.compat.jei
2+
3+
import generations.gg.generations.core.generationscore.common.GenerationsCore
4+
import generations.gg.generations.core.generationscore.common.client.screen.container.RksMachineScreen
5+
import generations.gg.generations.core.generationscore.common.world.container.GenerationsContainers
6+
import generations.gg.generations.core.generationscore.common.world.container.RksMachineContainer
7+
import generations.gg.generations.core.generationscore.common.world.level.block.GenerationsUtilityBlocks
8+
import generations.gg.generations.core.generationscore.common.world.recipe.GenerationsCoreRecipeTypes
9+
import generations.gg.generations.core.generationscore.common.world.recipe.RksRecipe
10+
import mezz.jei.api.IModPlugin
11+
import mezz.jei.api.JeiPlugin
12+
import mezz.jei.api.recipe.category.IRecipeCategory
13+
import mezz.jei.api.registration.*
14+
import mezz.jei.api.runtime.IIngredientManager
15+
import mezz.jei.library.plugins.vanilla.crafting.CategoryRecipeValidator
16+
import net.minecraft.client.Minecraft
17+
import net.minecraft.resources.ResourceLocation
18+
19+
@JeiPlugin
20+
class GenerationsCoreJeiCompat : IModPlugin {
21+
companion object {
22+
private val id: ResourceLocation = GenerationsCore.id("rks")
23+
}
24+
lateinit var rksCategory: IRecipeCategory<RksRecipe>
25+
26+
27+
override fun getPluginUid(): ResourceLocation {
28+
return id
29+
}
30+
31+
override fun registerCategories(registration: IRecipeCategoryRegistration) {
32+
rksCategory = RksRecipeCategory(registration.jeiHelpers.guiHelper)
33+
registration.addRecipeCategories(rksCategory)
34+
}
35+
36+
override fun registerRecipes(registration: IRecipeRegistration) {
37+
val ingredientManager = registration.ingredientManager
38+
39+
val craftingRecipes: Pair<List<RksRecipe>, List<RksRecipe>> = ingredientManager.rksRecipes()
40+
registration.addRecipes(RksRecipeCategory.RKS_MACHINE, craftingRecipes.first)
41+
registration.addRecipes(RksRecipeCategory.RKS_MACHINE, craftingRecipes.second)
42+
}
43+
44+
override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) {
45+
registration.addRecipeCatalyst(GenerationsUtilityBlocks.RKS_MACHINE.get(), RksRecipeCategory.RKS_MACHINE)
46+
}
47+
48+
override fun registerGuiHandlers(registration: IGuiHandlerRegistration) {
49+
registration.addRecipeClickArea(RksMachineScreen::class.java, 90, 35, 22, 15, RksRecipeCategory.RKS_MACHINE)
50+
}
51+
52+
override fun registerRecipeTransferHandlers(registration: IRecipeTransferRegistration) {
53+
registration.addRecipeTransferHandler(
54+
RksMachineContainer::class.java, GenerationsContainers.RKS_MACHINE.get(), RksRecipeCategory.RKS_MACHINE, 1, 9, 10, 36
55+
)
56+
}
57+
58+
59+
private fun IIngredientManager.rksRecipes(): Pair<List<RksRecipe>, List<RksRecipe>> {
60+
val validator: CategoryRecipeValidator<RksRecipe> = CategoryRecipeValidator(rksCategory, this, 9)
61+
62+
val handled: MutableList<RksRecipe> = ArrayList()
63+
val unhandled: MutableList<RksRecipe> = ArrayList()
64+
65+
val recipeManager = Minecraft.getInstance().level?.recipeManager ?: return Pair(emptyList(), emptyList())
66+
67+
val allRecipes: MutableList<RksRecipe> = recipeManager.getAllRecipesFor(GenerationsCoreRecipeTypes.RKS.get())
68+
69+
for (recipe in allRecipes) {
70+
71+
if (validator.isRecipeHandled(recipe)) {
72+
handled.add(recipe)
73+
} else {
74+
unhandled.add(recipe)
75+
}
76+
}
77+
78+
return handled.toList() to unhandled.toList()
79+
}
80+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package generations.gg.generations.core.generationscore.common.compat.jei;
2+
3+
import com.mojang.blaze3d.platform.InputConstants;
4+
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
5+
import mezz.jei.api.gui.builder.IRecipeSlotBuilder;
6+
import mezz.jei.api.gui.builder.ITooltipBuilder;
7+
import mezz.jei.api.gui.ingredient.ICraftingGridHelper;
8+
import mezz.jei.api.gui.ingredient.IRecipeSlotDrawable;
9+
import mezz.jei.api.gui.ingredient.IRecipeSlotRichTooltipCallback;
10+
import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder;
11+
import mezz.jei.api.recipe.IFocusGroup;
12+
import mezz.jei.api.recipe.category.IRecipeCategory;
13+
import mezz.jei.api.recipe.category.extensions.IRecipeCategoryExtension;
14+
import net.minecraft.client.gui.GuiGraphics;
15+
import net.minecraft.network.chat.Component;
16+
import net.minecraft.resources.ResourceLocation;
17+
import org.jetbrains.annotations.Nullable;
18+
19+
import java.util.Collections;
20+
import java.util.List;
21+
22+
public interface IRksCategoryExtension extends IRecipeCategoryExtension {
23+
void setRecipe(IRecipeLayoutBuilder var1, ICraftingGridHelper var2, IFocusGroup var3);
24+
25+
default void onDisplayedIngredientsUpdate(List<IRecipeSlotDrawable> recipeSlots, IFocusGroup focuses) {
26+
}
27+
28+
default void createRecipeExtras(IRecipeExtrasBuilder builder, ICraftingGridHelper craftingGridHelper, IFocusGroup focuses) {
29+
}
30+
31+
default @Nullable ResourceLocation getRegistryName() {
32+
return null;
33+
}
34+
35+
default int getWidth() {
36+
return 0;
37+
}
38+
39+
default int getHeight() {
40+
return 0;
41+
}
42+
}

0 commit comments

Comments
 (0)