Skip to content

Commit 28ce36e

Browse files
committed
better config system
1 parent d04ad64 commit 28ce36e

4 files changed

Lines changed: 167 additions & 73 deletions

File tree

src/main/java/com/falsepattern/falsetweaks/config/FalseTweaksGuiConfig.java

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,42 +26,64 @@
2626
import com.falsepattern.falsetweaks.Compat;
2727
import com.falsepattern.falsetweaks.Tags;
2828
import com.falsepattern.lib.config.ConfigException;
29-
import com.falsepattern.lib.config.SimpleGuiConfig;
29+
import com.falsepattern.lib.config.ConfigurationManager;
3030
import lombok.val;
3131

3232
import net.minecraft.client.gui.GuiScreen;
33+
import net.minecraft.client.resources.I18n;
34+
35+
import cpw.mods.fml.client.config.DummyConfigElement;
36+
import cpw.mods.fml.client.config.DummyConfigElement.DummyCategoryElement;
37+
import cpw.mods.fml.client.config.GuiConfig;
38+
import cpw.mods.fml.client.config.IConfigElement;
3339

3440
import java.util.ArrayList;
41+
import java.util.Collections;
42+
import java.util.List;
3543

36-
public class FalseTweaksGuiConfig extends SimpleGuiConfig {
44+
public class FalseTweaksGuiConfig extends GuiConfig {
3745
public FalseTweaksGuiConfig(GuiScreen parent) throws ConfigException {
38-
super(parent, Tags.MOD_ID, Tags.MOD_NAME, fetchConfigClasses());
46+
super(parent,
47+
getConfigElements(),
48+
Tags.MOD_ID,
49+
false,
50+
false,
51+
Tags.MOD_NAME + " Configuration"
52+
);
3953
}
4054

41-
private static Class<?>[] fetchConfigClasses() {
42-
val result = new ArrayList<Class<?>>();
43-
if (ModuleConfig.DYNAMIC_LIGHTS && !Compat.optiFineHasDynamicLights()) {
44-
result.add(DynamicLightsConfig.class);
55+
@SuppressWarnings({"rawtypes"})
56+
private static List<IConfigElement> getConfigElements() throws ConfigException {
57+
val result = new ArrayList<IConfigElement>();
58+
if (Compat.dynamicLightsPresent()) {
59+
result.add(category("dynlights", DynamicLightsConfig.class));
4560
}
4661
if (ModuleConfig.TRIANGULATOR()) {
47-
result.add(TriangulatorConfig.class);
62+
result.add(category("triangulator", TriangulatorConfig.class));
4863
}
4964
if (ModuleConfig.ITEM_RENDER_LISTS) {
50-
result.add(RenderListConfig.class);
65+
result.add(category("item_render_lists", RenderListConfig.class));
5166
}
5267
if (ModuleConfig.VOXELIZER) {
53-
result.add(VoxelizerConfig.class);
68+
result.add(category("voxelizer", VoxelizerConfig.class));
5469
}
5570
if (ModuleConfig.ADVANCED_PROFILER) {
56-
result.add(ProfilerConfig.class);
71+
result.add(category("profiler", ProfilerConfig.class));
5772
}
5873
if (ModuleConfig.BLOCK_LAYER_TRANSPARENCY_FIX) {
59-
result.add(TranslucentBlockLayersConfig.class);
74+
result.add(category("translucent_block_layers_fix", TranslucentBlockLayersConfig.class));
6075
}
6176
if (ModuleConfig.THREADED_CHUNK_UPDATES()) {
62-
result.add(OcclusionConfig.class);
63-
result.add(ThreadingConfig.class);
77+
result.add(category("occlusion", OcclusionConfig.class));
78+
result.add(category("threading", ThreadingConfig.class));
6479
}
65-
return result.toArray(new Class<?>[0]);
80+
return result;
81+
}
82+
83+
@SuppressWarnings({"rawtypes", "unchecked"})
84+
private static IConfigElement category(String name, Class<?> klass) throws ConfigException {
85+
return new DummyCategoryElement(name,
86+
"config.falsetweaks." + name + ".category",
87+
ConfigurationManager.getConfigElementsMulti(klass));
6688
}
6789
}

src/main/java/com/falsepattern/falsetweaks/config/ThreadingConfig.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class ThreadingConfig {
4141
public static int CHUNK_UPDATE_THREADS;
4242

4343
@Config.Comment("Disable this to use a slower, but more accurate thread safety check in the tessellator.")
44-
@Config.LangKey("config.falsetweaks.threading.fast_safety")
44+
@Config.LangKey("config.falsetweaks.threading.fastSafety")
4545
@Config.DefaultBoolean(true)
4646
public static boolean FAST_SAFETY_CHECKS;
4747

@@ -62,6 +62,7 @@ public class ThreadingConfig {
6262
@Config.LangKey("config.falsetweaks.threading.debug")
6363
@Config.DefaultBoolean(false)
6464
public static boolean EXTRA_DEBUG_INFO;
65+
6566
@Config.Comment("Classes added here will be automatically patched to use the threaded Tessellator.\n" +
6667
"FalseTweaks also includes an internal hardcoded list of patched classes.\n" +
6768
"Use * at the end of a line for a wildcard match (useful for targeting whole packages!)\n" +
@@ -74,6 +75,7 @@ public class ThreadingConfig {
7475
public static String[] TESSELLATOR_USE_REPLACEMENT_TARGETS;
7576

7677
@Config.Comment("Patches every class with the thread safe tessellator code. Overrides TESSELLATOR_USE_REPLACEMENT_TARGETS")
78+
@Config.LangKey("config.falsetweaks.threading.tessellatorReplaceEverything")
7779
@Config.DefaultBoolean(true)
7880
@Config.RequiresMcRestart
7981
public static boolean TESSELLATOR_REPLACE_EVERYTHING;

src/main/resources/assets/falsetweaks/lang/en_US.lang

Lines changed: 63 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,66 @@
1-
config.falsetweaks.triangulator.enable_quad_triangulation=Triangulator: Enable quad triangulation
2-
config.falsetweaks.triangulator.fix_block_crack=Triangulator: Block edge crack fix
3-
config.falsetweaks.triangulator.render_hook_compat_mode=Triangulator: Render hook compatibility mode
4-
config.falsetweaks.triangulator.suppress_calibration=Triangulator: Suppress calibration prompt
5-
config.falsetweaks.triangulator.block_crack_fix_epsilon=Triangulator: Block crack fix epsilon
6-
config.falsetweaks.triangulator.block_crack_fix_blacklist=Triangulator: Block crack fix blacklist
7-
config.falsetweaks.voxelizer.forced_layers=Voxelizer: Forced layers
8-
config.falsetweaks.voxelizer.mesh_optimization_strategy=Voxelizer: Mesh optimization strategy
9-
config.falsetweaks.voxelizer.3d_rails=Voxelizer: 3D rails
10-
config.falsetweaks.voxelizer.debug_mesh_compilation=Voxelizer: Debug mesh compilation
11-
config.falsetweaks.voxelizer.exclusion_list=Voxelizer: Texture exclusion list
12-
config.falsetweaks.voxelizer.class_exclusion_list=Voxelizer: Class exclusion list
13-
config.falsetweaks.voxelizer.rail_thickness=Voxelizer: Rail thickness
14-
config.falsetweaks.voxelizer.verbose_log=Voxelizer: Verbose logging
15-
config.falsetweaks.item_render_lists.max_buffer_size=Item Render Lists: Maximum buffer size
16-
config.falsetweaks.profiler.dump=Profiler: Dump to file on profile end
17-
config.falsetweaks.translucent_block_layers_fix.epsilon=Translucency Block Layer Fix: Epsilon
18-
config.falsetweaks.occlusion.dynamic=Occlusion: Dynamic chunk updates
19-
config.falsetweaks.occlusion.updates_per_second=Occlusion: Chunk updates per second
20-
config.falsetweaks.occlusion.cache_size_target=Occlusion: Cache size target
21-
config.falsetweaks.occlusion.render_distance=Occlusion: Maximum render distance
22-
config.falsetweaks.occlusion.aggressive_clipping_helper=Occlusion: Aggressive clipping helper optimizations
23-
config.falsetweaks.threading.threads=Threaded Updates: Chunk update threads
24-
config.falsetweaks.threading.neodymium=Threaded Updates: (UNSTABLE AND EXPERIMENTAL) Neodymium threading
25-
config.falsetweaks.threading.queuesize=Threaded Updates: Update queue size per thread
26-
config.falsetweaks.threading.noblock=Threaded Updates: Disable blocking chunk updates
27-
config.falsetweaks.threading.tessellatorUseReplacementTargets=Threaded Updates: Tessellator use replacement targets
28-
config.falsetweaks.threading.logISBRHErrors=Threaded Updates: Log ISimpleBlockRenderingHandler registration errors
29-
config.falsetweaks.dynlights.state=Dynamic lights: Mode
30-
config.falsetweaks.dynlights.hand_light=Dynamic lights: Hand light
1+
# Configs
2+
# Notice for translators: <config key>.tooltip allows you to localize the tooltip for the hover text even if it's not present in this file
3+
4+
config.falsetweaks.dynlights.category=Dynamic lights
5+
config.falsetweaks.dynlights.category.tooltip=Dynamic lights
6+
config.falsetweaks.dynlights.state=Mode
7+
config.falsetweaks.dynlights.hand_light=Hand light
8+
config.falsetweaks.dynlights.circular=Circular
9+
10+
config.falsetweaks.triangulator.category=Triangulator
11+
config.falsetweaks.triangulator.category.tooltip=Miscellaneous block rendering bug fixes
12+
config.falsetweaks.triangulator.enable_quad_triangulation=Enable quad triangulation
13+
config.falsetweaks.triangulator.fix_block_crack=Block edge crack fix
14+
config.falsetweaks.triangulator.render_hook_compat_mode=Render hook compatibility mode
15+
config.falsetweaks.triangulator.suppress_calibration=Suppress calibration prompt
16+
config.falsetweaks.triangulator.block_crack_fix_epsilon=Block crack fix epsilon
17+
config.falsetweaks.triangulator.block_crack_fix_blacklist=Block crack fix blacklist
18+
19+
config.falsetweaks.item_render_lists.category=Item Render Lists
20+
config.falsetweaks.item_render_lists.category.tooltip=Optimizations for items in your hand or in the world
21+
config.falsetweaks.item_render_lists.max_buffer_size=Maximum buffer size
22+
23+
config.falsetweaks.voxelizer.category=Voxelizer
24+
config.falsetweaks.voxelizer.category.tooltip=3D item rendering framework
25+
config.falsetweaks.voxelizer.forced_layers=Forced layers
26+
config.falsetweaks.voxelizer.mesh_optimization_strategy=Mesh optimization strategy
27+
config.falsetweaks.voxelizer.3d_rails=3D rails
28+
config.falsetweaks.voxelizer.debug_mesh_compilation=Debug mesh compilation
29+
config.falsetweaks.voxelizer.exclusion_list=Texture exclusion list
30+
config.falsetweaks.voxelizer.class_exclusion_list=Class exclusion list
31+
config.falsetweaks.voxelizer.rail_thickness=Rail thickness
32+
config.falsetweaks.voxelizer.verbose_log=Verbose logging
33+
34+
config.falsetweaks.profiler.category=Profiler
35+
config.falsetweaks.profiler.category.tooltip=Better than vanilla profiler
36+
config.falsetweaks.profiler.dump=Dump to file on profile end
37+
38+
config.falsetweaks.translucent_block_layers_fix.category=Translucency Block Layer Fix
39+
config.falsetweaks.translucent_block_layers_fix.category.tooltip=Fixes an occasional visual bug that happens with overlapping transparent blocks
40+
config.falsetweaks.translucent_block_layers_fix.epsilon=Epsilon
41+
42+
config.falsetweaks.occlusion.category=Occlusion
43+
config.falsetweaks.occlusion.category.tooltip=Improved chunk rendering scheduler
44+
config.falsetweaks.occlusion.dynamic=Dynamic chunk updates
45+
config.falsetweaks.occlusion.updates_per_second=Chunk updates per second
46+
config.falsetweaks.occlusion.cache_size_target=Cache size target
47+
config.falsetweaks.occlusion.render_distance=Maximum render distance
48+
config.falsetweaks.occlusion.aggressive_clipping_helper=Aggressive clipping helper optimizations
49+
50+
config.falsetweaks.threading.category=Threaded Updates
51+
config.falsetweaks.threading.category.tooltip=Multi-threaded chunk rendering
52+
config.falsetweaks.threading.threads=Chunk update threads
53+
config.falsetweaks.threading.neodymium=Neodymium threading
54+
config.falsetweaks.threading.queuesize=Update queue size per thread
55+
config.falsetweaks.threading.noblock=Disable blocking chunk updates
56+
config.falsetweaks.threading.tessellatorUseReplacementTargets=Tessellator use replacement targets
57+
config.falsetweaks.threading.logISBRHErrors=Log renderer registration errors
58+
config.falsetweaks.threading.threadSafeISBRH=Thread Safe ISBRHs
59+
config.falsetweaks.threading.debug=Extra debug info
60+
config.falsetweaks.threading.fastThreadedBlockBounds=Fast threaded block bounds
61+
config.falsetweaks.threading.fastSafety=Faster safety checks
62+
config.falsetweaks.threading.tessellatorReplaceEverything=Tessellator replace everything
63+
3164
gui.triangulator.calibrationdescription.line0=Click the Toggle button until the
3265
gui.triangulator.calibrationdescription.line1=yellow and the blue squares look the same,
3366
gui.triangulator.calibrationdescription.line2=then press the Apply button.

src/main/resources/assets/falsetweaks/lang/zh_CN.lang

Lines changed: 64 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,67 @@
1-
config.falsetweaks.triangulator.enable_quad_triangulation=Triangulator: 启用四边形三角化
2-
config.falsetweaks.triangulator.fix_block_crack=Triangulator: 方块边缘裂缝修复
3-
config.falsetweaks.triangulator.render_hook_compat_mode=Triangulator: 渲染钩子兼容模式
4-
config.falsetweaks.triangulator.block_crack_fix_epsilon=Triangulator: 方块裂缝修复 epsilon
5-
config.falsetweaks.triangulator.block_crack_fix_blacklist=Triangulator: 方块裂缝修复黑名单
6-
config.falsetweaks.voxelizer.forced_layers=Voxelizer: 强制层
7-
config.falsetweaks.voxelizer.mesh_optimization_strategy=Voxelizer: 网格优化策略
8-
config.falsetweaks.voxelizer.3d_rails=Voxelizer: 3D 铁轨
9-
config.falsetweaks.voxelizer.debug_mesh_compilation=Voxelizer: 调试网格编译
10-
config.falsetweaks.voxelizer.exclusion_list=Voxelizer:纹理排除列表
11-
config.falsetweaks.voxelizer.class_exclusion_list=Voxelizer:类排除列表
12-
config.falsetweaks.voxelizer.rail_thickness=Voxelizer:铁轨厚度
13-
config.falsetweaks.voxelizer.verbose_log=Voxelizer:详细日志
14-
config.falsetweaks.item_render_lists.max_buffer_size=物品渲染列表:最大缓冲区大小
15-
config.falsetweaks.profiler.dump=性能分析器:在分析结束时导出到文件
16-
config.falsetweaks.translucent_block_layers_fix.epsilon=透明块层修复:epsilon
17-
config.falsetweaks.occlusion.dynamic=遮挡:动态区块更新
18-
config.falsetweaks.occlusion.updates_per_second=遮挡:每秒更新区块数
19-
config.falsetweaks.occlusion.cache_size_target=遮挡:目标缓存大小
20-
config.falsetweaks.occlusion.render_distance=遮挡:最大渲染距离
21-
config.falsetweaks.occlusion.aggressive_clipping_helper=遮挡:激进的裁剪辅助优化
22-
config.falsetweaks.threading.threads=多线程更新:区块更新线程
23-
config.falsetweaks.threading.neodymium=多线程更新:(不稳定和实验性)铷(Neodymium) 多线程
24-
config.falsetweaks.threading.queuesize=多线程更新:每线程更新队列大小
25-
config.falsetweaks.threading.noblock=多线程更新:禁用阻塞区块更新
26-
config.falsetweaks.threading.tessellatorUseReplacementTargets=多线程更新:细分器使用替代目标
27-
config.falsetweaks.threading.logISBRHErrors=多线程更新:记录 ISimpleBlockRenderingHandler 注册错误
1+
# Configs
2+
# Notice for translators: <config key>.tooltip allows you to localize the tooltip for the hover text even if it's not present in this file
3+
4+
#TODO config.falsetweaks.dynlights.category=Dynamic lights
5+
#TODO config.falsetweaks.dynlights.category.tooltip=Dynamic lights
6+
#TODO config.falsetweaks.dynlights.state=Mode
7+
#TODO config.falsetweaks.dynlights.hand_light=Hand light
8+
#TODO config.falsetweaks.dynlights.circular=Circular
9+
10+
config.falsetweaks.triangulator.category=Triangulator
11+
#TODO config.falsetweaks.triangulator.category.tooltip=Miscellaneous block rendering bug fixes
12+
config.falsetweaks.triangulator.enable_quad_triangulation=启用四边形三角化
13+
config.falsetweaks.triangulator.fix_block_crack=方块边缘裂缝修复
14+
config.falsetweaks.triangulator.render_hook_compat_mode=渲染钩子兼容模式
15+
#TODO config.falsetweaks.triangulator.suppress_calibration=Suppress calibration prompt
16+
config.falsetweaks.triangulator.block_crack_fix_epsilon=方块裂缝修复 epsilon
17+
config.falsetweaks.triangulator.block_crack_fix_blacklist=方块裂缝修复黑名单
18+
19+
config.falsetweaks.item_render_lists.category=物品渲染列表
20+
#TODO config.falsetweaks.item_render_lists.category.tooltip=Optimizations for items in your hand or in the world
21+
config.falsetweaks.item_render_lists.max_buffer_size=最大缓冲区大小
22+
23+
config.falsetweaks.voxelizer.category=Voxelizer
24+
#TODO config.falsetweaks.voxelizer.category.tooltip=3D item rendering framework
25+
config.falsetweaks.voxelizer.forced_layers=强制层
26+
config.falsetweaks.voxelizer.mesh_optimization_strategy=网格优化策略
27+
config.falsetweaks.voxelizer.3d_rails=3D 铁轨
28+
config.falsetweaks.voxelizer.debug_mesh_compilation=调试网格编译
29+
config.falsetweaks.voxelizer.exclusion_list=纹理排除列表
30+
config.falsetweaks.voxelizer.class_exclusion_list=类排除列表
31+
config.falsetweaks.voxelizer.rail_thickness=铁轨厚度
32+
config.falsetweaks.voxelizer.verbose_log=详细日志
33+
34+
config.falsetweaks.profiler.category=性能分析器
35+
#TODO config.falsetweaks.profiler.category.tooltip=Better than vanilla profiler
36+
config.falsetweaks.profiler.dump=在分析结束时导出到文件
37+
38+
config.falsetweaks.translucent_block_layers_fix.category=透明块层修复
39+
#TODO config.falsetweaks.translucent_block_layers_fix.category.tooltip=Fixes an occasional visual bug that happens with overlapping transparent blocks
40+
config.falsetweaks.translucent_block_layers_fix.epsilon=epsilon
41+
42+
config.falsetweaks.occlusion.category=遮挡
43+
#TODO config.falsetweaks.occlusion.category.tooltip=Improved chunk rendering scheduler
44+
config.falsetweaks.occlusion.dynamic=动态区块更新
45+
config.falsetweaks.occlusion.updates_per_second=每秒更新区块数
46+
config.falsetweaks.occlusion.cache_size_target=目标缓存大小
47+
config.falsetweaks.occlusion.render_distance=最大渲染距离
48+
config.falsetweaks.occlusion.aggressive_clipping_helper=激进的裁剪辅助优化
49+
50+
config.falsetweaks.threading.category=多线程更新
51+
#TODO config.falsetweaks.threading.category.tooltip=Multi-threaded chunk rendering
52+
config.falsetweaks.threading.threads=区块更新线程
53+
config.falsetweaks.threading.neodymium=铷(Neodymium) 多线程
54+
config.falsetweaks.threading.queuesize=每线程更新队列大小
55+
config.falsetweaks.threading.noblock=禁用阻塞区块更新
56+
config.falsetweaks.threading.tessellatorUseReplacementTargets=细分器使用替代目标
57+
#TODO replace line below with: config.falsetweaks.threading.logISBRHErrors=Log renderer registration errors
58+
config.falsetweaks.threading.logISBRHErrors=记录 ISimpleBlockRenderingHandler 注册错误
59+
#TODO config.falsetweaks.threading.threadSafeISBRH=Thread Safe ISBRHs
60+
#TODO config.falsetweaks.threading.debug=Extra debug info
61+
#TODO config.falsetweaks.threading.fastThreadedBlockBounds=Fast threaded block bounds
62+
#TODO config.falsetweaks.threading.fastSafety=Faster safety checks
63+
#TODO config.falsetweaks.threading.tessellatorReplaceEverything=Tessellator replace everything
64+
2865
gui.triangulator.calibrationdescription.line0=点击切换按钮直到
2966
gui.triangulator.calibrationdescription.line1=黄色和蓝色方块看起来一样,
3067
gui.triangulator.calibrationdescription.line2=然后按应用按钮。

0 commit comments

Comments
 (0)