forked from MeteorDevelopment/meteor-client
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathGenericSetting.java
More file actions
63 lines (49 loc) · 1.75 KB
/
Copy pathGenericSetting.java
File metadata and controls
63 lines (49 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
* Copyright (c) Meteor Development.
*/
package meteordevelopment.meteorclient.settings;
import meteordevelopment.meteorclient.gui.GuiTheme;
import meteordevelopment.meteorclient.gui.WidgetScreen;
import net.minecraft.nbt.NbtCompound;
import java.util.function.Consumer;
public class GenericSetting<T extends IGeneric<T>> extends Setting<T> {
public GenericSetting(String name, String description, T defaultValue, Consumer<T> onChanged, Consumer<Setting<T>> onModuleActivated, IVisible visible) {
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
}
public WidgetScreen createScreen(GuiTheme theme) {
return this.get().createScreen(theme, this);
}
@Override
public void resetImpl() {
if (value == null) value = defaultValue.copy();
value.set(defaultValue);
}
@Override
protected T parseImpl(String str) {
return defaultValue.copy();
}
@Override
protected boolean isValueValid(T value) {
return true;
}
@Override
public NbtCompound save(NbtCompound tag) {
tag.put("value", get().toTag());
return tag;
}
@Override
public T load(NbtCompound tag) {
get().fromTag(tag.getCompoundOrEmpty("value"));
return get();
}
public static class Builder<T extends IGeneric<T>> extends SettingBuilder<Builder<T>, T, GenericSetting<T>> {
public Builder() {
super(null);
}
@Override
public GenericSetting<T> build() {
return new GenericSetting<>(name, description, defaultValue, onChanged, onModuleActivated, visible);
}
}
}