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; package techreborn.compat;
import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Loader;
import techreborn.compat.jei.JEIPlugin;
import techreborn.compat.minetweaker.MinetweakerCompat; import techreborn.compat.minetweaker.MinetweakerCompat;
import techreborn.compat.recipes.RecipesBiomesOPlenty; import techreborn.compat.recipes.RecipesBiomesOPlenty;
import techreborn.compat.recipes.RecipesStandalone; import techreborn.compat.recipes.RecipesStandalone;
@ -33,7 +32,6 @@ public class CompatManager {
if (Loader.isModLoaded("gregtech")) { if (Loader.isModLoaded("gregtech")) {
isGregTechLoaded = true; isGregTechLoaded = true;
} }
registerCompact(JEIPlugin.class, "JEI");
registerCompact(CompatModuleWaila.class, "Waila"); registerCompact(CompatModuleWaila.class, "Waila");
registerCompact(RecipesStandalone.class); registerCompact(RecipesStandalone.class);
registerCompact(MinetweakerCompat.class, "MineTweaker3"); 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; package techreborn.compat.jei;
import mezz.jei.api.*; import mezz.jei.api.IGuiHelper;
import net.minecraftforge.fml.common.Loader; 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.api.reactor.FusionReactorRecipeHelper;
import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory;
import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler;
import techreborn.lib.ModInfo;
import java.util.ArrayList;
import java.util.List;
@mezz.jei.api.JEIPlugin @mezz.jei.api.JEIPlugin
public class TechRebornPlugin implements IModPlugin { public class TechRebornJeiPlugin implements IModPlugin {
private IJeiHelpers jeiHelpers;
@Override @Override
public boolean isModLoaded() { public boolean isModLoaded() {
return Loader.isModLoaded(ModInfo.MOD_ID); return true;
} }
@Override @Override
public void onJeiHelpersAvailable(IJeiHelpers jeiHelpers) { public void onJeiHelpersAvailable(IJeiHelpers jeiHelpers) {
this.jeiHelpers = jeiHelpers;
} }
@Override @Override
@ -30,15 +31,17 @@ public class TechRebornPlugin implements IModPlugin {
@Override @Override
public void register(IModRegistry registry) { public void register(IModRegistry registry) {
IGuiHelper guiHelper = jeiHelpers.getGuiHelper();
registry.addRecipeCategories( registry.addRecipeCategories(
new FusionReactorRecipeCategory() new FusionReactorRecipeCategory(guiHelper)
); );
registry.addRecipeHandlers( registry.addRecipeHandlers(
new FusionReactorRecipeHandler() new FusionReactorRecipeHandler()
); );
List<Object> recipes = new ArrayList<>();
recipes.addAll(FusionReactorRecipeHelper.reactorRecipes); registry.addRecipes(FusionReactorRecipeHelper.reactorRecipes);
registry.addRecipes(recipes);
} }
@Override @Override

View file

@ -1,39 +1,45 @@
package techreborn.compat.jei.fusionReactor; 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 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 { public class FusionReactorRecipeCategory implements IRecipeCategory {
private static final int inputSlot1 = 0; private static final int inputSlotTop = 0;
private static final int inputSlot2 = 1; private static final int inputSlotBottom = 1;
private static final int outputSlot = 2; private static final int outputSlot = 2;
@Nonnull @Nonnull
private final IDrawable background; private final IDrawable background;
@Nonnull
private final String title;
public FusionReactorRecipeCategory() { public FusionReactorRecipeCategory(IGuiHelper guiHelper) {
background = JEIManager.guiHelper.createDrawable(GuiFusionReactor.texture, 86, 16, 85, 64, 0, 40, 20, 20); background = guiHelper.createDrawable(GuiFusionReactor.texture, 86, 16, 85, 64, 0, 40, 20, 20);
title = StatCollector.translateToLocal("tile.techreborn.fusioncontrolcomputer.name");
} }
@Nonnull @Nonnull
@Override @Override
public String getUid() { public String getUid() {
return "FusionReactor"; return TechRebornCategoryUids.FUSION_REACTOR;
} }
@Nonnull @Nonnull
@Override @Override
public String getTitle() { public String getTitle() {
return "Fusion Reactor"; return title;
} }
@Nonnull @Nonnull
@ -54,14 +60,16 @@ public class FusionReactorRecipeCategory implements IRecipeCategory {
@Override @Override
public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper) { public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper) {
recipeLayout.getItemStacks().init(inputSlot1, true, 21, 0); IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks();
recipeLayout.getItemStacks().init(inputSlot2, true, 21, 36); itemStacks.init(inputSlotTop, true, 21, 0);
recipeLayout.getItemStacks().init(outputSlot, false, 80, 18); itemStacks.init(inputSlotBottom, true, 21, 36);
itemStacks.init(outputSlot, false, 81, 18);
if (recipeWrapper instanceof FusionReactorRecipeWrapper) { if (recipeWrapper instanceof FusionReactorRecipeWrapper) {
recipeLayout.getItemStacks().set(inputSlot1, (ItemStack) recipeWrapper.getInputs().get(0)); FusionReactorRecipeWrapper fusionRecipe = (FusionReactorRecipeWrapper) recipeWrapper;
recipeLayout.getItemStacks().set(inputSlot2, (ItemStack) recipeWrapper.getInputs().get(1)); itemStacks.set(inputSlotTop, fusionRecipe.getTopInput());
recipeLayout.getItemStacks().set(outputSlot, recipeWrapper.getOutputs()); itemStacks.set(inputSlotBottom, fusionRecipe.getBottomInput());
itemStacks.set(outputSlot, fusionRecipe.getOutputs());
} }
} }

View file

@ -1,11 +1,11 @@
package techreborn.compat.jei.fusionReactor; package techreborn.compat.jei.fusionReactor;
import javax.annotation.Nonnull;
import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeHandler;
import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.IRecipeWrapper;
import techreborn.api.reactor.FusionReactorRecipe; import techreborn.api.reactor.FusionReactorRecipe;
import techreborn.compat.jei.TechRebornCategoryUids;
import javax.annotation.Nonnull;
public class FusionReactorRecipeHandler implements IRecipeHandler<FusionReactorRecipe> { public class FusionReactorRecipeHandler implements IRecipeHandler<FusionReactorRecipe> {
@ -18,7 +18,7 @@ public class FusionReactorRecipeHandler implements IRecipeHandler<FusionReactorR
@Nonnull @Nonnull
@Override @Override
public String getRecipeCategoryUid() { public String getRecipeCategoryUid() {
return "FusionReactor"; return TechRebornCategoryUids.FUSION_REACTOR;
} }
@Nonnull @Nonnull

View file

@ -1,71 +1,70 @@
package techreborn.compat.jei.fusionReactor; 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.Minecraft;
import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack; 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 techreborn.api.reactor.FusionReactorRecipe;
import java.text.DecimalFormat; public class FusionReactorRecipeWrapper extends BlankRecipeWrapper {
import java.text.DecimalFormatSymbols; private FusionReactorRecipe baseRecipe;
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 FusionReactorRecipeWrapper(FusionReactorRecipe baseRecipe) { public FusionReactorRecipeWrapper(FusionReactorRecipe baseRecipe) {
this.baseRecipe = baseRecipe; this.baseRecipe = baseRecipe;
} }
@Override @Override
public List getInputs() { public List<ItemStack> getInputs() {
List<ItemStack> inputs = new ArrayList<>(); return Arrays.asList(baseRecipe.getTopInput(), baseRecipe.getBottomInput());
inputs.add(baseRecipe.getTopInput());
inputs.add(baseRecipe.getBottomInput());
return inputs;
} }
@Override @Override
public List<FluidStack> getFluidInputs() { public List<ItemStack> getOutputs() {
return Collections.emptyList(); return Collections.singletonList(baseRecipe.getOutput());
}
public ItemStack getTopInput() {
return baseRecipe.getTopInput();
}
public ItemStack getBottomInput() {
return baseRecipe.getBottomInput();
} }
@Override @Override
public List getOutputs() { public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) {
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) {
FontRenderer fontRendererObj = minecraft.fontRendererObj; 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); NumberFormat formatter = NumberFormat.getInstance();
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); String startCostEU = formatter.format(baseRecipe.getStartEU());
symbols.setGroupingSeparator('.'); String startCostString = StatCollector.translateToLocalFormatted("techreborn.jei.recipe.start.cost", startCostEU);
formatter.setDecimalFormatSymbols(symbols); fontRendererObj.drawString(startCostString, x, y, color);
fontRendererObj.drawStringWithShadow("Start: " + formatter.format(baseRecipe.getStartEU()) + "EU", 0, 70, -1); y += lineSpacing;
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);
}
@Override String runningCostString = StatCollector.translateToLocalFormatted("techreborn.jei.recipe.running.cost", baseRecipe.getEuTick());
public void drawAnimations(Minecraft minecraft, int recipeWidth, int recipeHeight) { 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:ore_Pickup.desc=Mine a techreborn ore
achievement.TechReborn:centrifuge_Craft=Time to spin achievement.TechReborn:centrifuge_Craft=Time to spin
achievement.TechReborn:thermalgen_Craft=Time to heat 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)