From fc0fe4121fd33aeff8d936e81d46f25187f046e0 Mon Sep 17 00:00:00 2001 From: Yefancy Date: Thu, 30 Sep 2021 17:17:48 +0800 Subject: [PATCH 1/6] Fix JEI zoom limitation --- .../jei/multiblock/MultiblockInfoRecipeWrapper.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index 22d8c8576f8..801eef8f869 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -89,7 +89,6 @@ public MBPattern(final WorldSceneRenderer sceneRenderer, final List p private Vector3f center; private float rotationYaw; private float rotationPitch; - private float maxZoom; private float zoom; private GuiButton buttonPreviousPattern; @@ -145,14 +144,13 @@ public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { this.buttonNextPattern.enabled = patterns.length > 1; if (Mouse.getEventDWheel() == 0) { - this.maxZoom = infoPage.getDefaultZoom() * 15; - this.zoom = this.maxZoom; + this.zoom = infoPage.getDefaultZoom() * 15; this.rotationYaw = 20.0f; this.rotationPitch = 135.0f; this.currentRendererPage = 0; setNextLayer(-1); } else { - zoom = (float) MathHelper.clamp(zoom + (Mouse.getEventDWheel() < 0 ? 0.5 : -0.5), 3, maxZoom); + zoom = (float) MathHelper.clamp(zoom + (Mouse.getEventDWheel() < 0 ? 0.5 : -0.5), 3, 999); setNextLayer(getLayerIndex()); } if (center != null) { @@ -265,7 +263,7 @@ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHe } else if (rightClickHeld) { int mouseDeltaY = mouseY - lastMouseY; if (Math.abs(mouseDeltaY) > 1) { - this.zoom = (float) MathHelper.clamp(zoom + (mouseDeltaY > 0 ? 0.5 : -0.5), 3, maxZoom); + this.zoom = (float) MathHelper.clamp(zoom + (mouseDeltaY > 0 ? 0.5 : -0.5), 3, 999); } } renderer.setCameraLookAt(center, zoom, Math.toRadians(rotationPitch), Math.toRadians(rotationYaw)); From 78879cb455e9fb75dd575151dac1dc8ee697df1f Mon Sep 17 00:00:00 2001 From: Yefancy Date: Fri, 1 Oct 2021 14:39:38 +0800 Subject: [PATCH 2/6] fix JEI render --- .../api/gui/resources/ItemStackTexture.java | 3 --- .../hardwaremanager/HardwareSlotWidget.java | 5 ++-- .../jei/multiblock/MultiblockInfoPage.java | 4 +-- .../MultiblockInfoRecipeWrapper.java | 26 +++++++++++++------ .../resources/assets/gregtech/lang/en_us.lang | 3 ++- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/main/java/gregtech/api/gui/resources/ItemStackTexture.java b/src/main/java/gregtech/api/gui/resources/ItemStackTexture.java index 81181d0537b..5718ab90a77 100644 --- a/src/main/java/gregtech/api/gui/resources/ItemStackTexture.java +++ b/src/main/java/gregtech/api/gui/resources/ItemStackTexture.java @@ -1,14 +1,11 @@ package gregtech.api.gui.resources; -import gregtech.api.gui.widgets.SlotWidget; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL14; public class ItemStackTexture implements IGuiTexture{ private final ItemStack[] itemStack; diff --git a/src/main/java/gregtech/common/terminal/app/hardwaremanager/HardwareSlotWidget.java b/src/main/java/gregtech/common/terminal/app/hardwaremanager/HardwareSlotWidget.java index 79c360d0138..5c2c9dafbfa 100644 --- a/src/main/java/gregtech/common/terminal/app/hardwaremanager/HardwareSlotWidget.java +++ b/src/main/java/gregtech/common/terminal/app/hardwaremanager/HardwareSlotWidget.java @@ -9,6 +9,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; +import java.util.Arrays; import java.util.Collections; public class HardwareSlotWidget extends WidgetGroup { @@ -77,9 +78,9 @@ public void drawInForeground(int mouseX, int mouseY) { } else { String info = hardware.addInformation(); if (info == null) { - drawHoveringText(null, Collections.singletonList(hardware.getLocalizedName()), 300, mouseX, mouseY); + drawHoveringText(null, Arrays.asList(hardware.getLocalizedName(), I18n.format("terminal.hardware.tip.remove")), 300, mouseX, mouseY); } else { - drawHoveringText(null, Collections.singletonList(String.format("%s (%s)", hardware.getLocalizedName(), info)), 300, mouseX, mouseY); + drawHoveringText(null, Arrays.asList(String.format("%s (%s)", hardware.getLocalizedName(), info), I18n.format("terminal.hardware.tip.remove")), 300, mouseX, mouseY); } } } diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java index bbc872e011a..d1957444dfa 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java @@ -43,9 +43,7 @@ public float getDefaultZoom() { } public List informationText() { - - return Stream.of("gregtech.multiblock.preview.tilt", "gregtech.multiblock.preview.zoom", - "gregtech.multiblock.preview.pan", "gregtech.multiblock.preview.move", "gregtech.multiblock.preview.reset") + return Stream.of("gregtech.multiblock.preview.zoom") .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 801eef8f869..cfb9d436909 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -28,6 +28,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.resources.I18n; @@ -44,7 +45,6 @@ import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; -import net.minecraftforge.client.model.pipeline.LightUtil; import net.minecraftforge.fml.client.config.GuiUtils; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -247,8 +247,6 @@ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHe button.drawButton(minecraft, mouseX, mouseY, 0.0f); } - drawHoveringInformationText(minecraft, infoPage.informationText(), mouseX, mouseY); - this.tooltipBlockStack = null; RayTraceResult rayTraceResult = renderer.getLastTraceResult(); boolean insideView = mouseX >= 0 && mouseY >= 0 && @@ -269,7 +267,7 @@ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHe renderer.setCameraLookAt(center, zoom, Math.toRadians(rotationPitch), Math.toRadians(rotationYaw)); } - if (!(leftClickHeld || rightClickHeld) && rayTraceResult != null && !renderer.world.isAirBlock(rayTraceResult.getBlockPos())) { + if (!drawHoveringInformationText(minecraft, infoPage.informationText(), mouseX, mouseY) && !(leftClickHeld || rightClickHeld) && rayTraceResult != null && !renderer.world.isAirBlock(rayTraceResult.getBlockPos())) { IBlockState blockState = renderer.world.getBlockState(rayTraceResult.getBlockPos()); ItemStack itemStack = blockState.getBlock().getPickBlock(blockState, rayTraceResult, renderer.world, rayTraceResult.getBlockPos(), minecraft.player); if (itemStack != null && !itemStack.isEmpty()) { @@ -279,10 +277,14 @@ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHe this.lastMouseX = mouseX; this.lastMouseY = mouseY; + + GlStateManager.disableRescaleNormal(); + GlStateManager.disableLighting(); + RenderHelper.disableStandardItemLighting(); } @SideOnly(Side.CLIENT) - protected void drawHoveringInformationText(Minecraft minecraft, List tooltip, int mouseX, int mouseY) { + protected boolean 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 - (ICON_SIZE + RIGHT_PADDING), minX - RIGHT_PADDING}; @@ -290,7 +292,9 @@ protected void drawHoveringInformationText(Minecraft minecraft, List too if (isMouseWithinRange(yRange, xRange, mouseY, mouseX)) { GuiUtils.drawHoveringText(tooltip, mouseX, mouseY, 176, 176, -1, minecraft.fontRenderer); + return true; } + return false; } private boolean isMouseWithinRange(int[] yRange, int[] xRange, int mouseY, int mouseX) { @@ -449,6 +453,10 @@ private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, Set Date: Fri, 1 Oct 2021 15:07:29 +0800 Subject: [PATCH 3/6] Update MultiblockInfoRecipeWrapper.java --- .../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 cfb9d436909..48fe013cdc7 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -203,6 +203,7 @@ private void switchRenderPage(int amount) { this.currentRendererPage = newIndex; this.buttonNextPattern.enabled = newIndex < maxIndex; this.buttonPreviousPattern.enabled = newIndex > 0; + setNextLayer(-1); updateParts(); } } From 9c0b70fdc1fdd6172e60e0eefb8ab599b3c4a372 Mon Sep 17 00:00:00 2001 From: Yefancy Date: Sat, 2 Oct 2021 13:43:16 +0800 Subject: [PATCH 4/6] fix switch render page button --- .../api/terminal/TerminalRegistry.java | 2 +- .../MultiblockInfoRecipeWrapper.java | 42 ++++++++++++------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/main/java/gregtech/api/terminal/TerminalRegistry.java b/src/main/java/gregtech/api/terminal/TerminalRegistry.java index 246bff99767..10780c0e5d0 100644 --- a/src/main/java/gregtech/api/terminal/TerminalRegistry.java +++ b/src/main/java/gregtech/api/terminal/TerminalRegistry.java @@ -92,7 +92,7 @@ public static void init() { .device(DeviceHardware.DEVICE.WIRELESS) .build(); AppRegistryBuilder.create(new BatteryManagerApp()).defaultApp() - .battery(GTValues.ULV, 10) + .battery(GTValues.ULV, 0) .build(); AppRegistryBuilder.create(new HardwareManagerApp()).defaultApp().build(); AppRegistryBuilder.create(new AppStoreApp()).defaultApp().build(); diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java index 48fe013cdc7..65528959e1a 100755 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoRecipeWrapper.java @@ -121,6 +121,8 @@ public MultiblockInfoPage getInfoPage() { return infoPage; } + private static MultiblockInfoRecipeWrapper lastWrapper; + public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { this.recipeLayout = layout; @@ -129,21 +131,22 @@ public void setRecipeLayout(RecipeLayout layout, IGuiHelper guiHelper) { IDrawable border = layout.getRecipeCategory().getBackground(); preparePlaceForParts(border.getHeight()); - this.buttons.clear(); - 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)); - - boolean isPagesDisabled = patterns.length == 1; - this.buttonPreviousPattern.visible = !isPagesDisabled; - this.buttonNextPattern.visible = !isPagesDisabled; - this.buttonPreviousPattern.enabled = false; - this.buttonNextPattern.enabled = patterns.length > 1; - - if (Mouse.getEventDWheel() == 0) { + if (Mouse.getEventDWheel() == 0 || lastWrapper != this) { + lastWrapper = this; + this.buttons.clear(); + 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)); + + boolean isPagesDisabled = patterns.length == 1; + this.buttonPreviousPattern.visible = !isPagesDisabled; + this.buttonNextPattern.visible = !isPagesDisabled; + this.buttonPreviousPattern.enabled = false; + this.buttonNextPattern.enabled = patterns.length > 1; + this.zoom = infoPage.getDefaultZoom() * 15; this.rotationYaw = 20.0f; this.rotationPitch = 135.0f; @@ -205,6 +208,7 @@ private void switchRenderPage(int amount) { this.buttonPreviousPattern.enabled = newIndex > 0; setNextLayer(-1); updateParts(); + getCurrentRenderer().setCameraLookAt(center, zoom, Math.toRadians(rotationPitch), Math.toRadians(rotationYaw)); } } @@ -254,6 +258,14 @@ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHe mouseX < recipeWidth && mouseY < sceneHeight; boolean leftClickHeld = Mouse.isButtonDown(0); boolean rightClickHeld = Mouse.isButtonDown(1); + if (insideView) { + for (GuiButton button : buttons.keySet()) { + if (button.isMouseOver()) { + insideView = false; + break; + } + } + } if (insideView) { if (leftClickHeld) { rotationPitch += mouseX - lastMouseX + 360; From 2206be8255a1acbee07f03aed1e9c7ec46c3508a Mon Sep 17 00:00:00 2001 From: Yefancy Date: Sat, 2 Oct 2021 13:47:53 +0800 Subject: [PATCH 5/6] tooltips --- .../integration/jei/multiblock/MultiblockInfoPage.java | 2 +- src/main/resources/assets/gregtech/lang/en_us.lang | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java index d1957444dfa..f4a6ea2b394 100644 --- a/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java +++ b/src/main/java/gregtech/integration/jei/multiblock/MultiblockInfoPage.java @@ -43,7 +43,7 @@ public float getDefaultZoom() { } public List informationText() { - return Stream.of("gregtech.multiblock.preview.zoom") + return Stream.of("gregtech.multiblock.preview.zoom", "gregtech.multiblock.preview.rotate") .map(I18n::format) .collect(Collectors.toList()); } diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 01d3fced99a..9545b152f50 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -3849,11 +3849,8 @@ gregtech.multiblock.universal.distinct.no=No gregtech.multiblock.universal.distinct.yes=Yes gregtech.multiblock.universal.distinct.info=If enabled, each Item Input Bus will be treated as fully distinct from each other for recipe lookup. Useful for things like Programmed Circuits, Extruder Shapes, etc. -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.preview.zoom=Use mousewheel or Shift+RMB to zoom +gregtech.multiblock.preview.rotate=Click and drag to rotate gregtech.multiblock.preview.any_hatch=Any tier hatch can be used to form the structure gregtech.multiblock.preview.any_hatch_maintenance=Any type of maintenance hatch can be used to form the structure gregtech.multiblock.preview.limit=Minimum Limit: %d From ce79b599cb4d721d26012c8cad5cdc636d4f1911 Mon Sep 17 00:00:00 2001 From: Yefancy Date: Sun, 3 Oct 2021 09:41:54 +0800 Subject: [PATCH 6/6] Update en_us.lang --- src/main/resources/assets/gregtech/lang/en_us.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 9545b152f50..26968e587ae 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -3849,7 +3849,7 @@ gregtech.multiblock.universal.distinct.no=No gregtech.multiblock.universal.distinct.yes=Yes gregtech.multiblock.universal.distinct.info=If enabled, each Item Input Bus will be treated as fully distinct from each other for recipe lookup. Useful for things like Programmed Circuits, Extruder Shapes, etc. -gregtech.multiblock.preview.zoom=Use mousewheel or Shift+RMB to zoom +gregtech.multiblock.preview.zoom=Use mousewheel or right-click+Drag to zoom gregtech.multiblock.preview.rotate=Click and drag to rotate gregtech.multiblock.preview.any_hatch=Any tier hatch can be used to form the structure gregtech.multiblock.preview.any_hatch_maintenance=Any type of maintenance hatch can be used to form the structure @@ -4071,7 +4071,7 @@ terminal.store.miss=Require %s (%d). terminal.ar.open=Open AR -terminal.multiblock_ar.description=Remember the §cFree Wrench§r? Unfortunately, it it's gone. It doesn't matter, we have a new technology now. This app can also help you build your multi-block machine. +terminal.multiblock_ar.description=Remember the §cFreedom Wrench§r? Unfortunately, it it's gone. It doesn't matter, we have a new technology now. This app can also help you build your multi-block machine. terminal.multiblock_ar.tier.0=AR Camera terminal.multiblock_ar.tier.1=3D Builder terminal.multiblock_ar.unlock=Unlock this mode after the upgrade