diff options
Diffstat (limited to 'src/main')
17 files changed, 541 insertions, 639 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java index 18828abd..24b98e00 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java @@ -21,6 +21,7 @@ package kr.syeyoung.dungeonsguide.config.guiconfig; import com.google.common.base.Supplier; import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MNavigatingPane; import kr.syeyoung.dungeonsguide.gui.elements.MTabbedPane; @@ -42,9 +43,8 @@ import java.util.Map; import java.util.Stack; import java.util.stream.Collectors; -public class GuiConfig extends GuiScreen { +public class GuiConfig extends MGui { - private final MPanel mainPanel = new MPanel(); @Getter private final MNavigatingPane tabbedPane; @@ -53,7 +53,7 @@ public class GuiConfig extends GuiScreen { public GuiConfig() { MNavigatingPane tabbedPane = new MNavigatingPane(); - mainPanel.add(tabbedPane); + getMainPanel().add(tabbedPane); tabbedPane.setBackground2(new Color(38, 38, 38, 255)); tabbedPane.setPageGenerator(ConfigPanelCreator.INSTANCE); @@ -90,67 +90,6 @@ public class GuiConfig extends GuiScreen { @Override public void initGui() { super.initGui(); - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(Math.min((scaledResolution.getScaledWidth() - 500) / 2, scaledResolution.getScaledWidth()), Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),500,300)); - } - FloatBuffer floatBuffer = BufferUtils.createFloatBuffer(16); - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - try { - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } + getMainPanel().setBounds(new Rectangle(Math.min((Minecraft.getMinecraft().displayWidth - 500) / 2, Minecraft.getMinecraft().displayWidth), Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),500,300)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java index 8e186e6b..11dd2db2 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java @@ -21,6 +21,7 @@ package kr.syeyoung.dungeonsguide.config.guiconfig; import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; import kr.syeyoung.dungeonsguide.features.GuiFeature; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MButton; import net.minecraft.client.Minecraft; @@ -33,20 +34,19 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; -public class GuiGuiLocationConfig extends GuiScreen { +public class GuiGuiLocationConfig extends MGui { - private final MPanel mainPanel = new MPanel(); private final GuiScreen before; public GuiGuiLocationConfig(final GuiScreen before, AbstractFeature featureWhitelist) { this.before = before; for (AbstractFeature feature : FeatureRegistry.getFeatureList()) { if (feature instanceof GuiFeature && feature.isEnabled()) { - mainPanel.add(new PanelDelegate((GuiFeature) feature, featureWhitelist == null || feature == featureWhitelist)); + getMainPanel().add(new PanelDelegate((GuiFeature) feature, featureWhitelist == null || feature == featureWhitelist)); } } - mainPanel.setBackgroundColor(new Color(0,0,0, 60)); + getMainPanel().setBackgroundColor(new Color(0,0,0, 60)); { MButton button = new MButton() { @Override @@ -61,80 +61,14 @@ public class GuiGuiLocationConfig extends GuiScreen { Minecraft.getMinecraft().displayGuiScreen(before); } }); - mainPanel.add(button); + getMainPanel().add(button); } } @Override public void initGui() { super.initGui(); - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight())); + getMainPanel().setBounds(new Rectangle(0,0,Minecraft.getMinecraft().displayWidth,Minecraft.getMinecraft().displayHeight)); } - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - try { - mainPanel.mouseClicked0(mouseX, mouseY, mouseX, mouseY, mouseButton); - } catch (IllegalArgumentException ignored) { - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - try { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } catch (IllegalArgumentException ignored) { - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } - } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java index ce106433..0d7b819c 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java @@ -18,6 +18,7 @@ package kr.syeyoung.dungeonsguide.config.guiconfig; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.roomedit.Parameter; import kr.syeyoung.dungeonsguide.gui.elements.MButton; @@ -37,14 +38,7 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; -public class GuiParameterValueEdit extends GuiScreen { - - private final MPanel mainPanel = new MPanel() { - @Override - public void onBoundsUpdate() { - save.setBounds(new Rectangle(0 ,getBounds().height - 20, getBounds().width, 20)); - } - }; +public class GuiParameterValueEdit extends MGui { private MPanel currentValueEdit; @@ -65,7 +59,7 @@ public class GuiParameterValueEdit extends GuiScreen { public GuiParameterValueEdit(final Object object, final GuiConfig prev) { try { this.editingObj = object; - mainPanel.setBackgroundColor(new Color(17, 17, 17, 179)); + getMainPanel().setBackgroundColor(new Color(17, 17, 17, 179)); { currentValueEdit = new MPanel() { @Override @@ -73,7 +67,7 @@ public class GuiParameterValueEdit extends GuiScreen { setBounds(new Rectangle(5, 5, parentWidth-10, parentHeight - 25)); } }; - mainPanel.add(currentValueEdit); + getMainPanel().add(currentValueEdit); } { save = new MButton() { @@ -91,7 +85,7 @@ public class GuiParameterValueEdit extends GuiScreen { Minecraft.getMinecraft().displayGuiScreen(prev); } }); - mainPanel.add(save); + getMainPanel().add(save); } updateClassSelection(); } catch (Exception e){} @@ -123,89 +117,7 @@ public class GuiParameterValueEdit extends GuiScreen { public void initGui() { super.initGui(); // update bounds - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(10, Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),200,300)); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - try { - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - - try { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - try { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - try { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - try { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - try { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } catch (Throwable t) { - t.printStackTrace(); - } - } + getMainPanel().setBounds(new Rectangle(10, Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),200,300)); + save.setBounds(new Rectangle(0 ,getMainPanel().getBounds().height - 20, getMainPanel().getBounds().width, 20)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java index 09614313..7abb54b9 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java @@ -39,29 +39,30 @@ public class PanelDelegate extends MPanel { @Override public Rectangle getBounds() { - return guiFeature.getFeatureRect().getRectangle(); + Rectangle rectangle = guiFeature.getFeatureRect().getRectangle(); + return new Rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height); } @Override public void render(int absMousex, int absMousey, int relMouseX, int relMouseY, float partialTicks, Rectangle scissor) { + GlStateManager.pushMatrix(); guiFeature.drawDemo(partialTicks); GlStateManager.popMatrix(); - if (!draggable) return; - Gui.drawRect(0,0, 3, 3, 0xFFBBBBBB); - Gui.drawRect(0, getBounds().height - 3, 3, getBounds().height, 0xFFBBBBBB); - Gui.drawRect(getBounds().width - 3,0, getBounds().width, 3, 0xFFBBBBBB); - Gui.drawRect(getBounds().width - 3,getBounds().height - 3, getBounds().width, getBounds().height, 0xFFBBBBBB); + Gui.drawRect(0,0, 4, 4, 0xFFBBBBBB); + Gui.drawRect(0, getBounds().height - 4, 4, getBounds().height, 0xFFBBBBBB); + Gui.drawRect(getBounds().width - 4,0, getBounds().width, 4, 0xFFBBBBBB); + Gui.drawRect(getBounds().width - 4,getBounds().height - 4, getBounds().width, getBounds().height, 0xFFBBBBBB); if (lastAbsClip.contains(absMousex, absMousey)) { - if (relMouseX < 3 && relMouseY < 3) { - Gui.drawRect(0,0, 3, 3, 0x55FFFFFF); - } else if (relMouseX < 3 && relMouseY > getBounds().height - 3) { - Gui.drawRect(0, getBounds().height - 3, 3, getBounds().height, 0x55FFFFFF); - } else if (relMouseX > getBounds().width - 3 && relMouseY > getBounds().height - 3) { - Gui.drawRect(getBounds().width - 3,getBounds().height - 3, getBounds().width, getBounds().height, 0x55FFFFFF); - } else if (relMouseX > getBounds().width - 3 && relMouseY < 3) { - Gui.drawRect(getBounds().width - 3,0, getBounds().width, 3, 0x55FFFFFF); + if (relMouseX < 4 && relMouseY < 4) { + Gui.drawRect(0,0, 4, 4, 0x55FFFFFF); + } else if (relMouseX < 4 && relMouseY > getBounds().height - 4) { + Gui.drawRect(0, getBounds().height - 4, 4, getBounds().height, 0x55FFFFFF); + } else if (relMouseX > getBounds().width - 4 && relMouseY > getBounds().height - 4) { + Gui.drawRect(getBounds().width - 4,getBounds().height - 4, getBounds().width, getBounds().height, 0x55FFFFFF); + } else if (relMouseX > getBounds().width - 4 && relMouseY < 4) { + Gui.drawRect(getBounds().width - 4,0, getBounds().width, 4, 0x55FFFFFF); } else if (selectedPart == -2){ Gui.drawRect(0,0, getBounds().width, getBounds().height, 0x55FFFFFF); } @@ -74,24 +75,79 @@ public class PanelDelegate extends MPanel { private int lastX = 0; private int lastY = 0; + private Rectangle internallyThinking; + private Rectangle constraintApplied; + + public void applyConstraint() { + Rectangle rectangle = internallyThinking.getBounds(); + + int minWidth; + int minHeight; + if (guiFeature.isKeepRatio()) { + minHeight = (int) Math.max(8, 8 / guiFeature.getDefaultRatio()); + minWidth = (int) (guiFeature.getDefaultRatio() * minHeight); + } else { + minWidth = 8; + minHeight = 8; + } + + if (Math.abs(rectangle.width) < minWidth) rectangle.width = rectangle.width < 0 ? -minWidth : minWidth; + if (Math.abs(rectangle.height) < minHeight) rectangle.height = rectangle.height < 0 ? -minHeight : minHeight; + + if (guiFeature.isKeepRatio()) { + double ratio = guiFeature.getDefaultRatio(); + + if (ratio >= 1) { + int width1 = Math.abs(rectangle.width); + int height1 = (int) (width1 / ratio); + rectangle.width = rectangle.width < 0 ? -width1 : width1; + rectangle.height = rectangle.height < 0 ? -height1 : height1; + } else { + int width2 = (int) Math.abs(rectangle.height * ratio); + int height2 = Math.abs(rectangle.height); + rectangle.width = rectangle.width < 0 ? -width2 : width2; + rectangle.height = rectangle.height < 0 ? -height2 : height2; + } + } + + if (rectangle.height < 0) { + rectangle.height = -rectangle.height; + rectangle.y -= rectangle.height; + } + + if (rectangle.width < 0) { + rectangle.width = -rectangle.width; + rectangle.x -= rectangle.width; + } + + if (rectangle.x < 0) rectangle.x = 0; + if (rectangle.y < 0) rectangle.y = 0; + if (rectangle.x + rectangle.width + 1 >=Minecraft.getMinecraft().displayWidth) rectangle.x = Minecraft.getMinecraft().displayWidth - rectangle.width - 1; + if (rectangle.y + rectangle.height + 1>= Minecraft.getMinecraft().displayHeight) rectangle.y = Minecraft.getMinecraft().displayHeight - rectangle.height - 1; + + + constraintApplied = rectangle; + } @Override public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) { if (!draggable) return; if (!lastAbsClip.contains(absMouseX, absMouseY)) return; - if (relMouseX < 3 && relMouseY < 3) { + if (relMouseX < 4 && relMouseY < 4) { selectedPart = 0; - } else if (relMouseX < 3 && relMouseY > getBounds().height - 3) { + } else if (relMouseX < 4 && relMouseY > getBounds().height - 4) { selectedPart = 2; - } else if (relMouseX > getBounds().width - 3 && relMouseY > getBounds().height - 3) { + } else if (relMouseX > getBounds().width - 4 && relMouseY > getBounds().height - 4) { selectedPart = 3; - } else if (relMouseX > getBounds().width - 3 && relMouseY < 3) { + } else if (relMouseX > getBounds().width - 4 && relMouseY < 4) { selectedPart = 1; } else { selectedPart = -1; } lastX = absMouseX; lastY = absMouseY; + internallyThinking = guiFeature.getFeatureRect().getRectangleNoScale(); + applyConstraint(); throw new IllegalArgumentException("bruh, a hack to stop event progress"); } @@ -100,104 +156,50 @@ public class PanelDelegate extends MPanel { public void mouseReleased(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int state) { if (!draggable) return; if (selectedPart >= -1) { - int minWidth; - int minHeight; - if (guiFeature.isKeepRatio()) { - minHeight = (int) Math.max(8, 8 / guiFeature.getDefaultRatio()); - minWidth = (int) (guiFeature.getDefaultRatio() * minHeight); - } else { - minWidth = 8; - minHeight = 8; - } - Rectangle rectangle = guiFeature.getFeatureRect().getRectangle().getBounds(); - if (rectangle.width < minWidth || rectangle.height < minHeight) { - rectangle.width = minWidth; - rectangle.height= minHeight; - } - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < 0) rectangle.x = 0; - if (rectangle.y < 0) rectangle.y = 0; - if (rectangle.x + rectangle.width + 1 >= sr.getScaledWidth()) rectangle.x = sr.getScaledWidth() - rectangle.width - 1; - if (rectangle.y + rectangle.height + 1>= sr.getScaledHeight()) rectangle.y = sr.getScaledHeight() - rectangle.height - 1; - guiFeature.setFeatureRect(new GUIRectangle(rectangle)); + guiFeature.setFeatureRect(new GUIRectangle(constraintApplied)); } selectedPart = -2; - - } @Override public void mouseClickMove(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int clickedMouseButton, long timeSinceLastClick) { if (!draggable) return; - int dx = absMouseX - lastX; - int dy = absMouseY - lastY; + int dx = (absMouseX - lastX); + int dy = (absMouseY - lastY); if (selectedPart >= 0) { + Rectangle rectangle = internallyThinking; + boolean revChangeX = (selectedPart & 0x1) == 0; boolean revChangeY = (selectedPart & 0x2) == 0; - Rectangle rectangle = guiFeature.getFeatureRect().getRectangle().getBounds(); int prevWidth = rectangle.width; int prevHeight= rectangle.height; rectangle.width = prevWidth + (revChangeX ? -1 : 1) * dx; - rectangle.height = prevHeight + (revChangeY ? - 1: 1 ) * dy; - - if (guiFeature.isKeepRatio()) { - double ratio = guiFeature.getDefaultRatio(); - int width1 = rectangle.width; - int height1 = (int) (width1 / ratio); - - int width2 = (int) (rectangle.height * ratio); - int height2 = rectangle.height; + rectangle.height = prevHeight + (revChangeY ? -1 : 1 ) * dy; - if (ratio >= 1) { - rectangle.width = width1; - rectangle.height = height1; - } else { - rectangle.width = width2; - rectangle.height = height2; - } + if (rectangle.height * prevHeight <= 0 && prevHeight != rectangle.height) { + System.out.println("Flip!"); + rectangle.height += prevHeight < 0 ? 4 : -4; + } + if (rectangle.width * prevWidth <= 0 && prevWidth != rectangle.width) { + System.out.println("Flip!"); + rectangle.width += prevWidth < 0 ? 4 : -4; } - if (revChangeX) rectangle.x -= (rectangle.width - prevWidth ); if (revChangeY) rectangle.y -= (rectangle.height - prevHeight); + applyConstraint(); + guiFeature.setFeatureRect(new GUIRectangle(constraintApplied)); lastX = absMouseX; lastY = absMouseY; - - if (rectangle.height < 0) { - rectangle.height = -rectangle.height; - rectangle.y -= rectangle.height; - selectedPart = selectedPart ^ 0x2; - lastY += revChangeY ? 3 : 3; - } - - if (rectangle.width < 0) { - rectangle.width = -rectangle.width; - rectangle.x -= rectangle.width; - selectedPart = selectedPart ^ 0x1; - lastX += revChangeX ? 3 : 3; - } - - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < 0) rectangle.x = 0; - if (rectangle.y < 0) rectangle.y = 0; - if (rectangle.x + rectangle.width + 1 >= sr.getScaledWidth()) rectangle.x = sr.getScaledWidth() - rectangle.width - 1; - if (rectangle.y + rectangle.height + 1>= sr.getScaledHeight()) rectangle.y = sr.getScaledHeight() - rectangle.height - 1; - - guiFeature.setFeatureRect(new GUIRectangle(rectangle)); throw new IllegalArgumentException("bruh, a hack to stop event progress"); } else if (selectedPart == -1){ - Rectangle rectangle = guiFeature.getFeatureRect().getRectangle().getBounds(); + Rectangle rectangle = internallyThinking; rectangle.translate(dx, dy); - - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < 0) rectangle.x = 0; - if (rectangle.y < 0) rectangle.y = 0; - if (rectangle.x + rectangle.width + 1 >= sr.getScaledWidth()) rectangle.x = sr.getScaledWidth() - rectangle.width - 1; - if (rectangle.y + rectangle.height + 1>= sr.getScaledHeight()) rectangle.y = sr.getScaledHeight() - rectangle.height - 1; - guiFeature.setFeatureRect(new GUIRectangle(rectangle)); + applyConstraint(); + guiFeature.setFeatureRect(new GUIRectangle(constraintApplied)); lastX = absMouseX; lastY = absMouseY; } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java index 8ce619e6..c4fa75d2 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java @@ -31,21 +31,19 @@ import java.awt.*; @NoArgsConstructor public class GUIRectangle { public GUIRectangle(Rectangle rectangle) { - - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < sr.getScaledWidth() / 2) { + if (rectangle.x < Minecraft.getMinecraft().displayWidth / 2) { this.x = rectangle.x; this.width = rectangle.width; } else { - this.x = rectangle.x + rectangle.width - sr.getScaledWidth(); + this.x = rectangle.x + rectangle.width - Minecraft.getMinecraft().displayWidth; this.width = -rectangle.width; } - if (rectangle.y < sr.getScaledHeight() / 2) { + if (rectangle.y < Minecraft.getMinecraft().displayHeight / 2) { this.y = rectangle.y; this.height = rectangle.height; } else { - this.y = rectangle.y +rectangle.height - sr.getScaledHeight(); + this.y = rectangle.y +rectangle.height - Minecraft.getMinecraft().displayHeight; this.height = -rectangle.height; } } @@ -56,13 +54,20 @@ public class GUIRectangle { private int height; public Rectangle getRectangle() { - return getRectangle(new ScaledResolution(Minecraft.getMinecraft())); + return getRectangleNoScale(); } - public Rectangle getRectangle(ScaledResolution scaledResolution) { - int realX = x < 0 ? scaledResolution.getScaledWidth() + x : x; - int realY = y < 0 ? scaledResolution.getScaledHeight() + y : y; +// public Rectangle getRectangle(ScaledResolution scaledResolution) { +// double realX = (int) (x < 0 ? scaledResolution.getScaledWidth() + x : x); +// double realY = (int) (y < 0 ? scaledResolution.getScaledHeight() + y : y); +// +// return new Rectangle((int)Math.min(realX + width, realX), (int)Math.min(realY + height, realY), +// (int)Math.abs(width), (int)Math.abs(height)); +// } + public Rectangle getRectangleNoScale() { + double realX = (int) (x < 0 ? Minecraft.getMinecraft().displayWidth + x : x); + double realY = (int) (y < 0 ? Minecraft.getMinecraft().displayHeight + y : y); - return new Rectangle(Math.min(realX + width, realX), Math.min(realY + height, realY), - Math.abs(width), Math.abs(height)); + return new Rectangle((int)Math.min(realX + width, realX), (int)Math.min(realY + height, realY), + (int)Math.abs(width), (int)Math.abs(height)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java index dd4ed7e4..e195a7d9 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java @@ -63,9 +63,8 @@ public abstract class GuiFeature extends AbstractFeature implements ScreenRender if (!isEnabled()) return; GlStateManager.pushAttrib(); GlStateManager.pushMatrix(); - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - Rectangle featureRect = this.featureRect.getRectangle(scaledResolution); - clip(scaledResolution, featureRect.x, featureRect.y, featureRect.width, featureRect.height); + Rectangle featureRect = this.featureRect.getRectangleNoScale(); + clip(featureRect.x, featureRect.y, featureRect.width, featureRect.height); GL11.glEnable(GL11.GL_SCISSOR_TEST); GlStateManager.translate(featureRect.x, featureRect.y, 0); @@ -88,8 +87,9 @@ public abstract class GuiFeature extends AbstractFeature implements ScreenRender drawHUD(partialTicks); } - private void clip(ScaledResolution resolution, int x, int y, int width, int height) { - int scale = resolution.getScaleFactor(); + private void clip(int x, int y, int width, int height) { +// int scale = resolution.getScaleFactor(); + int scale = 1; GL11.glScissor((x ) * scale, Minecraft.getMinecraft().displayHeight - (y + height) * scale, (width) * scale, height * scale); } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java index 23132b3a..6559bd61 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java @@ -152,7 +152,6 @@ public class PanelTextParameterConfig extends MPanel { GlStateManager.popMatrix(); GlStateManager.translate(5, height + 7, 0); - GlStateManager.scale(0.5,0.5,0); FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; GlStateManager.enableBlend(); GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); @@ -163,7 +162,6 @@ public class PanelTextParameterConfig extends MPanel { GlStateManager.pushMatrix(); GlStateManager.translate(width + 15, 5, 0); GlStateManager.pushMatrix(); - GlStateManager.scale(0.5,0.5,0); fr.drawString("Selected Groups: "+selected, 0, 0, 0xFFBFBFBF); GlStateManager.popMatrix(); fr.drawString("Text Color: ", 0, 10, 0xFFFFFFFF); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/MGui.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/MGui.java new file mode 100644 index 00000000..7c35306d --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/MGui.java @@ -0,0 +1,172 @@ +/* + * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod + * Copyright (C) 2021 cyoung06 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package kr.syeyoung.dungeonsguide.gui; + +import kr.syeyoung.dungeonsguide.gui.elements.MRootPanel; +import lombok.Getter; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.io.IOException; + +public class MGui extends GuiScreen { + + @Getter + private final MPanel mainPanel = new MRootPanel(); + + + @Override + public void initGui() { + super.initGui(); + ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + mainPanel.setBounds(new Rectangle(0,0,Minecraft.getMinecraft().displayWidth,Minecraft.getMinecraft().displayHeight)); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + try { + + int i = Mouse.getEventX(); + int j = this.mc.displayHeight - Mouse.getEventY(); + ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + GlStateManager.pushMatrix(); + GlStateManager.pushAttrib(); + GlStateManager.disableLighting(); + GlStateManager.disableFog(); + GlStateManager.disableDepth(); + GL11.glDisable(GL11.GL_FOG); + GlStateManager.enableBlend(); + GlStateManager.enableAlpha(); + GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); + GlStateManager.color(1, 1, 1, 1); + GlStateManager.scale(1.0/scaledResolution.getScaleFactor(), 1.0/scaledResolution.getScaleFactor(), 1.0d); + mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight), i, j, i, j, partialTicks); + GlStateManager.popAttrib(); + GlStateManager.popMatrix(); + GlStateManager.enableBlend(); + GlStateManager.enableLighting(); + } catch (Throwable e) { + e.printStackTrace(); + } + GL11.glDisable(GL11.GL_SCISSOR_TEST); + } + + @Override + public void keyTyped(char typedChar, int keyCode) throws IOException { + try { + mainPanel.keyTyped0(typedChar, keyCode); + super.keyTyped(typedChar, keyCode); + } catch (Throwable e) { + if (!e.getMessage().contains("hack to stop")) + e.printStackTrace(); + } + } + + @Override + public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + try { + super.mouseClicked(mouseX, mouseY, mouseButton); + mainPanel.mouseClicked0(mouseX, mouseY + ,mouseX, mouseY, mouseButton); + } catch (Throwable e) { + if (!e.getMessage().contains("hack to stop")) + e.printStackTrace(); + } + } + + @Override + public void onGuiClosed() { + super.onGuiClosed(); + } + + @Override + public void mouseReleased(int mouseX, int mouseY, int state) { + try { + mainPanel.mouseReleased0(mouseX, mouseY + ,mouseX,mouseY , state); + } catch (Throwable e) { + if (!e.getMessage().contains("hack to stop")) + e.printStackTrace(); + } + } + + @Override + public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { + try { + mainPanel.mouseClickMove0(mouseX, mouseY + ,mouseX ,mouseY, clickedMouseButton, timeSinceLastClick); + } catch (Throwable e) { + if (!e.getMessage().contains("hack to stop")) + e.printStackTrace(); + } + } + + private int touchValue; + private int eventButton; + private long lastMouseEvent; + + @Override + public void handleMouseInput() throws IOException { + try { + int i = Mouse.getEventX(); + int j = this.mc.displayHeight - Mouse.getEventY(); + int k = Mouse.getEventButton(); + + if (Mouse.getEventButtonState()) + { + if (this.mc.gameSettings.touchscreen && this.touchValue++ > 0) + { + return; + } + + this.eventButton = k; + this.lastMouseEvent = Minecraft.getSystemTime(); + this.mouseClicked(i, j, this.eventButton); + } + else if (k != -1) + { + if (this.mc.gameSettings.touchscreen && --this.touchValue > 0) + { + return; + } + + this.eventButton = -1; + this.mouseReleased(i, j, k); + } + else if (this.eventButton != -1 && this.lastMouseEvent > 0L) + { + long l = Minecraft.getSystemTime() - this.lastMouseEvent; + this.mouseClickMove(i, j, this.eventButton, l); + } + + + int wheel = Mouse.getDWheel(); + if (wheel != 0) { + mainPanel.mouseScrolled0(i, j,i,j, wheel); + } + } catch (Throwable e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/MPanel.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/MPanel.java index 911038f2..5f7ff538 100755..100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/gui/MPanel.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/MPanel.java @@ -18,15 +18,13 @@ package kr.syeyoung.dungeonsguide.gui; +import kr.syeyoung.dungeonsguide.gui.elements.MTooltip; import lombok.AccessLevel; import lombok.Getter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import org.lwjgl.opengl.GL11; import java.awt.*; @@ -46,6 +44,9 @@ public class MPanel { @Getter(AccessLevel.PUBLIC) protected boolean isFocused; + @Getter + protected MPanel parent; + public void setBackgroundColor(Color c) { if (c == null) return; this.backgroundColor = c; @@ -83,19 +84,31 @@ public class MPanel { } public void add(MPanel child) { + if (child.parent != null) throw new IllegalArgumentException("What have you done"); this.childComponents.add(child); + child.parent = this; + } + + public void openTooltip(MTooltip mPanel) { + parent.openTooltip(mPanel); + } + public int getTooltipsOpen() { + return parent.getTooltipsOpen(); } public void remove(MPanel panel) { + panel.parent = null; this.childComponents.remove(panel); } + protected Point lastParentPoint; public void render0(ScaledResolution resolution, Point parentPoint, Rectangle parentClip, int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks) { // 0,0 - a a + lastParentPoint = parentPoint; int relMousex = relMousex0 - getBounds().x; int relMousey = relMousey0 - getBounds().y; - GlStateManager.translate(getBounds().x, getBounds().y, 0); + GlStateManager.translate(getBounds().x, getBounds().y, 5); GlStateManager.color(1,1,1,0); @@ -103,6 +116,7 @@ public class MPanel { absBound.setLocation(absBound.x + parentPoint.x, absBound.y + parentPoint.y); Rectangle clip = determineClip(parentClip, absBound); lastAbsClip = clip; + if (clip.getSize().height * clip.getSize().width == 0) return; clip(resolution, clip.x, clip.y, clip.width, clip.height); GlStateManager.pushAttrib(); @@ -115,6 +129,12 @@ public class MPanel { GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); + + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.enableBlend(); + GlStateManager.enableAlpha(); + GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); + render(absMousex, absMousey, relMousex, relMousey, partialTicks, clip); GlStateManager.popAttrib(); GlStateManager.popMatrix(); @@ -137,7 +157,8 @@ public class MPanel { public static void clip(ScaledResolution resolution, int x, int y, int width, int height) { if (width < 0 || height < 0) return; - int scale = resolution.getScaleFactor(); +// int scale = resolution.getScaleFactor(); + int scale = 1; GL11.glScissor((x ) * scale, Minecraft.getMinecraft().displayHeight - (y + height) * scale, (width) * scale, height * scale); } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java new file mode 100644 index 00000000..a6987241 --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java @@ -0,0 +1,50 @@ +/* + * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod + * Copyright (C) 2021 cyoung06 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package kr.syeyoung.dungeonsguide.gui.elements; + +import kr.syeyoung.dungeonsguide.gui.MPanel; +import lombok.Getter; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +@Getter +public class MRootPanel extends MPanel { + @Getter + private List<MTooltip> tooltips = new CopyOnWriteArrayList<>(); + + + @Override + public void openTooltip(MTooltip mPanel) { + mPanel.setRoot(this); + tooltips.add(mPanel); + add(mPanel); + } + + @Override + public int getTooltipsOpen() { + return tooltips.size(); + } + + public void removeTooltip(MTooltip mTooltip) { + mTooltip.setRoot(null); + tooltips.remove(mTooltip); + remove(mTooltip); + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java index 432fd0a8..5b99959f 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java @@ -48,7 +48,7 @@ public class MToggleButton extends MPanel { FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; - double scale = 2; + double scale = 1; GlStateManager.enableBlend(); GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTooltip.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTooltip.java new file mode 100644 index 00000000..56eb2821 --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTooltip.java @@ -0,0 +1,86 @@ +/* + * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod + * Copyright (C) 2021 cyoung06 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package kr.syeyoung.dungeonsguide.gui.elements; + +import kr.syeyoung.dungeonsguide.gui.MPanel; +import lombok.Getter; +import lombok.Setter; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import org.lwjgl.opengl.GL11; + +import java.awt.*; + +public class MTooltip extends MPanel { + @Getter @Setter + private MRootPanel root; + + public void open(MPanel component) { + component.openTooltip(this); + } + public void close() { + if (root != null) + root.removeTooltip(this); + } + + @Override + public int getTooltipsOpen() { + return super.getTooltipsOpen() - 1; + } + + public void render0(ScaledResolution resolution, Point parentPoint, Rectangle parentClip, int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks) { // 0,0 - a a + int relMousex = relMousex0 - getBounds().x; + int relMousey = relMousey0 - getBounds().y; + + GlStateManager.translate(getBounds().x, getBounds().y, 300); + GlStateManager.color(1,1,1,0); + + + Rectangle clip = getBounds().getBounds(); + GlStateManager.pushAttrib(); + GL11.glEnable(GL11.GL_SCISSOR_TEST); + clip(resolution, clip.x, clip.y, clip.width, clip.height); + + GlStateManager.pushAttrib(); + GuiScreen.drawRect(0,0, getBounds().width, getBounds().height, backgroundColor.getRGB()); + GlStateManager.enableBlend(); + GlStateManager.popAttrib(); + + GlStateManager.pushMatrix(); + GlStateManager.pushAttrib(); + render(absMousex, absMousey, relMousex, relMousey, partialTicks, clip); + GlStateManager.popAttrib(); + GlStateManager.popMatrix(); + + GL11.glDisable(GL11.GL_SCISSOR_TEST); + GlStateManager.popAttrib(); + + + Point newPt = new Point(parentPoint.x + getBounds().x, parentPoint.y + getBounds().y); + + for (MPanel mPanel : getChildComponents()){ + GlStateManager.pushMatrix(); + GlStateManager.pushAttrib(); + mPanel.render0(resolution, newPt, clip, absMousex, absMousey, relMousex, relMousey, partialTicks); + GlStateManager.popAttrib(); + GlStateManager.popMatrix(); + } + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTooltipText.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTooltipText.java new file mode 100644 index 00000000..fe93d82a --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTooltipText.java @@ -0,0 +1,44 @@ +/* + * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod + * Copyright (C) 2021 cyoung06 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package kr.syeyoung.dungeonsguide.gui.elements; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.client.config.GuiUtils; + +import java.awt.*; +import java.util.ArrayList; +import java.util.List; + +@AllArgsConstructor +public class MTooltipText extends MTooltip { + @Getter @Setter + private List<String> tooltipText = new ArrayList<>(); + @Override + public Rectangle getBounds() { + return new Rectangle(0,0, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); + } + + @Override + public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) { + GuiUtils.drawHoveringText(tooltipText, relMousex0, relMousey0, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight, -1, Minecraft.getMinecraft().fontRendererObj); + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonAddSet.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonAddSet.java index ac560b81..4410d08e 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonAddSet.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonAddSet.java @@ -19,6 +19,7 @@ package kr.syeyoung.dungeonsguide.roomedit.gui; import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.roomedit.EditingContext; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.*; @@ -38,9 +39,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class GuiDungeonAddSet extends GuiScreen { - - private final MPanel mainPanel = new MPanel(); +public class GuiDungeonAddSet extends MGui { private final ValueEditOffsetPointSet valueEditOffsetPointSet; @@ -86,7 +85,7 @@ public class GuiDungeonAddSet extends GuiScreen { public GuiDungeonAddSet(final ValueEditOffsetPointSet processorParameterEditPane) { this.valueEditOffsetPointSet = processorParameterEditPane; - mainPanel.setBackgroundColor(new Color(17, 17, 17, 179)); + getMainPanel().setBackgroundColor(new Color(17, 17, 17, 179)); { start = new OffsetPoint(EditingContext.getEditingContext().getRoom(), Minecraft.getMinecraft().thePlayer.getPosition()); end = new OffsetPoint(EditingContext.getEditingContext().getRoom(), Minecraft.getMinecraft().thePlayer.getPosition()); @@ -94,10 +93,10 @@ public class GuiDungeonAddSet extends GuiScreen { { MValue mValue = new MValue(start, Collections.emptyList()); mValue.setBounds(new Rectangle(0,0,150,20)); - mainPanel.add(mValue); + getMainPanel().add(mValue); MValue mValue2 = new MValue(end,Collections.emptyList()); mValue2.setBounds(new Rectangle(0,20,150,20)); - mainPanel.add(mValue2); + getMainPanel().add(mValue2); } { add = new MButton() { @@ -130,8 +129,8 @@ public class GuiDungeonAddSet extends GuiScreen { EditingContext.getEditingContext().goBack(); } }); - mainPanel.add(add); - mainPanel.add(back); + getMainPanel().add(add); + getMainPanel().add(back); } } @@ -139,64 +138,6 @@ public class GuiDungeonAddSet extends GuiScreen { public void initGui() { super.initGui(); // update bounds - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(10, Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),200,300)); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } + getMainPanel().setBounds(new Rectangle(10, Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),200,300)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java index 32403636..584d8472 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java @@ -19,6 +19,7 @@ package kr.syeyoung.dungeonsguide.roomedit.gui; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.roomedit.EditingContext; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.roomedit.Parameter; @@ -38,9 +39,7 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; -public class GuiDungeonParameterEdit extends GuiScreen { - - private final MPanel mainPanel = new MPanel(); +public class GuiDungeonParameterEdit extends MGui { private final Parameter parameter; private final DungeonRoom dungeonRoom; @@ -57,7 +56,7 @@ public class GuiDungeonParameterEdit extends GuiScreen { public GuiDungeonParameterEdit(final MParameter parameter2, final DynamicEditor processorParameterEditPane) { dungeonRoom = EditingContext.getEditingContext().getRoom(); - mainPanel.setBackgroundColor(new Color(17, 17, 17, 179)); + getMainPanel().setBackgroundColor(new Color(17, 17, 17, 179)); this.parameter = parameter2.getParameter(); { MTextField mTextField = new MTextField() { @@ -70,7 +69,7 @@ public class GuiDungeonParameterEdit extends GuiScreen { mTextField.setText(parameter.getName()); mLabelAndElement.setBounds(new Rectangle(0,0,200, 20)); - mainPanel.add(mLabelAndElement); + getMainPanel().add(mLabelAndElement); } { classSelection = parameter.getNewData() == null ?"null" : parameter.getNewData().getClass().getName(); @@ -95,7 +94,7 @@ public class GuiDungeonParameterEdit extends GuiScreen { } }); mStringSelectionButton.setBounds(new Rectangle(0,20,150,20)); - mainPanel.add(mStringSelectionButton); + getMainPanel().add(mStringSelectionButton); } { currentValueEdit = new MPanel(){ @@ -104,7 +103,7 @@ public class GuiDungeonParameterEdit extends GuiScreen { setBounds(new Rectangle(0, 40, parentWidth,parentHeight - 60)); } }; - mainPanel.add(currentValueEdit); + getMainPanel().add(currentValueEdit); } { delete = new MButton() { @@ -137,8 +136,8 @@ public class GuiDungeonParameterEdit extends GuiScreen { EditingContext.getEditingContext().goBack(); } }); - mainPanel.add(delete); - mainPanel.add(save); + getMainPanel().add(delete); + getMainPanel().add(save); } updateClassSelection(); } @@ -175,63 +174,6 @@ public class GuiDungeonParameterEdit extends GuiScreen { public void initGui() { super.initGui(); // update bounds - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(10, Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),200,300)); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } + getMainPanel().setBounds(new Rectangle(10, Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),200,300)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java index 87093c4d..fee71b54 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java @@ -19,6 +19,7 @@ package kr.syeyoung.dungeonsguide.roomedit.gui; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MTabbedPane; import kr.syeyoung.dungeonsguide.roomedit.panes.*; @@ -33,9 +34,7 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; -public class GuiDungeonRoomEdit extends GuiScreen { - - private final MPanel mainPanel = new MPanel(); +public class GuiDungeonRoomEdit extends MGui { private final DungeonRoom room; @@ -47,7 +46,7 @@ public class GuiDungeonRoomEdit extends GuiScreen { this.room = room; MTabbedPane tabbedPane = new MTabbedPane(); - mainPanel.add(tabbedPane); + getMainPanel().add(tabbedPane); tabbedPane.setBackground2(new Color(17, 17, 17, 179)); @@ -71,63 +70,6 @@ public class GuiDungeonRoomEdit extends GuiScreen { public void initGui() { super.initGui(); // update bounds - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(Math.min((scaledResolution.getScaledWidth() - 500) / 2, scaledResolution.getScaledWidth()), Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),500,300)); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } + getMainPanel().setBounds(new Rectangle(10, Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),200,300)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonValueEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonValueEdit.java index 63251ca2..56192361 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonValueEdit.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonValueEdit.java @@ -19,6 +19,7 @@ package kr.syeyoung.dungeonsguide.roomedit.gui; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.roomedit.EditingContext; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.roomedit.Parameter; @@ -38,18 +39,7 @@ import java.awt.*; import java.util.List; import java.io.IOException; -public class GuiDungeonValueEdit extends GuiScreen { - - private final MPanel mainPanel = new MPanel() { - @Override - public void onBoundsUpdate() { - for (int i = 0; i < addons.size(); i++) { - addons.get(i).setBounds(new Rectangle(0, getBounds().height - (i+1) * 20 - 20, getBounds().width, 20)); - } - save.setBounds(new Rectangle(0 ,getBounds().height - 20, getBounds().width, 20)); - } - }; - +public class GuiDungeonValueEdit extends MGui { private DungeonRoom dungeonRoom; @@ -69,7 +59,7 @@ public class GuiDungeonValueEdit extends GuiScreen { dungeonRoom = EditingContext.getEditingContext().getRoom(); this.addons = addons; this.editingObj = object; - mainPanel.setBackgroundColor(new Color(17, 17, 17, 179)); + getMainPanel().setBackgroundColor(new Color(17, 17, 17, 179)); { currentValueEdit = new MPanel() { @Override @@ -77,11 +67,11 @@ public class GuiDungeonValueEdit extends GuiScreen { setBounds(new Rectangle(0, 0, parentWidth, parentHeight - 20 - addons.size() * 20)); } }; - mainPanel.add(currentValueEdit); + getMainPanel().add(currentValueEdit); } for (MPanel addon : addons) { - mainPanel.add(addon); + getMainPanel().add(addon); } { save = new MButton() { @@ -98,7 +88,7 @@ public class GuiDungeonValueEdit extends GuiScreen { EditingContext.getEditingContext().goBack(); } }); - mainPanel.add(save); + getMainPanel().add(save); } updateClassSelection(); } catch (Exception e){} @@ -131,89 +121,13 @@ public class GuiDungeonValueEdit extends GuiScreen { public void initGui() { super.initGui(); // update bounds - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(10, Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),200,300)); - } + getMainPanel().setBounds(new Rectangle(10, Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),200,300)); - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - try { - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } catch (Throwable e) { - e.printStackTrace(); + for (int i = 0; i < addons.size(); i++) { + addons.get(i).setBounds(new Rectangle(0, getMainPanel().getBounds().height - (i+1) * 20 - 20, getMainPanel().getBounds().width, 20)); } + save.setBounds(new Rectangle(0 ,getMainPanel().getBounds().height - 20, getMainPanel().getBounds().width, 20)); } - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - - try { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - try { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - try { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - try { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - try { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } catch (Throwable t) { - t.printStackTrace(); - } - } - } } |