1+ package com .falsepattern .lib .config ;
2+
3+ import java .lang .annotation .ElementType ;
4+ import java .lang .annotation .Retention ;
5+ import java .lang .annotation .RetentionPolicy ;
6+ import java .lang .annotation .Target ;
7+
8+ @ Retention (RetentionPolicy .RUNTIME )
9+ @ Target (ElementType .TYPE )
10+ public @interface Config {
11+ /**
12+ * The mod id that this configuration is associated with.
13+ */
14+ String modid ();
15+
16+ /**
17+ * A user friendly name for the config file,
18+ * the default will be modid
19+ */
20+ String name () default "" ;
21+
22+ /**
23+ * Root element category, defaults to "general", if this is an empty string then the root category is disabled.
24+ * Any primitive fields will cause an error, and you must specify sub-category objects
25+ */
26+ String category () default "general" ;
27+
28+ public static enum Type {
29+ /**
30+ * Loaded once, directly after mod construction. Before pre-init.
31+ * This class must have static fields.
32+ */
33+ INSTANCE (true );
34+
35+
36+ private boolean isStatic = true ;
37+
38+ private Type (boolean isStatic ) {this .isStatic = isStatic ;}
39+
40+ public boolean isStatic () {return this .isStatic ;}
41+ }
42+
43+ @ Retention (RetentionPolicy .RUNTIME )
44+ @ Target ({ElementType .FIELD , ElementType .TYPE })
45+ @interface LangKey {
46+ String value ();
47+ }
48+
49+ @ Retention (RetentionPolicy .RUNTIME )
50+ @ Target (ElementType .FIELD )
51+ @interface Comment {
52+ String [] value ();
53+ }
54+
55+ @ Retention (RetentionPolicy .RUNTIME )
56+ @ Target (ElementType .FIELD )
57+ @interface Ignore {}
58+
59+ @ Retention (RetentionPolicy .RUNTIME )
60+ @ Target (ElementType .FIELD )
61+ @interface RangeInt {
62+ int min () default Integer .MIN_VALUE ;
63+
64+ int max () default Integer .MAX_VALUE ;
65+ }
66+
67+ @ Retention (RetentionPolicy .RUNTIME )
68+ @ Target (ElementType .FIELD )
69+ @interface RangeDouble {
70+ double min () default Double .MIN_VALUE ;
71+
72+ double max () default Double .MAX_VALUE ;
73+ }
74+
75+ @ Retention (RetentionPolicy .RUNTIME )
76+ @ Target (ElementType .FIELD )
77+ @interface Name {
78+ String value ();
79+ }
80+
81+ @ Retention (RetentionPolicy .RUNTIME )
82+ @ Target ({ElementType .FIELD , ElementType .TYPE })
83+ @interface RequiresMcRestart {}
84+
85+ @ Retention (RetentionPolicy .RUNTIME )
86+ @ Target ({ElementType .FIELD , ElementType .TYPE })
87+ @interface RequiresWorldRestart {}
88+ }
0 commit comments