|
@@ -9,77 +9,167 @@ import java.lang.annotation.Retention;
|
|
|
import java.lang.annotation.RetentionPolicy;
|
|
|
import java.lang.annotation.Target;
|
|
|
|
|
|
+/**
|
|
|
+ * Applied to declare that a field is an entry inside the mod's config. Only required if
|
|
|
+ * the {@link ConfigEntryContainer} is not a POJO class.
|
|
|
+ *
|
|
|
+ * This is also used to change the behaviour of the entry regarding translations, bounds and other
|
|
|
+ * miscellaneous options.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
public @interface ConfigEntry {
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies a custom translation key for this entry. If empty, the default key will be used.
|
|
|
+ * @return a custom translation key
|
|
|
+ */
|
|
|
String customTranslationKey() default "";
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies one or more custom translation keys for this entry's tooltip. If empty, the default single-line or
|
|
|
+ * multi-line keys will be used, depending on which are declared in the language file(s).
|
|
|
+ * @return an array of custom tooltip translation keys
|
|
|
+ */
|
|
|
String[] customTooltipKeys() default {};
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies if the entry's field should get updated while at least one listener exists in the entry's class.
|
|
|
+ *
|
|
|
+ * By default the entry's field will not get modified when the config is saved, but all listeners will be called
|
|
|
+ * with the updated value. Set this to true to always update the field when saving.
|
|
|
+ * @return true if the field should get updated, else false
|
|
|
+ */
|
|
|
boolean forceUpdate() default false;
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies whether the game needs to be restarted after modifying this entry.
|
|
|
+ * @return whether the game needs to be restarted after modifying this field's entry
|
|
|
+ */
|
|
|
boolean requiresRestart() default false;
|
|
|
|
|
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
|
|
class Bounded {
|
|
|
|
|
|
+ /**
|
|
|
+ * Applies bounds to an entry of type Integer.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
public @interface Integer {
|
|
|
|
|
|
+ /**
|
|
|
+ * The minimum bound.
|
|
|
+ * @return the minimum bound
|
|
|
+ */
|
|
|
int min() default java.lang.Integer.MIN_VALUE;
|
|
|
|
|
|
+ /**
|
|
|
+ * The maximum bound.
|
|
|
+ * @return the maximum bound
|
|
|
+ */
|
|
|
int max() default java.lang.Integer.MAX_VALUE;
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies whether the entry should be rendered as slider.
|
|
|
+ * @return whether the entry should be rendered as slider
|
|
|
+ */
|
|
|
boolean slider() default true;
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Applies bounds to an entry of type Long.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
public @interface Long {
|
|
|
|
|
|
+ /**
|
|
|
+ * The minimum bound.
|
|
|
+ * @return the minimum bound
|
|
|
+ */
|
|
|
long min() default java.lang.Long.MIN_VALUE;
|
|
|
|
|
|
+ /**
|
|
|
+ * The maximum bound.
|
|
|
+ * @return the maximum bound
|
|
|
+ */
|
|
|
long max() default java.lang.Long.MAX_VALUE;
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies whether the entry should be rendered as slider.
|
|
|
+ * @return whether the entry should be rendered as slider
|
|
|
+ */
|
|
|
boolean slider() default true;
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Applies bounds to an entry of type Float.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
public @interface Float {
|
|
|
|
|
|
+ /**
|
|
|
+ * The minimum bound.
|
|
|
+ * @return the minimum bound
|
|
|
+ */
|
|
|
float min() default -java.lang.Float.MAX_VALUE;
|
|
|
|
|
|
+ /**
|
|
|
+ * The maximum bound.
|
|
|
+ * @return the maximum bound
|
|
|
+ */
|
|
|
float max() default java.lang.Float.MAX_VALUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Applies bounds to an entry of type Double.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
public @interface Double {
|
|
|
|
|
|
+ /**
|
|
|
+ * The minimum bound.
|
|
|
+ * @return the minimum bound
|
|
|
+ */
|
|
|
double min() default -java.lang.Double.MAX_VALUE;
|
|
|
|
|
|
+ /**
|
|
|
+ * The maximum bound.
|
|
|
+ * @return the maximum bound
|
|
|
+ */
|
|
|
double max() default java.lang.Double.MAX_VALUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Applied to an entry of type Enum to change the render behaviour.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
@interface EnumOptions {
|
|
|
|
|
|
+ /**
|
|
|
+ * Specifies how the entry should be rendered.
|
|
|
+ * @return the desired {@link DisplayType}
|
|
|
+ */
|
|
|
DisplayType displayType() default DisplayType.BUTTON;
|
|
|
|
|
|
//TODO: Add gui suggestionMode option
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Can be applied to a field inside a POJO {@link ConfigEntryContainer} class to declare that the field should not
|
|
|
+ * be considered as config entry.
|
|
|
+ */
|
|
|
@Target(ElementType.FIELD)
|
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
|
@interface Ignore {
|