Update #51 - Protocol and FPS improvements, better workspace

This commit is contained in:
lax1dude
2025-05-18 15:01:06 -07:00
parent 71c61e33fd
commit 325a6826bf
1191 changed files with 9266 additions and 187695 deletions

View File

@ -0,0 +1,59 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
public class PlatformApplication {
public static native void openLink(String url);
public static native void setClipboard(String text);
public static native String getClipboard();
public static native void setLocalStorage(String name, byte[] data);
public static native void setLocalStorage(String name, byte[] data, boolean hooks);
public static native byte[] getLocalStorage(String name);
public static native byte[] getLocalStorage(String name, boolean hooks);
public static native void displayFileChooser(String mime, String ext);
public static native boolean fileChooserHasResult();
public static native FileChooserResult getFileChooserResult();
public static native void clearFileChooserResult();
public static native void showPopup(String msg);
public static native void openCreditsPopup(String text);
public static native void downloadFileWithName(String str, byte[] dat);
public static native String saveScreenshot();
public static native void showDebugConsole();
public static native void addLogMessage(String text, boolean err);
public static native boolean isShowingDebugConsole();
public static native void setMCServerWindowGlobal(String str);
}

View File

@ -0,0 +1,37 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import java.io.InputStream;
import net.lax1dude.eaglercraft.v1_8.opengl.ImageData;
public class PlatformAssets {
public static native boolean getResourceExists(String path);
public static native byte[] getResourceBytes(String path);
public static native ImageData loadImageFile(InputStream data);
public static native ImageData loadImageFile(InputStream data, String mime);
public static native ImageData loadImageFile(byte[] data);
public static native ImageData loadImageFile(byte[] data, String mime);
}

View File

@ -0,0 +1,38 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
public class PlatformAudio {
public static native IAudioResource loadAudioData(String filename, boolean holdInCache);
public static native IAudioResource loadAudioDataNew(String filename, boolean holdInCache, IAudioCacheLoader loader);
public static native void clearAudioCache();
public static native void flushAudioCache();
public static native boolean available();
public static native IAudioHandle beginPlayback(IAudioResource track, float x, float y, float z,
float volume, float pitch, boolean repeat);
public static native IAudioHandle beginPlaybackStatic(IAudioResource track, float volume, float pitch, boolean repeat);
public static native void setListener(float x, float y, float z, float pitchDegrees, float yawDegrees);
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
public class PlatformFilesystem {
public static native IEaglerFilesystem initializePersist(String dbName);
}

View File

@ -0,0 +1,175 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
public class PlatformInput {
public static native int getWindowWidth();
public static native int getWindowHeight();
public static native int getVisualViewportX();
public static native int getVisualViewportY();
public static native int getVisualViewportW();
public static native int getVisualViewportH();
public static native boolean getWindowFocused();
public static native boolean isCloseRequested();
public static native void setVSync(boolean enable);
public static native void update();
public static native void update(int fpsLimit);
public static native boolean isVSyncSupported();
public static native boolean wasResized();
public static native boolean wasVisualViewportResized();
public static native boolean keyboardNext();
public static native void keyboardFireEvent(EnumFireKeyboardEvent eventType, int eagKey, char keyChar);
public static native boolean keyboardGetEventKeyState();
public static native int keyboardGetEventKey();
public static native char keyboardGetEventCharacter();
public static native boolean keyboardIsKeyDown(int key);
public static native boolean keyboardIsRepeatEvent();
public static native void keyboardEnableRepeatEvents(boolean b);
public static native boolean keyboardAreKeysLocked();
public static native boolean mouseNext();
public static native void mouseFireMoveEvent(EnumFireMouseEvent eventType, int posX, int posY);
public static native void mouseFireButtonEvent(EnumFireMouseEvent eventType, int posX, int posY, int button);
public static native void mouseFireWheelEvent(EnumFireMouseEvent eventType, int posX, int posY, float wheel);
public static native boolean mouseGetEventButtonState();
public static native int mouseGetEventButton();
public static native int mouseGetEventX();
public static native int mouseGetEventY();
public static native int mouseGetEventDWheel();
public static native int mouseGetX();
public static native int mouseGetY();
public static native boolean mouseIsButtonDown(int i);
public static native int mouseGetDWheel();
public static native boolean mouseGrabSupported();
public static native void mouseSetGrabbed(boolean grab);
public static native boolean isMouseGrabbed();
public static native boolean isPointerLocked();
public static native int mouseGetDX();
public static native int mouseGetDY();
public static native void mouseSetCursorPosition(int x, int y);
public static native boolean mouseIsInsideWindow();
public static native boolean contextLost();
public static native void setFunctionKeyModifier(int key);
public static native boolean supportsFullscreen();
public static native void toggleFullscreen();
public static native boolean isFullscreen();
public static native void showCursor(EnumCursorType cursor);
public static native boolean touchNext();
public static native EnumTouchEvent touchGetEventType();
public static native int touchGetEventTouchPointCount();
public static native int touchGetEventTouchX(int pointId);
public static native int touchGetEventTouchY(int pointId);
public static native float touchGetEventTouchRadiusMixed(int pointId);
public static native float touchGetEventTouchForce(int pointId);
public static native int touchGetEventTouchPointUID(int pointId);
public static native int touchPointCount();
public static native int touchPointX(int pointId);
public static native int touchPointY(int pointId);
public static native float touchRadiusMixed(int pointId);
public static native float touchForce(int pointId);
public static native int touchPointUID(int pointId);
public static native String touchGetPastedString();
public static native void touchSetOpenKeyboardZone(int x, int y, int w, int h);
public static native void touchCloseDeviceKeyboard();
public static native boolean touchIsDeviceKeyboardOpenMAYBE();
public static native int gamepadGetValidDeviceCount();
public static native String gamepadGetDeviceName(int deviceId);
public static native void gamepadSetSelectedDevice(int deviceId);
public static native void gamepadUpdate();
public static native boolean gamepadIsValid();
public static native String gamepadGetName();
public static native boolean gamepadGetButtonState(int button);
public static native float gamepadGetAxis(int axis);
public static native float getDPI();
}

View File

@ -0,0 +1,27 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
public class PlatformNetworking {
public static native IWebSocketClient openWebSocket(String socketURI);
public static native IWebSocketClient openWebSocketUnsafe(String socketURI);
public static native IWebSocketClient openWebSocketImpl(String socketURI);
}

View File

@ -0,0 +1,310 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import java.util.List;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.ByteBuffer;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.IntBuffer;
public class PlatformOpenGL {
public static native void _wglEnable(int glEnum);
public static native void _wglDisable(int glEnum);
public static native void _wglClearColor(float r, float g, float b, float a);
public static native void _wglClearDepth(float f);
public static native void _wglClear(int bits);
public static native void _wglDepthFunc(int glEnum);
public static native void _wglDepthMask(boolean mask);
public static native void _wglCullFace(int glEnum);
public static native void _wglViewport(int x, int y, int w, int h);
public static native void _wglBlendFunc(int src, int dst);
public static native void _wglBlendFuncSeparate(int srcColor, int dstColor, int srcAlpha, int dstAlpha);
public static native void _wglBlendEquation(int glEnum);
public static native void _wglBlendColor(float r, float g, float b, float a);
public static native void _wglColorMask(boolean r, boolean g, boolean b, boolean a);
public static native void _wglDrawBuffers(int buffer);
public static native void _wglDrawBuffers(int[] buffers);
public static native void _wglReadBuffer(int glEnum);
public static native void _wglReadPixels(int x, int y, int width, int height, int format, int type,
ByteBuffer buffer);
public static native void _wglReadPixels_u16(int x, int y, int width, int height, int format, int type,
ByteBuffer buffer);
public static native void _wglReadPixels(int x, int y, int width, int height, int format, int type,
IntBuffer buffer);
public static native void _wglReadPixels(int x, int y, int width, int height, int format, int type,
FloatBuffer buffer);
public static native void _wglPolygonOffset(float f1, float f2);
public static native void _wglLineWidth(float width);
public static native IBufferGL _wglGenBuffers();
public static native ITextureGL _wglGenTextures();
public static native IVertexArrayGL _wglGenVertexArrays();
public static native IProgramGL _wglCreateProgram();
public static native IShaderGL _wglCreateShader(int type);
public static native IFramebufferGL _wglCreateFramebuffer();
public static native IRenderbufferGL _wglCreateRenderbuffer();
public static native IQueryGL _wglGenQueries();
public static native void _wglDeleteBuffers(IBufferGL objId);
public static native void _wglDeleteTextures(ITextureGL objId);
public static native void _wglDeleteVertexArrays(IVertexArrayGL objId);
public static native void _wglDeleteProgram(IProgramGL objId);
public static native void _wglDeleteShader(IShaderGL objId);
public static native void _wglDeleteFramebuffer(IFramebufferGL objId);
public static native void _wglDeleteRenderbuffer(IRenderbufferGL objId);
public static native void _wglDeleteQueries(IQueryGL objId);
public static native void _wglBindBuffer(int target, IBufferGL bufObj);
public static native void _wglBufferData(int target, int size, int usage);
public static native void _wglBufferData(int target, ByteBuffer buffer, int usage);
public static native void _wglBufferData(int target, IntBuffer buffer, int usage);
public static native void _wglBufferData(int target, FloatBuffer buffer, int usage);
public static native void _wglBufferSubData(int target, int dstOffset, ByteBuffer buffer);
public static native void _wglBufferSubData(int target, int dstOffset, IntBuffer buffer);
public static native void _wglBufferSubData(int target, int dstOffset, FloatBuffer buffer);
public static native void _wglBindVertexArray(IVertexArrayGL objId);
public static native void _wglEnableVertexAttribArray(int index);
public static native void _wglDisableVertexAttribArray(int index);
public static native void _wglVertexAttribPointer(int index, int size, int type, boolean normalized, int stride,
int offset);
public static native void _wglVertexAttribDivisor(int index, int divisor);
public static native void _wglActiveTexture(int texture);
public static native void _wglBindTexture(int target, ITextureGL objId);
public static native void _wglTexParameterf(int target, int param, float value);
public static native void _wglTexParameteri(int target, int param, int value);
public static native void _wglTexImage3D(int target, int level, int internalFormat, int width, int height,
int depth, int border, int format, int type, ByteBuffer data);
public static native void _wglTexImage2D(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, ByteBuffer data);
public static native void _wglTexImage2Du16(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, ByteBuffer data);
public static native void _wglTexImage2Df32(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, ByteBuffer data);
public static native void _wglTexImage2D(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, IntBuffer data);
public static native void _wglTexImage2Df32(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, FloatBuffer data);
public static native void _wglTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height,
int format, int type, ByteBuffer data);
public static native void _wglTexSubImage2Du16(int target, int level, int xoffset, int yoffset, int width,
int height, int format, int type, ByteBuffer data);
public static native void _wglTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height,
int format, int type, IntBuffer data);
public static native void _wglTexSubImage2Df32(int target, int level, int xoffset, int yoffset, int width,
int height, int format, int type, FloatBuffer data);
public static native void _wglCopyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y,
int width, int height);
public static native void _wglTexStorage2D(int target, int levels, int internalFormat, int w, int h);
public static native void _wglPixelStorei(int pname, int value);
public static native void _wglGenerateMipmap(int target);
public static native void _wglShaderSource(IShaderGL shader, String str);
public static native void _wglCompileShader(IShaderGL shader);
public static native int _wglGetShaderi(IShaderGL shader, int param);
public static native String _wglGetShaderInfoLog(IShaderGL shader);
public static native void _wglUseProgram(IProgramGL prog);
public static native void _wglAttachShader(IProgramGL prog, IShaderGL shader);
public static native void _wglDetachShader(IProgramGL prog, IShaderGL shader);
public static native void _wglLinkProgram(IProgramGL prog);
public static native int _wglGetProgrami(IProgramGL prog, int param);
public static native String _wglGetProgramInfoLog(IProgramGL prog);
public static native void _wglDrawArrays(int mode, int first, int count);
public static native void _wglDrawElements(int mode, int count, int type, int offset);
public static native void _wglDrawArraysInstanced(int mode, int first, int count, int instanced);
public static native void _wglDrawElementsInstanced(int mode, int count, int type, int offset, int instanced);
public static native void _wglBindAttribLocation(IProgramGL prog, int index, String str);
public static native int _wglGetAttribLocation(IProgramGL prog, String str);
public static native IUniformGL _wglGetUniformLocation(IProgramGL prog, String str);
public static native int _wglGetUniformBlockIndex(IProgramGL prog, String str);
public static native void _wglBindBufferRange(int target, int index, IBufferGL bufferId, int offset, int size);
public static native void _wglUniformBlockBinding(IProgramGL prog, int blockIndex, int bufferIndex);
public static native void _wglUniform1f(IUniformGL uniformIndex, float x);
public static native void _wglUniform2f(IUniformGL uniformIndex, float x, float y);
public static native void _wglUniform3f(IUniformGL uniformIndex, float x, float y, float z);
public static native void _wglUniform4f(IUniformGL uniformIndex, float x, float y, float z, float w);
public static native void _wglUniform1i(IUniformGL uniformIndex, int x);
public static native void _wglUniform2i(IUniformGL uniformIndex, int x, int y);
public static native void _wglUniform3i(IUniformGL uniformIndex, int x, int y, int z);
public static native void _wglUniform4i(IUniformGL uniformIndex, int x, int y, int z, int w);
public static native void _wglUniformMatrix2fv(IUniformGL uniformIndex, boolean transpose, FloatBuffer buffer);
public static native void _wglUniformMatrix3fv(IUniformGL uniformIndex, boolean transpose, FloatBuffer buffer);
public static native void _wglUniformMatrix4fv(IUniformGL uniformIndex, boolean transpose, FloatBuffer buffer);
public static native void _wglUniformMatrix3x2fv(IUniformGL uniformIndex, boolean transpose, FloatBuffer buffer);
public static native void _wglUniformMatrix4x2fv(IUniformGL uniformIndex, boolean transpose, FloatBuffer buffer);
public static native void _wglUniformMatrix4x3fv(IUniformGL uniformIndex, boolean transpose, FloatBuffer buffer);
public static native void _wglBindFramebuffer(int target, IFramebufferGL framebuffer);
public static native int _wglCheckFramebufferStatus(int target);
public static native void _wglBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0,
int dstX1, int dstY1, int bits, int filter);
public static native void _wglRenderbufferStorage(int target, int internalformat, int width, int height);
public static native void _wglFramebufferTexture2D(int target, int attachment, int texTarget, ITextureGL texObj,
int level);
public static native void _wglFramebufferTextureLayer(int target, int attachment, ITextureGL texObj, int level,
int layer);
public static native void _wglBindRenderbuffer(int target, IRenderbufferGL renderbuffer);
public static native void _wglFramebufferRenderbuffer(int target, int attachment, int renderbufferTarget,
IRenderbufferGL renderbufferId);
public static native String _wglGetString(int param);
public static native int _wglGetInteger(int param);
public static native int _wglGetError();
public static native int checkOpenGLESVersion();
public static native boolean checkEXTGPUShader5Capable();
public static native boolean checkOESGPUShader5Capable();
public static native boolean checkFBORenderMipmapCapable();
public static native boolean checkVAOCapable();
public static native boolean checkInstancingCapable();
public static native boolean checkTexStorageCapable();
public static native boolean checkTextureLODCapable();
public static native boolean checkNPOTCapable();
public static native boolean checkHDRFramebufferSupport(int bits);
public static native boolean checkLinearHDRFilteringSupport(int bits);
// legacy
public static native boolean checkLinearHDR32FSupport();
public static native boolean checkAnisotropicFilteringSupport();
public static native String[] getAllExtensions();
public static native List<String> dumpActiveExtensions();
public static native void enterVAOEmulationHook();
}

View File

@ -0,0 +1,141 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.function.Consumer;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.ByteBuffer;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.IntBuffer;
public class PlatformRuntime {
public static native void create();
public static native void destroy();
public static native EnumPlatformType getPlatformType();
public static native EnumPlatformAgent getPlatformAgent();
public static native String getUserAgentString();
public static native EnumPlatformOS getPlatformOS();
public static native boolean requireSSL();
public static native boolean isOfflineDownloadURL();
public static native EnumPlatformANGLE getPlatformANGLE();
public static native String getGLVersion();
public static native String getGLRenderer();
public static native ByteBuffer allocateByteBuffer(int length);
public static native IntBuffer allocateIntBuffer(int length);
public static native FloatBuffer allocateFloatBuffer(int length);
public static native ByteBuffer castPrimitiveByteArray(byte[] array);
public static native IntBuffer castPrimitiveIntArray(int[] array);
public static native FloatBuffer castPrimitiveFloatArray(float[] array);
public static native byte[] castNativeByteBuffer(ByteBuffer buffer);
public static native int[] castNativeIntBuffer(IntBuffer buffer);
public static native float[] castNativeFloatBuffer(FloatBuffer buffer);
public static native void freeByteBuffer(ByteBuffer byteBuffer);
public static native void freeIntBuffer(IntBuffer intBuffer);
public static native void freeFloatBuffer(FloatBuffer floatBuffer);
public static native void downloadRemoteURIByteArray(String assetPackageURI, final Consumer<byte[]> cb);
public static native void downloadRemoteURIByteArray(String assetPackageURI, boolean useCache,
final Consumer<byte[]> cb);
public static native byte[] downloadRemoteURIByteArray(String assetPackageURI);
public static native byte[] downloadRemoteURIByteArray(String assetPackageURI, boolean forceCache);
public static native boolean isDebugRuntime();
public static native void writeCrashReport(String crashDump);
public static native void showContextLostScreen(String crashDump);
public static native void getStackTrace(Throwable t, Consumer<String> ret);
public static native boolean printJSExceptionIfBrowser(Throwable t);
public static native String currentThreadName();
public static native void setThreadName(String string);
public static native long maxMemory();
public static native long totalMemory();
public static native long freeMemory();
public static native String getCallingClass(int i);
public static native long randomSeed();
public static native void exit();
public static native IClientConfigAdapter getClientConfigAdapter();
public static native long steadyTimeMillis();
public static native long nanoTime();
public static native void sleep(int millis);
public static native void immediateContinue();
public static native boolean immediateContinueSupported();
public static native void postCreate();
public static native void setDisplayBootMenuNextRefresh(boolean en);
public static native OutputStream newDeflaterOutputStream(OutputStream os) throws IOException;
public static native int deflateFull(byte[] input, int inputOff, int inputLen, byte[] output, int outputOff,
int outputLen) throws IOException;
public static native OutputStream newGZIPOutputStream(OutputStream os) throws IOException;
public static native InputStream newInflaterInputStream(InputStream is) throws IOException;
public static native int inflateFull(byte[] input, int inputOff, int inputLen, byte[] output, int outputOff,
int outputLen) throws IOException;
public static native InputStream newGZIPInputStream(InputStream is) throws IOException;
}

View File

@ -0,0 +1,41 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import net.lax1dude.eaglercraft.v1_8.recording.EnumScreenRecordingCodec;
public class PlatformScreenRecord {
public static native boolean isSupported();
public static native boolean isCodecSupported(EnumScreenRecordingCodec codec);
public static native void setGameVolume(float volume);
public static native void setMicrophoneVolume(float volume);
public static native void startRecording(ScreenRecordParameters params);
public static native void endRecording();
public static native boolean isRecording();
public static native boolean isMicVolumeLocked();
public static native boolean isVSyncLocked();
}

View File

@ -0,0 +1,68 @@
/*
* Copyright (c) 2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import net.lax1dude.eaglercraft.v1_8.update.UpdateCertificate;
import net.lax1dude.eaglercraft.v1_8.update.UpdateProgressStruct;
import net.lax1dude.eaglercraft.v1_8.update.UpdateResultObj;
public class PlatformUpdateSvc {
private static final UpdateProgressStruct dummyStruct = new UpdateProgressStruct();
public static boolean supported() {
return false;
}
public static void initialize() {
}
public static byte[] getClientSignatureData() {
return null;
}
public static byte[] getClientBundleData() {
return null;
}
public static void startClientUpdateFrom(UpdateCertificate clientUpdate) {
}
public static UpdateProgressStruct getUpdatingStatus() {
return dummyStruct;
}
public static UpdateResultObj getUpdateResult() {
return null;
}
public static void installSignedClient(UpdateCertificate clientCert, byte[] clientPayload, boolean setDefault,
boolean setTimeout) {
}
public static void quine(String filename, byte[] cert, byte[] data, String date) {
}
public static void quine(UpdateCertificate clientUpdate, byte[] data) {
}
}

View File

@ -0,0 +1,58 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import net.lax1dude.eaglercraft.v1_8.EaglercraftUUID;
import net.lax1dude.eaglercraft.v1_8.voice.EnumVoiceChannelReadyState;
public class PlatformVoiceClient {
public static native boolean isSupported();
public static native void setICEServers(String[] urls);
public static native void activateVoice(boolean talk);
public static native void initializeDevices();
public static native void tickVoiceClient();
public static native void setMicVolume(float val);
public static native EnumVoiceChannelReadyState getReadyState();
public static native void signalConnect(EaglercraftUUID peerId, boolean offer);
public static native void signalDescription(EaglercraftUUID peerId, String descJSON);
public static native void signalDisconnect(EaglercraftUUID peerId, boolean quiet);
public static native void makePeerGlobal(EaglercraftUUID peerId);
public static native void makePeerProximity(EaglercraftUUID peerId);
public static native void setVoiceProximity(int prox);
public static native void updateVoicePosition(EaglercraftUUID uuid, double x, double y, double z);
public static native void mutePeer(EaglercraftUUID peerId, boolean muted);
public static native void signalICECandidate(EaglercraftUUID peerId, String candidate);
public static native void setVoiceListenVolume(float f);
}

View File

@ -0,0 +1,83 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import java.util.List;
import net.lax1dude.eaglercraft.v1_8.sp.lan.LANPeerEvent;
public class PlatformWebRTC {
public static native void initialize();
public static native boolean supported();
public static native void runScheduledTasks();
public static native void startRTCLANClient();
public static native int clientLANReadyState();
public static native void clientLANCloseConnection();
public static native void clientLANSendPacket(byte[] pkt);
public static native byte[] clientLANReadPacket();
public static native List<byte[]> clientLANReadAllPacket();
public static native void clientLANSetICEServersAndConnect(String[] servers);
public static native void clearLANClientState();
public static native String clientLANAwaitICECandidate();
public static native String clientLANAwaitDescription();
public static native boolean clientLANAwaitChannel();
public static native boolean clientLANClosed();
public static native void clientLANSetICECandidate(String candidate);
public static native void clientLANSetDescription(String description);
public static native void startRTCLANServer();
public static native void serverLANInitializeServer(String[] servers);
public static native void serverLANCloseServer();
public static native void serverLANCreatePeer(String peer);
public static native LANPeerEvent serverLANGetEvent(String peer);
public static native List<LANPeerEvent> serverLANGetAllEvent(String peer);
public static native void serverLANWritePacket(String peer, byte[] data);
public static native void serverLANPeerICECandidates(String peer, String iceCandidates);
public static native void serverLANPeerDescription(String peer, String description);
public static native void serverLANPeerMapIPC(String peer, String ipcChannel);
public static native void serverLANDisconnectPeer(String peer);
public static native int countPeers();
}

View File

@ -0,0 +1,50 @@
/*
* Copyright (c) 2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.internal;
import net.lax1dude.eaglercraft.v1_8.socket.protocol.pkt.server.SPacketWebViewMessageV4EAG;
import net.lax1dude.eaglercraft.v1_8.webview.WebViewOverlayController.IPacketSendCallback;
public class PlatformWebView {
public static native boolean supported();
public static native boolean isShowing();
public static native void setPacketSendCallback(IPacketSendCallback callback);
public static native void runTick();
public static native void handleMessageFromServer(SPacketWebViewMessageV4EAG packet);
public static native void beginShowing(final WebViewOptions options, int x, int y, int w, int h);
public static native void resize(int x, int y, int w, int h);
public static native void endShowing();
public static native boolean fallbackSupported();
public static native void launchFallback(WebViewOptions options);
public static native boolean fallbackRunning();
public static native String getFallbackURL();
public static native void endFallbackServer();
}

View File

@ -0,0 +1,45 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.sp.internal;
import java.util.List;
import net.lax1dude.eaglercraft.v1_8.internal.IPCPacketData;
public class ClientPlatformSingleplayer {
public static native void startIntegratedServer(boolean singleThreadMode);
public static native void sendPacket(IPCPacketData packet);
public static native List<IPCPacketData> recieveAllPacket();
public static native boolean canKillWorker();
public static native void killWorker();
public static native boolean isRunningSingleThreadMode();
public static native boolean isSingleThreadModeSupported();
public static native void updateSingleThreadMode();
public static native void showCrashReportOverlay(String report, int x, int y, int w, int h);
public static native void hideCrashReportOverlay();
}

View File

@ -0,0 +1,49 @@
/*
* Copyright (c) 2025 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
package net.lax1dude.eaglercraft.v1_8.sp.server.internal;
import java.util.List;
import java.util.function.Consumer;
import net.lax1dude.eaglercraft.v1_8.internal.IClientConfigAdapter;
import net.lax1dude.eaglercraft.v1_8.internal.IEaglerFilesystem;
import net.lax1dude.eaglercraft.v1_8.internal.IPCPacketData;
import net.lax1dude.eaglercraft.v1_8.sp.server.IWASMCrashCallback;
public class ServerPlatformSingleplayer {
public static native void initializeContext();
public static native IEaglerFilesystem getWorldsDatabase();
public static native void initializeContextSingleThread(Consumer<IPCPacketData> packetSendCallback);
public static native void sendPacket(IPCPacketData packet);
public static native List<IPCPacketData> recieveAllPacket();
public static native void immediateContinue();
public static native IClientConfigAdapter getClientConfigAdapter();
public static native boolean isSingleThreadMode();
public static native void setCrashCallbackWASM(IWASMCrashCallback callback);
public static native boolean isTabAboutToCloseWASM();
}