aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/nei
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/nei')
-rw-r--r--src/Java/gtPlusPlus/nei/DecayableRecipeHandler.java151
-rw-r--r--src/Java/gtPlusPlus/nei/handlers/NeiTextureHandler.java85
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