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:
@ -10,7 +10,7 @@ public class EaglercraftVersion {
|
||||
/// Customize these to fit your fork:
|
||||
|
||||
public static final String projectForkName = "EaglercraftX";
|
||||
public static final String projectForkVersion = "u26";
|
||||
public static final String projectForkVersion = "u27";
|
||||
public static final String projectForkVendor = "lax1dude";
|
||||
|
||||
public static final String projectForkURL = "https://gitlab.com/lax1dude/eaglercraftx-1.8";
|
||||
@ -20,7 +20,7 @@ public class EaglercraftVersion {
|
||||
public static final String projectOriginName = "EaglercraftX";
|
||||
public static final String projectOriginAuthor = "lax1dude";
|
||||
public static final String projectOriginRevision = "1.8";
|
||||
public static final String projectOriginVersion = "u26";
|
||||
public static final String projectOriginVersion = "u27";
|
||||
|
||||
public static final String projectOriginURL = "https://gitlab.com/lax1dude/eaglercraftx-1.8"; // rest in peace
|
||||
|
||||
@ -31,7 +31,7 @@ public class EaglercraftVersion {
|
||||
public static final boolean enableUpdateService = true;
|
||||
|
||||
public static final String updateBundlePackageName = "net.lax1dude.eaglercraft.v1_8.client";
|
||||
public static final int updateBundlePackageVersionInt = 26;
|
||||
public static final int updateBundlePackageVersionInt = 27;
|
||||
|
||||
public static final String updateLatestLocalStorageKey = "latestUpdate_" + updateBundlePackageName;
|
||||
|
||||
|
@ -44,7 +44,7 @@ public interface IClientConfigAdapter {
|
||||
|
||||
String getResourcePacksDB();
|
||||
|
||||
JSONObject dumpConfig();
|
||||
JSONObject getIntegratedServerOpts();
|
||||
|
||||
List<RelayEntry> getRelays();
|
||||
|
||||
|
@ -0,0 +1,24 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.minecraft;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2022 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 EntityConstructor<T> {
|
||||
|
||||
T createEntity(World world);
|
||||
|
||||
}
|
@ -1,8 +1,10 @@
|
||||
package net.lax1dude.eaglercraft.v1_8.update;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.lax1dude.eaglercraft.v1_8.EagRuntime;
|
||||
@ -36,8 +38,30 @@ public class UpdateService {
|
||||
|
||||
private static UpdateCertificate latestUpdateFound = null;
|
||||
private static final Set<UpdateCertificate> availableUpdates = new HashSet();
|
||||
private static final Set<RawKnownCertHolder> fastUpdateKnownCheckSet = new HashSet();
|
||||
private static final Set<UpdateCertificate> dismissedUpdates = new HashSet();
|
||||
|
||||
private static class RawKnownCertHolder {
|
||||
|
||||
private final byte[] data;
|
||||
private final int hashcode;
|
||||
private final long age;
|
||||
|
||||
public RawKnownCertHolder(byte[] data) {
|
||||
this.data = data;
|
||||
this.hashcode = Arrays.hashCode(data);
|
||||
this.age = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return hashcode;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
return o != null && (o == this || ((o instanceof RawKnownCertHolder) && Arrays.equals(((RawKnownCertHolder)o).data, data)));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean supported() {
|
||||
return EaglercraftVersion.enableUpdateService && EagRuntime.getConfiguration().allowUpdateSvc() && PlatformUpdateSvc.supported();
|
||||
}
|
||||
@ -102,6 +126,16 @@ public class UpdateService {
|
||||
if (EagRuntime.getConfiguration().allowUpdateDL()) {
|
||||
synchronized(availableUpdates) {
|
||||
try {
|
||||
if(certificateData.length > 32767) {
|
||||
throw new CertificateInvalidException("Certificate is too large! (" + certificateData.length + " bytes)");
|
||||
}
|
||||
if(!fastUpdateKnownCheckSet.add(new RawKnownCertHolder(certificateData))) {
|
||||
if (EagRuntime.getConfiguration().isLogInvalidCerts()) {
|
||||
logger.info("Ignoring {} byte certificate that has already been processed", certificateData.length);
|
||||
}
|
||||
freeMemory();
|
||||
return;
|
||||
}
|
||||
UpdateCertificate cert = UpdateCertificate.parseAndVerifyCertificate(certificateData);
|
||||
if (EaglercraftVersion.updateBundlePackageName.equalsIgnoreCase(cert.bundlePackageName)) {
|
||||
if (myUpdateCert == null || !Arrays.equals(cert.bundleDataHash, myUpdateCert.bundleDataHash)) {
|
||||
@ -140,6 +174,17 @@ public class UpdateService {
|
||||
}
|
||||
}
|
||||
|
||||
private static void freeMemory() {
|
||||
if(fastUpdateKnownCheckSet.size() > 127) {
|
||||
List<RawKnownCertHolder> lst = new ArrayList(fastUpdateKnownCheckSet);
|
||||
fastUpdateKnownCheckSet.clear();
|
||||
lst.sort((c1, c2) -> { return (int)(c2.age - c1.age); });
|
||||
for(int i = 0; i < 64; ++i) {
|
||||
fastUpdateKnownCheckSet.add(lst.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void startClientUpdateFrom(UpdateCertificate clientUpdate) {
|
||||
PlatformUpdateSvc.startClientUpdateFrom(clientUpdate);
|
||||
}
|
||||
|
Reference in New Issue
Block a user