diff --git a/src/main/java/techreborn/compat/CompatManager.java b/src/main/java/techreborn/compat/CompatManager.java index a69db0a02..e4134c441 100644 --- a/src/main/java/techreborn/compat/CompatManager.java +++ b/src/main/java/techreborn/compat/CompatManager.java @@ -1,7 +1,6 @@ package techreborn.compat; import net.minecraftforge.fml.common.Loader; -import techreborn.compat.jei.JEIPlugin; import techreborn.compat.minetweaker.MinetweakerCompat; import techreborn.compat.recipes.RecipesBiomesOPlenty; import techreborn.compat.recipes.RecipesStandalone; @@ -33,7 +32,6 @@ public class CompatManager { if (Loader.isModLoaded("gregtech")) { isGregTechLoaded = true; } - registerCompact(JEIPlugin.class, "JEI"); registerCompact(CompatModuleWaila.class, "Waila"); registerCompact(RecipesStandalone.class); registerCompact(MinetweakerCompat.class, "MineTweaker3"); diff --git a/src/main/java/techreborn/compat/jei/JEIPlugin.java b/src/main/java/techreborn/compat/jei/JEIPlugin.java deleted file mode 100644 index 1f14e04ed..000000000 --- a/src/main/java/techreborn/compat/jei/JEIPlugin.java +++ /dev/null @@ -1,29 +0,0 @@ -package techreborn.compat.jei; - -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.event.FMLServerStartingEvent; -import techreborn.compat.ICompatModule; - -public class JEIPlugin implements ICompatModule { - @Override - public void preInit(FMLPreInitializationEvent event) { - - } - - @Override - public void init(FMLInitializationEvent event) { - - } - - @Override - public void postInit(FMLPostInitializationEvent event) { - - } - - @Override - public void serverStarting(FMLServerStartingEvent event) { - - } -} diff --git a/src/main/java/techreborn/compat/jei/TechRebornCategoryUids.java b/src/main/java/techreborn/compat/jei/TechRebornCategoryUids.java new file mode 100644 index 000000000..7a205973a --- /dev/null +++ b/src/main/java/techreborn/compat/jei/TechRebornCategoryUids.java @@ -0,0 +1,7 @@ +package techreborn.compat.jei; + +public class TechRebornCategoryUids { + private TechRebornCategoryUids() {} + + public static final String FUSION_REACTOR = "FusionReactor"; +} diff --git a/src/main/java/techreborn/compat/jei/TechRebornPlugin.java b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java similarity index 59% rename from src/main/java/techreborn/compat/jei/TechRebornPlugin.java rename to src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java index 80bceca1b..2d91d6e38 100644 --- a/src/main/java/techreborn/compat/jei/TechRebornPlugin.java +++ b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java @@ -1,26 +1,27 @@ package techreborn.compat.jei; -import mezz.jei.api.*; -import net.minecraftforge.fml.common.Loader; +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.IItemRegistry; +import mezz.jei.api.IJeiHelpers; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.IModRegistry; +import mezz.jei.api.IRecipeRegistry; import techreborn.api.reactor.FusionReactorRecipeHelper; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler; -import techreborn.lib.ModInfo; - -import java.util.ArrayList; -import java.util.List; - @mezz.jei.api.JEIPlugin -public class TechRebornPlugin implements IModPlugin { +public class TechRebornJeiPlugin implements IModPlugin { + private IJeiHelpers jeiHelpers; + @Override public boolean isModLoaded() { - return Loader.isModLoaded(ModInfo.MOD_ID); + return true; } @Override public void onJeiHelpersAvailable(IJeiHelpers jeiHelpers) { - + this.jeiHelpers = jeiHelpers; } @Override @@ -30,15 +31,17 @@ public class TechRebornPlugin implements IModPlugin { @Override public void register(IModRegistry registry) { + IGuiHelper guiHelper = jeiHelpers.getGuiHelper(); + registry.addRecipeCategories( - new FusionReactorRecipeCategory() + new FusionReactorRecipeCategory(guiHelper) ); + registry.addRecipeHandlers( new FusionReactorRecipeHandler() ); - List recipes = new ArrayList<>(); - recipes.addAll(FusionReactorRecipeHelper.reactorRecipes); - registry.addRecipes(recipes); + + registry.addRecipes(FusionReactorRecipeHelper.reactorRecipes); } @Override diff --git a/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeCategory.java b/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeCategory.java index 56553ea97..e9e6a6ec9 100644 --- a/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeCategory.java @@ -1,39 +1,45 @@ package techreborn.compat.jei.fusionReactor; -import mezz.jei.api.JEIManager; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import techreborn.client.gui.GuiFusionReactor; - import javax.annotation.Nonnull; +import net.minecraft.client.Minecraft; +import net.minecraft.util.StatCollector; + +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.gui.IDrawable; +import mezz.jei.api.gui.IGuiItemStackGroup; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.IRecipeWrapper; +import techreborn.client.gui.GuiFusionReactor; +import techreborn.compat.jei.TechRebornCategoryUids; + public class FusionReactorRecipeCategory implements IRecipeCategory { - private static final int inputSlot1 = 0; - private static final int inputSlot2 = 1; + private static final int inputSlotTop = 0; + private static final int inputSlotBottom = 1; private static final int outputSlot = 2; @Nonnull private final IDrawable background; + @Nonnull + private final String title; - public FusionReactorRecipeCategory() { - background = JEIManager.guiHelper.createDrawable(GuiFusionReactor.texture, 86, 16, 85, 64, 0, 40, 20, 20); + public FusionReactorRecipeCategory(IGuiHelper guiHelper) { + background = guiHelper.createDrawable(GuiFusionReactor.texture, 86, 16, 85, 64, 0, 40, 20, 20); + title = StatCollector.translateToLocal("tile.techreborn.fusioncontrolcomputer.name"); } @Nonnull @Override public String getUid() { - return "FusionReactor"; + return TechRebornCategoryUids.FUSION_REACTOR; } @Nonnull @Override public String getTitle() { - return "Fusion Reactor"; + return title; } @Nonnull @@ -54,14 +60,16 @@ public class FusionReactorRecipeCategory implements IRecipeCategory { @Override public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper) { - recipeLayout.getItemStacks().init(inputSlot1, true, 21, 0); - recipeLayout.getItemStacks().init(inputSlot2, true, 21, 36); - recipeLayout.getItemStacks().init(outputSlot, false, 80, 18); + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + itemStacks.init(inputSlotTop, true, 21, 0); + itemStacks.init(inputSlotBottom, true, 21, 36); + itemStacks.init(outputSlot, false, 81, 18); if (recipeWrapper instanceof FusionReactorRecipeWrapper) { - recipeLayout.getItemStacks().set(inputSlot1, (ItemStack) recipeWrapper.getInputs().get(0)); - recipeLayout.getItemStacks().set(inputSlot2, (ItemStack) recipeWrapper.getInputs().get(1)); - recipeLayout.getItemStacks().set(outputSlot, recipeWrapper.getOutputs()); + FusionReactorRecipeWrapper fusionRecipe = (FusionReactorRecipeWrapper) recipeWrapper; + itemStacks.set(inputSlotTop, fusionRecipe.getTopInput()); + itemStacks.set(inputSlotBottom, fusionRecipe.getBottomInput()); + itemStacks.set(outputSlot, fusionRecipe.getOutputs()); } } diff --git a/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeHandler.java b/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeHandler.java index a37653693..d38a77793 100644 --- a/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeHandler.java +++ b/src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeHandler.java @@ -1,11 +1,11 @@ package techreborn.compat.jei.fusionReactor; +import javax.annotation.Nonnull; + import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; import techreborn.api.reactor.FusionReactorRecipe; - -import javax.annotation.Nonnull; - +import techreborn.compat.jei.TechRebornCategoryUids; public class FusionReactorRecipeHandler implements IRecipeHandler { @@ -18,7 +18,7 @@ public class FusionReactorRecipeHandler implements IRecipeHandler inputs = new ArrayList<>(); - inputs.add(baseRecipe.getTopInput()); - inputs.add(baseRecipe.getBottomInput()); - return inputs; + public List getInputs() { + return Arrays.asList(baseRecipe.getTopInput(), baseRecipe.getBottomInput()); } @Override - public List getFluidInputs() { - return Collections.emptyList(); + public List getOutputs() { + return Collections.singletonList(baseRecipe.getOutput()); + } + + public ItemStack getTopInput() { + return baseRecipe.getTopInput(); + } + + public ItemStack getBottomInput() { + return baseRecipe.getBottomInput(); } @Override - public List getOutputs() { - List outputs = new ArrayList<>(); - outputs.add(baseRecipe.getOutput()); - return outputs; - } - - @Override - public List getFluidOutputs() { - return Collections.emptyList(); - } - - @Override - public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight) { + public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) { FontRenderer fontRendererObj = minecraft.fontRendererObj; - // fontRendererObj.drawString(baseRecipe.getEuTick() + "", 69 - fontRendererObj.getStringWidth(baseRecipe.getEuTick() + "") / 2, 0, Color.gray.getRGB()); + int color = Color.darkGray.getRGB(); + int x = 0; + int y = 67; + int lineSpacing = fontRendererObj.FONT_HEIGHT + 1; - DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US); - DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); - symbols.setGroupingSeparator('.'); - formatter.setDecimalFormatSymbols(symbols); - fontRendererObj.drawStringWithShadow("Start: " + formatter.format(baseRecipe.getStartEU()) + "EU", 0, 70, -1); - fontRendererObj.drawStringWithShadow("EU/t: " + baseRecipe.getEuTick(), 0, 80, -1); - fontRendererObj.drawStringWithShadow("Ticks to process: " + baseRecipe.getTickTime(), 0, 90, -1); - fontRendererObj.drawStringWithShadow("Time to process: " + baseRecipe.getTickTime() / 20 + " seconds", 0, 100, -1); - } + NumberFormat formatter = NumberFormat.getInstance(); + String startCostEU = formatter.format(baseRecipe.getStartEU()); + String startCostString = StatCollector.translateToLocalFormatted("techreborn.jei.recipe.start.cost", startCostEU); + fontRendererObj.drawString(startCostString, x, y, color); + y += lineSpacing; - @Override - public void drawAnimations(Minecraft minecraft, int recipeWidth, int recipeHeight) { - + String runningCostString = StatCollector.translateToLocalFormatted("techreborn.jei.recipe.running.cost", baseRecipe.getEuTick()); + fontRendererObj.drawString(runningCostString, x, y, color); + y += lineSpacing; + + int ticks = baseRecipe.getTickTime(); + String processingTimeString1 = StatCollector.translateToLocalFormatted("techreborn.jei.recipe.processing.time.1", ticks); + fontRendererObj.drawString(processingTimeString1, x, y, color); + y += lineSpacing; + + int seconds = ticks / 20; + String processingTimeString2 = StatCollector.translateToLocalFormatted("techreborn.jei.recipe.processing.time.2", seconds); + fontRendererObj.drawString(processingTimeString2, x + 10, y, color); } } diff --git a/src/main/resources/assets/techreborn/lang/en_US.lang b/src/main/resources/assets/techreborn/lang/en_US.lang index 3edd1d5fe..779bd2db1 100644 --- a/src/main/resources/assets/techreborn/lang/en_US.lang +++ b/src/main/resources/assets/techreborn/lang/en_US.lang @@ -901,3 +901,9 @@ achievement.TechReborn:ore_Pickup=New ore! achievement.TechReborn:ore_Pickup.desc=Mine a techreborn ore achievement.TechReborn:centrifuge_Craft=Time to spin achievement.TechReborn:thermalgen_Craft=Time to heat + +# JEI Integration +techreborn.jei.recipe.start.cost=Start: %sEU +techreborn.jei.recipe.running.cost=EU/t: %s +techreborn.jei.recipe.processing.time.1=Time: %s ticks +techreborn.jei.recipe.processing.time.2=(%s seconds)