Prevent mixin.perf suboptions from defaulting to on if an explicit

option is not added
This commit is contained in:
embeddedt 2023-07-10 19:13:01 -04:00
parent 4ea7b864a8
commit 546d1df48f
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
2 changed files with 13 additions and 2 deletions

View File

@ -97,7 +97,11 @@ public class ModernFixMixinPlugin implements IMixinConfigPlugin {
Option option = instance.config.getEffectiveOptionForMixin(mixin); Option option = instance.config.getEffectiveOptionForMixin(mixin);
if (option == null) { if (option == null) {
this.logger.error("No rules matched mixin '{}', treating as foreign and disabling!", mixin); String msg = "No rules matched mixin '{}', treating as foreign and disabling!";
if(ModernFixPlatformHooks.isDevEnv())
this.logger.error(msg, mixin);
else
this.logger.debug(msg, mixin);
return false; return false;
} }

View File

@ -128,10 +128,17 @@ public class ModernFixEarlyConfig {
List<String> mixinOptionNames = dotSplitter.splitToList(mixinClassName); List<String> mixinOptionNames = dotSplitter.splitToList(mixinClassName);
StringBuilder optionBuilder = new StringBuilder(mixinClassName.length()); StringBuilder optionBuilder = new StringBuilder(mixinClassName.length());
optionBuilder.append("mixin"); optionBuilder.append("mixin");
// mixin.core, mixin.safety can be top-level, everything else must have a subcategory
boolean allowTopLevel;
if(mixinOptionNames.size() > 0)
allowTopLevel = mixinOptionNames.get(0).equals("core") || mixinOptionNames.get(0).equals("safety");
else
allowTopLevel = false;
for(int i = 0; i < mixinOptionNames.size() - 1; i++) { for(int i = 0; i < mixinOptionNames.size() - 1; i++) {
optionBuilder.append('.'); optionBuilder.append('.');
optionBuilder.append(mixinOptionNames.get(i)); optionBuilder.append(mixinOptionNames.get(i));
mixinOptions.add(optionBuilder.toString()); if(i > 0 || allowTopLevel)
mixinOptions.add(optionBuilder.toString());
} }
} }
} catch(IOException e) { } catch(IOException e) {