43 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.util;
 | |
| 
 | |
| import java.util.function.Supplier;
 | |
| import org.apache.commons.lang3.ObjectUtils;
 | |
| 
 | |
| public record ModCheck(ModCheck.Confidence confidence, String description) {
 | |
| 	public static ModCheck identify(String vanillaBrandName, Supplier<String> brandNameGetter, String side, Class<?> signingClass) {
 | |
| 		String string = (String)brandNameGetter.get();
 | |
| 		if (!vanillaBrandName.equals(string)) {
 | |
| 			return new ModCheck(ModCheck.Confidence.DEFINITELY, side + " brand changed to '" + string + "'");
 | |
| 		} else {
 | |
| 			return signingClass.getSigners() == null
 | |
| 				? new ModCheck(ModCheck.Confidence.VERY_LIKELY, side + " jar signature invalidated")
 | |
| 				: new ModCheck(ModCheck.Confidence.PROBABLY_NOT, side + " jar signature and brand is untouched");
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public boolean shouldReportAsModified() {
 | |
| 		return this.confidence.shouldReportAsModified;
 | |
| 	}
 | |
| 
 | |
| 	public ModCheck merge(ModCheck other) {
 | |
| 		return new ModCheck(ObjectUtils.max(this.confidence, other.confidence), this.description + "; " + other.description);
 | |
| 	}
 | |
| 
 | |
| 	public String fullDescription() {
 | |
| 		return this.confidence.description + " " + this.description;
 | |
| 	}
 | |
| 
 | |
| 	public static enum Confidence {
 | |
| 		PROBABLY_NOT("Probably not.", false),
 | |
| 		VERY_LIKELY("Very likely;", true),
 | |
| 		DEFINITELY("Definitely;", true);
 | |
| 
 | |
| 		final String description;
 | |
| 		final boolean shouldReportAsModified;
 | |
| 
 | |
| 		private Confidence(final String description, final boolean shouldReportAsModified) {
 | |
| 			this.description = description;
 | |
| 			this.shouldReportAsModified = shouldReportAsModified;
 | |
| 		}
 | |
| 	}
 | |
| }
 |