package pluginbase.config.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import pluginbase.config.field.Field; import pluginbase.config.properties.PropertiesWrapper; /** * Prevents setting of this field via {@link Field#setValue(Object, Object)} but still allows setting via * {@link Field#forceSet(Object, Object)}. * <p/> * This means {@link PropertiesWrapper#setProperty(String, String)} and {@link PropertiesWrapper#setPropertyUnchecked(String, String)} * will fail to set the field but deserialization with the default serializer will still work. */ @Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface Immutable { }