Skip to content

Commit 901f364

Browse files
committed
Register Continuity options to Sodium video settings screen
1 parent 931321b commit 901f364

File tree

6 files changed

+84
-3
lines changed

6 files changed

+84
-3
lines changed

build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ repositories {
3131
name 'Shedaniel'
3232
url 'https://maven.shedaniel.me'
3333
}
34+
maven {
35+
name 'CaffeineMC'
36+
url 'https://maven.caffeinemc.net/releases'
37+
}
3438
}
3539

3640
dependencies {
@@ -45,6 +49,9 @@ dependencies {
4549
modImplementation("com.terraformersmc:modmenu:${modmenu_version}") {
4650
exclude group: 'net.fabricmc.fabric-api'
4751
}
52+
53+
modCompileOnly "net.caffeinemc:sodium-fabric-api:${sodium_version}"
54+
// modRuntimeOnly "net.caffeinemc:sodium-fabric:${sodium_version}"
4855
}
4956

5057
processResources {

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ archives_base_name = continuity
1616

1717
# Dependencies
1818
fabric_version = 0.140.0+1.21.11
19-
modmenu_version = 17.0.0-alpha.1
19+
modmenu_version = 17.0.0-beta.1
20+
sodium_version = 0.8.2+mc1.21.11

src/main/java/me/pepperbell/continuity/client/config/ContinuityConfigScreen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ private void saveValues() {
8383
}
8484
}
8585

86-
private static String getTranslationKey(String optionKey) {
86+
static String getTranslationKey(String optionKey) {
8787
return "options.continuity." + optionKey;
8888
}
8989

90-
private static String getTooltipKey(String translationKey) {
90+
static String getTooltipKey(String translationKey) {
9191
return translationKey + ".tooltip";
9292
}
9393

src/main/java/me/pepperbell/continuity/client/config/Option.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
public interface Option<T> {
88
String getKey();
99

10+
T getDefault();
11+
1012
T get();
1113

1214
void set(T value);
@@ -17,10 +19,12 @@ public interface Option<T> {
1719

1820
abstract class BaseOption<T> implements Option<T> {
1921
protected final String key;
22+
protected T defaultValue;
2023
protected T value;
2124

2225
public BaseOption(String key, T defaultValue) {
2326
this.key = key;
27+
this.defaultValue = defaultValue;
2428
value = defaultValue;
2529
}
2630

@@ -29,6 +33,11 @@ public String getKey() {
2933
return key;
3034
}
3135

36+
@Override
37+
public T getDefault() {
38+
return defaultValue;
39+
}
40+
3241
@Override
3342
public T get() {
3443
return value;
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package me.pepperbell.continuity.client.config;
2+
3+
import me.pepperbell.continuity.client.ContinuityClient;
4+
import net.caffeinemc.mods.sodium.api.config.ConfigEntryPoint;
5+
import net.caffeinemc.mods.sodium.api.config.option.OptionBinding;
6+
import net.caffeinemc.mods.sodium.api.config.option.OptionFlag;
7+
import net.caffeinemc.mods.sodium.api.config.structure.BooleanOptionBuilder;
8+
import net.caffeinemc.mods.sodium.api.config.structure.ConfigBuilder;
9+
import net.minecraft.text.Text;
10+
11+
public class SodiumConfigImpl implements ConfigEntryPoint {
12+
@Override
13+
public void registerConfigLate(ConfigBuilder builder) {
14+
ContinuityConfig config = ContinuityConfig.INSTANCE;
15+
16+
builder.registerOwnModOptions()
17+
.setNonTintedIcon(ContinuityClient.asId("icon.png"))
18+
.addPage(builder.createOptionPage()
19+
.setName(Text.translatable(ContinuityConfigScreen.getTranslationKey("title")))
20+
.addOption(asSodiumOption(builder, config, config.connectedTextures)
21+
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD))
22+
.addOption(asSodiumOption(builder, config, config.emissiveTextures)
23+
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD))
24+
.addOption(asSodiumOption(builder, config, config.customBlockLayers)
25+
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)));
26+
}
27+
28+
private static BooleanOptionBuilder asSodiumOption(ConfigBuilder builder, ContinuityConfig config, Option.BooleanOption option) {
29+
String translationKey = ContinuityConfigScreen.getTranslationKey(option.getKey());
30+
Text text = Text.translatable(translationKey);
31+
Text tooltipText = Text.translatable(ContinuityConfigScreen.getTooltipKey(translationKey));
32+
33+
return builder.createBooleanOption(ContinuityClient.asId(option.getKey()))
34+
.setName(text)
35+
.setTooltip(tooltipText)
36+
.setDefaultValue(option.getDefault())
37+
.setBinding(new OptionBindingImpl<>(option))
38+
.setStorageHandler(config::save);
39+
}
40+
41+
private static class OptionBindingImpl<T> implements OptionBinding<T> {
42+
private final Option<T> option;
43+
44+
public OptionBindingImpl(Option<T> option) {
45+
this.option = option;
46+
}
47+
48+
@Override
49+
public void save(T value) {
50+
option.set(value);
51+
}
52+
53+
@Override
54+
public T load() {
55+
return option.get();
56+
}
57+
}
58+
}

src/main/resources/fabric.mod.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
],
2525
"modmenu": [
2626
"me.pepperbell.continuity.client.config.ModMenuApiImpl"
27+
],
28+
"sodium:config_api_user": [
29+
"me.pepperbell.continuity.client.config.SodiumConfigImpl"
2730
]
2831
},
2932
"mixins": [
@@ -34,6 +37,9 @@
3437
"minecraft": ">=1.21.11",
3538
"fabric-api": ">=0.140.0"
3639
},
40+
"breaks": {
41+
"sodium": "<0.8.2"
42+
},
3743

3844
"custom": {
3945
"modmenu": {

0 commit comments

Comments
 (0)