diff --git a/patches/minecraft/net/minecraft/client/Minecraft.edit.java b/patches/minecraft/net/minecraft/client/Minecraft.edit.java index 1acc501..84db5cf 100644 --- a/patches/minecraft/net/minecraft/client/Minecraft.edit.java +++ b/patches/minecraft/net/minecraft/client/Minecraft.edit.java @@ -139,11 +139,12 @@ ~ public class Minecraft extends ModData implements IThreadListener { -> CHANGE 2 : 3 @ 2 : 9 +> CHANGE 2 : 4 @ 2 : 10 ~ public static final boolean isRunningOnMac = false; +~ public static ServerData currentServerData; -> DELETE 12 @ 12 : 14 +> DELETE 11 @ 11 : 13 > INSERT 11 : 12 @ 11 diff --git a/patches/minecraft/net/minecraft/entity/Entity.edit.java b/patches/minecraft/net/minecraft/entity/Entity.edit.java index 4e57b9c..c0e65c6 100644 --- a/patches/minecraft/net/minecraft/entity/Entity.edit.java +++ b/patches/minecraft/net/minecraft/entity/Entity.edit.java @@ -105,7 +105,7 @@ ~ for (int i = 0, l = list.size(); i < l; ++i) { ~ y = list.get(i).calculateYOffset(this.getEntityBoundingBox(), y); -> INSERT 232 : 602 @ 232 +> INSERT 232 : 603 @ 232 + public void loadModData(BaseData data) { + posX = data.getDouble("x"); @@ -363,6 +363,7 @@ + data.setCallbackBoolean("getAlwaysRenderNameTagForRender", () -> { + return getAlwaysRenderNameTagForRender(); + }); ++ + data.setCallbackFloatWithDataArg("getBrightness", (BaseData params) -> { + return getBrightness(params.getFloat("var1")); + }); diff --git a/sources/main/java/net/eaglerforge/api/ModAPI.java b/sources/main/java/net/eaglerforge/api/ModAPI.java index 07bb57d..b50299a 100644 --- a/sources/main/java/net/eaglerforge/api/ModAPI.java +++ b/sources/main/java/net/eaglerforge/api/ModAPI.java @@ -1,19 +1,17 @@ package net.eaglerforge.api; -import com.sun.org.apache.bcel.internal.generic.RETURN; -import net.eaglerforge.gui.EmptyGui; import net.eaglerforge.gui.ModGUI; +import net.lax1dude.eaglercraft.v1_8.EagRuntime; import net.lax1dude.eaglercraft.v1_8.log4j.LogManager; import net.lax1dude.eaglercraft.v1_8.log4j.Logger; import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager; import net.lax1dude.eaglercraft.v1_8.profile.EaglerProfile; +import net.lax1dude.eaglercraft.v1_8.sp.SingleplayerServerController; import net.minecraft.client.ClientBrandRetriever; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.entity.Entity; import net.minecraft.util.ChatComponentText; import me.otterdev.UwUAPI; -import net.minecraft.util.EnumParticleTypes; import org.teavm.jso.JSBody; import org.teavm.jso.JSObject; import net.minecraft.enchantment.Enchantment; @@ -216,7 +214,7 @@ public class ModAPI { getModAPI().setCallbackInt("getFPS", () -> { return getDebugFPS(); }); - getModAPI().setCallbackVoidWithDataArg("displayParticleAtPlayer", (BaseData params) -> { + /*getModAPI().setCallbackVoidWithDataArg("displayParticleAtPlayer", (BaseData params) -> { if (params.getString("type") == "EXPLOSION_NORMAL") { mc.effectRenderer.emitParticleAtEntity(mc.thePlayer, EnumParticleTypes.EXPLOSION_NORMAL); } else if (params.getString("type") == "EXPLOSION_LARGE") { @@ -302,7 +300,7 @@ public class ModAPI { } else if (params.getString("type") == "MOB_APPEARANCE") { mc.effectRenderer.emitParticleAtEntity(mc.thePlayer, EnumParticleTypes.MOB_APPEARANCE); } - }); + });*/ getModAPI().set("clientBrand", ClientBrandRetriever.getClientModName()); setGlobal("enchantments", Enchantment.makeModDataStatic()); @@ -313,9 +311,10 @@ public class ModAPI { setMinecraftContext(mc); setGlobal("platform", PlatformAPI.makeModData()); setGlobal("logger", LoggerAPI.makeModData()); - setGlobal("emptygui", EmptyGui.makeModData()); + //setGlobal("emptygui", EmptyGui.makeModData()); setGlobal("ScaledResolution", ScaledResolution.makeModData()); setGlobal("GlStateManager", GlStateManager.makeModData()); + setGlobal("sp", SingleplayerServerController.makeModData()); getModAPI().setCallbackString("currentScreen", () -> { return mc.currentScreen.toString(); }); @@ -368,6 +367,7 @@ public class ModAPI { modAPI.onUpdate(); }); } + public void onUpdate() { @@ -377,6 +377,9 @@ public class ModAPI { if (requiredList.contains("network") && mc.thePlayer != null && mc.thePlayer.sendQueue != null) { ModAPI.setGlobal("network", mc.thePlayer.sendQueue.makeModData()); } + if (requiredList.contains("server") && mc.getCurrentServerData() != null) { + ModAPI.setGlobal("server", server.makeModData()); + } ModAPI.callEvent("update", new ModData()); } public void onFrame(){ diff --git a/sources/main/java/net/eaglerforge/api/server.java b/sources/main/java/net/eaglerforge/api/server.java new file mode 100644 index 0000000..1370ff2 --- /dev/null +++ b/sources/main/java/net/eaglerforge/api/server.java @@ -0,0 +1,38 @@ +package net.eaglerforge.api; + + +import net.minecraft.client.Minecraft; + +public class server extends ModData{ + private static Minecraft mc; + + public static ModData makeModData() { + ModData serverglobal = new ModData(); + serverglobal.setCallbackString("getCurrentQuery", () -> { + return Minecraft.currentServerData.currentQuery.toString(); + }); + serverglobal.setCallbackString("getServerIP", () -> { + return Minecraft.currentServerData.serverIP; + }); + serverglobal.setCallbackString("getServerMOTD", () -> { + return Minecraft.currentServerData.serverMOTD; + }); + serverglobal.setCallbackString("getServerName", () -> { + return Minecraft.currentServerData.serverName; + }); + serverglobal.setCallbackString("getGameVersion", () -> { + return Minecraft.currentServerData.gameVersion; + }); + serverglobal.setCallbackString("getPlayerListToString", () -> { + return Minecraft.currentServerData.playerList; + }); + serverglobal.setCallbackDouble("getPingSentTime", () -> { + return Minecraft.currentServerData.pingSentTime; + }); + serverglobal.setCallbackDouble("getPingToServer", () -> { + return Minecraft.currentServerData.pingToServer; + }); + + return serverglobal; + } +} 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 c5c5473..421b6c0 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/EaglercraftVersion.java @@ -62,4 +62,4 @@ public class EaglercraftVersion { public static final boolean forceDemoMode = false; -} +} \ No newline at end of file diff --git a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java index 9d02b25..6d57a8b 100644 --- a/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java +++ b/sources/main/java/net/lax1dude/eaglercraft/v1_8/sp/SingleplayerServerController.java @@ -7,6 +7,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import net.eaglerforge.api.ModData; import net.lax1dude.eaglercraft.v1_8.internal.PlatformWebRTC; import org.apache.commons.lang3.StringUtils; @@ -31,6 +32,7 @@ import net.minecraft.world.storage.ISaveFormat; import net.minecraft.world.storage.ISaveHandler; import net.minecraft.world.storage.SaveFormatComparator; import net.minecraft.world.storage.WorldInfo; +import org.teavm.jso.JSObject; /** * Copyright (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved. @@ -47,7 +49,7 @@ import net.minecraft.world.storage.WorldInfo; * POSSIBILITY OF SUCH DAMAGE. * */ -public class SingleplayerServerController implements ISaveFormat { +public class SingleplayerServerController extends ModData implements ISaveFormat { public static final String IPC_CHANNEL = "~!IPC"; public static final String PLAYER_CHANNEL = "~!LOCAL_PLAYER"; @@ -591,4 +593,33 @@ public class SingleplayerServerController implements ISaveFormat { Minecraft mc = Minecraft.getMinecraft(); return mc != null && mc.thePlayer != null && mc.thePlayer.sendQueue.isClientInEaglerSingleplayerOrLAN(); } + + public static ModData makeModData() { + ModData spglobal = new ModData(); + spglobal.setCallbackBoolean("isIntegratedServerWorkerStarted", () -> { + return isIntegratedServerWorkerStarted(); + }); + spglobal.setCallbackVoid("startIntegratedServerWorker", () -> { + startIntegratedServerWorker(); + }); + spglobal.setCallbackBoolean("isIntegratedServerWorkerAlive", () -> { + return isIntegratedServerWorkerAlive(); + }); + spglobal.setCallbackBoolean("isReady", () -> { + return isReady(); + }); + + spglobal.set("IPC_CHANNEL", IPC_CHANNEL); + spglobal.set("PLAYER_CHANNEL", PLAYER_CHANNEL); + spglobal.set("statusState", statusState); + spglobal.set("loggingState", loggingState); + spglobal.set("worldStatusString", worldStatusString); + spglobal.set("worldStatusProgress", worldStatusProgress); + spglobal.set("isPaused", isPaused); + spglobal.set("integratedServerTPS", (JSObject) integratedServerTPS); + spglobal.set("integratedServerLastTPSUpdate", integratedServerLastTPSUpdate); + return spglobal; + } + + } diff --git a/sources/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformInput.java b/sources/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformInput.java index 7c27bf3..55774fd 100644 --- a/sources/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformInput.java +++ b/sources/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformInput.java @@ -564,6 +564,9 @@ public class PlatformInput { @JSBody(params = { "mediaQuery" }, script = "return mediaQuery.matches;") private static native boolean mediaQueryMatches(JSObject mediaQuery); + @JSBody(params = {}, script = "return document.getElementById('game_frame');") + private static native HTMLElement game_frame(); + public static void toggleFullscreen() { if (isFullscreen()) { if (keyboardLockSupported) { @@ -576,7 +579,7 @@ public class PlatformInput { lockKeys(); lockKeys = true; } - requestFullscreen(canvas); + requestFullscreen(game_frame()); } }