From 36153e8cb0948da30f78902ab89e0687a2ecd5e5 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Sun, 25 Apr 2021 12:08:05 -0700 Subject: [PATCH 01/13] Transfer multiblock descriptions to an info tab --- .../gregtech/integration/jei/GTJeiPlugin.java | 7 +++++++ .../multiblock/MultiblockInfoCategory.java | 10 ++++++++++ .../MultiblockInfoRecipeWrapper.java | 19 ++++--------------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/java/gregtech/integration/jei/GTJeiPlugin.java b/src/main/java/gregtech/integration/jei/GTJeiPlugin.java index 6a496f43dd..376ba5af7a 100755 --- a/src/main/java/gregtech/integration/jei/GTJeiPlugin.java +++ b/src/main/java/gregtech/integration/jei/GTJeiPlugin.java @@ -25,6 +25,7 @@ import gregtech.common.items.MetaItems; import gregtech.common.metatileentities.MetaTileEntities; import gregtech.integration.jei.multiblock.MultiblockInfoCategory; +import gregtech.integration.jei.multiblock.MultiblockInfoRecipeWrapper; import gregtech.integration.jei.recipe.*; import gregtech.integration.jei.recipe.fuel.FuelRecipeMapCategory; import gregtech.integration.jei.recipe.fuel.GTFuelRecipeWrapper; @@ -45,6 +46,7 @@ import javax.annotation.Nonnull; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; @@ -197,5 +199,10 @@ public void register(IModRegistry registry) { registry.addIngredientInfo(machine.getStackForm(), VanillaTypes.ITEM, "gregtech.machine.fluid_canner.jei_description"); } + + for(Map.Entry entry: MultiblockInfoCategory.multiblockRecipes.entrySet()) { + registry.addIngredientInfo(entry.getValue().getInfoPage().getController().getStackForm(), VanillaTypes.ITEM, + entry.getValue().getInfoPage().getDescription()); + } } } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java index f1d6f2bab1..66db1570a6 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java @@ -1,6 +1,7 @@ package gregtech.integration.jei.multiblock; import gregtech.api.GTValues; +import gregtech.api.gui.GuiTextures; import gregtech.common.metatileentities.MetaTileEntities; import gregtech.integration.jei.multiblock.infos.*; import mezz.jei.api.IJeiHelpers; @@ -11,6 +12,7 @@ import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.IRecipeCategory; import mezz.jei.gui.recipes.RecipeLayout; +import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; @@ -22,12 +24,14 @@ public class MultiblockInfoCategory implements IRecipeCategory multiblockRecipes = new HashMap() {{ @@ -84,4 +88,10 @@ public void setRecipe(IRecipeLayout recipeLayout, MultiblockInfoRecipeWrapper re recipeWrapper.setRecipeLayout((RecipeLayout) recipeLayout, this.guiHelper); } + @Override + public void drawExtras(Minecraft minecraft) { + for (int i = 0; i < 20; ++i) { + this.slot.draw(minecraft, 18*i-180*(i/10), background.getHeight()-36+18*(i/10)); + } + } } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index cdd0c2a214..086ddd4213 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -98,6 +98,10 @@ public void getIngredients(IIngredients ingredients) { ingredients.setOutput(ItemStack.class, controllerStack); } + public MultiblockInfoPage getInfoPage() { + return infoPage; + } + public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { this.recipeLayout = layout; IDrawable border = layout.getRecipeCategory().getBackground(); @@ -211,13 +215,9 @@ public void preRenderScene(WorldSceneRenderer renderer) { public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { WorldSceneRenderer renderer = getCurrentRenderer(); int scenePosY = 0; - //noinspection UnnecessaryLocalVariable,SuspiciousNameCombination int sceneHeight = recipeHeight-36; renderer.render(recipeLayout.getPosX(), recipeLayout.getPosY() + scenePosY, recipeWidth, sceneHeight, 0xC6C6C6); drawText(minecraft, recipeWidth); - for (int i = 0; i < MAX_PARTS; ++i) { - this.slot.draw(minecraft, 18*i-180*(i/10), recipeHeight-36+18*(i/10)); - } // Hmmm, the buttons need to be last otherwise sometimes highlighting // the button by mousing over it, leaks into other gui elements? for (GuiButton button : buttons.keySet()) { @@ -269,17 +269,6 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int private void drawText(Minecraft minecraft, int recipeWidth) { String localizedName = I18n.format(infoPage.getController().getMetaFullName()); GTUtility.drawCenteredSizedText(recipeWidth / 2, 0, localizedName, 0x333333, 1.3); - FontRenderer fontRenderer = minecraft.fontRenderer; - List lines = Arrays.stream(infoPage.getDescription()) - .flatMap(s -> fontRenderer.listFormattedStringToWidth(s, recipeWidth).stream()) - .collect(Collectors.toList()); - for (int i = 0; i < lines.size(); i++) { - String lineText = lines.get(i); - int x = (recipeWidth - fontRenderer.getStringWidth(lineText)) / 2; - int y = 8 + i * fontRenderer.FONT_HEIGHT; - fontRenderer.drawString(lineText, x, y, 0x333333); - } - GlStateManager.color(1.0f, 1.0f, 1.0f); } @Override From b89c21c48f5e11ad940b3d6c526af6f0e2b9a8b6 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Mon, 26 Apr 2021 01:04:49 -0700 Subject: [PATCH 02/13] Add information about preview manipulation --- .../jei/multiblock/MultiblockInfoRecipeWrapper.java | 10 +++++++++- src/main/resources/assets/gregtech/lang/en_us.lang | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index 086ddd4213..27439b1e8c 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -73,6 +73,7 @@ public MBPattern(final WorldSceneRenderer sceneRenderer, final List p private float rotationYaw; private float rotationPitch; private float zoom; + private final int FONT_HEIGHT = Minecraft.getMinecraft().fontRenderer.FONT_HEIGHT; private GuiButton buttonPreviousPattern; private GuiButton buttonNextPattern; @@ -268,7 +269,14 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int private void drawText(Minecraft minecraft, int recipeWidth) { String localizedName = I18n.format(infoPage.getController().getMetaFullName()); - GTUtility.drawCenteredSizedText(recipeWidth / 2, 0, localizedName, 0x333333, 1.3); + GTUtility.drawCenteredSizedText(recipeWidth / 2, -FONT_HEIGHT, localizedName, 0x333333, 1.3); + String tiltText = I18n.format("gregtech.multiblock.preview.tilt"); + String zoomText = I18n.format("gregtech.multiblock.preview.zoom"); + String panText = I18n.format("gregtech.multiblock.preview.pan"); + minecraft.fontRenderer.drawString(tiltText, (recipeWidth - minecraft.fontRenderer.getStringWidth(tiltText))/2, -6 * FONT_HEIGHT, TextFormatting.GRAY.getColorIndex()); + minecraft.fontRenderer.drawString(zoomText, (recipeWidth - minecraft.fontRenderer.getStringWidth(zoomText))/2, -5 * FONT_HEIGHT, TextFormatting.GRAY.getColorIndex()); + minecraft.fontRenderer.drawString(panText, (recipeWidth - minecraft.fontRenderer.getStringWidth(panText))/2, -4 * FONT_HEIGHT, TextFormatting.GRAY.getColorIndex()); + } @Override diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index a76b1021e7..b54478477b 100755 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -2946,6 +2946,9 @@ gregtech.multiblock.invalid_structure.tooltip=This block is a controller of the gregtech.multiblock.validation_failed=Invalid amount of inputs/outputs. gregtech.multiblock.max_energy_per_tick=Max EU/t: %s (%s) gregtech.multiblock.generation_eu=Outputting: %s EU/t +gregtech.multiblock.preview.tilt=Shift+LMB to tilt +gregtech.multiblock.preview.zoom=Shift+RMB to zoom +gregtech.multiblock.preview.pan=LMB+Drag to pan gregtech.multiblock.blast_furnace.max_temperature=Max Temperature: %sK gregtech.multiblock.multi_furnace.heating_coil_level=Heating Coil Level: %s From f28363b0e90f00c4e4fa5f033fc6dc33280cd14e Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Wed, 5 May 2021 19:22:01 -0700 Subject: [PATCH 03/13] Add informational hover icon --- .../jei/multiblock/MultiblockInfoPage.java | 15 +++++++ .../MultiblockInfoRecipeWrapper.java | 37 +++++++++++++----- .../textures/gui/widget/information.png | Bin 0 -> 240 bytes 3 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/assets/gregtech/textures/gui/widget/information.png diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java index 109623beab..eda2022f7d 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java @@ -1,7 +1,9 @@ package gregtech.integration.jei.multiblock; import gregtech.api.metatileentity.multiblock.MultiblockControllerBase; +import net.minecraft.client.resources.I18n; +import java.util.ArrayList; import java.util.List; public abstract class MultiblockInfoPage { @@ -15,4 +17,17 @@ public abstract class MultiblockInfoPage { public float getDefaultZoom() { return 1.0f; } + + public List informationText() { + String tiltText = I18n.format("gregtech.multiblock.preview.tilt"); + String zoomText = I18n.format("gregtech.multiblock.preview.zoom"); + String panText = I18n.format("gregtech.multiblock.preview.pan"); + + List informationText = new ArrayList<>(); + informationText.add(tiltText); + informationText.add(panText); + informationText.add(zoomText); + + return informationText; + } } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index 27439b1e8c..dae5d4d8eb 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -4,6 +4,7 @@ import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; +import gregtech.api.GTValues; import gregtech.api.gui.GuiTextures; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.MetaTileEntityHolder; @@ -33,10 +34,14 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; +import net.minecraftforge.fml.client.config.GuiUtils; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -73,12 +78,12 @@ public MBPattern(final WorldSceneRenderer sceneRenderer, final List p private float rotationYaw; private float rotationPitch; private float zoom; - private final int FONT_HEIGHT = Minecraft.getMinecraft().fontRenderer.FONT_HEIGHT; private GuiButton buttonPreviousPattern; private GuiButton buttonNextPattern; private GuiButton nextLayerButton; private IDrawable slot; + private IGuiHelper guiHelper; private ItemStack tooltipBlockStack; @@ -107,6 +112,7 @@ public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { this.recipeLayout = layout; IDrawable border = layout.getRecipeCategory().getBackground(); this.buttons.clear(); + this.guiHelper = guiHelper; this.nextLayerButton = new GuiButton(0, border.getWidth() - 25, 70, 20, 20, ""); this.buttonPreviousPattern = new GuiButton(0, border.getWidth()-46, 90, 20, 20, "<"); this.buttonNextPattern = new GuiButton(0, border.getWidth() - 25, 90, 20, 20, ">"); @@ -224,6 +230,12 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int for (GuiButton button : buttons.keySet()) { button.drawButton(minecraft, mouseX, mouseY, 0.0f); } + guiHelper.drawableBuilder(new ResourceLocation(GTValues.MODID, "textures/gui/widget/information.png"), 0, 0, 20, 20) + .setTextureSize(20, 20) + .build() + .draw(minecraft, recipeWidth - 25, 49); + + drawHoveringInformationText(infoPage.informationText(), mouseX, mouseY); this.tooltipBlockStack = null; BlockPos pos = renderer.getLastHitBlock(); @@ -267,16 +279,23 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int this.lastMouseY = mouseY; } + @SideOnly(Side.CLIENT) + protected void drawHoveringInformationText(List tooltip, int mouseX, int mouseY) { + Minecraft mc = Minecraft.getMinecraft(); + int minX = recipeLayout.getRecipeCategory().getBackground().getWidth(); + int[] yRange = new int[]{49, 69}; + int[] xRange = new int[]{minX - 25, minX - 5}; + //Only draw the hovering information tooltip above the information icon + if(yRange[0] < mouseY && mouseY < yRange[1] && xRange[0] < mouseX && mouseX < xRange[1]) { + GuiUtils.drawHoveringText(tooltip, mouseX, mouseY, + 176,176, -1, mc.fontRenderer); + } + + } + private void drawText(Minecraft minecraft, int recipeWidth) { String localizedName = I18n.format(infoPage.getController().getMetaFullName()); - GTUtility.drawCenteredSizedText(recipeWidth / 2, -FONT_HEIGHT, localizedName, 0x333333, 1.3); - String tiltText = I18n.format("gregtech.multiblock.preview.tilt"); - String zoomText = I18n.format("gregtech.multiblock.preview.zoom"); - String panText = I18n.format("gregtech.multiblock.preview.pan"); - minecraft.fontRenderer.drawString(tiltText, (recipeWidth - minecraft.fontRenderer.getStringWidth(tiltText))/2, -6 * FONT_HEIGHT, TextFormatting.GRAY.getColorIndex()); - minecraft.fontRenderer.drawString(zoomText, (recipeWidth - minecraft.fontRenderer.getStringWidth(zoomText))/2, -5 * FONT_HEIGHT, TextFormatting.GRAY.getColorIndex()); - minecraft.fontRenderer.drawString(panText, (recipeWidth - minecraft.fontRenderer.getStringWidth(panText))/2, -4 * FONT_HEIGHT, TextFormatting.GRAY.getColorIndex()); - + GTUtility.drawCenteredSizedText(recipeWidth / 2, 0, localizedName, 0x333333, 1.3); } @Override diff --git a/src/main/resources/assets/gregtech/textures/gui/widget/information.png b/src/main/resources/assets/gregtech/textures/gui/widget/information.png new file mode 100644 index 0000000000000000000000000000000000000000..01281dd53c067a547b6fcd80d7f662bfee6b80ea GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`TRmMILoEE0Qw}iYh}Hb<_x`?={4ld731d%ot{;O|Z~o zb|{j!t4sP3qly3prfg|G%`hWvLei9&!=W`&bD~?GY~85lG{H@P!BTb^ nL-w|2$(B5>O>Q$}7<#y;?3OtlRRr_^gQu&X%Q~loCI$uoZ6;R< literal 0 HcmV?d00001 From 1b51d6cf41c289a5c1c6b7e719bae76a0f32f6df Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Wed, 5 May 2021 19:37:15 -0700 Subject: [PATCH 04/13] Slight cleanup to informational tooltip creation --- .../jei/multiblock/MultiblockInfoPage.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java index eda2022f7d..9fb0646898 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java @@ -19,15 +19,11 @@ public float getDefaultZoom() { } public List informationText() { - String tiltText = I18n.format("gregtech.multiblock.preview.tilt"); - String zoomText = I18n.format("gregtech.multiblock.preview.zoom"); - String panText = I18n.format("gregtech.multiblock.preview.pan"); - List informationText = new ArrayList<>(); - informationText.add(tiltText); - informationText.add(panText); - informationText.add(zoomText); - - return informationText; + return new ArrayList() {{ + add(I18n.format("gregtech.multiblock.preview.tilt")); + add(I18n.format("gregtech.multiblock.preview.zoom")); + add(I18n.format("gregtech.multiblock.preview.pan")); + }}; } } From 065c0a9560f638b3570a8d3348967c056dd3a89a Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Mon, 17 May 2021 13:46:42 -0700 Subject: [PATCH 05/13] Fix button highlight bleeding issue --- .../gregtech/api/render/scene/WorldSceneRenderer.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java b/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java index fc1e724579..ee343fe2c5 100644 --- a/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java +++ b/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java @@ -211,7 +211,7 @@ public static Vec2f setupCamera(int x, int y, int width, int height, int skyColo Minecraft mc = Minecraft.getMinecraft(); ScaledResolution resolution = new ScaledResolution(mc); - GlStateManager.pushAttrib(); + GL11.glPushAttrib(GL11.GL_TRANSFORM_BIT); mc.entityRenderer.disableLightmap(); GlStateManager.disableLighting(); GlStateManager.enableDepth(); @@ -274,8 +274,13 @@ public static void resetCamera() { GlStateManager.matrixMode(GL11.GL_MODELVIEW); GlStateManager.popMatrix(); - //reset attributes - GlStateManager.popAttrib(); + //Re-enable disabled states + GlStateManager.disableBlend(); + GlStateManager.disableDepth(); + minecraft.entityRenderer.enableLightmap(); + + //Reset Attributes + GL11.glPopAttrib(); } public class TrackedDummyWorld extends DummyWorld { From d9a5c75132e9ad4d59557e0c6e33b395fc3f0a06 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Mon, 17 May 2021 13:47:37 -0700 Subject: [PATCH 06/13] Add missing change --- .../integration/jei/multiblock/MultiblockInfoRecipeWrapper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index dae5d4d8eb..c8e98c8c1d 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -229,6 +229,7 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int // the button by mousing over it, leaks into other gui elements? for (GuiButton button : buttons.keySet()) { button.drawButton(minecraft, mouseX, mouseY, 0.0f); + minecraft.entityRenderer.enableLightmap(); } guiHelper.drawableBuilder(new ResourceLocation(GTValues.MODID, "textures/gui/widget/information.png"), 0, 0, 20, 20) .setTextureSize(20, 20) From b28073273ce2c8480748aaf387dd308dbfe3121a Mon Sep 17 00:00:00 2001 From: LAGIdiot Date: Sat, 22 May 2021 12:44:36 +0200 Subject: [PATCH 07/13] Remove slot drawing from MultiblockInfoCategory --- src/main/java/gregtech/api/gui/GuiTextures.java | 4 +++- .../jei/multiblock/MultiblockInfoCategory.java | 14 +------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/main/java/gregtech/api/gui/GuiTextures.java b/src/main/java/gregtech/api/gui/GuiTextures.java index c1f1d68b1b..d2553926c0 100644 --- a/src/main/java/gregtech/api/gui/GuiTextures.java +++ b/src/main/java/gregtech/api/gui/GuiTextures.java @@ -38,6 +38,7 @@ public class GuiTextures { public static final TextureArea BUTTON_ALLOW_IMPORT_EXPORT = TextureArea.fullImage("textures/gui/widget/button_allow_import_export.png"); public static final TextureArea BUTTON_CLEAR_GRID = TextureArea.fullImage("textures/gui/widget/button_clear_grid.png"); public static final TextureArea LOCK = TextureArea.fullImage("textures/gui/widget/lock.png"); + //INDICATORS & ICONS public static final TextureArea INDICATOR_NO_ENERGY = TextureArea.fullImage("textures/gui/base/indicator_no_energy.png"); public static final TextureArea TANK_ICON = TextureArea.fullImage("textures/gui/base/tank_icon.png"); @@ -125,5 +126,6 @@ public class GuiTextures { public static final TextureArea PROGRESS_BAR_SLICE = TextureArea.fullImage("textures/gui/progress_bar/progress_bar_slice.png"); public static final TextureArea PROGRESS_BAR_WIREMILL = TextureArea.fullImage("textures/gui/progress_bar/progress_bar_wiremill.png"); - + //JEI + public static final TextureArea MULTIBLOCK_CATEGORY = TextureArea.fullImage("textures/gui/icon/coke_oven.png"); } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java index 66db1570a6..67294b922f 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java @@ -12,9 +12,7 @@ import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.IRecipeCategory; import mezz.jei.gui.recipes.RecipeLayout; -import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; -import net.minecraft.util.ResourceLocation; import java.util.HashMap; import java.util.Map; @@ -24,14 +22,11 @@ public class MultiblockInfoCategory implements IRecipeCategory multiblockRecipes = new HashMap() {{ @@ -87,11 +82,4 @@ public IDrawable getIcon() { public void setRecipe(IRecipeLayout recipeLayout, MultiblockInfoRecipeWrapper recipeWrapper, IIngredients ingredients) { recipeWrapper.setRecipeLayout((RecipeLayout) recipeLayout, this.guiHelper); } - - @Override - public void drawExtras(Minecraft minecraft) { - for (int i = 0; i < 20; ++i) { - this.slot.draw(minecraft, 18*i-180*(i/10), background.getHeight()-36+18*(i/10)); - } - } } From 4adcd3920f11061225d5320d0db3a7ea5139c78f Mon Sep 17 00:00:00 2001 From: LAGIdiot Date: Sat, 22 May 2021 12:46:44 +0200 Subject: [PATCH 08/13] Remove enableLightMap --- src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java | 2 -- .../integration/jei/multiblock/MultiblockInfoRecipeWrapper.java | 1 - 2 files changed, 3 deletions(-) diff --git a/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java b/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java index ee343fe2c5..be20fca570 100644 --- a/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java +++ b/src/main/java/gregtech/api/render/scene/WorldSceneRenderer.java @@ -182,7 +182,6 @@ private BlockPos handleMouseHit(Vec2f mousePosition) { //rewind buffer after read OBJECT_POS_BUFFER.rewind(); - //System.out.println(String.format("%f %f %f %f", pixelDepth, posX, posY, posZ)); //if we didn't hit anything, just return null //also return null if hit is too far from us if (posY < -100.0f) { @@ -277,7 +276,6 @@ public static void resetCamera() { //Re-enable disabled states GlStateManager.disableBlend(); GlStateManager.disableDepth(); - minecraft.entityRenderer.enableLightmap(); //Reset Attributes GL11.glPopAttrib(); diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index c8e98c8c1d..dae5d4d8eb 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -229,7 +229,6 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int // the button by mousing over it, leaks into other gui elements? for (GuiButton button : buttons.keySet()) { button.drawButton(minecraft, mouseX, mouseY, 0.0f); - minecraft.entityRenderer.enableLightmap(); } guiHelper.drawableBuilder(new ResourceLocation(GTValues.MODID, "textures/gui/widget/information.png"), 0, 0, 20, 20) .setTextureSize(20, 20) From 9c3fe2d55f20677698eac359b1a672b4ff54cf04 Mon Sep 17 00:00:00 2001 From: LAGIdiot Date: Sat, 22 May 2021 13:16:17 +0200 Subject: [PATCH 09/13] Fix dimming problem Clean up --- .../java/gregtech/api/gui/GuiTextures.java | 2 + .../MultiblockInfoRecipeWrapper.java | 79 +++++++++++-------- 2 files changed, 48 insertions(+), 33 deletions(-) diff --git a/src/main/java/gregtech/api/gui/GuiTextures.java b/src/main/java/gregtech/api/gui/GuiTextures.java index d2553926c0..e6694a04ba 100644 --- a/src/main/java/gregtech/api/gui/GuiTextures.java +++ b/src/main/java/gregtech/api/gui/GuiTextures.java @@ -128,4 +128,6 @@ public class GuiTextures { //JEI public static final TextureArea MULTIBLOCK_CATEGORY = TextureArea.fullImage("textures/gui/icon/coke_oven.png"); + public static final TextureArea INFO_ICON = TextureArea.fullImage("textures/gui/widget/information.png"); + } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index dae5d4d8eb..17ea75b551 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -4,7 +4,6 @@ import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; -import gregtech.api.GTValues; import gregtech.api.gui.GuiTextures; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.MetaTileEntityHolder; @@ -23,7 +22,6 @@ import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.resources.I18n; @@ -34,7 +32,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.text.TextFormatting; @@ -48,14 +45,15 @@ import javax.vecmath.Vector3f; import java.util.*; import java.util.Map.Entry; -import java.util.stream.Collectors; public class MultiblockInfoRecipeWrapper implements IRecipeWrapper, SceneRenderCallback { private static final int MAX_PARTS = 20; + private static final int PARTS_HEIGHT = 36; private static class MBPattern { final WorldSceneRenderer sceneRenderer; final List parts; + public MBPattern(final WorldSceneRenderer sceneRenderer, final List parts) { this.sceneRenderer = sceneRenderer; this.parts = parts; @@ -82,8 +80,9 @@ public MBPattern(final WorldSceneRenderer sceneRenderer, final List p private GuiButton buttonPreviousPattern; private GuiButton buttonNextPattern; private GuiButton nextLayerButton; + private IDrawable slot; - private IGuiHelper guiHelper; + private IDrawable infoIcon; private ItemStack tooltipBlockStack; @@ -93,8 +92,8 @@ public MultiblockInfoRecipeWrapper(MultiblockInfoPage infoPage) { HashSet drops = new HashSet<>(); drops.add(new ItemStackKey(controllerStack)); this.patterns = infoPage.getMatchingShapes().stream() - .map(it -> initializePattern(it, drops)) - .toArray(MBPattern[]::new); + .map(it -> initializePattern(it, drops)) + .toArray(MBPattern[]::new); drops.forEach(it -> allItemStackInputs.add(it.getItemStack())); } @@ -110,32 +109,35 @@ public MultiblockInfoPage getInfoPage() { public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { this.recipeLayout = layout; + + this.slot = guiHelper.drawableBuilder(GuiTextures.SLOT.imageLocation, 0, 0, 18, 18).setTextureSize(18, 18).build(); + this.infoIcon = guiHelper.drawableBuilder(GuiTextures.INFO_ICON.imageLocation, 0, 0, 20, 20).setTextureSize(20, 20).build(); + IDrawable border = layout.getRecipeCategory().getBackground(); + preparePlaceForParts(border.getHeight()); this.buttons.clear(); - this.guiHelper = guiHelper; this.nextLayerButton = new GuiButton(0, border.getWidth() - 25, 70, 20, 20, ""); - this.buttonPreviousPattern = new GuiButton(0, border.getWidth()-46, 90, 20, 20, "<"); + this.buttonPreviousPattern = new GuiButton(0, border.getWidth() - 46, 90, 20, 20, "<"); this.buttonNextPattern = new GuiButton(0, border.getWidth() - 25, 90, 20, 20, ">"); this.buttons.put(nextLayerButton, this::toggleNextLayer); this.buttons.put(buttonPreviousPattern, () -> switchRenderPage(-1)); this.buttons.put(buttonNextPattern, () -> switchRenderPage(1)); + boolean isPagesDisabled = patterns.length == 1; this.buttonPreviousPattern.visible = !isPagesDisabled; this.buttonNextPattern.visible = !isPagesDisabled; this.buttonPreviousPattern.enabled = false; this.buttonNextPattern.enabled = patterns.length > 1; - IGuiItemStackGroup itemStackGroup = recipeLayout.getItemStacks(); - this.slot = guiHelper.createDrawable(GuiTextures.SLOT.imageLocation, 0, 0, 18, 18, 18, 18); - for (int i = 0; i < MAX_PARTS; ++i) - itemStackGroup.init(i, true, 18*i-180*(i/10), border.getHeight()-36+18*(i/10)); + this.panX = 0.0f; this.panY = 0.0f; this.zoom = infoPage.getDefaultZoom(); this.rotationYaw = -45.0f; this.rotationPitch = 0.0f; this.currentRendererPage = 0; + setNextLayer(-1); - updateParts(); + updateParts(); } public WorldSceneRenderer getCurrentRenderer() { @@ -173,6 +175,13 @@ private void switchRenderPage(int amount) { } } + private void preparePlaceForParts(int recipeHeight) { + IGuiItemStackGroup itemStackGroup = recipeLayout.getItemStacks(); + + for (int i = 0; i < MAX_PARTS; ++i) + itemStackGroup.init(i, true, 18 * i - 180 * (i / 10), recipeHeight - PARTS_HEIGHT + 18 * (i / 10)); + } + private void updateParts() { IGuiItemStackGroup itemStackGroup = recipeLayout.getItemStacks(); List parts = this.patterns[currentRendererPage].parts; @@ -221,26 +230,32 @@ public void preRenderScene(WorldSceneRenderer renderer) { @Override public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { WorldSceneRenderer renderer = getCurrentRenderer(); - int scenePosY = 0; - int sceneHeight = recipeHeight-36; - renderer.render(recipeLayout.getPosX(), recipeLayout.getPosY() + scenePosY, recipeWidth, sceneHeight, 0xC6C6C6); - drawText(minecraft, recipeWidth); + int sceneHeight = recipeHeight - PARTS_HEIGHT; + + renderer.render(recipeLayout.getPosX(), recipeLayout.getPosY(), recipeWidth, sceneHeight, 0xC6C6C6); + drawMultiblockName(recipeWidth); + + //reset colors (so any elements render after this point are not dark) + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + + this.infoIcon.draw(minecraft, recipeWidth - 25, 49); + + for (int i = 0; i < MAX_PARTS; ++i) { + this.slot.draw(minecraft, 18 * i - 180 * (i / 10), sceneHeight + 18 * (i / 10)); + } + // Hmmm, the buttons need to be last otherwise sometimes highlighting // the button by mousing over it, leaks into other gui elements? for (GuiButton button : buttons.keySet()) { button.drawButton(minecraft, mouseX, mouseY, 0.0f); } - guiHelper.drawableBuilder(new ResourceLocation(GTValues.MODID, "textures/gui/widget/information.png"), 0, 0, 20, 20) - .setTextureSize(20, 20) - .build() - .draw(minecraft, recipeWidth - 25, 49); - drawHoveringInformationText(infoPage.informationText(), mouseX, mouseY); + drawHoveringInformationText(minecraft, infoPage.informationText(), mouseX, mouseY); this.tooltipBlockStack = null; BlockPos pos = renderer.getLastHitBlock(); - boolean insideView = mouseX >= 0 && mouseY >= scenePosY && - mouseX < recipeWidth && mouseY < (scenePosY + sceneHeight); + boolean insideView = mouseX >= 0 && mouseY >= 0 && + mouseX < recipeWidth && mouseY < sceneHeight; boolean leftClickHeld = Mouse.isButtonDown(0); boolean rightClickHeld = Mouse.isButtonDown(1); boolean isHoldingShift = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT); @@ -280,20 +295,18 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int } @SideOnly(Side.CLIENT) - protected void drawHoveringInformationText(List tooltip, int mouseX, int mouseY) { - Minecraft mc = Minecraft.getMinecraft(); + protected void drawHoveringInformationText(Minecraft minecraft, List tooltip, int mouseX, int mouseY) { int minX = recipeLayout.getRecipeCategory().getBackground().getWidth(); int[] yRange = new int[]{49, 69}; int[] xRange = new int[]{minX - 25, minX - 5}; //Only draw the hovering information tooltip above the information icon - if(yRange[0] < mouseY && mouseY < yRange[1] && xRange[0] < mouseX && mouseX < xRange[1]) { + if (yRange[0] < mouseY && mouseY < yRange[1] && xRange[0] < mouseX && mouseX < xRange[1]) { GuiUtils.drawHoveringText(tooltip, mouseX, mouseY, - 176,176, -1, mc.fontRenderer); + 176, 176, -1, minecraft.fontRenderer); } - } - private void drawText(Minecraft minecraft, int recipeWidth) { + private void drawMultiblockName(int recipeWidth) { String localizedName = I18n.format(infoPage.getController().getMetaFullName()); GTUtility.drawCenteredSizedText(recipeWidth / 2, 0, localizedName, 0x333333, 1.3); } @@ -408,9 +421,9 @@ private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, Set parts = new ArrayList(); + ArrayList parts = new ArrayList<>(); for (PartInfo partInfo : partInfos) { - parts.add(partInfo.getItemStack()); + parts.add(partInfo.getItemStack()); } return new MBPattern(worldSceneRenderer, parts); } From 3dbf1eea7d95c84d57a9c0d3ffe55794ed51e7b0 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Sat, 22 May 2021 13:55:14 -0700 Subject: [PATCH 10/13] Add a bit more information to hover --- .../gregtech/integration/jei/multiblock/MultiblockInfoPage.java | 2 ++ src/main/resources/assets/gregtech/lang/en_us.lang | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java index 9fb0646898..27ad077498 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java @@ -24,6 +24,8 @@ public List informationText() { add(I18n.format("gregtech.multiblock.preview.tilt")); add(I18n.format("gregtech.multiblock.preview.zoom")); add(I18n.format("gregtech.multiblock.preview.pan")); + add(I18n.format("gregtech.multiblock.preview.move")); + add(I18n.format("gregtech.multiblock.preview.reset")); }}; } } diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index b54478477b..84f3a6f39a 100755 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -2949,6 +2949,8 @@ gregtech.multiblock.generation_eu=Outputting: %s EU/t gregtech.multiblock.preview.tilt=Shift+LMB to tilt gregtech.multiblock.preview.zoom=Shift+RMB to zoom gregtech.multiblock.preview.pan=LMB+Drag to pan +gregtech.multiblock.preview.move=RMB+Drag to move +gregtech.multiblock.preview.reset=Scroll Mousewheel to reset gregtech.multiblock.blast_furnace.max_temperature=Max Temperature: %sK gregtech.multiblock.multi_furnace.heating_coil_level=Heating Coil Level: %s From 8dfe665a62fc8fdc913d152c9bebf2aae05b2131 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Mon, 24 May 2021 17:48:16 -0700 Subject: [PATCH 11/13] Cleanup magic numbers and slight refactor to reduce nesting and improve readability --- .../gregtech/integration/jei/GTJeiPlugin.java | 14 +++++---- .../jei/multiblock/MultiblockInfoPage.java | 14 ++++----- .../MultiblockInfoRecipeWrapper.java | 29 ++++++++++++------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/main/java/gregtech/integration/jei/GTJeiPlugin.java b/src/main/java/gregtech/integration/jei/GTJeiPlugin.java index 376ba5af7a..e6f6b19906 100755 --- a/src/main/java/gregtech/integration/jei/GTJeiPlugin.java +++ b/src/main/java/gregtech/integration/jei/GTJeiPlugin.java @@ -25,7 +25,7 @@ import gregtech.common.items.MetaItems; import gregtech.common.metatileentities.MetaTileEntities; import gregtech.integration.jei.multiblock.MultiblockInfoCategory; -import gregtech.integration.jei.multiblock.MultiblockInfoRecipeWrapper; +import gregtech.integration.jei.multiblock.MultiblockInfoPage; import gregtech.integration.jei.recipe.*; import gregtech.integration.jei.recipe.fuel.FuelRecipeMapCategory; import gregtech.integration.jei.recipe.fuel.GTFuelRecipeWrapper; @@ -46,7 +46,6 @@ import javax.annotation.Nonnull; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; @@ -200,9 +199,12 @@ public void register(IModRegistry registry) { "gregtech.machine.fluid_canner.jei_description"); } - for(Map.Entry entry: MultiblockInfoCategory.multiblockRecipes.entrySet()) { - registry.addIngredientInfo(entry.getValue().getInfoPage().getController().getStackForm(), VanillaTypes.ITEM, - entry.getValue().getInfoPage().getDescription()); - } + //Multiblock info page registration + MultiblockInfoCategory.multiblockRecipes.values().forEach(v -> { + MultiblockInfoPage infoPage = v.getInfoPage(); + registry.addIngredientInfo(infoPage.getController().getStackForm(), + VanillaTypes.ITEM, + infoPage.getDescription()); + }); } } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java index 27ad077498..5f2a82bc12 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java @@ -3,8 +3,9 @@ import gregtech.api.metatileentity.multiblock.MultiblockControllerBase; import net.minecraft.client.resources.I18n; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; public abstract class MultiblockInfoPage { @@ -20,12 +21,9 @@ public float getDefaultZoom() { public List informationText() { - return new ArrayList() {{ - add(I18n.format("gregtech.multiblock.preview.tilt")); - add(I18n.format("gregtech.multiblock.preview.zoom")); - add(I18n.format("gregtech.multiblock.preview.pan")); - add(I18n.format("gregtech.multiblock.preview.move")); - add(I18n.format("gregtech.multiblock.preview.reset")); - }}; + return Stream.of("gregtech.multiblock.preview.tilt", "gregtech.multiblock.preview.zoom", + "gregtech.multiblock.preview.pan", "gregtech.multiblock.preview.move", "gregtech.multiblock.preview.reset") + .map(I18n::format) + .collect(Collectors.toList()); } } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index 17ea75b551..a67e7ae9dd 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -49,6 +49,10 @@ public class MultiblockInfoRecipeWrapper implements IRecipeWrapper, SceneRenderCallback { private static final int MAX_PARTS = 20; private static final int PARTS_HEIGHT = 36; + private final int SLOT_SIZE = 18; + private final int SLOTS_PER_ROW = 10; + private final int ICON_SIZE = 20; + private final int RIGHT_PADDING = 5; private static class MBPattern { final WorldSceneRenderer sceneRenderer; @@ -110,15 +114,15 @@ public MultiblockInfoPage getInfoPage() { public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { this.recipeLayout = layout; - this.slot = guiHelper.drawableBuilder(GuiTextures.SLOT.imageLocation, 0, 0, 18, 18).setTextureSize(18, 18).build(); - this.infoIcon = guiHelper.drawableBuilder(GuiTextures.INFO_ICON.imageLocation, 0, 0, 20, 20).setTextureSize(20, 20).build(); + this.slot = guiHelper.drawableBuilder(GuiTextures.SLOT.imageLocation, 0, 0, SLOT_SIZE, SLOT_SIZE).setTextureSize(SLOT_SIZE, SLOT_SIZE).build(); + this.infoIcon = guiHelper.drawableBuilder(GuiTextures.INFO_ICON.imageLocation, 0, 0, ICON_SIZE, ICON_SIZE).setTextureSize(ICON_SIZE, ICON_SIZE).build(); IDrawable border = layout.getRecipeCategory().getBackground(); preparePlaceForParts(border.getHeight()); this.buttons.clear(); - this.nextLayerButton = new GuiButton(0, border.getWidth() - 25, 70, 20, 20, ""); - this.buttonPreviousPattern = new GuiButton(0, border.getWidth() - 46, 90, 20, 20, "<"); - this.buttonNextPattern = new GuiButton(0, border.getWidth() - 25, 90, 20, 20, ">"); + this.nextLayerButton = new GuiButton(0, border.getWidth() - (ICON_SIZE + RIGHT_PADDING), 70, ICON_SIZE, ICON_SIZE, ""); + this.buttonPreviousPattern = new GuiButton(0, border.getWidth() - ((2 * ICON_SIZE) + RIGHT_PADDING + 1), 90, ICON_SIZE, ICON_SIZE, "<"); + this.buttonNextPattern = new GuiButton(0, border.getWidth() - (ICON_SIZE + RIGHT_PADDING), 90, ICON_SIZE, ICON_SIZE, ">"); this.buttons.put(nextLayerButton, this::toggleNextLayer); this.buttons.put(buttonPreviousPattern, () -> switchRenderPage(-1)); this.buttons.put(buttonNextPattern, () -> switchRenderPage(1)); @@ -179,7 +183,7 @@ private void preparePlaceForParts(int recipeHeight) { IGuiItemStackGroup itemStackGroup = recipeLayout.getItemStacks(); for (int i = 0; i < MAX_PARTS; ++i) - itemStackGroup.init(i, true, 18 * i - 180 * (i / 10), recipeHeight - PARTS_HEIGHT + 18 * (i / 10)); + itemStackGroup.init(i, true, SLOT_SIZE * i - (SLOT_SIZE * SLOTS_PER_ROW) * (i / SLOTS_PER_ROW), recipeHeight - PARTS_HEIGHT + SLOT_SIZE * (i / SLOTS_PER_ROW)); } private void updateParts() { @@ -238,10 +242,10 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int //reset colors (so any elements render after this point are not dark) GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - this.infoIcon.draw(minecraft, recipeWidth - 25, 49); + this.infoIcon.draw(minecraft, recipeWidth - (ICON_SIZE + RIGHT_PADDING), 49); for (int i = 0; i < MAX_PARTS; ++i) { - this.slot.draw(minecraft, 18 * i - 180 * (i / 10), sceneHeight + 18 * (i / 10)); + this.slot.draw(minecraft, SLOT_SIZE * i - (SLOTS_PER_ROW * SLOT_SIZE) * (i / SLOTS_PER_ROW), sceneHeight + SLOT_SIZE * (i / SLOTS_PER_ROW)); } // Hmmm, the buttons need to be last otherwise sometimes highlighting @@ -298,14 +302,19 @@ public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int protected void drawHoveringInformationText(Minecraft minecraft, List tooltip, int mouseX, int mouseY) { int minX = recipeLayout.getRecipeCategory().getBackground().getWidth(); int[] yRange = new int[]{49, 69}; - int[] xRange = new int[]{minX - 25, minX - 5}; + int[] xRange = new int[]{minX - (ICON_SIZE + RIGHT_PADDING), minX - RIGHT_PADDING}; //Only draw the hovering information tooltip above the information icon - if (yRange[0] < mouseY && mouseY < yRange[1] && xRange[0] < mouseX && mouseX < xRange[1]) { + if (isMouseWithinRange(yRange, xRange, mouseX, mouseY)) { GuiUtils.drawHoveringText(tooltip, mouseX, mouseY, 176, 176, -1, minecraft.fontRenderer); } } + private boolean isMouseWithinRange(int[] yRange, int[] xRange, int mouseX, int mouseY) { + + return (yRange[0] < mouseY && mouseY < yRange[1] && xRange[0] < mouseX && mouseX < xRange[1]); + } + private void drawMultiblockName(int recipeWidth) { String localizedName = I18n.format(infoPage.getController().getMetaFullName()); GTUtility.drawCenteredSizedText(recipeWidth / 2, 0, localizedName, 0x333333, 1.3); From ad6a33a9a3c1f2fc2d0ec8332e1bd1f27728cec4 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Mon, 24 May 2021 17:51:17 -0700 Subject: [PATCH 12/13] Add spaces between arguments --- .../integration/jei/multiblock/MultiblockInfoCategory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java index 67294b922f..7406953545 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoCategory.java @@ -26,7 +26,7 @@ public class MultiblockInfoCategory implements IRecipeCategory multiblockRecipes = new HashMap() {{ From c292142b9e44c6fcb41a299e6d579a87c691982a Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers Date: Mon, 24 May 2021 21:46:21 -0700 Subject: [PATCH 13/13] Fix argument order --- .../jei/multiblock/MultiblockInfoRecipeWrapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index a67e7ae9dd..c6fefc01d6 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -304,13 +304,13 @@ protected void drawHoveringInformationText(Minecraft minecraft, List too int[] yRange = new int[]{49, 69}; int[] xRange = new int[]{minX - (ICON_SIZE + RIGHT_PADDING), minX - RIGHT_PADDING}; //Only draw the hovering information tooltip above the information icon - if (isMouseWithinRange(yRange, xRange, mouseX, mouseY)) { + if (isMouseWithinRange(yRange, xRange, mouseY, mouseX)) { GuiUtils.drawHoveringText(tooltip, mouseX, mouseY, 176, 176, -1, minecraft.fontRenderer); } } - private boolean isMouseWithinRange(int[] yRange, int[] xRange, int mouseX, int mouseY) { + private boolean isMouseWithinRange(int[] yRange, int[] xRange, int mouseY, int mouseX) { return (yRange[0] < mouseY && mouseY < yRange[1] && xRange[0] < mouseX && mouseX < xRange[1]); }