mirror of
https://github.com/AlmostReliable/almostunified.git
synced 2024-11-14 19:25:13 -05:00
add strict mode for duplicate removals
This commit is contained in:
parent
bc5d12155b
commit
17a7b4bdf6
3 changed files with 17 additions and 8 deletions
|
@ -16,12 +16,14 @@ public class DuplicationConfig extends Config {
|
||||||
private final LinkedHashMap<ResourceLocation, JsonCompare.CompareSettings> overrideRules;
|
private final LinkedHashMap<ResourceLocation, JsonCompare.CompareSettings> overrideRules;
|
||||||
private final Set<ResourceLocation> ignoreRecipeTypes;
|
private final Set<ResourceLocation> ignoreRecipeTypes;
|
||||||
private final Set<ResourceLocation> ignoreRecipes;
|
private final Set<ResourceLocation> ignoreRecipes;
|
||||||
|
private final boolean strictMode;
|
||||||
|
|
||||||
public DuplicationConfig(JsonCompare.CompareSettings defaultRules, LinkedHashMap<ResourceLocation, JsonCompare.CompareSettings> overrideRules, Set<ResourceLocation> ignoreRecipeTypes, Set<ResourceLocation> ignoreRecipes) {
|
public DuplicationConfig(JsonCompare.CompareSettings defaultRules, LinkedHashMap<ResourceLocation, JsonCompare.CompareSettings> overrideRules, Set<ResourceLocation> ignoreRecipeTypes, Set<ResourceLocation> ignoreRecipes, boolean strictMode) {
|
||||||
this.defaultRules = defaultRules;
|
this.defaultRules = defaultRules;
|
||||||
this.overrideRules = overrideRules;
|
this.overrideRules = overrideRules;
|
||||||
this.ignoreRecipeTypes = ignoreRecipeTypes;
|
this.ignoreRecipeTypes = ignoreRecipeTypes;
|
||||||
this.ignoreRecipes = ignoreRecipes;
|
this.ignoreRecipes = ignoreRecipes;
|
||||||
|
this.strictMode = strictMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean shouldIgnoreRecipe(RecipeLink recipe) {
|
public boolean shouldIgnoreRecipe(RecipeLink recipe) {
|
||||||
|
@ -32,11 +34,16 @@ public class DuplicationConfig extends Config {
|
||||||
return overrideRules.getOrDefault(type, defaultRules);
|
return overrideRules.getOrDefault(type, defaultRules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isStrictMode() {
|
||||||
|
return strictMode;
|
||||||
|
}
|
||||||
|
|
||||||
public static class Serializer extends Config.Serializer<DuplicationConfig> {
|
public static class Serializer extends Config.Serializer<DuplicationConfig> {
|
||||||
public static final String DEFAULT_DUPLICATE_RULES = "defaultDuplicateRules";
|
public static final String DEFAULT_DUPLICATE_RULES = "defaultDuplicateRules";
|
||||||
public static final String OVERRIDE_DUPLICATE_RULES = "overrideDuplicateRules";
|
public static final String OVERRIDE_DUPLICATE_RULES = "overrideDuplicateRules";
|
||||||
public static final String IGNORED_RECIPE_TYPES = "ignoredRecipeTypes";
|
public static final String IGNORED_RECIPE_TYPES = "ignoredRecipeTypes";
|
||||||
public static final String IGNORED_RECIPES = "ignoredRecipes";
|
public static final String IGNORED_RECIPES = "ignoredRecipes";
|
||||||
|
public static final String STRICT_MODE = "strictMode";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DuplicationConfig deserialize(JsonObject json) {
|
public DuplicationConfig deserialize(JsonObject json) {
|
||||||
|
@ -54,8 +61,9 @@ public class DuplicationConfig extends Config {
|
||||||
entry -> createCompareSet(entry.getValue().getAsJsonObject()),
|
entry -> createCompareSet(entry.getValue().getAsJsonObject()),
|
||||||
(a, b) -> b,
|
(a, b) -> b,
|
||||||
LinkedHashMap::new)), new LinkedHashMap<>());
|
LinkedHashMap::new)), new LinkedHashMap<>());
|
||||||
|
boolean strictMode = safeGet(() -> json.get(STRICT_MODE).getAsBoolean(), false);
|
||||||
|
|
||||||
return new DuplicationConfig(defaultRules, overrideRules, ignoreRecipeTypes, ignoreRecipes);
|
return new DuplicationConfig(defaultRules, overrideRules, ignoreRecipeTypes, ignoreRecipes, strictMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JsonCompare.CompareSettings defaultSet() {
|
private JsonCompare.CompareSettings defaultSet() {
|
||||||
|
@ -85,6 +93,7 @@ public class DuplicationConfig extends Config {
|
||||||
overrides.add(rl.toString(), compareSettings.serialize());
|
overrides.add(rl.toString(), compareSettings.serialize());
|
||||||
});
|
});
|
||||||
json.add(OVERRIDE_DUPLICATE_RULES, overrides);
|
json.add(OVERRIDE_DUPLICATE_RULES, overrides);
|
||||||
|
json.addProperty(STRICT_MODE, false);
|
||||||
|
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ public class RecipeLink {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selfDuplicate == null && otherDuplicate == null) {
|
if (selfDuplicate == null && otherDuplicate == null) {
|
||||||
RecipeLink compare = RecipeLink.compare(this, otherRecipe, compareSettings);
|
RecipeLink compare = compare(this, otherRecipe, compareSettings);
|
||||||
if (compare == null) {
|
if (compare == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,7 @@ public class RecipeLink {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (otherDuplicate != null) {
|
if (otherDuplicate != null) {
|
||||||
RecipeLink compare = RecipeLink.compare(this, otherDuplicate.getMaster(), compareSettings);
|
RecipeLink compare = compare(this, otherDuplicate.getMaster(), compareSettings);
|
||||||
if (compare == null) {
|
if (compare == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ public class RecipeLink {
|
||||||
}
|
}
|
||||||
|
|
||||||
// selfDuplicate != null
|
// selfDuplicate != null
|
||||||
RecipeLink compare = RecipeLink.compare(selfDuplicate.getMaster(), otherRecipe, compareSettings);
|
RecipeLink compare = compare(selfDuplicate.getMaster(), otherRecipe, compareSettings);
|
||||||
if (compare == null) {
|
if (compare == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,9 +111,9 @@ public class RecipeTransformer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (RecipeLink unifiedLink : unified) {
|
for (RecipeLink recipeLink : duplicationConfig.isStrictMode() ? recipeLinks : unified) {
|
||||||
if (handleDuplicate(unifiedLink, recipeLinks)) {
|
if (handleDuplicate(recipeLink, recipeLinks)) {
|
||||||
duplicates.add(unifiedLink.getDuplicateLink());
|
duplicates.add(recipeLink.getDuplicateLink());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue