diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLEnvironment.java b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLEnvironment.java index e3825d7e6..6d1336c5b 100644 --- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLEnvironment.java +++ b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLEnvironment.java @@ -31,6 +31,7 @@ public class FMLEnvironment public static final Dist dist = FMLLoader.getDist(); public static final String naming = FMLLoader.getNaming(); public static final boolean production = FMLLoader.isProduction() || System.getProperties().containsKey("production"); + public static final boolean secureJarsEnabled = FMLLoader.isSecureJarEnabled(); static void setupInteropEnvironment(IEnvironment environment) { environment.computePropertyIfAbsent(IEnvironment.Keys.NAMING.get(), v->naming); diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java index 4b252edb2..d833f0178 100644 --- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java +++ b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java @@ -302,4 +302,8 @@ public class FMLLoader public static boolean isProduction() { return production; } + + public static boolean isSecureJarEnabled() { + return Launcher.INSTANCE.environment().getProperty(IEnvironment.Keys.SECURED_JARS_ENABLED.get()).orElse(false); + } } diff --git a/src/main/java/net/minecraftforge/fml/client/gui/screen/ModListScreen.java b/src/main/java/net/minecraftforge/fml/client/gui/screen/ModListScreen.java index 8ea9572a2..7337dad7c 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/screen/ModListScreen.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/screen/ModListScreen.java @@ -31,7 +31,9 @@ import java.util.function.Function; import java.util.stream.Collectors; import com.mojang.blaze3d.matrix.MatrixStack; +import cpw.mods.modlauncher.Environment; import net.minecraft.util.text.*; +import net.minecraftforge.fml.loading.FMLEnvironment; import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -461,8 +463,12 @@ public class ModListScreen extends Screen lines.add(null); lines.add(selectedMod.getDescription()); lines.add(null); - lines.add(ForgeI18n.parseMessage("fml.menu.mods.info.signature", selectedMod.getOwningFile().getCodeSigningFingerprint().orElse(ForgeI18n.parseMessage("fml.menu.mods.info.signature.unsigned")))); - lines.add(ForgeI18n.parseMessage("fml.menu.mods.info.trust", selectedMod.getOwningFile().getTrustData().orElse(ForgeI18n.parseMessage("fml.menu.mods.info.trust.noauthority")))); + if (FMLEnvironment.secureJarsEnabled) { + lines.add(ForgeI18n.parseMessage("fml.menu.mods.info.signature", selectedMod.getOwningFile().getCodeSigningFingerprint().orElse(ForgeI18n.parseMessage("fml.menu.mods.info.signature.unsigned")))); + lines.add(ForgeI18n.parseMessage("fml.menu.mods.info.trust", selectedMod.getOwningFile().getTrustData().orElse(ForgeI18n.parseMessage("fml.menu.mods.info.trust.noauthority")))); + } else { + lines.add(ForgeI18n.parseMessage("fml.menu.mods.info.securejardisabled")); + } if ((vercheck.status == VersionChecker.Status.OUTDATED || vercheck.status == VersionChecker.Status.BETA_OUTDATED) && vercheck.changes.size() > 0) { diff --git a/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLFingerprintViolationEvent.java b/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLFingerprintViolationEvent.java new file mode 100644 index 000000000..6402371c5 --- /dev/null +++ b/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLFingerprintViolationEvent.java @@ -0,0 +1,57 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2020. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.fml.event.lifecycle; + +import java.io.File; +import java.util.Set; + +import com.google.common.collect.ImmutableSet; +import net.minecraftforge.fml.common.Mod; + + +/** + * DEPRECATED WITHOUT REPLACEMENT. REMOVE FROM YOUR CODE!!! + * IT HAS NEVER BEEN FIRED IN 1.13+ AND WILL NEVER FIRE AGAIN!!! + * FIRE.JPG FIRE.JPG FIRE.JPG + * DELET THIS + */ +@Deprecated +public class FMLFingerprintViolationEvent extends ModLifecycleEvent +{ + + private final boolean isDirectory; + private final Set fingerprints; + private final File source; + private final String expectedFingerprint; + + public FMLFingerprintViolationEvent(boolean isDirectory, File source, ImmutableSet fingerprints, String expectedFingerprint) + { + super(null); + this.isDirectory = isDirectory; + this.source = source; + this.fingerprints = fingerprints; + this.expectedFingerprint = expectedFingerprint; + } + + public boolean isDirectory() { return isDirectory; } + public Set getFingerprints() { return fingerprints; } + public File getSource() { return source; } + public String getExpectedFingerprint() { return expectedFingerprint; } +} diff --git a/src/main/resources/assets/forge/lang/en_us.json b/src/main/resources/assets/forge/lang/en_us.json index 9799bfd05..640805db8 100644 --- a/src/main/resources/assets/forge/lang/en_us.json +++ b/src/main/resources/assets/forge/lang/en_us.json @@ -14,6 +14,7 @@ "fml.menu.mods.info.authors":"Authors: {0}", "fml.menu.mods.info.displayurl":"Homepage: {0}", "fml.menu.mods.info.license":"License: {0}", + "fml.menu.mods.info.securejardisabled": "Secure mod features disabled, update JDK", "fml.menu.mods.info.signature":"Signature: {0}", "fml.menu.mods.info.signature.unsigned":"UNSIGNED", "fml.menu.mods.info.trust": "Trust: {0}",