From 9b685a95134dbb392d392485f0783816a0e43dda Mon Sep 17 00:00:00 2001 From: radmanplays <95340057+radmanplays@users.noreply.github.com> Date: Sat, 2 Mar 2024 12:27:12 +0330 Subject: [PATCH] v1.2.2 --- .../net/minecraft/client/Minecraft.edit.java | 14 +---- .../client/gui/FontRenderer.edit.java | 4 +- .../client/gui/GuiMainMenu.edit.java | 18 +++---- .../client/gui/GuiOverlayDebug.edit.java | 9 +++- .../client/gui/ScaledResolution.edit.java | 48 ++++++++++++++++++ .../main/java/net/eaglerforge/api/ModAPI.java | 10 +++- .../eaglercraft/v1_8/EaglercraftVersion.java | 2 +- .../workspace_template/javascript/favicon.png | Bin 1258 -> 8424 bytes .../workspace_template/javascript/index.html | 2 +- 9 files changed, 78 insertions(+), 29 deletions(-) create mode 100644 patches/minecraft/net/minecraft/client/gui/ScaledResolution.edit.java diff --git a/patches/minecraft/net/minecraft/client/Minecraft.edit.java b/patches/minecraft/net/minecraft/client/Minecraft.edit.java index a760eba..a133e7b 100644 --- a/patches/minecraft/net/minecraft/client/Minecraft.edit.java +++ b/patches/minecraft/net/minecraft/client/Minecraft.edit.java @@ -748,19 +748,7 @@ > DELETE 36 @ 36 : 41 -> INSERT 11 : 20 @ 11 - -+ public static ModData makeModData() { -+ ModData mcglobal = new ModData(); -+ mcglobal.setCallbackString("currentScreen", () -> { -+ return getMinecraft().currentScreen.toString(); -+ }); -+ -+ return mcglobal; -+ } -+ - -> CHANGE 1 : 2 @ 1 : 2 +> CHANGE 12 : 13 @ 12 : 13 ~ return this.addScheduledTaskFuture(new Runnable() { diff --git a/patches/minecraft/net/minecraft/client/gui/FontRenderer.edit.java b/patches/minecraft/net/minecraft/client/gui/FontRenderer.edit.java index 758f080..2a51b24 100644 --- a/patches/minecraft/net/minecraft/client/gui/FontRenderer.edit.java +++ b/patches/minecraft/net/minecraft/client/gui/FontRenderer.edit.java @@ -7,8 +7,10 @@ > DELETE 2 @ 2 : 6 -> CHANGE 4 : 11 @ 4 : 6 +> CHANGE 4 : 13 @ 4 : 6 +~ +~ import net.eaglerforge.api.ModData; ~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom; ~ ~ import net.lax1dude.eaglercraft.v1_8.HString; diff --git a/patches/minecraft/net/minecraft/client/gui/GuiMainMenu.edit.java b/patches/minecraft/net/minecraft/client/gui/GuiMainMenu.edit.java index 14c803d..a019eba 100644 --- a/patches/minecraft/net/minecraft/client/gui/GuiMainMenu.edit.java +++ b/patches/minecraft/net/minecraft/client/gui/GuiMainMenu.edit.java @@ -161,16 +161,14 @@ + } + -> CHANGE 6 : 7 @ 6 : 7 +> CHANGE 8 : 11 @ 8 : 10 -~ this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 24, 98, 20, - -> CHANGE 1 : 9 @ 1 : 5 - -~ this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 24, 98, 20, +~ this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, ~ I18n.format("menu.editProfile", new Object[0]))); ~ -~ this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 24)); + +> CHANGE 1 : 5 @ 1 : 2 + ~ if (isFork) { ~ this.openGLWarning1 = EaglercraftVersion.mainMenuStringE; ~ this.openGLWarning2 = EaglercraftVersion.mainMenuStringF; @@ -186,11 +184,11 @@ > CHANGE 10 : 25 @ 10 : 12 -~ this.buttonList.add(new GuiButton(69420, this.width / 2 - 100, parInt1 + parInt2 * 2, +~ this.buttonList.add(new GuiButton(69420, this.width / 2 + 2, parInt1 + parInt2 * 2, 98, 20, ~ I18n.format("eaglerforge.menu.mods"))); ~ if (EaglercraftVersion.mainMenuEnableGithubButton) { -~ this.buttonList.add( -~ new GuiButton(14, this.width / 2 - 100, parInt1 + parInt2 * 3, I18n.format("menu.forkOnGitlab"))); +~ this.buttonList.add(new GuiButton(14, this.width / 2 - 100, parInt1 + parInt2 * 2, 98, 20, +~ I18n.format("menu.forkOnGitlab"))); ~ } else { ~ if (EagRuntime.getConfiguration().isEnableDownloadOfflineButton() ~ && (EagRuntime.getConfiguration().getDownloadOfflineButtonLink() != null diff --git a/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java b/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java index 12a511e..83063c4 100644 --- a/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java +++ b/patches/minecraft/net/minecraft/client/gui/GuiOverlayDebug.edit.java @@ -18,13 +18,14 @@ + import java.util.Locale; -> INSERT 1 : 14 @ 1 +> INSERT 1 : 15 @ 1 + import java.util.TimeZone; + + import com.google.common.base.Strings; + import com.google.common.collect.Lists; + ++ import net.eaglerforge.api.ModAPI; + import net.lax1dude.eaglercraft.v1_8.Display; + import net.lax1dude.eaglercraft.v1_8.EagRuntime; + import net.lax1dude.eaglercraft.v1_8.HString; @@ -299,7 +300,11 @@ + } + -> CHANGE 10 : 11 @ 10 : 11 +> INSERT 5 : 6 @ 5 + ++ "ModAPI: " + ModAPI.version, this.mc.debug, this.mc.renderGlobal.getDebugInfoRenders(), + +> CHANGE 5 : 6 @ 5 : 6 ~ HString.format("Chunk-relative: %d %d %d", new Object[] { Integer.valueOf(blockpos.getX() & 15), diff --git a/patches/minecraft/net/minecraft/client/gui/ScaledResolution.edit.java b/patches/minecraft/net/minecraft/client/gui/ScaledResolution.edit.java new file mode 100644 index 0000000..6d3e7f9 --- /dev/null +++ b/patches/minecraft/net/minecraft/client/gui/ScaledResolution.edit.java @@ -0,0 +1,48 @@ + +# Eagler Context Redacted Diff +# Copyright (c) 2024 lax1dude. All rights reserved. + +# Version: 1.0 +# Author: lax1dude + +> INSERT 2 : 3 @ 2 + ++ import net.eaglerforge.api.ModData; + +> CHANGE 3 : 9 @ 3 : 9 + +~ public class ScaledResolution extends ModData { +~ private static double scaledWidthD; +~ private static double scaledHeightD; +~ private static int scaledWidth; +~ private static int scaledHeight; +~ private static int scaleFactor; + +> INSERT 26 : 50 @ 26 + ++ public static ModData makeModData() { ++ ModData ScaledResolutionglobal = new ModData(); ++ ScaledResolutionglobal.setCallbackInt("getScaledWidth", () -> { ++ return scaledWidth; ++ }); ++ ScaledResolutionglobal.setCallbackInt("getScaledHeight", () -> { ++ return scaledHeight; ++ }); ++ ScaledResolutionglobal.setCallbackDouble("getScaledWidth_double", () -> { ++ return scaledWidthD; ++ }); ++ ScaledResolutionglobal.setCallbackDouble("getScaledHeight_double", () -> { ++ return scaledHeightD; ++ }); ++ ScaledResolutionglobal.setCallbackInt("getScaledWidth_double", () -> { ++ return scaledWidth; ++ }); ++ ScaledResolutionglobal.setCallbackInt("getScaleFactor", () -> { ++ return scaleFactor; ++ }); ++ ++ return ScaledResolutionglobal; ++ } ++ + +> EOF diff --git a/sources/main/java/net/eaglerforge/api/ModAPI.java b/sources/main/java/net/eaglerforge/api/ModAPI.java index 5228b7d..96f65d1 100644 --- a/sources/main/java/net/eaglerforge/api/ModAPI.java +++ b/sources/main/java/net/eaglerforge/api/ModAPI.java @@ -6,6 +6,7 @@ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager; import net.lax1dude.eaglercraft.v1_8.log4j.Logger; import net.minecraft.client.ClientBrandRetriever; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; import net.minecraft.util.ChatComponentText; import me.otterdev.UwUAPI; import org.teavm.jso.JSBody; @@ -25,6 +26,7 @@ import net.minecraft.client.gui.Gui; public class ModAPI { private static Minecraft mc; + private static ScaledResolution sr; private static Gui gui; public ArrayList requiredList; @@ -212,13 +214,19 @@ public class ModAPI { setGlobal("platform", PlatformAPI.makeModData()); setGlobal("logger", LoggerAPI.makeModData()); setGlobal("emptygui", EmptyGui.makeModData()); - setGlobal("mc", mc.makeModData()); + setGlobal("ScaledResolution", ScaledResolution.makeModData()); + getModAPI().setCallbackString("currentScreen", () -> { + return mc.currentScreen.toString(); + }); getModAPI().setCallbackInt("getdisplayHeight", () -> { return mc.displayHeight; }); getModAPI().setCallbackInt("getdisplayWidth", () -> { return mc.displayWidth; }); + getModAPI().setCallbackInt("getFONT_HEIGHT", () -> { + return mc.fontRendererObj.FONT_HEIGHT; + }); getModAPI().setCallbackVoidWithDataArg("drawStringWithShadow", (BaseData params) -> { mc.fontRendererObj.drawStringWithShadow(params.getString("msg"), params.getFloat("x"), params.getFloat("y"), params.getInt("color")); }); diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java index 493cab7..4b16164 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java @@ -14,7 +14,7 @@ public class EaglercraftVersion { /// Customize these to fit your fork: public static final String projectForkName = "EaglerForge"; - public static final String projectForkVersion = "v1.2.1"; + public static final String projectForkVersion = "v1.2.2"; public static final String projectForkVendor = "radmanplays"; public static final String projectForkURL = "https://github.com/eaglerforge/EaglerForge"; diff --git a/sources/setup/workspace_template/javascript/favicon.png b/sources/setup/workspace_template/javascript/favicon.png index 9c9fc8980fc3d08e489084122e80d35a80fd2705..02893956a77cf94f0865fa16c4f99d1eb5c83381 100644 GIT binary patch literal 8424 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 literal 1258 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGqB>(^xB>_oNB=7(L1b<0HK~zXfwUyZ` zc2N|@4|1j4`V08iaL2`4h9Z(7k;sr)q+D<#V@N3_iVPP>=6RlH@Ao_B+3!B*#e3&_ zE_Q3Lz1DixUTf`hobZ2!OYrser45k$`T40WKz@IJ|M>W@N@S~%l9eq&FqB|!U=L*X z^78Wh{45Rf{r&yJ!^6|llQeH{Z=9mx2%v#ag7|{)O9Y3aIXTgKb8{mDaD9Ev)<)dj-QC>W+}qpJR+r|K z6r}-%K%87cm(9w`3WY))9UW-a*4Au^*a8elJTo&hFE1}QHy0X?bjlH{0!r|204+uc zgmWTDNJzkrg2;ySsSLv5;i0i`oYvM>ostAAH&7)6mw>EaUtbXj&DrJUrE&E@#G|95 zJPCPcJB1xio8l7CK-N)#LlUUOA#``i z0$XZ@K$Wm0A;QUKd3l+}AW%=&Gy=aw*zND{YZypP4c8<9u0pcXKulb^rDmcT9UblI z>8Yx!k`2IJg>eZ;pW9K*>gwvgzCO0}V10cZRHo0~(w zxVV^}o=!jd`}^&UVZsu@5U6lic&&9&UtizY*l0E$;^N|r6ay-c6N4*DjIEVZMfT^phNobxC8=cSa21ri;9Zm_7epK z1$A|GW)nb5ON;8mbOi^=C*XiFpkw4>oMPZtgPNL}v$Heekfj0&hQK~Nt~NF{W}IT6 zw6v5pDJe-?AvrmjDNv~a0~S>xdqAO>bmQbW@$vCI(Sd=1#Kgq*_I9K7z-V@McAAaj zl$Dh+<+eCv9Fu@`YHF&Xp`od%iH{wn8yp;@y(Urwe0-Q}TB2=AN(xhCn;dlmrbtf) z=-u-hkQ<}PM98)|Dg$7iezar*R)mA4LFsi zva(WohE-k^aCmrFN@|D(cS7;DWZ)C%TZEwJJ~K0e4+P$!i`v>+1!`_?HY$%`XlO|K zuC6XL1kqIKBigJkCLfk2;YFg`x6Ks-RwwBM_PgM;$&^6u_#ywIq~1k`uT z5a?M0HG|(QpCEo!DiK@2zf%N!*YvN317q})lamY;5fvRo5eU!_9W50^Mo3Fb%gD$; z(3ZOsJvB9zQDG|(5xtlclv3Mz0H5F+$g#M%n20zNktl$H;fSD&wM`aKSe468qvh}k zAU9G3G%)!0pbhX*akG!Weg*Wqg;;_RbpuMlYO^3s8lY7g2FyN53x&f=jkGU7_+BF2 z18Z&#$PRy!0>R - EaglerForge prerelease + EaglerForge