From 6c240e2fa98a92b458a2d0cc00fe63358b16c914 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Wed, 15 Apr 2020 14:16:32 +0700 Subject: [PATCH] Option: forget OptiFine path --- app/libs/boardwalk_lwjgl.jar | Bin 959218 -> 957364 bytes .../net/kdt/pojavlaunch/MainActivity.java | 2 +- .../prefs/PojavPreferenceActivity.java | 17 +- .../optifine/AndroidOptiFineUtilities.java | 2 - app/src/main/java/org/lwjgl/BufferChecks.java | 286 ++++++++++++++++++ app/src/main/res/layout/settings.xml | 26 ++ app/src/main/res/values/strings.xml | 4 +- 7 files changed, 332 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/org/lwjgl/BufferChecks.java diff --git a/app/libs/boardwalk_lwjgl.jar b/app/libs/boardwalk_lwjgl.jar index 315de194b2d46c43637623d4132955266a610668..e56f72079a753dac366b65da34aef03c013fb1e8 100644 GIT binary patch delta 13135 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 WmILIE>?3=dW>jZwO9}rA<^KSdzRVZ^ delta 14876 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 24); + + // Forget OptiFine path + viewSwitchForgetOF = (Switch) findViewById(R.id.settings_switch_forgetoptifpath); + viewSwitchForgetOF.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener(){ + + @Override + public void onCheckedChanged(CompoundButton b, boolean z) + { + mainPrefEdit.putBoolean("forgetOptifinePath", z); + mainPrefEdit.commit(); + } + }); + viewSwitchForgetOF.setChecked(PREF_FORGETOF); } @Override @@ -118,5 +132,6 @@ public class PojavPreferenceActivity extends MineActivity PREF_BUTTONSIZE = mainPreference.getFloat("controlSize", 1f); PREF_FREEFORM = mainPreference.getBoolean("freeform", false); + PREF_FORGETOF = mainPreference.getBoolean("forgetOptifinePath", false); } } diff --git a/app/src/main/java/optifine/AndroidOptiFineUtilities.java b/app/src/main/java/optifine/AndroidOptiFineUtilities.java index f40725085..66ebf969d 100644 --- a/app/src/main/java/optifine/AndroidOptiFineUtilities.java +++ b/app/src/main/java/optifine/AndroidOptiFineUtilities.java @@ -4,6 +4,4 @@ public class AndroidOptiFineUtilities { public static volatile String originalOptifineJar; public static volatile String optifineOutputJar; - - // public sta } diff --git a/app/src/main/java/org/lwjgl/BufferChecks.java b/app/src/main/java/org/lwjgl/BufferChecks.java new file mode 100644 index 000000000..d9e1300c2 --- /dev/null +++ b/app/src/main/java/org/lwjgl/BufferChecks.java @@ -0,0 +1,286 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 OWNER 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 org.lwjgl; + +import java.nio.*; + +/** + *

A class to check buffer boundaries in general. If there is unsufficient space + * in the buffer when the call is made then a buffer overflow would otherwise + * occur and cause unexpected behaviour, a crash, or worse, a security risk. + * + * Internal class, don't use. + *

+ * @author cix_foo + * @author elias_naur + * @version $Revision$ + * $Id$ + */ +public class BufferChecks { + /** Static methods only! */ + private BufferChecks() { + } + + /** + * Helper methods to ensure a function pointer is not-null (0) + */ + public static void checkFunctionAddress(long pointer) { + if (LWJGLUtil.CHECKS && pointer == 0) { + // throw new IllegalStateException("Function is not supported"); + } + } + + /** + * Helper methods to ensure a ByteBuffer is null-terminated + */ + public static void checkNullTerminated(ByteBuffer buf) { + if ( LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0) { + throw new IllegalArgumentException("Missing null termination"); + } + } + + public static void checkNullTerminated(ByteBuffer buf, int count) { + if ( LWJGLUtil.CHECKS ) { + int nullFound = 0; + for ( int i = buf.position(); i < buf.limit(); i++ ) { + if ( buf.get(i) == 0 ) + nullFound++; + } + + if ( nullFound < count ) + throw new IllegalArgumentException("Missing null termination"); + } + } + + /** Helper method to ensure an IntBuffer is null-terminated */ + public static void checkNullTerminated(IntBuffer buf) { + if ( LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0 ) { + throw new IllegalArgumentException("Missing null termination"); + } + } + + /** Helper method to ensure a LongBuffer is null-terminated */ + public static void checkNullTerminated(LongBuffer buf) { + if ( LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0 ) { + throw new IllegalArgumentException("Missing null termination"); + } + } + + /** Helper method to ensure a PointerBuffer is null-terminated */ + public static void checkNullTerminated(PointerBuffer buf) { + if ( LWJGLUtil.CHECKS && buf.get(buf.limit() - 1) != 0 ) { + throw new IllegalArgumentException("Missing null termination"); + } + } + + public static void checkNotNull(Object o) { + if ( LWJGLUtil.CHECKS && o == null) + throw new IllegalArgumentException("Null argument"); + } + + /** + * Helper methods to ensure a buffer is direct (and, implicitly, non-null). + */ + public static void checkDirect(ByteBuffer buf) { + if ( LWJGLUtil.CHECKS && !buf.isDirect()) { + throw new IllegalArgumentException("ByteBuffer is not direct"); + } + } + + public static void checkDirect(ShortBuffer buf) { + if ( LWJGLUtil.CHECKS && !buf.isDirect()) { + throw new IllegalArgumentException("ShortBuffer is not direct"); + } + } + + public static void checkDirect(IntBuffer buf) { + if ( LWJGLUtil.CHECKS && !buf.isDirect()) { + throw new IllegalArgumentException("IntBuffer is not direct"); + } + } + + public static void checkDirect(LongBuffer buf) { + if ( LWJGLUtil.CHECKS && !buf.isDirect()) { + throw new IllegalArgumentException("LongBuffer is not direct"); + } + } + + public static void checkDirect(FloatBuffer buf) { + if ( LWJGLUtil.CHECKS && !buf.isDirect()) { + throw new IllegalArgumentException("FloatBuffer is not direct"); + } + } + + public static void checkDirect(DoubleBuffer buf) { + if ( LWJGLUtil.CHECKS && !buf.isDirect()) { + throw new IllegalArgumentException("DoubleBuffer is not direct"); + } + } + + public static void checkDirect(PointerBuffer buf) { + // NO-OP, PointerBuffer is always direct. + } + + public static void checkArray(Object[] array) { + if ( LWJGLUtil.CHECKS && (array == null || array.length == 0) ) + throw new IllegalArgumentException("Invalid array"); + } + + /** + * This is a separate call to help inline checkBufferSize. + */ + private static void throwBufferSizeException(Buffer buf, int size) { + throw new IllegalArgumentException("Number of remaining buffer elements is " + buf.remaining() + ", must be at least " + size + ". Because at most " + size + " elements can be returned, a buffer with at least " + size + " elements is required, regardless of actual returned element count"); + } + + private static void throwBufferSizeException(PointerBuffer buf, int size) { + throw new IllegalArgumentException("Number of remaining pointer buffer elements is " + buf.remaining() + ", must be at least " + size); + } + + private static void throwArraySizeException(Object[] array, int size) { + throw new IllegalArgumentException("Number of array elements is " + array.length + ", must be at least " + size); + } + + private static void throwArraySizeException(long[] array, int size) { + throw new IllegalArgumentException("Number of array elements is " + array.length + ", must be at least " + size); + } + + /** + * Helper method to ensure a buffer is big enough to receive data from a + * glGet* operation. + * + * @param buf + * The buffer to check + * @param size + * The minimum buffer size + * @throws IllegalArgumentException + */ + public static void checkBufferSize(Buffer buf, int size) { + if ( LWJGLUtil.CHECKS && buf.remaining() < size) { + throwBufferSizeException(buf, size); + } + } + + /** + * Detects the buffer type and performs the corresponding check + * and also returns the buffer position in bytes. + * + * @param buffer the buffer to check + * @param size the size to check + * + * @return the buffer position in bytes + */ + public static int checkBuffer(final Buffer buffer, final int size) { + final int posShift; + if ( buffer instanceof ByteBuffer ) { + BufferChecks.checkBuffer((ByteBuffer)buffer, size); + posShift = 0; + } else if ( buffer instanceof ShortBuffer ) { + BufferChecks.checkBuffer((ShortBuffer)buffer, size); + posShift = 1; + } else if ( buffer instanceof IntBuffer ) { + BufferChecks.checkBuffer((IntBuffer)buffer, size); + posShift = 2; + } else if ( buffer instanceof LongBuffer ) { + BufferChecks.checkBuffer((LongBuffer)buffer, size); + posShift = 4; + } else if ( buffer instanceof FloatBuffer ) { + BufferChecks.checkBuffer((FloatBuffer)buffer, size); + posShift = 2; + } else if ( buffer instanceof DoubleBuffer ) { + BufferChecks.checkBuffer((DoubleBuffer)buffer, size); + posShift = 4; + } else + throw new IllegalArgumentException("Unsupported Buffer type specified: " + buffer.getClass()); + + return buffer.position() << posShift; + } + + public static void checkBuffer(ByteBuffer buf, int size) { + if ( LWJGLUtil.CHECKS ) { + checkBufferSize(buf, size); + checkDirect(buf); + } + } + + public static void checkBuffer(ShortBuffer buf, int size) { + if ( LWJGLUtil.CHECKS ) { + checkBufferSize(buf, size); + checkDirect(buf); + } + } + + public static void checkBuffer(IntBuffer buf, int size) { + if ( LWJGLUtil.CHECKS ) { + checkBufferSize(buf, size); + checkDirect(buf); + } + } + + public static void checkBuffer(LongBuffer buf, int size) { + if ( LWJGLUtil.CHECKS ) { + checkBufferSize(buf, size); + checkDirect(buf); + } + } + + public static void checkBuffer(FloatBuffer buf, int size) { + if ( LWJGLUtil.CHECKS ) { + checkBufferSize(buf, size); + checkDirect(buf); + } + } + + public static void checkBuffer(DoubleBuffer buf, int size) { + if ( LWJGLUtil.CHECKS ) { + checkBufferSize(buf, size); + checkDirect(buf); + } + } + + public static void checkBuffer(PointerBuffer buf, int size) { + if ( LWJGLUtil.CHECKS && buf.remaining() < size ) { + throwBufferSizeException(buf, size); + } + } + + public static void checkArray(Object[] array, int size) { + if ( LWJGLUtil.CHECKS && array.length < size ) + throwArraySizeException(array, size); + } + + public static void checkArray(long[] array, int size) { + if ( LWJGLUtil.CHECKS && array.length < size ) + throwArraySizeException(array, size); + } + +} diff --git a/app/src/main/res/layout/settings.xml b/app/src/main/res/layout/settings.xml index 3dd8e71c9..1d30b1fae 100644 --- a/app/src/main/res/layout/settings.xml +++ b/app/src/main/res/layout/settings.xml @@ -107,5 +107,31 @@ android:layout_height="2dp" android:layout_width="match_parent"/> + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd582f7dd..0e87e887f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -95,7 +95,9 @@ Increase If an error happend while converting: Too many ... references. You may try multi-dex option. Enable Freeform mode for launch Minecraft (Android 7.0+) Set control buttons size - + Make OptiFine unable to locate itself + Useful for making OptiFine launchable on some devices + Clone