Clean up JEI Integration

This commit is contained in:
mezz 2015-12-30 20:09:06 -08:00
parent dc7e565455
commit 181498e132
8 changed files with 108 additions and 116 deletions

View file

@ -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");

View file

@ -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) {
}
}

View file

@ -0,0 +1,7 @@
package techreborn.compat.jei;
public class TechRebornCategoryUids {
private TechRebornCategoryUids() {}
public static final String FUSION_REACTOR = "FusionReactor";
}

View file

@ -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<Object> recipes = new ArrayList<>();
recipes.addAll(FusionReactorRecipeHelper.reactorRecipes);
registry.addRecipes(recipes);
registry.addRecipes(FusionReactorRecipeHelper.reactorRecipes);
}
@Override

View file

@ -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());
}
}

View file

@ -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<FusionReactorRecipe> {
@ -18,7 +18,7 @@ public class FusionReactorRecipeHandler implements IRecipeHandler<FusionReactorR
@Nonnull
@Override
public String getRecipeCategoryUid() {
return "FusionReactor";
return TechRebornCategoryUids.FUSION_REACTOR;
}
@Nonnull

View file

@ -1,71 +1,70 @@
package techreborn.compat.jei.fusionReactor;
import javax.annotation.Nonnull;
import java.awt.Color;
import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import mezz.jei.api.recipe.IRecipeWrapper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import net.minecraft.util.StatCollector;
import mezz.jei.api.recipe.BlankRecipeWrapper;
import techreborn.api.reactor.FusionReactorRecipe;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
public class FusionReactorRecipeWrapper implements IRecipeWrapper {
FusionReactorRecipe baseRecipe;
public class FusionReactorRecipeWrapper extends BlankRecipeWrapper {
private FusionReactorRecipe baseRecipe;
public FusionReactorRecipeWrapper(FusionReactorRecipe baseRecipe) {
this.baseRecipe = baseRecipe;
}
@Override
public List getInputs() {
List<ItemStack> inputs = new ArrayList<>();
inputs.add(baseRecipe.getTopInput());
inputs.add(baseRecipe.getBottomInput());
return inputs;
public List<ItemStack> getInputs() {
return Arrays.asList(baseRecipe.getTopInput(), baseRecipe.getBottomInput());
}
@Override
public List<FluidStack> getFluidInputs() {
return Collections.emptyList();
public List<ItemStack> getOutputs() {
return Collections.singletonList(baseRecipe.getOutput());
}
public ItemStack getTopInput() {
return baseRecipe.getTopInput();
}
public ItemStack getBottomInput() {
return baseRecipe.getBottomInput();
}
@Override
public List getOutputs() {
List<ItemStack> outputs = new ArrayList<>();
outputs.add(baseRecipe.getOutput());
return outputs;
}
@Override
public List<FluidStack> 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);
}
}

View file

@ -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)