Skip to content

Commit

Permalink
Fix certain user-configured options being overwritten incorrectly due…
Browse files Browse the repository at this point in the history
… to validators. (MinecraftForge#8780)
  • Loading branch information
XFactHD authored Jun 28, 2022
1 parent be72754 commit bb03b1a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
28 changes: 27 additions & 1 deletion patches/minecraft/net/minecraft/client/Options.java.patch
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@
this.f_92060_ = p_92138_;
this.f_92110_ = new File(p_92139_, "options.txt");
boolean flag = p_92138_.m_91103_();
@@ -887,10 +_,14 @@
@@ -886,11 +_,20 @@
p_168428_.m_213982_("chatPreview", this.f_231796_);
p_168428_.m_213982_("onlyShowSecureChat", this.f_231798_);

+ processOptionsForge(p_168428_);
+ }
+ // FORGE: split off to allow reloading options after mod loading is done
+ private void processOptionsForge(Options.FieldAccess p_168428_)
+ {
for(KeyMapping keymapping : this.f_92059_) {
- String s = keymapping.m_90865_();
+ String s = keymapping.m_90865_() + (keymapping.getKeyModifier() != net.minecraftforge.client.settings.KeyModifier.NONE ? ":" + keymapping.getKeyModifier() : "");
Expand All @@ -35,6 +41,26 @@
}
}

@@ -911,6 +_,9 @@
}

public void m_92140_() {
+ this.load(false);
+ }
+ public void load(boolean limited) {
try {
if (!this.f_92110_.exists()) {
return;
@@ -955,7 +_,8 @@
}
}

- this.m_168427_(new Options.FieldAccess() {
+ java.util.function.Consumer<FieldAccess> processor = limited ? this::processOptionsForge : this::m_168427_;
+ processor.accept(new Options.FieldAccess() {
@Nullable
private String m_168458_(String p_168459_) {
return compoundtag1.m_128441_(p_168459_) ? compoundtag1.m_128461_(p_168459_) : null;
@@ -1058,6 +_,7 @@
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ private static void finishModLoading(ModWorkManager.DrivenExecutor syncExecutor,
loading = false;
loadingComplete = true;
// reload game settings on main thread
syncExecutor.execute(()->mc.options.load());
syncExecutor.execute(()->mc.options.load(true));
}

public static VersionChecker.Status checkForUpdates()
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/forge.exc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
net/minecraft/advancements/Advancement$Builder.fromJson(Lcom/google/gson/JsonObject;Lnet/minecraft/advancements/critereon/DeserializationContext;Lnet/minecraftforge/common/crafting/conditions/ICondition$IContext;)Lnet/minecraft/advancements/Advancement$Builder;=|p_138381_,p_138382_,context
net/minecraft/client/Options.processOptionsForge(Lnet/minecraft/client/Options$FieldAccess;)V=|p_168428_
net/minecraft/client/gui/screens/MenuScreens.getScreenFactory(Lnet/minecraft/world/inventory/MenuType;Lnet/minecraft/client/Minecraft;ILnet/minecraft/network/chat/Component;)Ljava/util/Optional;=|p_96202_,p_96203_,p_96204_,p_96205_
net/minecraft/client/gui/screens/worldselection/WorldOpenFlows.doLoadLevel(Lnet/minecraft/client/gui/screens/Screen;Ljava/lang/String;ZZZ)V=|p_233146_,p_233147_,p_233148_,p_233149_,confirmExperimentalWarning
net/minecraft/client/renderer/ScreenEffectRenderer.getOverlayBlock(Lnet/minecraft/world/entity/player/Player;)Lorg/apache/commons/lang3/tuple/Pair;=|p_110717_
Expand Down

0 comments on commit bb03b1a

Please sign in to comment.