diff options
Diffstat (limited to 'src/Java/gtPlusPlus/nei')
-rw-r--r-- | src/Java/gtPlusPlus/nei/DecayableRecipeHandler.java | 151 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/nei/handlers/NeiTextureHandler.java | 85 |
2 files changed, 216 insertions, 20 deletions
diff --git a/src/Java/gtPlusPlus/nei/DecayableRecipeHandler.java b/src/Java/gtPlusPlus/nei/DecayableRecipeHandler.java index 6b7f24ed37..5144a56663 100644 --- a/src/Java/gtPlusPlus/nei/DecayableRecipeHandler.java +++ b/src/Java/gtPlusPlus/nei/DecayableRecipeHandler.java @@ -1,27 +1,33 @@ package gtPlusPlus.nei; import java.awt.Rectangle; -import java.util.Collection; import java.util.List; +import codechicken.lib.gui.GuiDraw; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; -import crazypants.enderio.gui.IconEIO; import crazypants.enderio.machine.enchanter.GuiEnchanter; +import gregtech.api.util.GT_Utility; +import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.handler.Recipes.DecayableRecipe; import gtPlusPlus.core.item.materials.DustDecayable; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.lib.VanillaColours; +import gtPlusPlus.core.util.minecraft.ItemUtils; +import gtPlusPlus.nei.handlers.NeiTextureHandler; import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; public class DecayableRecipeHandler extends TemplateRecipeHandler { public String getRecipeName() { - return StatCollector.translateToLocal("gtpp.nei.decayables"); + return StatCollector.translateToLocal("GTPP.container.decaychest.name"); } public String getGuiTexture() { - return "enderio:textures/gui/enchanter.png"; + return CORE.MODID+":textures/gui/nei/decayables.png"; } public Class<? extends GuiContainer> getGuiClass() { @@ -31,20 +37,31 @@ public class DecayableRecipeHandler extends TemplateRecipeHandler { public String getOverlayIdentifier() { return "GTPP_Decayables"; } + + public int recipiesPerPage() { + return 1; + } public void loadTransferRects() { - this.transferRects.add(new RecipeTransferRect(new Rectangle(149, -3, 16, 16), "GTPP_Decayables", new Object[0])); + this.transferRects.add(new RecipeTransferRect(new Rectangle(6, 3, 16, 16), "GTPP_Decayables", new Object[0])); } public void loadCraftingRecipes(ItemStack result) { if (result == null || !DustDecayable.class.isInstance(result.getItem())) { return; } + if (result != null) { + Logger.INFO("Looking up crafting recipes for "+ItemUtils.getItemName(result)); + } final List<DecayableRecipe> recipes = DecayableRecipe.mRecipes; for (final DecayableRecipe recipe : recipes) { if (recipe.isValid()) { final ItemStack input = recipe.mInput.copy(); final ItemStack output = recipe.mOutput.copy(); + if (!GT_Utility.areStacksEqual(result, output, true)) { + continue; + } + Logger.INFO("Showing Usage result for "+ItemUtils.getItemName(result)); final DecayableRecipeNEI rec = new DecayableRecipeNEI(input, output, recipe.mTime); this.arecipes.add(rec); } @@ -70,35 +87,128 @@ public class DecayableRecipeHandler extends TemplateRecipeHandler { public void loadUsageRecipes(ItemStack ingredient) { final List<DecayableRecipe> recipes = DecayableRecipe.mRecipes; + if (ingredient != null) { + Logger.INFO("Looking up Usage results for "+ItemUtils.getItemName(ingredient)); + } for (final DecayableRecipe recipe : recipes) { if (recipe.isValid()) { final ItemStack input = recipe.mInput.copy(); final ItemStack output = recipe.mOutput.copy(); - final DecayableRecipeNEI rec = new DecayableRecipeNEI(input, output, recipe.mTime); - if (!rec.contains((Collection)rec.input, ingredient)) { + if (!GT_Utility.areStacksEqual(ingredient, input, true)) { continue; - } - rec.setIngredientPermutation((Collection) rec.input, ingredient); + } + Logger.INFO("Showing up Usage results for "+ItemUtils.getItemName(ingredient)); + final DecayableRecipeNEI rec = new DecayableRecipeNEI(input, output, recipe.mTime); + //rec.setIngredientPermutation((Collection) rec.input, ingredient); this.arecipes.add(rec); } }} public void drawExtras(int recipeIndex) { DecayableRecipeNEI recipe = (DecayableRecipeNEI) this.arecipes.get(recipeIndex); - //GuiDraw.drawStringC(recipe.getEnchantName(), 83, 10, 8421504, false); - /* - * int cost = TileEnchanter.getEnchantmentCost(recipe.recipe, 1); if (cost > 0) - * { String s = I18n.format("container.repair.cost", new Object[]{cost}); - * GuiDraw.drawStringC(s, 83, 46, 8453920); } - */ - - IconEIO.RECIPE_BUTTON.renderIcon(149.0D, -3.0D, 16.0D, 16.0D, 0.0D, true); + + //GuiDraw.drawStringC(I18n.format("GTPP.container.decaychest.result", new Object[]{}), 43, 10, 8421504, false); + + int cost = recipe.time; + if (cost > 0){ + + // NEI Strings + String s = I18n.format("GTPP.nei.info", new Object[]{cost}); + String s0 = I18n.format("GTPP.nei.timetaken", new Object[]{cost}); + + // Time Strings + String s1 = I18n.format("GTPP.time.ticks", new Object[]{cost}); + String s2 = I18n.format("GTPP.time.seconds", new Object[]{cost}); + String s3 = I18n.format("GTPP.time.minutes", new Object[]{cost}); + String s4 = I18n.format("GTPP.time.hours", new Object[]{cost}); + String s5 = I18n.format("GTPP.time.days", new Object[]{cost}); + String s6 = I18n.format("GTPP.time.months", new Object[]{cost}); + int y = 20; + + int secs = cost / 20; + int mins = secs / 60; + int hours = mins / 60; + int days = hours / 24; + int months = days / 30; + + + String suffix; + int formattedTime; + if (cost <= 20) { + suffix = s1; + formattedTime = cost; + } + else if (cost <= (20 * 60)) { + suffix = s2; + formattedTime = secs; + } + else if (cost <= (20 * 60 * 60)) { + suffix = s3; + formattedTime = mins; + } + else if (cost <= (20 * 60 * 60 * 24)) { + suffix = s4; + formattedTime = hours; + } + else if (cost < (20 * 60 * 60 * 24 * 30)) { + suffix = s5; + formattedTime = days; + } + else if (cost <= (20 * 60 * 60 * 24 * 30)) { + suffix = s6; + formattedTime = months; + } + else { + suffix = s1; + formattedTime = cost; + } + + + + int x = 5; + GuiDraw.drawString(s, x, 25, VanillaColours.DYE_BLACK.getAsInt(), false); + GuiDraw.drawString(s0, x, 40, VanillaColours.DYE_BLACK.getAsInt(), false); + + + + + + GuiDraw.drawString(suffix, x + 16, y+30, VanillaColours.DYE_BLACK.getAsInt(), false); + + //Values + GuiDraw.drawString((""+formattedTime), x, y+30, VanillaColours.DYE_GREEN.getAsInt(), false); + + + if (hours > 1) { + int aLeftoverMinutes = (cost - (hours * (20 * 60 * 60))); + if (aLeftoverMinutes > 0) { + int secs2 = aLeftoverMinutes / 20; + int mins2 = secs2 / 60; + GuiDraw.drawString(s3, x + 16, y+42, VanillaColours.DYE_BLACK.getAsInt(), false); + GuiDraw.drawString((""+mins2), x, y+42, VanillaColours.DYE_GREEN.getAsInt(), false); + + } + + } + + + + + } + + NeiTextureHandler.RECIPE_BUTTON.renderIcon(6.0D, 3.0D, 16.0D, 16.0D, 0.0D, true); } public class DecayableRecipeNEI extends TemplateRecipeHandler.CachedRecipe { private PositionedStack input; - private PositionedStack output; + private PositionedStack output; + public int time; + + @Override + public PositionedStack getIngredient() { + return this.input; + } public PositionedStack getResult() { return this.output; @@ -106,8 +216,9 @@ public class DecayableRecipeHandler extends TemplateRecipeHandler { public DecayableRecipeNEI(final ItemStack input, final ItemStack result, final int time) { super(); - this.input = new PositionedStack(input, 22, 24); - this.output = new PositionedStack(result, 129, 24); + this.input = new PositionedStack(input, 93, 24); + this.output = new PositionedStack(result, 142, 42); + this.time = time; } } }
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/nei/handlers/NeiTextureHandler.java b/src/Java/gtPlusPlus/nei/handlers/NeiTextureHandler.java new file mode 100644 index 0000000000..f433def57d --- /dev/null +++ b/src/Java/gtPlusPlus/nei/handlers/NeiTextureHandler.java @@ -0,0 +1,85 @@ +package gtPlusPlus.nei.handlers; + +import crazypants.render.RenderUtil; +import gtPlusPlus.core.lib.CORE; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +/** + * Based on crazypants.enderio.gui.IconEIO + * @author Original EIO Author + * + */ +public final class NeiTextureHandler { + + public static final NeiTextureHandler RECIPE = new NeiTextureHandler(16, 132, 16, 16); + public static final NeiTextureHandler RECIPE_BUTTON = new NeiTextureHandler(128, 116, 24, 24); + + public final double minU; + public final double maxU; + public final double minV; + public final double maxV; + public final double width; + public final double height; + + public static final ResourceLocation TEXTURE = new ResourceLocation(CORE.MODID+":textures/gui/nei/widgets.png"); + + public NeiTextureHandler(int x, int y) { + this(x, y, 16, 16); + } + + public NeiTextureHandler(int x, int y, int width, int height) { + this((double) width, (double) height, (double) ((float) (0.00390625D * (double) x)), + (double) ((float) (0.00390625D * (double) (x + width))), (double) ((float) (0.00390625D * (double) y)), + (double) ((float) (0.00390625D * (double) (y + height)))); + } + + public NeiTextureHandler(double width, double height, double minU, double maxU, double minV, double maxV) { + this.width = width; + this.height = height; + this.minU = minU; + this.maxU = maxU; + this.minV = minV; + this.maxV = maxV; + } + + public void renderIcon(double x, double y) { + this.renderIcon(x, y, this.width, this.height, 0.0D, false); + } + + public void renderIcon(double x, double y, boolean doDraw) { + this.renderIcon(x, y, this.width, this.height, 0.0D, doDraw); + } + + public void renderIcon(double x, double y, double width, double height, double zLevel, boolean doDraw) { + this.renderIcon(x, y, width, height, zLevel, doDraw, false); + } + + public void renderIcon(double x, double y, double width, double height, double zLevel, boolean doDraw, + boolean flipY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Tessellator tessellator = Tessellator.instance; + if (doDraw) { + RenderUtil.bindTexture(TEXTURE); + tessellator.startDrawingQuads(); + } + + if (flipY) { + tessellator.addVertexWithUV(x, y + height, zLevel, this.minU, this.minV); + tessellator.addVertexWithUV(x + width, y + height, zLevel, this.maxU, this.minV); + tessellator.addVertexWithUV(x + width, y + 0.0D, zLevel, this.maxU, this.maxV); + tessellator.addVertexWithUV(x, y + 0.0D, zLevel, this.minU, this.maxV); + } else { + tessellator.addVertexWithUV(x, y + height, zLevel, this.minU, this.maxV); + tessellator.addVertexWithUV(x + width, y + height, zLevel, this.maxU, this.maxV); + tessellator.addVertexWithUV(x + width, y + 0.0D, zLevel, this.maxU, this.minV); + tessellator.addVertexWithUV(x, y + 0.0D, zLevel, this.minU, this.minV); + } + + if (doDraw) { + tessellator.draw(); + } + + } +}
\ No newline at end of file |