mirror of
https://github.com/Eaglercraft-Archive/Eaglercraftx-1.8.8-src.git
synced 2025-06-27 18:38:14 -05:00
Update #27 - Fixed crash with fireballs, made offline start faster
This commit is contained in:
@ -4,9 +4,7 @@ import java.io.PrintStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSFunctor;
|
||||
import org.teavm.jso.JSObject;
|
||||
@ -22,6 +20,9 @@ import net.lax1dude.eaglercraft.v1_8.EagRuntime;
|
||||
import net.lax1dude.eaglercraft.v1_8.EaglercraftVersion;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.PlatformApplication;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.PlatformRuntime;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsAssetsURI;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsAssetsURIsArray;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsRoot;
|
||||
import net.lax1dude.eaglercraft.v1_8.log4j.ILogRedirector;
|
||||
import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
|
||||
import net.lax1dude.eaglercraft.v1_8.profile.EaglerProfile;
|
||||
@ -52,8 +53,6 @@ public class ClientMain {
|
||||
return crashImage.substring(0);
|
||||
}
|
||||
|
||||
private static String crashScreenOptsDump = null;
|
||||
|
||||
@JSBody(params = {}, script = "if((typeof window.__isEaglerX188Running === \"string\") && window.__isEaglerX188Running === \"yes\") return true; window.__isEaglerX188Running = \"yes\"; return false;")
|
||||
private static native boolean getRunningFlag();
|
||||
|
||||
@ -66,7 +65,7 @@ public class ClientMain {
|
||||
}
|
||||
try {
|
||||
systemOut.println("ClientMain: [INFO] eaglercraftx is starting...");
|
||||
String opts = getEaglerXOpts();
|
||||
JSObject opts = getEaglerXOpts();
|
||||
|
||||
if(opts == null) {
|
||||
systemErr.println("ClientMain: [ERROR] the \"window.eaglercraftXOpts\" variable is undefined");
|
||||
@ -76,38 +75,40 @@ public class ClientMain {
|
||||
}
|
||||
|
||||
try {
|
||||
JSONObject eaglercraftOpts = new JSONObject(opts);
|
||||
JSEaglercraftXOptsRoot eaglercraftOpts = (JSEaglercraftXOptsRoot)opts;
|
||||
|
||||
configRootElementId = eaglercraftOpts.getString("container");
|
||||
configRootElementId = eaglercraftOpts.getContainer();
|
||||
if(configRootElementId == null) {
|
||||
throw new JSONException("window.eaglercraftXOpts.container is undefined!");
|
||||
}
|
||||
configRootElement = Window.current().getDocument().getElementById(configRootElementId);
|
||||
|
||||
Object epkConfig = eaglercraftOpts.get("assetsURI");
|
||||
if(epkConfig instanceof JSONArray) {
|
||||
JSONArray epkConfigArr = (JSONArray)epkConfig;
|
||||
if(epkConfigArr.length() == 0) {
|
||||
String epkSingleURL = eaglercraftOpts.getAssetsURI();
|
||||
if(epkSingleURL != null) {
|
||||
configEPKFiles = new EPKFileEntry[] { new EPKFileEntry(epkSingleURL, "") };
|
||||
}else {
|
||||
JSEaglercraftXOptsAssetsURIsArray epkURLs = eaglercraftOpts.getAssetsURIArray();
|
||||
int len = epkURLs.getLength();
|
||||
if(len == 0) {
|
||||
throw new JSONException("assetsURI array cannot be empty!");
|
||||
}
|
||||
configEPKFiles = new EPKFileEntry[epkConfigArr.length()];
|
||||
for(int i = 0, l = configEPKFiles.length; i < l; ++i) {
|
||||
configEPKFiles[i] = parseEntry(epkConfigArr.getJSONObject(i));
|
||||
}
|
||||
}else if(epkConfig instanceof JSONObject) {
|
||||
configEPKFiles = new EPKFileEntry[] { parseEntry((JSONObject)epkConfig) };
|
||||
}else if(epkConfig instanceof String) {
|
||||
String epkConfigStr = (String)epkConfig;
|
||||
configEPKFiles = new EPKFileEntry[] { new EPKFileEntry(epkConfigStr, "") };
|
||||
if(epkConfigStr.length() > 128) {
|
||||
eaglercraftOpts.put("assetsURI", epkConfigStr.substring(0, 128) + " ... ");
|
||||
configEPKFiles = new EPKFileEntry[len];
|
||||
for(int i = 0; i < len; ++i) {
|
||||
JSEaglercraftXOptsAssetsURI etr = epkURLs.get(i);
|
||||
String url = etr.getURL();
|
||||
if(url == null) {
|
||||
throw new JSONException("assetsURI is missing a url!");
|
||||
}
|
||||
configEPKFiles[i] = new EPKFileEntry(url, etr.getPath(""));
|
||||
}
|
||||
}
|
||||
|
||||
configLocalesFolder = eaglercraftOpts.optString("localesURI", "lang");
|
||||
configLocalesFolder = eaglercraftOpts.getLocalesURI("lang");
|
||||
if(configLocalesFolder.endsWith("/")) {
|
||||
configLocalesFolder = configLocalesFolder.substring(0, configLocalesFolder.length() - 1);
|
||||
}
|
||||
|
||||
((TeaVMClientConfigAdapter)TeaVMClientConfigAdapter.instance).loadJSON(eaglercraftOpts);
|
||||
crashScreenOptsDump = eaglercraftOpts.toString();
|
||||
((TeaVMClientConfigAdapter)TeaVMClientConfigAdapter.instance).loadNative(eaglercraftOpts);
|
||||
|
||||
systemOut.println("ClientMain: [INFO] configuration was successful");
|
||||
}catch(Throwable t) {
|
||||
@ -192,9 +193,9 @@ public class ClientMain {
|
||||
}
|
||||
|
||||
@JSBody(params = {}, script = "if(typeof window.eaglercraftXOpts === \"undefined\") {return null;}"
|
||||
+ "else if(typeof window.eaglercraftXOpts === \"string\") {return window.eaglercraftXOpts;}"
|
||||
+ "else {return JSON.stringify(window.eaglercraftXOpts);}")
|
||||
private static native String getEaglerXOpts();
|
||||
+ "else if(typeof window.eaglercraftXOpts === \"string\") {return JSON.parse(window.eaglercraftXOpts);}"
|
||||
+ "else {return window.eaglercraftXOpts;}")
|
||||
private static native JSObject getEaglerXOpts();
|
||||
|
||||
public static class EPKFileEntry {
|
||||
|
||||
@ -207,18 +208,6 @@ public class ClientMain {
|
||||
}
|
||||
}
|
||||
|
||||
private static EPKFileEntry parseEntry(JSONObject obj) {
|
||||
String url = obj.getString("url");
|
||||
String path = obj.optString("path", "");
|
||||
if(url.length() > 128) {
|
||||
obj.put("url", url.substring(0, 128) + " ... ");
|
||||
}
|
||||
if(path == null) {
|
||||
path = "";
|
||||
}
|
||||
return new EPKFileEntry(url, path);
|
||||
}
|
||||
|
||||
public static String configRootElementId = null;
|
||||
public static HTMLElement configRootElement = null;
|
||||
public static EPKFileEntry[] configEPKFiles = null;
|
||||
@ -269,7 +258,7 @@ public class ClientMain {
|
||||
str.append(addWebGLToCrash());
|
||||
str.append('\n');
|
||||
str.append("window.eaglercraftXOpts = ");
|
||||
str.append(crashScreenOptsDump).append('\n');
|
||||
str.append(TeaVMClientConfigAdapter.instance.toString()).append('\n');
|
||||
str.append('\n');
|
||||
str.append("currentTime = ");
|
||||
str.append(EagRuntime.fixDateFormat(new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z")).format(new Date())).append('\n');
|
||||
|
@ -10,8 +10,15 @@ import net.lax1dude.eaglercraft.v1_8.ThreadLocalRandom;
|
||||
import net.lax1dude.eaglercraft.v1_8.sp.relay.RelayManager;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSObject;
|
||||
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.IClientConfigAdapter;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsRelay;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsRelaysArray;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsRoot;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsServer;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.teavm.opts.JSEaglercraftXOptsServersArray;
|
||||
import net.lax1dude.eaglercraft.v1_8.sp.relay.RelayEntry;
|
||||
|
||||
/**
|
||||
@ -39,7 +46,7 @@ public class TeaVMClientConfigAdapter implements IClientConfigAdapter {
|
||||
private String serverToJoin = null;
|
||||
private String worldsDB = "worlds";
|
||||
private String resourcePacksDB = "resourcePacks";
|
||||
private JSONObject originalEaglercraftOpts;
|
||||
private JSONObject integratedServerOpts;
|
||||
private boolean checkShaderGLErrors = false;
|
||||
private boolean demoMode = EaglercraftVersion.forceDemoMode;
|
||||
private boolean isAllowUpdateSvc = EaglercraftVersion.enableUpdateService;
|
||||
@ -51,8 +58,92 @@ public class TeaVMClientConfigAdapter implements IClientConfigAdapter {
|
||||
private boolean checkRelaysForUpdates = false;
|
||||
private boolean enableSignatureBadge = false;
|
||||
|
||||
public void loadNative(JSObject jsObject) {
|
||||
integratedServerOpts = new JSONObject();
|
||||
JSEaglercraftXOptsRoot eaglercraftXOpts = (JSEaglercraftXOptsRoot)jsObject;
|
||||
|
||||
defaultLocale = eaglercraftXOpts.getLang("en_US");
|
||||
serverToJoin = eaglercraftXOpts.getJoinServer(null);
|
||||
worldsDB = eaglercraftXOpts.getWorldsDB("worlds");
|
||||
resourcePacksDB = eaglercraftXOpts.getResourcePacksDB("resourcePacks");
|
||||
checkShaderGLErrors = eaglercraftXOpts.getCheckShaderGLErrors(false);
|
||||
demoMode = EaglercraftVersion.forceDemoMode || eaglercraftXOpts.getDemoMode(false);
|
||||
isAllowUpdateSvc = EaglercraftVersion.enableUpdateService && !demoMode && eaglercraftXOpts.getAllowUpdateSvc(true);
|
||||
isAllowUpdateDL = EaglercraftVersion.enableUpdateService && !demoMode && eaglercraftXOpts.getAllowUpdateDL(true);
|
||||
isEnableDownloadOfflineButton = eaglercraftXOpts.getEnableDownloadOfflineButton(true);
|
||||
downloadOfflineButtonLink = eaglercraftXOpts.getDownloadOfflineButtonLink(null);
|
||||
useSpecialCursors = eaglercraftXOpts.getHtml5CursorSupport(false);
|
||||
logInvalidCerts = EaglercraftVersion.enableUpdateService && !demoMode && eaglercraftXOpts.getLogInvalidCerts(false);
|
||||
enableSignatureBadge = eaglercraftXOpts.getEnableSignatureBadge(false);
|
||||
|
||||
integratedServerOpts.put("worldsDB", worldsDB);
|
||||
integratedServerOpts.put("demoMode", demoMode);
|
||||
integratedServerOpts.put("lang", defaultLocale);
|
||||
integratedServerOpts.put("allowUpdateSvc", isAllowUpdateSvc);
|
||||
integratedServerOpts.put("allowUpdateDL", isAllowUpdateDL);
|
||||
|
||||
JSEaglercraftXOptsServersArray serversArray = eaglercraftXOpts.getServers();
|
||||
if(serversArray != null) {
|
||||
for(int i = 0, l = serversArray.getLength(); i < l; ++i) {
|
||||
JSEaglercraftXOptsServer serverEntry = serversArray.get(i);
|
||||
String serverAddr = serverEntry.getAddr();
|
||||
if(serverAddr != null) {
|
||||
String serverName = serverEntry.getName("Default Server #" + i);
|
||||
defaultServers.add(new DefaultServer(serverName, serverAddr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JSEaglercraftXOptsRelaysArray relaysArray = eaglercraftXOpts.getRelays();
|
||||
if(relaysArray != null) {
|
||||
boolean gotAPrimary = false;
|
||||
for(int i = 0, l = relaysArray.getLength(); i < l; ++i) {
|
||||
JSEaglercraftXOptsRelay relay = relaysArray.get(i);
|
||||
String addr = relay.getAddr();
|
||||
if(addr != null) {
|
||||
boolean p = relay.getPrimary();
|
||||
if(p) {
|
||||
if(gotAPrimary) {
|
||||
p = false;
|
||||
}else {
|
||||
gotAPrimary = true;
|
||||
}
|
||||
}
|
||||
relays.add(new RelayEntry(relay.getAddr(), relay.getComment("Default Relay #" + i), p));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boolean officialUpdates = !demoMode && EaglercraftVersion.updateBundlePackageName.equals("net.lax1dude.eaglercraft.v1_8.client");
|
||||
if (relays.size() <= 0) {
|
||||
int choice = ThreadLocalRandom.current().nextInt(3);
|
||||
relays.add(new RelayEntry("wss://relay.deev.is/", "lax1dude relay #1", choice == 0));
|
||||
relays.add(new RelayEntry("wss://relay.lax1dude.net/", "lax1dude relay #2", choice == 1));
|
||||
relays.add(new RelayEntry("wss://relay.shhnowisnottheti.me/", "ayunami relay #1", choice == 2));
|
||||
checkRelaysForUpdates = !demoMode && eaglercraftXOpts.getCheckRelaysForUpdates(officialUpdates);
|
||||
}else {
|
||||
if(officialUpdates) {
|
||||
for(int i = 0, l = relays.size(); i < l; ++i) {
|
||||
String addr = relays.get(i).address;
|
||||
if(!addr.contains("deev.is") && !addr.contains("lax1dude.net") && !addr.contains("shhnowisnottheti.me")) {
|
||||
officialUpdates = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
checkRelaysForUpdates = !demoMode && eaglercraftXOpts.getCheckRelaysForUpdates(officialUpdates);
|
||||
}
|
||||
|
||||
RelayManager.relayManager.load(EagRuntime.getStorage("r"));
|
||||
|
||||
if (RelayManager.relayManager.count() <= 0) {
|
||||
RelayManager.relayManager.loadDefaults();
|
||||
RelayManager.relayManager.save();
|
||||
}
|
||||
}
|
||||
|
||||
public void loadJSON(JSONObject eaglercraftOpts) {
|
||||
originalEaglercraftOpts = eaglercraftOpts;
|
||||
integratedServerOpts = eaglercraftOpts;
|
||||
defaultLocale = eaglercraftOpts.optString("lang", "en_US");
|
||||
serverToJoin = eaglercraftOpts.optString("joinServer", null);
|
||||
worldsDB = eaglercraftOpts.optString("worldsDB", "worlds");
|
||||
@ -67,7 +158,7 @@ public class TeaVMClientConfigAdapter implements IClientConfigAdapter {
|
||||
isEnableDownloadOfflineButton = eaglercraftOpts.optBoolean("enableDownloadOfflineButton", true);
|
||||
downloadOfflineButtonLink = eaglercraftOpts.optString("downloadOfflineButtonLink", null);
|
||||
useSpecialCursors = eaglercraftOpts.optBoolean("html5CursorSupport", false);
|
||||
logInvalidCerts = !demoMode && eaglercraftOpts.optBoolean("logInvalidCerts", false);
|
||||
logInvalidCerts = EaglercraftVersion.enableUpdateService && !demoMode && eaglercraftOpts.optBoolean("logInvalidCerts", false);
|
||||
enableSignatureBadge = eaglercraftOpts.optBoolean("enableSignatureBadge", false);
|
||||
JSONArray serversArray = eaglercraftOpts.optJSONArray("servers");
|
||||
if(serversArray != null) {
|
||||
@ -152,8 +243,8 @@ public class TeaVMClientConfigAdapter implements IClientConfigAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject dumpConfig() {
|
||||
return originalEaglercraftOpts;
|
||||
public JSONObject getIntegratedServerOpts() {
|
||||
return integratedServerOpts;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -211,4 +302,42 @@ public class TeaVMClientConfigAdapter implements IClientConfigAdapter {
|
||||
return enableSignatureBadge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("lang", defaultLocale);
|
||||
jsonObject.put("joinServer", serverToJoin);
|
||||
jsonObject.put("worldsDB", worldsDB);
|
||||
jsonObject.put("resourcePacksDB", resourcePacksDB);
|
||||
jsonObject.put("checkShaderGLErrors", checkShaderGLErrors);
|
||||
jsonObject.put("demoMode", demoMode);
|
||||
jsonObject.put("allowUpdateSvc", isAllowUpdateSvc);
|
||||
jsonObject.put("allowUpdateDL", isAllowUpdateDL);
|
||||
jsonObject.put("enableDownloadOfflineButton", isEnableDownloadOfflineButton);
|
||||
jsonObject.put("downloadOfflineButtonLink", downloadOfflineButtonLink);
|
||||
jsonObject.put("html5CursorSupport", useSpecialCursors);
|
||||
jsonObject.put("logInvalidCerts", logInvalidCerts);
|
||||
jsonObject.put("checkRelaysForUpdates", checkRelaysForUpdates);
|
||||
jsonObject.put("enableSignatureBadge", enableSignatureBadge);
|
||||
JSONArray serversArr = new JSONArray();
|
||||
for(int i = 0, l = defaultServers.size(); i < l; ++i) {
|
||||
DefaultServer srv = defaultServers.get(i);
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put("addr", srv.addr);
|
||||
obj.put("name", srv.name);
|
||||
serversArr.put(obj);
|
||||
}
|
||||
jsonObject.put("servers", serversArr);
|
||||
JSONArray relaysArr = new JSONArray();
|
||||
for(int i = 0, l = relays.size(); i < l; ++i) {
|
||||
RelayEntry rl = relays.get(i);
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put("addr", rl.address);
|
||||
obj.put("comment", rl.comment);
|
||||
obj.put("primary", rl.primary);
|
||||
relaysArr.put(obj);
|
||||
}
|
||||
jsonObject.put("relays", relaysArr);
|
||||
return jsonObject.toString();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,29 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSObject;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public abstract class JSEaglercraftXOptsAssetsURI implements JSObject {
|
||||
|
||||
@JSBody(script = "return (typeof this.url === \"string\") ? this.url : null;")
|
||||
public native String getURL();
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.path === \"string\") ? this.path : def;")
|
||||
public native String getPath(String defaultValue);
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSIndexer;
|
||||
import org.teavm.jso.JSObject;
|
||||
import org.teavm.jso.JSProperty;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public interface JSEaglercraftXOptsAssetsURIsArray extends JSObject {
|
||||
|
||||
@JSIndexer
|
||||
JSEaglercraftXOptsAssetsURI get(int idx);
|
||||
|
||||
@JSProperty
|
||||
int getLength();
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSObject;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public abstract class JSEaglercraftXOptsRelay implements JSObject {
|
||||
|
||||
@JSBody(script = "return (typeof this.addr === \"string\") ? this.addr : null;")
|
||||
public native String getAddr();
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.comment === \"string\") ? this.comment : def;")
|
||||
public native String getComment(String defaultValue);
|
||||
|
||||
@JSBody(script = "return (typeof this.primary === \"boolean\") ? this.primary : false;")
|
||||
public native boolean getPrimary();
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSIndexer;
|
||||
import org.teavm.jso.JSObject;
|
||||
import org.teavm.jso.JSProperty;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public interface JSEaglercraftXOptsRelaysArray extends JSObject {
|
||||
|
||||
@JSIndexer
|
||||
JSEaglercraftXOptsRelay get(int idx);
|
||||
|
||||
@JSProperty
|
||||
int getLength();
|
||||
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSObject;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public abstract class JSEaglercraftXOptsRoot implements JSObject {
|
||||
|
||||
@JSBody(script = "return (typeof this.container === \"string\") ? this.container : null;")
|
||||
public native String getContainer();
|
||||
|
||||
@JSBody(script = "return (typeof this.assetsURI === \"string\") ? this.assetsURI : null;")
|
||||
public native String getAssetsURI();
|
||||
|
||||
@JSBody(script = "return (typeof this.assetsURI === \"object\") ? this.assetsURI : null;")
|
||||
public native JSEaglercraftXOptsAssetsURIsArray getAssetsURIArray();
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.lang === \"string\") ? this.lang : def;")
|
||||
public native String getLang(String defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.joinServer === \"string\") ? this.joinServer : def;")
|
||||
public native String getJoinServer(String defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.localesURI === \"string\") ? this.localesURI : def;")
|
||||
public native String getLocalesURI(String defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.worldsDB === \"string\") ? this.worldsDB : def;")
|
||||
public native String getWorldsDB(String defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.resourcePacksDB === \"string\") ? this.resourcePacksDB : def;")
|
||||
public native String getResourcePacksDB(String defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.demoMode === \"boolean\") ? this.demoMode : def;")
|
||||
public native boolean getDemoMode(boolean defaultValue);
|
||||
|
||||
@JSBody(script = "return (typeof this.servers === \"object\") ? this.servers : null;")
|
||||
public native JSEaglercraftXOptsServersArray getServers();
|
||||
|
||||
@JSBody(script = "return (typeof this.relays === \"object\") ? this.relays : null;")
|
||||
public native JSEaglercraftXOptsRelaysArray getRelays();
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.checkShaderGLErrors === \"boolean\") ? this.checkShaderGLErrors : def;")
|
||||
public native boolean getCheckShaderGLErrors(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.enableDownloadOfflineButton === \"boolean\") ? this.enableDownloadOfflineButton : def;")
|
||||
public native boolean getEnableDownloadOfflineButton(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.downloadOfflineButtonLink === \"string\") ? this.downloadOfflineButtonLink : def;")
|
||||
public native String getDownloadOfflineButtonLink(String defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.html5CursorSupport === \"boolean\") ? this.html5CursorSupport : def;")
|
||||
public native boolean getHtml5CursorSupport(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.allowUpdateSvc === \"boolean\") ? this.allowUpdateSvc : def;")
|
||||
public native boolean getAllowUpdateSvc(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.allowUpdateDL === \"boolean\") ? this.allowUpdateDL : def;")
|
||||
public native boolean getAllowUpdateDL(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.logInvalidCerts === \"boolean\") ? this.logInvalidCerts : def;")
|
||||
public native boolean getLogInvalidCerts(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.enableSignatureBadge === \"boolean\") ? this.enableSignatureBadge : def;")
|
||||
public native boolean getEnableSignatureBadge(boolean defaultValue);
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.checkRelaysForUpdates === \"boolean\") ? this.checkRelaysForUpdates : def;")
|
||||
public native boolean getCheckRelaysForUpdates(boolean defaultValue);
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSObject;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public abstract class JSEaglercraftXOptsServer implements JSObject {
|
||||
|
||||
@JSBody(script = "return (typeof this.addr === \"string\") ? this.addr : null;")
|
||||
public native String getAddr();
|
||||
|
||||
@JSBody(params = { "def" }, script = "return (typeof this.name === \"string\") ? this.name : def;")
|
||||
public native String getName(String defaultValue);
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.internal.teavm.opts;
|
||||
|
||||
import org.teavm.jso.JSIndexer;
|
||||
import org.teavm.jso.JSObject;
|
||||
import org.teavm.jso.JSProperty;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
public interface JSEaglercraftXOptsServersArray extends JSObject {
|
||||
|
||||
@JSIndexer
|
||||
JSEaglercraftXOptsServer get(int idx);
|
||||
|
||||
@JSProperty
|
||||
int getLength();
|
||||
|
||||
}
|
@ -191,7 +191,7 @@ public class ClientPlatformSingleplayer {
|
||||
}
|
||||
});
|
||||
registerPacketHandler(workerObj, new WorkerBinaryPacketHandlerImpl());
|
||||
sendWorkerStartPacket(workerObj, PlatformRuntime.getClientConfigAdapter().dumpConfig().toString());
|
||||
sendWorkerStartPacket(workerObj, PlatformRuntime.getClientConfigAdapter().getIntegratedServerOpts().toString());
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user